From ba956c767b9377b67f7b37c518717a2f4ba96739 Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Tue, 27 Feb 2024 17:00:30 +0000 Subject: [PATCH 01/86] chore: small updates to accomodate GWAS Catalog for feb release --- poetry.lock | 5151 +++++++++-------- pyproject.toml | 1 + src/airflow/dags/gwas_curation_update.py | 2 +- .../datasource/gwas_catalog/study_index.py | 17 +- utils/update_GWAS_Catalog_data.sh | 37 +- 5 files changed, 2647 insertions(+), 2561 deletions(-) diff --git a/poetry.lock b/poetry.lock index 64ac6a99d..b27acb272 100644 --- a/poetry.lock +++ b/poetry.lock @@ -27,87 +27,87 @@ files = [ [[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] @@ -137,13 +137,13 @@ frozenlist = ">=1.1.0" [[package]] name = "alembic" -version = "1.12.1" +version = "1.13.1" description = "A database migration tool for SQLAlchemy." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "alembic-1.12.1-py3-none-any.whl", hash = "sha256:47d52e3dfb03666ed945becb723d6482e52190917fdb47071440cfdba05d92cb"}, - {file = "alembic-1.12.1.tar.gz", hash = "sha256:bca5877e9678b454706347bc10b97cb7d67f300320fa5c3a94423e8266e2823f"}, + {file = "alembic-1.13.1-py3-none-any.whl", hash = "sha256:2edcc97bed0bd3272611ce3a98d98279e9c209e7186e43e75bbb1b2bdfdbcc43"}, + {file = "alembic-1.13.1.tar.gz", hash = "sha256:4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595"}, ] [package.dependencies] @@ -152,7 +152,7 @@ SQLAlchemy = ">=1.3.0" typing-extensions = ">=4" [package.extras] -tz = ["python-dateutil"] +tz = ["backports.zoneinfo"] [[package]] name = "annotated-types" @@ -177,38 +177,40 @@ files = [ [[package]] name = "anyio" -version = "4.0.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.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, - {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, + {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, + {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, ] [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 = "apache-airflow" -version = "2.8.0" +version = "2.8.2" description = "Programmatically author, schedule and monitor data pipelines" optional = false python-versions = "<3.12,~=3.8" files = [ - {file = "apache-airflow-2.8.0.tar.gz", hash = "sha256:5917ee148125892764f4306ec76a62c66a5801218a99edfd3fe46e968cb1a344"}, - {file = "apache_airflow-2.8.0-py3-none-any.whl", hash = "sha256:4ee532b97ef6520ad8e1ffda325aabe265f007a14166570d5f710d4999c9ad1c"}, + {file = "apache_airflow-2.8.2-py3-none-any.whl", hash = "sha256:41ccb84bb4a42dfd7e138850b90e376751a54312750a920ebf978096cad18af0"}, + {file = "apache_airflow-2.8.2.tar.gz", hash = "sha256:a993e272d254ec80852553042dca5641e24a416a49ac7341c947295dee0c4b20"}, ] [package.dependencies] -alembic = ">=1.6.3,<2.0" +alembic = ">=1.13.1,<2.0" +apache-airflow-providers-common-io = "*" apache-airflow-providers-common-sql = "*" apache-airflow-providers-ftp = "*" apache-airflow-providers-http = "*" @@ -227,14 +229,13 @@ cryptography = ">=0.9.3" deprecated = ">=1.2.13" dill = ">=0.2.2" flask = ">=2.2,<2.3" -flask-appbuilder = "4.3.10" +flask-appbuilder = "4.3.11" flask-caching = ">=1.5.0" flask-login = ">=0.6.2" -flask-session = ">=0.4.0" +flask-session = ">=0.4.0,<0.6" flask-wtf = ">=0.15" fsspec = ">=2023.10.0" google-re2 = ">=1.0" -graphviz = ">=0.12" gunicorn = ">=20.1.0" httpx = "*" itsdangerous = ">=2.0" @@ -243,7 +244,6 @@ jsonschema = ">=4.18.0" lazy-object-proxy = "*" linkify-it-py = ">=2.0.0" lockfile = ">=0.12.2" -markdown = ">=3.0" markdown-it-py = ">=2.1.0" markupsafe = ">=1.1.1" marshmallow-oneofschema = ">=2.0.1" @@ -252,16 +252,16 @@ opentelemetry-api = ">=1.15.0" opentelemetry-exporter-otlp = "*" packaging = ">=14.0" pathspec = ">=0.9.0" -pendulum = ">=2.0,<3.0" +pendulum = ">=2.1.2,<4.0" pluggy = ">=1.0" psutil = ">=4.2.0" -pydantic = ">=2.3.0" pygments = ">=2.0.1" pyjwt = ">=2.0.0" python-daemon = ">=3.0.0" python-dateutil = ">=2.3" python-nvd3 = ">=0.15.0" python-slugify = ">=5.0" +requests = ">=2.27.0,<3" rfc3339-validator = ">=0.1.4" rich = ">=12.4.4" rich-argparse = ">=1.0.0" @@ -271,17 +271,17 @@ sqlalchemy-jsonfield = ">=1.0" tabulate = ">=0.7.5" tenacity = ">=6.2.0,<8.2.0 || >8.2.0" termcolor = ">=1.1.0" -typing-extensions = ">=4.0.0" unicodecsv = ">=0.14.1" -universal-pathlib = ">=0.1.4" +universal-pathlib = ">=0.1.4,<0.2.0" werkzeug = ">=2.0,<3" [package.extras] -aiobotocore = ["aiobotocore (>=2.1.1)"] +aiobotocore = ["aiobotocore (>=2.7.0)"] airbyte = ["apache-airflow-providers-airbyte"] alibaba = ["apache-airflow-providers-alibaba"] -all = ["PyGithub (!=1.58)", "PyOpenSSL", "adal (>=1.2.7)", "adlfs (>=2023.10.0)", "aiobotocore (>=2.1.1)", "aiofiles (>=23.2.0)", "aiohttp", "aiohttp (>=3.6.3,<4)", "alibabacloud-adb20211201 (>=1.0.0)", "alibabacloud-tea-openapi (>=0.3.7)", "amqp", "analytics-python (>=1.2.9)", "apache-airflow (>=2.6.0)", "apache-airflow (>=2.7.0)", "apache-airflow (>=2.8.0)", "apache-airflow-providers-airbyte", "apache-airflow-providers-alibaba", "apache-airflow-providers-amazon", "apache-airflow-providers-apache-beam", "apache-airflow-providers-apache-cassandra", "apache-airflow-providers-apache-drill", "apache-airflow-providers-apache-druid", "apache-airflow-providers-apache-flink", "apache-airflow-providers-apache-hdfs", "apache-airflow-providers-apache-hive", "apache-airflow-providers-apache-impala", "apache-airflow-providers-apache-kafka", "apache-airflow-providers-apache-kylin", "apache-airflow-providers-apache-livy", "apache-airflow-providers-apache-pig", "apache-airflow-providers-apache-pinot", "apache-airflow-providers-apache-spark", "apache-airflow-providers-apprise", "apache-airflow-providers-arangodb", "apache-airflow-providers-asana", "apache-airflow-providers-atlassian-jira", "apache-airflow-providers-celery", "apache-airflow-providers-cloudant", "apache-airflow-providers-cncf-kubernetes", "apache-airflow-providers-cohere", "apache-airflow-providers-common-io", "apache-airflow-providers-common-sql", "apache-airflow-providers-databricks", "apache-airflow-providers-datadog", "apache-airflow-providers-dbt-cloud", "apache-airflow-providers-dingding", "apache-airflow-providers-discord", "apache-airflow-providers-docker", "apache-airflow-providers-elasticsearch", "apache-airflow-providers-exasol", "apache-airflow-providers-facebook", "apache-airflow-providers-ftp", "apache-airflow-providers-github", "apache-airflow-providers-google", "apache-airflow-providers-grpc", "apache-airflow-providers-hashicorp", "apache-airflow-providers-http", "apache-airflow-providers-imap", "apache-airflow-providers-influxdb", "apache-airflow-providers-jdbc", "apache-airflow-providers-jenkins", "apache-airflow-providers-microsoft-azure", "apache-airflow-providers-microsoft-mssql", "apache-airflow-providers-microsoft-psrp", "apache-airflow-providers-microsoft-winrm", "apache-airflow-providers-mongo", "apache-airflow-providers-mysql", "apache-airflow-providers-neo4j", "apache-airflow-providers-odbc", "apache-airflow-providers-openai", "apache-airflow-providers-openfaas", "apache-airflow-providers-openlineage", "apache-airflow-providers-opensearch", "apache-airflow-providers-opsgenie", "apache-airflow-providers-oracle", "apache-airflow-providers-pagerduty", "apache-airflow-providers-papermill", "apache-airflow-providers-pgvector", "apache-airflow-providers-pinecone", "apache-airflow-providers-postgres", "apache-airflow-providers-presto", "apache-airflow-providers-redis", "apache-airflow-providers-salesforce", "apache-airflow-providers-samba", "apache-airflow-providers-segment", "apache-airflow-providers-sendgrid", "apache-airflow-providers-sftp", "apache-airflow-providers-singularity", "apache-airflow-providers-slack", "apache-airflow-providers-smtp", "apache-airflow-providers-snowflake", "apache-airflow-providers-sqlite", "apache-airflow-providers-ssh", "apache-airflow-providers-tableau", "apache-airflow-providers-tabular", "apache-airflow-providers-telegram", "apache-airflow-providers-trino", "apache-airflow-providers-vertica", "apache-airflow-providers-weaviate", "apache-airflow-providers-yandex", "apache-airflow-providers-zendesk", "apache-beam (>=2.47.0)", "apprise", "asana (>=0.10,<4.0.0)", "asgiref", "asgiref (>=3.5.2)", "atlasclient (>=0.1.2)", "atlassian-python-api (>=1.14.2)", "attrs (>=22.2)", "authlib (>=1.0.0)", "azure-batch (>=8.0.0)", "azure-cosmos (>=4.0.0)", "azure-datalake-store (>=0.0.45)", "azure-identity (>=1.3.1)", "azure-keyvault-secrets (>=4.1.0)", "azure-kusto-data (>=4.1.0)", "azure-mgmt-containerinstance (>=9.0.0)", "azure-mgmt-containerregistry (>=8.0.0)", "azure-mgmt-cosmosdb", "azure-mgmt-datafactory (>=2.0.0)", "azure-mgmt-datalake-store (>=0.5.0)", "azure-mgmt-resource (>=2.2.0)", "azure-mgmt-storage (>=16.0.0)", "azure-servicebus (>=7.6.1)", "azure-storage-blob (>=12.14.0)", "azure-storage-file-datalake (>=12.9.1)", "azure-storage-file-share", "azure-synapse-artifacts (>=0.17.0)", "azure-synapse-spark", "bcrypt (>=2.0.0)", "blinker (>=1.1)", "boto3 (>=1.28.0)", "botocore (>=1.31.0)", "cassandra-driver (>=3.13.0)", "celery (>=5.3.0,!=5.3.2,!=5.3.3,<6)", "cgroupspy (>=0.2.2)", "cloudant (>=2.0)", "cohere (>=4.27)", "confluent-kafka (>=1.8.2)", "cryptography (>=2.0.0)", "databricks-sql-connector (>=2.0.0,!=2.9.0,<3.0.0)", "datadog (>=0.14.0)", "dnspython (>=1.13.0)", "docker (>=5.0.3)", "elasticsearch (>=8.10,<9)", "eventlet (>=0.33.3)", "facebook-business (>=6.0.2)", "flask-appbuilder[oauth] (==4.3.10)", "flask-bcrypt (>=0.7.1)", "flower (>=1.0.0)", "gcloud-aio-auth (>=4.0.0,<5.0.0)", "gcloud-aio-bigquery (>=6.1.2)", "gcloud-aio-storage", "gcsfs (>=2023.10.0)", "gevent (>=0.13)", "google-ads (>=22.1.0)", "google-api-core (>=2.11.0)", "google-api-python-client (>=1.6.0)", "google-auth (>=1.0.0)", "google-auth (>=1.0.0,<3.0.0)", "google-auth-httplib2 (>=0.0.1)", "google-cloud-aiplatform (>=1.22.1)", "google-cloud-automl (>=2.12.0)", "google-cloud-batch (>=0.13.0)", "google-cloud-bigquery-datatransfer (>=3.13.0)", "google-cloud-bigtable (>=2.17.0)", "google-cloud-build (>=3.22.0)", "google-cloud-compute (>=1.10.0)", "google-cloud-container (>=2.17.4)", "google-cloud-datacatalog (>=3.11.1)", "google-cloud-dataflow-client (>=0.8.6)", "google-cloud-dataform (>=0.5.0)", "google-cloud-dataplex (>=1.10.0)", "google-cloud-dataproc (>=5.8.0)", "google-cloud-dataproc-metastore (>=1.12.0)", "google-cloud-dlp (>=3.12.0)", "google-cloud-kms (>=2.15.0)", "google-cloud-language (>=2.9.0)", "google-cloud-logging (>=3.5.0)", "google-cloud-memcache (>=1.7.0)", "google-cloud-monitoring (>=2.18.0)", "google-cloud-orchestration-airflow (>=1.10.0)", "google-cloud-os-login (>=2.9.1)", "google-cloud-pubsub (>=2.19.0)", "google-cloud-redis (>=2.12.0)", "google-cloud-run (>=0.9.0)", "google-cloud-secret-manager (>=2.16.0)", "google-cloud-spanner (>=3.11.1)", "google-cloud-speech (>=2.18.0)", "google-cloud-storage (>=2.7.0)", "google-cloud-storage-transfer (>=1.4.1)", "google-cloud-tasks (>=2.13.0)", "google-cloud-texttospeech (>=2.14.1)", "google-cloud-translate (>=3.11.0)", "google-cloud-videointelligence (>=2.11.0)", "google-cloud-vision (>=3.4.0)", "google-cloud-workflows (>=1.10.0)", "google-re2 (>=1.0)", "greenlet (>=0.4.9)", "grpcio (>=1.15.0)", "grpcio-gcp (>=0.2.2)", "grpcio-status", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "httpx", "hvac (>=0.10)", "impyla (>=0.18.0,<1.0)", "inflection (>=0.5.1)", "influxdb-client (>=1.19.0)", "ipykernel", "jaydebeapi (>=1.1.1)", "json-merge-patch (>=0.2)", "jsonpath-ng (>=1.5.3)", "kubernetes (>=21.7.0,<24)", "kubernetes-asyncio (>=18.20.1,<25)", "kylinpy (>=2.6)", "ldap3 (>=2.5.1)", "looker-sdk (>=22.2.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "neo4j (>=4.2.1)", "openai[datalib] (>=1.0)", "openlineage-integration-common (>=0.28.0)", "openlineage-python (>=0.28.0)", "opensearch-py (>=2.2.0)", "opentelemetry-exporter-prometheus", "opsgenie-sdk (>=2.1.5)", "oracledb (>=1.0.0)", "oss2 (>=2.14.0)", "pandas (>=0.17.1)", "pandas-gbq", "papermill[all] (>=1.2.1)", "paramiko (>=2.6.0)", "paramiko (>=2.8.0)", "pdpyras (>=4.1.2)", "pgvector (>=0.2.3)", "pinecone-client (>=2.2.4)", "pinotdb (>0.4.7)", "plyvel", "presto-python-client (>=0.8.4)", "proto-plus (>=1.19.6)", "psycopg2-binary (>=2.8.0)", "pyarrow (>=9.0.0)", "pyarrow-hotfix", "pydruid (>=0.4.1)", "pyexasol (>=0.5.1)", "pyhive[hive-pure-sasl] (>=0.7.0)", "pykerberos (>=1.1.13)", "pymongo (>=3.6.0)", "pymssql (>=2.1.8)", "pyodbc", "pypsrp (>=0.8.0)", "pyspark", "python-arango (>=7.3.2)", "python-dotenv (>=0.21.0)", "python-jenkins (>=1.0.0)", "python-ldap", "python-telegram-bot (>=20.0.0)", "python3-saml (>=1.16.0)", "pywinrm (>=0.4)", "redis (>=4.5.2,!=4.5.5,<5.0.0)", "redshift-connector (>=2.0.888)", "requests (>=2.26.0)", "requests (>=2.27,<3)", "requests-kerberos (>=0.10.0)", "requests-toolbelt", "s3fs (>=2023.10.0)", "scrapbook[all]", "sendgrid (>=6.0.0)", "sentry-sdk (>=1.32.0,!=1.33.0)", "simple-salesforce (>=1.0.0)", "slack-sdk (>=3.0.0)", "smbprotocol (>=1.5.0)", "snowflake-connector-python (>=2.7.8)", "snowflake-sqlalchemy (>=1.1.0)", "spython (>=0.0.56)", "sqlalchemy-bigquery (>=1.2.1)", "sqlalchemy-drill (>=1.1.0)", "sqlalchemy-redshift (>=0.8.6)", "sqlalchemy-spanner (>=1.6.2)", "sqlparse (>=0.4.2)", "sshtunnel (>=0.3.2)", "statsd (>=3.3.0)", "tableauserverclient", "thrift (>=0.9.2)", "thrift-sasl (>=0.2.0)", "trino (>=0.318.0)", "vertica-python (>=0.5.1)", "virtualenv", "watchtower (>=2.0.1,<4)", "weaviate-client (>=3.24.2)", "yandexcloud (>=0.228.0)", "zenpy (>=2.0.24)"] -all-dbs = ["aiohttp (>=3.6.3,<4)", "apache-airflow (>=2.6.0)", "apache-airflow-providers-apache-cassandra", "apache-airflow-providers-apache-drill", "apache-airflow-providers-apache-druid", "apache-airflow-providers-apache-hdfs", "apache-airflow-providers-apache-hive", "apache-airflow-providers-apache-impala", "apache-airflow-providers-apache-pinot", "apache-airflow-providers-arangodb", "apache-airflow-providers-cloudant", "apache-airflow-providers-common-sql (>=1.3.1)", "apache-airflow-providers-common-sql (>=1.8.1)", "apache-airflow-providers-databricks", "apache-airflow-providers-exasol", "apache-airflow-providers-influxdb", "apache-airflow-providers-microsoft-mssql", "apache-airflow-providers-mongo", "apache-airflow-providers-mysql", "apache-airflow-providers-neo4j", "apache-airflow-providers-postgres", "apache-airflow-providers-presto", "apache-airflow-providers-trino", "apache-airflow-providers-vertica", "cassandra-driver (>=3.13.0)", "cloudant (>=2.0)", "databricks-sql-connector (>=2.0.0,!=2.9.0,<3.0.0)", "dnspython (>=1.13.0)", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "impyla (>=0.18.0,<1.0)", "influxdb-client (>=1.19.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "neo4j (>=4.2.1)", "pandas (>=0.17.1)", "pinotdb (>0.4.7)", "presto-python-client (>=0.8.4)", "psycopg2-binary (>=2.8.0)", "pydruid (>=0.4.1)", "pyexasol (>=0.5.1)", "pyhive[hive-pure-sasl] (>=0.7.0)", "pymongo (>=3.6.0)", "pymssql (>=2.1.8)", "python-arango (>=7.3.2)", "requests (>=2.26.0)", "requests (>=2.27,<3)", "sqlalchemy-drill (>=1.1.0)", "thrift (>=0.9.2)", "trino (>=0.318.0)", "vertica-python (>=0.5.1)"] +all = ["apache-airflow[aiobotocore]", "apache-airflow[airbyte]", "apache-airflow[alibaba]", "apache-airflow[all-core]", "apache-airflow[amazon]", "apache-airflow[apache-atlas]", "apache-airflow[apache-beam]", "apache-airflow[apache-cassandra]", "apache-airflow[apache-drill]", "apache-airflow[apache-druid]", "apache-airflow[apache-flink]", "apache-airflow[apache-hdfs]", "apache-airflow[apache-hive]", "apache-airflow[apache-impala]", "apache-airflow[apache-kafka]", "apache-airflow[apache-kylin]", "apache-airflow[apache-livy]", "apache-airflow[apache-pig]", "apache-airflow[apache-pinot]", "apache-airflow[apache-spark]", "apache-airflow[apache-sqoop]", "apache-airflow[apache-webhdfs]", "apache-airflow[apprise]", "apache-airflow[arangodb]", "apache-airflow[asana]", "apache-airflow[async]", "apache-airflow[atlassian-jira]", "apache-airflow[celery]", "apache-airflow[cgroups]", "apache-airflow[cloudant]", "apache-airflow[cncf-kubernetes]", "apache-airflow[cohere]", "apache-airflow[common-io]", "apache-airflow[common-sql]", "apache-airflow[daskexecutor]", "apache-airflow[databricks]", "apache-airflow[datadog]", "apache-airflow[dbt-cloud]", "apache-airflow[deprecated-api]", "apache-airflow[dingding]", "apache-airflow[discord]", "apache-airflow[docker]", "apache-airflow[elasticsearch]", "apache-airflow[exasol]", "apache-airflow[facebook]", "apache-airflow[ftp]", "apache-airflow[github-enterprise]", "apache-airflow[github]", "apache-airflow[google-auth]", "apache-airflow[google]", "apache-airflow[graphviz]", "apache-airflow[grpc]", "apache-airflow[hashicorp]", "apache-airflow[http]", "apache-airflow[imap]", "apache-airflow[influxdb]", "apache-airflow[jdbc]", "apache-airflow[jenkins]", "apache-airflow[kerberos]", "apache-airflow[ldap]", "apache-airflow[leveldb]", "apache-airflow[microsoft-azure]", "apache-airflow[microsoft-mssql]", "apache-airflow[microsoft-psrp]", "apache-airflow[microsoft-winrm]", "apache-airflow[mongo]", "apache-airflow[mysql]", "apache-airflow[neo4j]", "apache-airflow[odbc]", "apache-airflow[openai]", "apache-airflow[openfaas]", "apache-airflow[openlineage]", "apache-airflow[opensearch]", "apache-airflow[opsgenie]", "apache-airflow[oracle]", "apache-airflow[otel]", "apache-airflow[pagerduty]", "apache-airflow[pandas]", "apache-airflow[papermill]", "apache-airflow[password]", "apache-airflow[pgvector]", "apache-airflow[pinecone]", "apache-airflow[plexus]", "apache-airflow[postgres]", "apache-airflow[presto]", "apache-airflow[pydantic]", "apache-airflow[rabbitmq]", "apache-airflow[redis]", "apache-airflow[s3fs]", "apache-airflow[salesforce]", "apache-airflow[samba]", "apache-airflow[saml]", "apache-airflow[segment]", "apache-airflow[sendgrid]", "apache-airflow[sentry]", "apache-airflow[sftp]", "apache-airflow[singularity]", "apache-airflow[slack]", "apache-airflow[smtp]", "apache-airflow[snowflake]", "apache-airflow[sqlite]", "apache-airflow[ssh]", "apache-airflow[statsd]", "apache-airflow[tableau]", "apache-airflow[tabular]", "apache-airflow[telegram]", "apache-airflow[trino]", "apache-airflow[vertica]", "apache-airflow[virtualenv]", "apache-airflow[weaviate]", "apache-airflow[yandex]", "apache-airflow[zendesk]"] +all-core = ["apache-airflow[aiobotocore]", "apache-airflow[apache-atlas]", "apache-airflow[apache-webhdfs]", "apache-airflow[async]", "apache-airflow[cgroups]", "apache-airflow[deprecated-api]", "apache-airflow[github-enterprise]", "apache-airflow[google-auth]", "apache-airflow[graphviz]", "apache-airflow[kerberos]", "apache-airflow[ldap]", "apache-airflow[leveldb]", "apache-airflow[otel]", "apache-airflow[pandas]", "apache-airflow[password]", "apache-airflow[pydantic]", "apache-airflow[rabbitmq]", "apache-airflow[s3fs]", "apache-airflow[saml]", "apache-airflow[sentry]", "apache-airflow[statsd]", "apache-airflow[virtualenv]"] +all-dbs = ["apache-airflow[apache-cassandra]", "apache-airflow[apache-drill]", "apache-airflow[apache-druid]", "apache-airflow[apache-hdfs]", "apache-airflow[apache-hive]", "apache-airflow[apache-impala]", "apache-airflow[apache-pinot]", "apache-airflow[arangodb]", "apache-airflow[cloudant]", "apache-airflow[databricks]", "apache-airflow[exasol]", "apache-airflow[influxdb]", "apache-airflow[microsoft-mssql]", "apache-airflow[mongo]", "apache-airflow[mysql]", "apache-airflow[neo4j]", "apache-airflow[postgres]", "apache-airflow[presto]", "apache-airflow[trino]", "apache-airflow[vertica]"] amazon = ["apache-airflow-providers-amazon"] apache-atlas = ["atlasclient (>=0.1.2)"] apache-beam = ["apache-airflow-providers-apache-beam"] @@ -290,7 +290,7 @@ apache-drill = ["apache-airflow-providers-apache-drill"] apache-druid = ["apache-airflow-providers-apache-druid"] apache-flink = ["apache-airflow-providers-apache-flink"] apache-hdfs = ["apache-airflow-providers-apache-hdfs"] -apache-hive = ["apache-airflow-providers-apache-hive (>=5.1.0)"] +apache-hive = ["apache-airflow-providers-apache-hive"] apache-impala = ["apache-airflow-providers-apache-impala"] apache-kafka = ["apache-airflow-providers-apache-kafka"] apache-kylin = ["apache-airflow-providers-apache-kylin"] @@ -303,53 +303,49 @@ apprise = ["apache-airflow-providers-apprise"] arangodb = ["apache-airflow-providers-arangodb"] asana = ["apache-airflow-providers-asana"] async = ["eventlet (>=0.33.3)", "gevent (>=0.13)", "greenlet (>=0.4.9)"] -atlas = ["apache-airflow-providers-apache-atlas"] +atlas = ["apache-airflow[apache-atlas]"] atlassian-jira = ["apache-airflow-providers-atlassian-jira"] -aws = ["apache-airflow-providers-amazon"] -azure = ["apache-airflow-providers-microsoft-azure"] -cassandra = ["apache-airflow-providers-apache-cassandra"] -celery = ["apache-airflow (>=2.6.0)", "apache-airflow-providers-celery", "celery (>=5.3.0,!=5.3.2,!=5.3.3,<6)", "flower (>=1.0.0)", "google-re2 (>=1.0)"] +aws = ["apache-airflow[amazon]"] +azure = ["apache-airflow[microsoft-azure]"] +cassandra = ["apache-airflow[apache-cassandra]"] +celery = ["apache-airflow-providers-celery"] cgroups = ["cgroupspy (>=0.2.2)"] cloudant = ["apache-airflow-providers-cloudant"] -cncf-kubernetes = ["aiofiles (>=23.2.0)", "apache-airflow (>=2.6.0)", "apache-airflow-providers-cncf-kubernetes", "asgiref (>=3.5.2)", "cryptography (>=2.0.0)", "google-re2 (>=1.0)", "kubernetes (>=21.7.0,<24)", "kubernetes-asyncio (>=18.20.1,<25)"] +cncf-kubernetes = ["apache-airflow-providers-cncf-kubernetes"] cohere = ["apache-airflow-providers-cohere"] common-io = ["apache-airflow-providers-common-io"] common-sql = ["apache-airflow-providers-common-sql"] databricks = ["apache-airflow-providers-databricks"] datadog = ["apache-airflow-providers-datadog"] dbt-cloud = ["apache-airflow-providers-dbt-cloud"] -deprecated-api = ["requests (>=2.26.0)"] -devel = ["aiobotocore (>=2.1.1)", "aioresponses", "apache-airflow (>=2.6.0)", "apache-airflow-providers-common-sql", "astroid (>=2.12.3,<3.0)", "aws-xray-sdk", "backports.zoneinfo (>=0.2.1)", "bcrypt (>=2.0.0)", "beautifulsoup4 (>=4.7.1)", "black", "blinker", "cgroupspy (>=0.2.2)", "checksumdir", "click (>=8.0)", "click (>=8.0,!=8.1.4,!=8.1.5)", "coverage (>=7.2)", "cryptography (>=2.0.0)", "deltalake (>=0.12.0)", "docutils (<0.17.0)", "duckdb (>=0.9.0)", "eralchemy2", "filelock", "flask-bcrypt (>=0.7.1)", "gitpython", "ipdb", "kubernetes (>=21.7.0,<24)", "mongomock", "moto[cloudformation,glue] (>=4.2.9)", "mypy (==1.2.0)", "mypy-boto3-appflow (>=1.28.0)", "mypy-boto3-rds (>=1.28.0)", "mypy-boto3-redshift-data (>=1.28.0)", "mypy-boto3-s3 (>=1.28.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "pandas (>=0.17.1)", "pipdeptree", "pre-commit", "pyarrow (>=9.0.0)", "pyarrow-hotfix", "pygithub", "pyiceberg (>=0.5.0)", "pytest (>=7.1)", "pytest-asyncio (!=0.23.0,!=0.23.1)", "pytest-cov", "pytest-httpx", "pytest-icdiff", "pytest-instafail", "pytest-mock", "pytest-rerunfailures", "pytest-timeouts", "pytest-xdist", "python3-saml (>=1.16.0)", "pywinrm", "requests-mock", "restructuredtext-lint", "rich-click (>=1.7.0)", "ruff (>=0.0.219)", "s3fs (>=2023.10.0)", "semver", "sphinx (>=5.2.0)", "sphinx-airflow-theme", "sphinx-argparse (>=0.1.13)", "sphinx-autoapi (>=2.0.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0)", "sphinx-rtd-theme (>=0.1.6)", "sphinxcontrib-httpdomain (>=1.7.0)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-spelling (>=7.3)", "time-machine", "towncrier", "twine", "types-Deprecated", "types-Markdown", "types-PyMySQL", "types-PyYAML", "types-aiofiles", "types-certifi", "types-croniter", "types-docutils", "types-paramiko", "types-protobuf", "types-python-dateutil", "types-python-slugify", "types-pytz", "types-redis", "types-requests", "types-setuptools", "types-tabulate", "types-termcolor", "types-toml", "wheel", "yamllint"] -devel-all = ["PyGithub (!=1.58)", "PyOpenSSL", "adal (>=1.2.7)", "adlfs (>=2023.10.0)", "aiobotocore (>=2.1.1)", "aiofiles (>=23.2.0)", "aiohttp", "aiohttp (>=3.6.3,<4)", "aioresponses", "alibabacloud-adb20211201 (>=1.0.0)", "alibabacloud-tea-openapi (>=0.3.7)", "amqp", "analytics-python (>=1.2.9)", "apache-airflow (>=2.6.0)", "apache-airflow (>=2.7.0)", "apache-airflow (>=2.8.0)", "apache-airflow-providers-airbyte", "apache-airflow-providers-alibaba", "apache-airflow-providers-amazon", "apache-airflow-providers-apache-beam", "apache-airflow-providers-apache-cassandra", "apache-airflow-providers-apache-drill", "apache-airflow-providers-apache-druid", "apache-airflow-providers-apache-flink", "apache-airflow-providers-apache-hdfs", "apache-airflow-providers-apache-hive", "apache-airflow-providers-apache-impala", "apache-airflow-providers-apache-kafka", "apache-airflow-providers-apache-kylin", "apache-airflow-providers-apache-livy", "apache-airflow-providers-apache-pig", "apache-airflow-providers-apache-pinot", "apache-airflow-providers-apache-spark", "apache-airflow-providers-apprise", "apache-airflow-providers-arangodb", "apache-airflow-providers-asana", "apache-airflow-providers-atlassian-jira", "apache-airflow-providers-celery", "apache-airflow-providers-cloudant", "apache-airflow-providers-cncf-kubernetes", "apache-airflow-providers-cohere", "apache-airflow-providers-common-io", "apache-airflow-providers-common-sql", "apache-airflow-providers-databricks", "apache-airflow-providers-datadog", "apache-airflow-providers-dbt-cloud", "apache-airflow-providers-dingding", "apache-airflow-providers-discord", "apache-airflow-providers-docker", "apache-airflow-providers-elasticsearch", "apache-airflow-providers-exasol", "apache-airflow-providers-facebook", "apache-airflow-providers-ftp", "apache-airflow-providers-github", "apache-airflow-providers-google", "apache-airflow-providers-grpc", "apache-airflow-providers-hashicorp", "apache-airflow-providers-http", "apache-airflow-providers-imap", "apache-airflow-providers-influxdb", "apache-airflow-providers-jdbc", "apache-airflow-providers-jenkins", "apache-airflow-providers-microsoft-azure", "apache-airflow-providers-microsoft-mssql", "apache-airflow-providers-microsoft-psrp", "apache-airflow-providers-microsoft-winrm", "apache-airflow-providers-mongo", "apache-airflow-providers-mysql", "apache-airflow-providers-neo4j", "apache-airflow-providers-odbc", "apache-airflow-providers-openai", "apache-airflow-providers-openfaas", "apache-airflow-providers-openlineage", "apache-airflow-providers-opensearch", "apache-airflow-providers-opsgenie", "apache-airflow-providers-oracle", "apache-airflow-providers-pagerduty", "apache-airflow-providers-papermill", "apache-airflow-providers-pgvector", "apache-airflow-providers-pinecone", "apache-airflow-providers-postgres", "apache-airflow-providers-presto", "apache-airflow-providers-redis", "apache-airflow-providers-salesforce", "apache-airflow-providers-samba", "apache-airflow-providers-segment", "apache-airflow-providers-sendgrid", "apache-airflow-providers-sftp", "apache-airflow-providers-singularity", "apache-airflow-providers-slack", "apache-airflow-providers-smtp", "apache-airflow-providers-snowflake", "apache-airflow-providers-sqlite", "apache-airflow-providers-ssh", "apache-airflow-providers-tableau", "apache-airflow-providers-tabular", "apache-airflow-providers-telegram", "apache-airflow-providers-trino", "apache-airflow-providers-vertica", "apache-airflow-providers-weaviate", "apache-airflow-providers-yandex", "apache-airflow-providers-zendesk", "apache-beam (>=2.47.0)", "apprise", "asana (>=0.10,<4.0.0)", "asgiref", "asgiref (>=3.5.2)", "astroid (>=2.12.3,<3.0)", "atlasclient (>=0.1.2)", "atlassian-python-api (>=1.14.2)", "attrs (>=22.2)", "authlib (>=1.0.0)", "aws-xray-sdk", "azure-batch (>=8.0.0)", "azure-cosmos (>=4.0.0)", "azure-datalake-store (>=0.0.45)", "azure-identity (>=1.3.1)", "azure-keyvault-secrets (>=4.1.0)", "azure-kusto-data (>=4.1.0)", "azure-mgmt-containerinstance (>=9.0.0)", "azure-mgmt-containerregistry (>=8.0.0)", "azure-mgmt-cosmosdb", "azure-mgmt-datafactory (>=2.0.0)", "azure-mgmt-datalake-store (>=0.5.0)", "azure-mgmt-resource (>=2.2.0)", "azure-mgmt-storage (>=16.0.0)", "azure-servicebus (>=7.6.1)", "azure-storage-blob (>=12.14.0)", "azure-storage-file-datalake (>=12.9.1)", "azure-storage-file-share", "azure-synapse-artifacts (>=0.17.0)", "azure-synapse-spark", "backports.zoneinfo (>=0.2.1)", "bcrypt (>=2.0.0)", "beautifulsoup4 (>=4.7.1)", "black", "blinker", "blinker (>=1.1)", "boto3 (>=1.28.0)", "botocore (>=1.31.0)", "cassandra-driver (>=3.13.0)", "celery (>=5.3.0,!=5.3.2,!=5.3.3,<6)", "cgroupspy (>=0.2.2)", "checksumdir", "click (>=8.0)", "click (>=8.0,!=8.1.4,!=8.1.5)", "cloudant (>=2.0)", "cohere (>=4.27)", "confluent-kafka (>=1.8.2)", "coverage (>=7.2)", "cryptography (>=2.0.0)", "databricks-sql-connector (>=2.0.0,!=2.9.0,<3.0.0)", "datadog (>=0.14.0)", "deltalake (>=0.12.0)", "dnspython (>=1.13.0)", "docker (>=5.0.3)", "docutils (<0.17.0)", "duckdb (>=0.9.0)", "elasticsearch (>=8.10,<9)", "eralchemy2", "eventlet (>=0.33.3)", "facebook-business (>=6.0.2)", "filelock", "flask-appbuilder[oauth] (==4.3.10)", "flask-bcrypt (>=0.7.1)", "flower (>=1.0.0)", "gcloud-aio-auth (>=4.0.0,<5.0.0)", "gcloud-aio-bigquery (>=6.1.2)", "gcloud-aio-storage", "gcsfs (>=2023.10.0)", "gevent (>=0.13)", "gitpython", "google-ads (>=22.1.0)", "google-api-core (>=2.11.0)", "google-api-python-client (>=1.6.0)", "google-auth (>=1.0.0)", "google-auth (>=1.0.0,<3.0.0)", "google-auth-httplib2 (>=0.0.1)", "google-cloud-aiplatform (>=1.22.1)", "google-cloud-automl (>=2.12.0)", "google-cloud-batch (>=0.13.0)", "google-cloud-bigquery-datatransfer (>=3.13.0)", "google-cloud-bigtable (>=2.17.0)", "google-cloud-build (>=3.22.0)", "google-cloud-compute (>=1.10.0)", "google-cloud-container (>=2.17.4)", "google-cloud-datacatalog (>=3.11.1)", "google-cloud-dataflow-client (>=0.8.6)", "google-cloud-dataform (>=0.5.0)", "google-cloud-dataplex (>=1.10.0)", "google-cloud-dataproc (>=5.8.0)", "google-cloud-dataproc-metastore (>=1.12.0)", "google-cloud-dlp (>=3.12.0)", "google-cloud-kms (>=2.15.0)", "google-cloud-language (>=2.9.0)", "google-cloud-logging (>=3.5.0)", "google-cloud-memcache (>=1.7.0)", "google-cloud-monitoring (>=2.18.0)", "google-cloud-orchestration-airflow (>=1.10.0)", "google-cloud-os-login (>=2.9.1)", "google-cloud-pubsub (>=2.19.0)", "google-cloud-redis (>=2.12.0)", "google-cloud-run (>=0.9.0)", "google-cloud-secret-manager (>=2.16.0)", "google-cloud-spanner (>=3.11.1)", "google-cloud-speech (>=2.18.0)", "google-cloud-storage (>=2.7.0)", "google-cloud-storage-transfer (>=1.4.1)", "google-cloud-tasks (>=2.13.0)", "google-cloud-texttospeech (>=2.14.1)", "google-cloud-translate (>=3.11.0)", "google-cloud-videointelligence (>=2.11.0)", "google-cloud-vision (>=3.4.0)", "google-cloud-workflows (>=1.10.0)", "google-re2 (>=1.0)", "greenlet (>=0.4.9)", "grpcio (>=1.15.0)", "grpcio-gcp (>=0.2.2)", "grpcio-status", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "httpx", "hvac (>=0.10)", "impyla (>=0.18.0,<1.0)", "inflection (>=0.5.1)", "influxdb-client (>=1.19.0)", "ipdb", "ipykernel", "jaydebeapi (>=1.1.1)", "json-merge-patch (>=0.2)", "jsonpath-ng (>=1.5.3)", "kubernetes (>=21.7.0,<24)", "kubernetes-asyncio (>=18.20.1,<25)", "kylinpy (>=2.6)", "ldap3 (>=2.5.1)", "looker-sdk (>=22.2.0)", "mongomock", "moto[cloudformation,glue] (>=4.2.9)", "mypy (==1.2.0)", "mypy-boto3-appflow (>=1.28.0)", "mypy-boto3-rds (>=1.28.0)", "mypy-boto3-redshift-data (>=1.28.0)", "mypy-boto3-s3 (>=1.28.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "neo4j (>=4.2.1)", "openai[datalib] (>=1.0)", "openlineage-integration-common (>=0.28.0)", "openlineage-python (>=0.28.0)", "opensearch-py (>=2.2.0)", "opentelemetry-exporter-prometheus", "opsgenie-sdk (>=2.1.5)", "oracledb (>=1.0.0)", "oss2 (>=2.14.0)", "pandas (>=0.17.1)", "pandas-gbq", "papermill[all] (>=1.2.1)", "paramiko (>=2.6.0)", "paramiko (>=2.8.0)", "pdpyras (>=4.1.2)", "pgvector (>=0.2.3)", "pinecone-client (>=2.2.4)", "pinotdb (>0.4.7)", "pipdeptree", "plyvel", "pre-commit", "presto-python-client (>=0.8.4)", "proto-plus (>=1.19.6)", "psycopg2-binary (>=2.8.0)", "pyarrow (>=9.0.0)", "pyarrow-hotfix", "pydruid (>=0.4.1)", "pyexasol (>=0.5.1)", "pygithub", "pyhive[hive-pure-sasl] (>=0.7.0)", "pyiceberg (>=0.5.0)", "pykerberos (>=1.1.13)", "pymongo (>=3.6.0)", "pymssql (>=2.1.8)", "pyodbc", "pypsrp (>=0.8.0)", "pyspark", "pytest (>=7.1)", "pytest-asyncio (!=0.23.0,!=0.23.1)", "pytest-cov", "pytest-httpx", "pytest-icdiff", "pytest-instafail", "pytest-mock", "pytest-rerunfailures", "pytest-timeouts", "pytest-xdist", "python-arango (>=7.3.2)", "python-dotenv (>=0.21.0)", "python-jenkins (>=1.0.0)", "python-ldap", "python-telegram-bot (>=20.0.0)", "python3-saml (>=1.16.0)", "pywinrm", "pywinrm (>=0.4)", "redis (>=4.5.2,!=4.5.5,<5.0.0)", "redshift-connector (>=2.0.888)", "requests (>=2.26.0)", "requests (>=2.27,<3)", "requests-kerberos (>=0.10.0)", "requests-mock", "requests-toolbelt", "restructuredtext-lint", "rich-click (>=1.7.0)", "ruff (>=0.0.219)", "s3fs (>=2023.10.0)", "scrapbook[all]", "semver", "sendgrid (>=6.0.0)", "sentry-sdk (>=1.32.0,!=1.33.0)", "simple-salesforce (>=1.0.0)", "slack-sdk (>=3.0.0)", "smbprotocol (>=1.5.0)", "snowflake-connector-python (>=2.7.8)", "snowflake-sqlalchemy (>=1.1.0)", "sphinx (>=5.2.0)", "sphinx-airflow-theme", "sphinx-argparse (>=0.1.13)", "sphinx-autoapi (>=2.0.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0)", "sphinx-rtd-theme (>=0.1.6)", "sphinxcontrib-httpdomain (>=1.7.0)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-spelling (>=7.3)", "spython (>=0.0.56)", "sqlalchemy-bigquery (>=1.2.1)", "sqlalchemy-drill (>=1.1.0)", "sqlalchemy-redshift (>=0.8.6)", "sqlalchemy-spanner (>=1.6.2)", "sqlparse (>=0.4.2)", "sshtunnel (>=0.3.2)", "statsd (>=3.3.0)", "tableauserverclient", "thrift (>=0.9.2)", "thrift-sasl (>=0.2.0)", "time-machine", "towncrier", "trino (>=0.318.0)", "twine", "types-Deprecated", "types-Markdown", "types-PyMySQL", "types-PyYAML", "types-aiofiles", "types-certifi", "types-croniter", "types-docutils", "types-paramiko", "types-protobuf", "types-python-dateutil", "types-python-slugify", "types-pytz", "types-redis", "types-requests", "types-setuptools", "types-tabulate", "types-termcolor", "types-toml", "vertica-python (>=0.5.1)", "virtualenv", "watchtower (>=2.0.1,<4)", "weaviate-client (>=3.24.2)", "wheel", "yamllint", "yandexcloud (>=0.228.0)", "zenpy (>=2.0.24)"] -devel-ci = ["PyGithub (!=1.58)", "PyOpenSSL", "adal (>=1.2.7)", "adlfs (>=2023.10.0)", "aiobotocore (>=2.1.1)", "aiofiles (>=23.2.0)", "aiohttp", "aiohttp (>=3.6.3,<4)", "aioresponses", "alibabacloud-adb20211201 (>=1.0.0)", "alibabacloud-tea-openapi (>=0.3.7)", "amqp", "analytics-python (>=1.2.9)", "apache-airflow (>=2.6.0)", "apache-airflow (>=2.7.0)", "apache-airflow (>=2.8.0)", "apache-airflow-providers-airbyte", "apache-airflow-providers-alibaba", "apache-airflow-providers-amazon", "apache-airflow-providers-apache-beam", "apache-airflow-providers-apache-cassandra", "apache-airflow-providers-apache-drill", "apache-airflow-providers-apache-druid", "apache-airflow-providers-apache-flink", "apache-airflow-providers-apache-hdfs", "apache-airflow-providers-apache-hive", "apache-airflow-providers-apache-impala", "apache-airflow-providers-apache-kafka", "apache-airflow-providers-apache-kylin", "apache-airflow-providers-apache-livy", "apache-airflow-providers-apache-pig", "apache-airflow-providers-apache-pinot", "apache-airflow-providers-apache-spark", "apache-airflow-providers-apprise", "apache-airflow-providers-arangodb", "apache-airflow-providers-asana", "apache-airflow-providers-atlassian-jira", "apache-airflow-providers-celery", "apache-airflow-providers-cloudant", "apache-airflow-providers-cncf-kubernetes", "apache-airflow-providers-cohere", "apache-airflow-providers-common-io", "apache-airflow-providers-common-sql", "apache-airflow-providers-databricks", "apache-airflow-providers-datadog", "apache-airflow-providers-dbt-cloud", "apache-airflow-providers-dingding", "apache-airflow-providers-discord", "apache-airflow-providers-docker", "apache-airflow-providers-elasticsearch", "apache-airflow-providers-exasol", "apache-airflow-providers-facebook", "apache-airflow-providers-ftp", "apache-airflow-providers-github", "apache-airflow-providers-google", "apache-airflow-providers-grpc", "apache-airflow-providers-hashicorp", "apache-airflow-providers-http", "apache-airflow-providers-imap", "apache-airflow-providers-influxdb", "apache-airflow-providers-jdbc", "apache-airflow-providers-jenkins", "apache-airflow-providers-microsoft-azure", "apache-airflow-providers-microsoft-mssql", "apache-airflow-providers-microsoft-psrp", "apache-airflow-providers-microsoft-winrm", "apache-airflow-providers-mongo", "apache-airflow-providers-mysql", "apache-airflow-providers-neo4j", "apache-airflow-providers-odbc", "apache-airflow-providers-openai", "apache-airflow-providers-openfaas", "apache-airflow-providers-openlineage", "apache-airflow-providers-opensearch", "apache-airflow-providers-opsgenie", "apache-airflow-providers-oracle", "apache-airflow-providers-pagerduty", "apache-airflow-providers-papermill", "apache-airflow-providers-pgvector", "apache-airflow-providers-pinecone", "apache-airflow-providers-postgres", "apache-airflow-providers-presto", "apache-airflow-providers-redis", "apache-airflow-providers-salesforce", "apache-airflow-providers-samba", "apache-airflow-providers-segment", "apache-airflow-providers-sendgrid", "apache-airflow-providers-sftp", "apache-airflow-providers-singularity", "apache-airflow-providers-slack", "apache-airflow-providers-smtp", "apache-airflow-providers-snowflake", "apache-airflow-providers-sqlite", "apache-airflow-providers-ssh", "apache-airflow-providers-tableau", "apache-airflow-providers-tabular", "apache-airflow-providers-telegram", "apache-airflow-providers-trino", "apache-airflow-providers-vertica", "apache-airflow-providers-weaviate", "apache-airflow-providers-yandex", "apache-airflow-providers-zendesk", "apache-beam (>=2.47.0)", "apprise", "asana (>=0.10,<4.0.0)", "asgiref", "asgiref (>=3.5.2)", "astroid (>=2.12.3,<3.0)", "atlasclient (>=0.1.2)", "atlassian-python-api (>=1.14.2)", "attrs (>=22.2)", "authlib (>=1.0.0)", "aws-xray-sdk", "azure-batch (>=8.0.0)", "azure-cosmos (>=4.0.0)", "azure-datalake-store (>=0.0.45)", "azure-identity (>=1.3.1)", "azure-keyvault-secrets (>=4.1.0)", "azure-kusto-data (>=4.1.0)", "azure-mgmt-containerinstance (>=9.0.0)", "azure-mgmt-containerregistry (>=8.0.0)", "azure-mgmt-cosmosdb", "azure-mgmt-datafactory (>=2.0.0)", "azure-mgmt-datalake-store (>=0.5.0)", "azure-mgmt-resource (>=2.2.0)", "azure-mgmt-storage (>=16.0.0)", "azure-servicebus (>=7.6.1)", "azure-storage-blob (>=12.14.0)", "azure-storage-file-datalake (>=12.9.1)", "azure-storage-file-share", "azure-synapse-artifacts (>=0.17.0)", "azure-synapse-spark", "backports.zoneinfo (>=0.2.1)", "bcrypt (>=2.0.0)", "beautifulsoup4 (>=4.7.1)", "black", "blinker", "blinker (>=1.1)", "boto3 (>=1.28.0)", "botocore (>=1.31.0)", "cassandra-driver (>=3.13.0)", "celery (>=5.3.0,!=5.3.2,!=5.3.3,<6)", "cgroupspy (>=0.2.2)", "checksumdir", "click (>=8.0)", "click (>=8.0,!=8.1.4,!=8.1.5)", "cloudant (>=2.0)", "cohere (>=4.27)", "confluent-kafka (>=1.8.2)", "coverage (>=7.2)", "cryptography (>=2.0.0)", "databricks-sql-connector (>=2.0.0,!=2.9.0,<3.0.0)", "datadog (>=0.14.0)", "deltalake (>=0.12.0)", "dnspython (>=1.13.0)", "docker (>=5.0.3)", "docutils (<0.17.0)", "duckdb (>=0.9.0)", "elasticsearch (>=8.10,<9)", "eralchemy2", "eventlet (>=0.33.3)", "facebook-business (>=6.0.2)", "filelock", "flask-appbuilder[oauth] (==4.3.10)", "flask-bcrypt (>=0.7.1)", "flower (>=1.0.0)", "gcloud-aio-auth (>=4.0.0,<5.0.0)", "gcloud-aio-bigquery (>=6.1.2)", "gcloud-aio-storage", "gcsfs (>=2023.10.0)", "gevent (>=0.13)", "gitpython", "google-ads (>=22.1.0)", "google-api-core (>=2.11.0)", "google-api-python-client (>=1.6.0)", "google-auth (>=1.0.0)", "google-auth (>=1.0.0,<3.0.0)", "google-auth-httplib2 (>=0.0.1)", "google-cloud-aiplatform (>=1.22.1)", "google-cloud-automl (>=2.12.0)", "google-cloud-batch (>=0.13.0)", "google-cloud-bigquery-datatransfer (>=3.13.0)", "google-cloud-bigtable (>=2.17.0)", "google-cloud-build (>=3.22.0)", "google-cloud-compute (>=1.10.0)", "google-cloud-container (>=2.17.4)", "google-cloud-datacatalog (>=3.11.1)", "google-cloud-dataflow-client (>=0.8.6)", "google-cloud-dataform (>=0.5.0)", "google-cloud-dataplex (>=1.10.0)", "google-cloud-dataproc (>=5.8.0)", "google-cloud-dataproc-metastore (>=1.12.0)", "google-cloud-dlp (>=3.12.0)", "google-cloud-kms (>=2.15.0)", "google-cloud-language (>=2.9.0)", "google-cloud-logging (>=3.5.0)", "google-cloud-memcache (>=1.7.0)", "google-cloud-monitoring (>=2.18.0)", "google-cloud-orchestration-airflow (>=1.10.0)", "google-cloud-os-login (>=2.9.1)", "google-cloud-pubsub (>=2.19.0)", "google-cloud-redis (>=2.12.0)", "google-cloud-run (>=0.9.0)", "google-cloud-secret-manager (>=2.16.0)", "google-cloud-spanner (>=3.11.1)", "google-cloud-speech (>=2.18.0)", "google-cloud-storage (>=2.7.0)", "google-cloud-storage-transfer (>=1.4.1)", "google-cloud-tasks (>=2.13.0)", "google-cloud-texttospeech (>=2.14.1)", "google-cloud-translate (>=3.11.0)", "google-cloud-videointelligence (>=2.11.0)", "google-cloud-vision (>=3.4.0)", "google-cloud-workflows (>=1.10.0)", "google-re2 (>=1.0)", "greenlet (>=0.4.9)", "grpcio (>=1.15.0)", "grpcio-gcp (>=0.2.2)", "grpcio-status", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "httpx", "hvac (>=0.10)", "impyla (>=0.18.0,<1.0)", "inflection (>=0.5.1)", "influxdb-client (>=1.19.0)", "ipdb", "ipykernel", "jaydebeapi (>=1.1.1)", "json-merge-patch (>=0.2)", "jsonpath-ng (>=1.5.3)", "kubernetes (>=21.7.0,<24)", "kubernetes-asyncio (>=18.20.1,<25)", "kylinpy (>=2.6)", "ldap3 (>=2.5.1)", "looker-sdk (>=22.2.0)", "mongomock", "moto[cloudformation,glue] (>=4.2.9)", "mypy (==1.2.0)", "mypy-boto3-appflow (>=1.28.0)", "mypy-boto3-rds (>=1.28.0)", "mypy-boto3-redshift-data (>=1.28.0)", "mypy-boto3-s3 (>=1.28.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "neo4j (>=4.2.1)", "openai[datalib] (>=1.0)", "openlineage-integration-common (>=0.28.0)", "openlineage-python (>=0.28.0)", "opensearch-py (>=2.2.0)", "opentelemetry-exporter-prometheus", "opsgenie-sdk (>=2.1.5)", "oracledb (>=1.0.0)", "oss2 (>=2.14.0)", "pandas (>=0.17.1)", "pandas-gbq", "papermill[all] (>=1.2.1)", "paramiko (>=2.6.0)", "paramiko (>=2.8.0)", "pdpyras (>=4.1.2)", "pgvector (>=0.2.3)", "pinecone-client (>=2.2.4)", "pinotdb (>0.4.7)", "pipdeptree", "plyvel", "pre-commit", "presto-python-client (>=0.8.4)", "proto-plus (>=1.19.6)", "psycopg2-binary (>=2.8.0)", "pyarrow (>=9.0.0)", "pyarrow-hotfix", "pydruid (>=0.4.1)", "pyexasol (>=0.5.1)", "pygithub", "pyhive[hive-pure-sasl] (>=0.7.0)", "pyiceberg (>=0.5.0)", "pykerberos (>=1.1.13)", "pymongo (>=3.6.0)", "pymssql (>=2.1.8)", "pyodbc", "pypsrp (>=0.8.0)", "pyspark", "pytest (>=7.1)", "pytest-asyncio (!=0.23.0,!=0.23.1)", "pytest-cov", "pytest-httpx", "pytest-icdiff", "pytest-instafail", "pytest-mock", "pytest-rerunfailures", "pytest-timeouts", "pytest-xdist", "python-arango (>=7.3.2)", "python-dotenv (>=0.21.0)", "python-jenkins (>=1.0.0)", "python-ldap", "python-telegram-bot (>=20.0.0)", "python3-saml (>=1.16.0)", "pywinrm", "pywinrm (>=0.4)", "redis (>=4.5.2,!=4.5.5,<5.0.0)", "redshift-connector (>=2.0.888)", "requests (>=2.26.0)", "requests (>=2.27,<3)", "requests-kerberos (>=0.10.0)", "requests-mock", "requests-toolbelt", "restructuredtext-lint", "rich-click (>=1.7.0)", "ruff (>=0.0.219)", "s3fs (>=2023.10.0)", "scrapbook[all]", "semver", "sendgrid (>=6.0.0)", "sentry-sdk (>=1.32.0,!=1.33.0)", "simple-salesforce (>=1.0.0)", "slack-sdk (>=3.0.0)", "smbprotocol (>=1.5.0)", "snowflake-connector-python (>=2.7.8)", "snowflake-sqlalchemy (>=1.1.0)", "sphinx (>=5.2.0)", "sphinx-airflow-theme", "sphinx-argparse (>=0.1.13)", "sphinx-autoapi (>=2.0.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0)", "sphinx-rtd-theme (>=0.1.6)", "sphinxcontrib-httpdomain (>=1.7.0)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-spelling (>=7.3)", "spython (>=0.0.56)", "sqlalchemy-bigquery (>=1.2.1)", "sqlalchemy-drill (>=1.1.0)", "sqlalchemy-redshift (>=0.8.6)", "sqlalchemy-spanner (>=1.6.2)", "sqlparse (>=0.4.2)", "sshtunnel (>=0.3.2)", "statsd (>=3.3.0)", "tableauserverclient", "thrift (>=0.9.2)", "thrift-sasl (>=0.2.0)", "time-machine", "towncrier", "trino (>=0.318.0)", "twine", "types-Deprecated", "types-Markdown", "types-PyMySQL", "types-PyYAML", "types-aiofiles", "types-certifi", "types-croniter", "types-docutils", "types-paramiko", "types-protobuf", "types-python-dateutil", "types-python-slugify", "types-pytz", "types-redis", "types-requests", "types-setuptools", "types-tabulate", "types-termcolor", "types-toml", "vertica-python (>=0.5.1)", "virtualenv", "watchtower (>=2.0.1,<4)", "weaviate-client (>=3.24.2)", "wheel", "yamllint", "yandexcloud (>=0.228.0)", "zenpy (>=2.0.24)"] -devel-hadoop = ["aiobotocore (>=2.1.1)", "aioresponses", "apache-airflow (>=2.6.0)", "apache-airflow-providers-apache-hdfs", "apache-airflow-providers-apache-hive", "apache-airflow-providers-common-sql", "apache-airflow-providers-presto", "apache-airflow-providers-trino", "astroid (>=2.12.3,<3.0)", "aws-xray-sdk", "backports.zoneinfo (>=0.2.1)", "bcrypt (>=2.0.0)", "beautifulsoup4 (>=4.7.1)", "black", "blinker", "cgroupspy (>=0.2.2)", "checksumdir", "click (>=8.0)", "click (>=8.0,!=8.1.4,!=8.1.5)", "coverage (>=7.2)", "cryptography (>=2.0.0)", "deltalake (>=0.12.0)", "docutils (<0.17.0)", "duckdb (>=0.9.0)", "eralchemy2", "filelock", "flask-bcrypt (>=0.7.1)", "gitpython", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "impyla (>=0.18.0,<1.0)", "ipdb", "kubernetes (>=21.7.0,<24)", "mongomock", "moto[cloudformation,glue] (>=4.2.9)", "mypy (==1.2.0)", "mypy-boto3-appflow (>=1.28.0)", "mypy-boto3-rds (>=1.28.0)", "mypy-boto3-redshift-data (>=1.28.0)", "mypy-boto3-s3 (>=1.28.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "pandas (>=0.17.1)", "pipdeptree", "pre-commit", "presto-python-client (>=0.8.4)", "pyarrow (>=9.0.0)", "pyarrow-hotfix", "pygithub", "pyhive[hive-pure-sasl] (>=0.7.0)", "pyiceberg (>=0.5.0)", "pykerberos (>=1.1.13)", "pytest (>=7.1)", "pytest-asyncio (!=0.23.0,!=0.23.1)", "pytest-cov", "pytest-httpx", "pytest-icdiff", "pytest-instafail", "pytest-mock", "pytest-rerunfailures", "pytest-timeouts", "pytest-xdist", "python3-saml (>=1.16.0)", "pywinrm", "requests-kerberos (>=0.10.0)", "requests-mock", "restructuredtext-lint", "rich-click (>=1.7.0)", "ruff (>=0.0.219)", "s3fs (>=2023.10.0)", "semver", "sphinx (>=5.2.0)", "sphinx-airflow-theme", "sphinx-argparse (>=0.1.13)", "sphinx-autoapi (>=2.0.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0)", "sphinx-rtd-theme (>=0.1.6)", "sphinxcontrib-httpdomain (>=1.7.0)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-spelling (>=7.3)", "thrift (>=0.9.2)", "thrift-sasl (>=0.2.0)", "time-machine", "towncrier", "twine", "types-Deprecated", "types-Markdown", "types-PyMySQL", "types-PyYAML", "types-aiofiles", "types-certifi", "types-croniter", "types-docutils", "types-paramiko", "types-protobuf", "types-python-dateutil", "types-python-slugify", "types-pytz", "types-redis", "types-requests", "types-setuptools", "types-tabulate", "types-termcolor", "types-toml", "wheel", "yamllint"] +deprecated-api = ["requests (>=2.27.0,<3)"] +devel-ci = ["adal (>=1.2.7)", "adlfs (>=2023.10.0)", "aiobotocore (>=2.7.0)", "aiobotocore (>=2.7.0)", "aiofiles (>=23.2.0)", "aiohttp (>=3.9.2)", "aiohttp (>=3.9.2)", "aiohttp (>=3.9.2)", "aiohttp (>=3.9.2,<4)", "aioresponses (>=0.7.6)", "alibabacloud-adb20211201 (>=1.0.0)", "alibabacloud-tea-openapi (>=0.3.7)", "amqp", "analytics-python (>=1.2.9)", "apache-beam (>=2.53.0)", "apprise", "asana (>=0.10,<4.0.0)", "asgiref", "asgiref", "asgiref", "asgiref", "asgiref", "asgiref (>=3.5.2)", "asgiref (>=3.5.2)", "astroid (>=2.12.3,<3.0)", "asyncssh (>=2.12.0)", "atlasclient (>=0.1.2)", "atlassian-python-api (>=1.14.2,!=3.41.6)", "attrs (>=22.2)", "authlib (>=1.0.0)", "authlib (>=1.0.0)", "aws-xray-sdk (>=2.12.0)", "azure-batch (>=8.0.0)", "azure-cosmos (>=4.0.0)", "azure-datalake-store (>=0.0.45)", "azure-identity (>=1.3.1)", "azure-keyvault-secrets (>=4.1.0)", "azure-kusto-data (>=4.1.0)", "azure-mgmt-containerinstance (>=9.0.0)", "azure-mgmt-containerregistry (>=8.0.0)", "azure-mgmt-cosmosdb", "azure-mgmt-datafactory (>=2.0.0)", "azure-mgmt-datalake-store (>=0.5.0)", "azure-mgmt-resource (>=2.2.0)", "azure-mgmt-storage (>=16.0.0)", "azure-servicebus (>=7.6.1)", "azure-storage-blob (>=12.14.0)", "azure-storage-file-datalake (>=12.9.1)", "azure-storage-file-share", "azure-synapse-artifacts (>=0.17.0)", "azure-synapse-spark", "backports-zoneinfo (>=0.2.1)", "bcrypt (>=2.0.0)", "beautifulsoup4", "beautifulsoup4 (>=4.7.1)", "black (>=23.12.0)", "blinker (>=1.1)", "blinker (>=1.7.0)", "boto3 (>=1.33.0)", "botocore (>=1.33.0)", "cassandra-driver (>=3.13.0)", "celery (>=5.3.0,!=5.3.2,!=5.3.3,<6)", "cgroupspy (>=0.2.2)", "checksumdir (>=1.2.0)", "click (>=8.0)", "click (>=8.0,!=8.1.4,!=8.1.5)", "cloudant (>=2.0)", "cohere (>=4.37)", "confluent-kafka (>=1.8.2)", "coverage (>=7.2)", "cryptography (>=2.0.0)", "cryptography (>=2.0.0)", "databricks-sql-connector (>=2.0.0,!=2.9.0,<3.0.0)", "datadog (>=0.14.0)", "deltalake (>=0.12.0)", "dnspython (>=1.13.0)", "docker (>=5.0.3)", "docutils (>=0.16,<0.17)", "duckdb (>=0.9.0)", "elasticsearch (>=8.10,<9)", "eralchemy2 (>=1.3.8)", "eventlet (>=0.33.3)", "facebook-business (>=6.0.2)", "flask-bcrypt (>=0.7.1)", "flower (>=1.0.0)", "gcloud-aio-auth (>=4.0.0,<5.0.0)", "gcloud-aio-bigquery (>=6.1.2)", "gcloud-aio-storage (>=9.0.0)", "gcsfs (>=2023.10.0)", "gevent (>=0.13)", "gitpython (>=3.1.40)", "google-ads (>=22.1.0)", "google-analytics-admin", "google-api-core (>=2.11.0,!=2.16.0)", "google-api-python-client (>=1.6.0)", "google-auth (>=1.0.0)", "google-auth (>=1.0.0,<3.0.0)", "google-auth-httplib2 (>=0.0.1)", "google-auth-httplib2 (>=0.0.1)", "google-cloud-aiplatform (>=1.22.1)", "google-cloud-automl (>=2.12.0)", "google-cloud-batch (>=0.13.0)", "google-cloud-bigquery-datatransfer (>=3.13.0)", "google-cloud-bigtable (>=2.17.0)", "google-cloud-build (>=3.22.0)", "google-cloud-compute (>=1.10.0)", "google-cloud-container (>=2.17.4)", "google-cloud-datacatalog (>=3.11.1)", "google-cloud-dataflow-client (>=0.8.6)", "google-cloud-dataform (>=0.5.0)", "google-cloud-dataplex (>=1.10.0)", "google-cloud-dataproc (>=5.8.0)", "google-cloud-dataproc-metastore (>=1.12.0)", "google-cloud-dlp (>=3.12.0)", "google-cloud-kms (>=2.15.0)", "google-cloud-language (>=2.9.0)", "google-cloud-logging (>=3.5.0)", "google-cloud-memcache (>=1.7.0)", "google-cloud-monitoring (>=2.18.0)", "google-cloud-orchestration-airflow (>=1.10.0)", "google-cloud-os-login (>=2.9.1)", "google-cloud-pubsub (>=2.19.0)", "google-cloud-redis (>=2.12.0)", "google-cloud-run (>=0.9.0)", "google-cloud-secret-manager (>=2.16.0)", "google-cloud-spanner (>=3.11.1)", "google-cloud-speech (>=2.18.0)", "google-cloud-storage (>=2.7.0)", "google-cloud-storage-transfer (>=1.4.1)", "google-cloud-tasks (>=2.13.0)", "google-cloud-texttospeech (>=2.14.1)", "google-cloud-translate (>=3.11.0)", "google-cloud-videointelligence (>=2.11.0)", "google-cloud-vision (>=3.4.0)", "google-cloud-workflows (>=1.10.0)", "google-re2 (>=1.0)", "google-re2 (>=1.0)", "graphviz (>=0.12)", "greenlet (>=0.4.9)", "grpcio (>=1.15.0)", "grpcio-gcp (>=0.2.2)", "grpcio-status (>=1.59.0)", "hatch (>=1.9.1)", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "httpx", "hvac (>=1.1.0)", "impyla (>=0.18.0,<1.0)", "inflection (>=0.5.1)", "influxdb-client (>=1.19.0)", "ipdb (>=0.13.13)", "ipykernel", "jaydebeapi (>=1.1.1)", "json-merge-patch (>=0.2)", "jsonpath-ng (>=1.5.3)", "kubernetes (>=28.1.0,<=29.0.0)", "kubernetes-asyncio (>=28.1.0,<=29.0.0)", "kylinpy (>=2.6)", "ldap3 (>=2.5.1)", "looker-sdk (>=22.2.0)", "mongomock", "more-itertools (>=9.0.0)", "moto[cloudformation,glue] (>=5.0.0)", "mypy (==1.8.0)", "mypy-boto3-appflow (>=1.33.0)", "mypy-boto3-rds (>=1.33.0)", "mypy-boto3-redshift-data (>=1.33.0)", "mypy-boto3-s3 (>=1.33.0)", "mysql-connector-python (>=8.0.29)", "mysqlclient (>=1.3.6)", "neo4j (>=4.2.1)", "openai[datalib] (>=1.0)", "openlineage-integration-common (>=0.28.0)", "openlineage-python (>=0.28.0)", "opensearch-py (>=2.2.0)", "opentelemetry-exporter-prometheus", "opsgenie-sdk (>=2.1.5)", "oracledb (>=1.0.0)", "oss2 (>=2.14.0)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas-gbq", "papermill[all] (>=2.4.0)", "paramiko (>=2.6.0)", "paramiko (>=2.8.0)", "pdpyras (>=4.1.2)", "pgvector (>=0.2.3)", "pinecone-client (>=2.2.4,<3.0)", "pinotdb (>0.4.7)", "pipdeptree (>=2.13.1)", "plyvel", "pre-commit (>=3.5.0)", "presto-python-client (>=0.8.4)", "proto-plus (>=1.19.6)", "psycopg2-binary (>=2.8.0)", "pyarrow (>=14.0.1)", "pyathena (>=3.0.10)", "pydantic (>=2.3.0)", "pydruid (>=0.4.1)", "pyexasol (>=0.5.1)", "pygithub (!=1.58)", "pygithub (>=2.1.1)", "pyhive[hive-pure-sasl] (>=0.7.0)", "pyiceberg (>=0.5.0)", "pykerberos (>=1.1.13)", "pymongo (>=3.6.0)", "pymssql (>=2.1.8)", "pyodbc", "pyopenssl", "pypsrp (>=0.8.0)", "pyspark", "pytest (>=7.4.4,<8.0)", "pytest-asyncio (>=0.23.3)", "pytest-cov (>=4.1.0)", "pytest-icdiff (>=0.9)", "pytest-instafail (>=0.5.0)", "pytest-mock (>=3.12.0)", "pytest-rerunfailures (>=13.0)", "pytest-timeouts (>=1.2.1)", "pytest-xdist (>=3.5.0)", "python-arango (>=7.3.2)", "python-dotenv (>=0.21.0)", "python-jenkins (>=1.0.0)", "python-ldap", "python-telegram-bot (>=20.2)", "python3-saml (>=1.16.0)", "pywinrm", "pywinrm (>=0.4)", "redis (>=4.5.2,!=4.5.5,<5.0.0)", "redshift-connector (>=2.0.918)", "requests (>=2.27.0,<3)", "requests (>=2.27.0,<3)", "requests (>=2.27.0,<3)", "requests (>=2.27.0,<3)", "requests-kerberos (>=0.10.0)", "requests-mock (>=1.11.0)", "requests-toolbelt", "restructuredtext-lint (>=1.4.0)", "rich-click (>=1.7.0)", "ruff (==0.2.1)", "s3fs (>=2023.10.0)", "s3fs (>=2023.10.0)", "scrapbook[all]", "semver (>=3.0.2)", "sendgrid (>=6.0.0)", "sentry-sdk (>=1.32.0,!=1.33.0)", "simple-salesforce (>=1.0.0)", "slack-sdk (>=3.19.0)", "smbprotocol (>=1.5.0)", "snowflake-connector-python (>=2.7.8)", "snowflake-sqlalchemy (>=1.1.0)", "sphinx (>=5.3.0,<6.0.0)", "sphinx-airflow-theme (>=0.0.12)", "sphinx-argparse (>=0.4.0)", "sphinx-autoapi (>=2.1.1)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0.2)", "sphinx-rtd-theme (>=2.0.0)", "sphinxcontrib-applehelp (>=1.0.4)", "sphinxcontrib-devhelp (>=1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.1)", "sphinxcontrib-httpdomain (>=1.8.1)", "sphinxcontrib-jquery (>=4.1)", "sphinxcontrib-jsmath (>=1.0.1)", "sphinxcontrib-qthelp (>=1.0.3)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-serializinghtml (==1.1.5)", "sphinxcontrib-spelling (>=8.0.0)", "spython (>=0.0.56)", "sqlalchemy-bigquery (>=1.2.1)", "sqlalchemy-drill (>=1.1.0)", "sqlalchemy-redshift (>=0.8.6)", "sqlalchemy-spanner (>=1.6.2)", "sqlparse (>=0.4.2)", "sshtunnel (>=0.3.2)", "statsd (>=3.3.0)", "tableauserverclient", "thrift (>=0.9.2)", "thrift-sasl (>=0.2.0)", "time-machine (>=2.13.0)", "towncrier (>=23.11.0)", "trino (>=0.318.0)", "twine (>=4.0.2)", "types-aiofiles", "types-certifi", "types-croniter", "types-deprecated", "types-docutils", "types-markdown", "types-paramiko", "types-protobuf", "types-pymysql", "types-python-dateutil", "types-python-slugify", "types-pytz", "types-pyyaml", "types-redis", "types-requests", "types-setuptools", "types-tabulate", "types-termcolor", "types-toml", "vertica-python (>=0.5.1)", "virtualenv", "watchtower (>=2.0.1,<4)", "weaviate-client (>=3.24.2)", "yamllint (>=1.33.0)", "yandexcloud (>=0.228.0)", "zenpy (>=2.0.24)"] dingding = ["apache-airflow-providers-dingding"] discord = ["apache-airflow-providers-discord"] -doc = ["astroid (>=2.12.3,<3.0)", "checksumdir", "click (>=8.0,!=8.1.4,!=8.1.5)", "docutils (<0.17.0)", "eralchemy2", "sphinx (>=5.2.0)", "sphinx-airflow-theme", "sphinx-argparse (>=0.1.13)", "sphinx-autoapi (>=2.0.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0)", "sphinx-rtd-theme (>=0.1.6)", "sphinxcontrib-httpdomain (>=1.7.0)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-spelling (>=7.3)"] -doc-gen = ["eralchemy2"] docker = ["apache-airflow-providers-docker"] -druid = ["apache-airflow-providers-apache-druid"] +druid = ["apache-airflow[apache-druid]"] elasticsearch = ["apache-airflow-providers-elasticsearch"] exasol = ["apache-airflow-providers-exasol"] facebook = ["apache-airflow-providers-facebook"] ftp = ["apache-airflow-providers-ftp"] -gcp = ["apache-airflow-providers-google"] -gcp-api = ["apache-airflow-providers-google"] +gcp = ["apache-airflow[google]"] +gcp-api = ["apache-airflow[google]"] github = ["apache-airflow-providers-github"] -github-enterprise = ["authlib (>=1.0.0)", "flask-appbuilder[oauth] (==4.3.10)"] +github-enterprise = ["apache-airflow[fab]", "authlib (>=1.0.0)"] google = ["apache-airflow-providers-google"] -google-auth = ["authlib (>=1.0.0)", "flask-appbuilder[oauth] (==4.3.10)"] +google-auth = ["apache-airflow[fab]", "authlib (>=1.0.0)"] +graphviz = ["graphviz (>=0.12)"] grpc = ["apache-airflow-providers-grpc"] hashicorp = ["apache-airflow-providers-hashicorp"] -hdfs = ["apache-airflow-providers-apache-hdfs"] -hive = ["apache-airflow-providers-apache-hive"] +hdfs = ["apache-airflow[apache-hdfs]"] +hive = ["apache-airflow[apache-hive]"] http = ["apache-airflow-providers-http"] imap = ["apache-airflow-providers-imap"] influxdb = ["apache-airflow-providers-influxdb"] jdbc = ["apache-airflow-providers-jdbc"] jenkins = ["apache-airflow-providers-jenkins"] kerberos = ["pykerberos (>=1.1.13)", "requests-kerberos (>=0.10.0)", "thrift-sasl (>=0.2.0)"] -kubernetes = ["aiofiles (>=23.2.0)", "apache-airflow (>=2.6.0)", "apache-airflow-providers-cncf-kubernetes", "asgiref (>=3.5.2)", "cryptography (>=2.0.0)", "google-re2 (>=1.0)", "kubernetes (>=21.7.0,<24)", "kubernetes-asyncio (>=18.20.1,<25)"] +kubernetes = ["apache-airflow[cncf-kubernetes]"] ldap = ["ldap3 (>=2.5.1)", "python-ldap"] leveldb = ["plyvel"] microsoft-azure = ["apache-airflow-providers-microsoft-azure"] @@ -357,7 +353,7 @@ microsoft-mssql = ["apache-airflow-providers-microsoft-mssql"] microsoft-psrp = ["apache-airflow-providers-microsoft-psrp"] microsoft-winrm = ["apache-airflow-providers-microsoft-winrm"] mongo = ["apache-airflow-providers-mongo"] -mssql = ["apache-airflow-providers-microsoft-mssql"] +mssql = ["apache-airflow[microsoft-mssql]"] mysql = ["apache-airflow-providers-mysql"] neo4j = ["apache-airflow-providers-neo4j"] odbc = ["apache-airflow-providers-odbc"] @@ -369,17 +365,18 @@ opsgenie = ["apache-airflow-providers-opsgenie"] oracle = ["apache-airflow-providers-oracle"] otel = ["opentelemetry-exporter-prometheus"] pagerduty = ["apache-airflow-providers-pagerduty"] -pandas = ["pandas (>=0.17.1)", "pyarrow (>=9.0.0)", "pyarrow-hotfix"] +pandas = ["pandas (>=1.2.5)"] papermill = ["apache-airflow-providers-papermill"] password = ["bcrypt (>=2.0.0)", "flask-bcrypt (>=0.7.1)"] pgvector = ["apache-airflow-providers-pgvector"] pinecone = ["apache-airflow-providers-pinecone"] -pinot = ["apache-airflow-providers-apache-pinot"] +pinot = ["apache-airflow[apache-pinot]"] postgres = ["apache-airflow-providers-postgres"] presto = ["apache-airflow-providers-presto"] +pydantic = ["pydantic (>=2.3.0)"] rabbitmq = ["amqp"] redis = ["apache-airflow-providers-redis"] -s3 = ["apache-airflow-providers-amazon"] +s3 = ["apache-airflow[amazon]"] s3fs = ["s3fs (>=2023.10.0)"] salesforce = ["apache-airflow-providers-salesforce"] samba = ["apache-airflow-providers-samba"] @@ -392,7 +389,7 @@ singularity = ["apache-airflow-providers-singularity"] slack = ["apache-airflow-providers-slack"] smtp = ["apache-airflow-providers-smtp"] snowflake = ["apache-airflow-providers-snowflake"] -spark = ["apache-airflow-providers-apache-spark"] +spark = ["apache-airflow[apache-spark]"] sqlite = ["apache-airflow-providers-sqlite"] ssh = ["apache-airflow-providers-ssh"] statsd = ["statsd (>=3.3.0)"] @@ -403,43 +400,61 @@ trino = ["apache-airflow-providers-trino"] vertica = ["apache-airflow-providers-vertica"] virtualenv = ["virtualenv"] weaviate = ["apache-airflow-providers-weaviate"] -webhdfs = ["hdfs[avro,dataframe,kerberos] (>=2.0.4)"] -winrm = ["apache-airflow-providers-microsoft-winrm"] +webhdfs = ["apache-airflow[apache-webhdfs]"] +winrm = ["apache-airflow[microsoft-winrm]"] yandex = ["apache-airflow-providers-yandex"] zendesk = ["apache-airflow-providers-zendesk"] +[[package]] +name = "apache-airflow-providers-common-io" +version = "1.3.0" +description = "Provider package apache-airflow-providers-common-io for Apache Airflow" +optional = false +python-versions = "~=3.8" +files = [ + {file = "apache_airflow_providers_common_io-1.3.0-py3-none-any.whl", hash = "sha256:a67c6dd3cb419c68fc1a9ed62f0f434426852e15a46c3159f367b3961332955d"}, + {file = "apache_airflow_providers_common_io-1.3.0.tar.gz", hash = "sha256:7172620a2370031970df2212a9f694a5ff82240f7e498b8b7dfdbae7e6c882d6"}, +] + +[package.dependencies] +apache-airflow = ">=2.8.0" + +[package.extras] +openlineage = ["apache-airflow-providers-openlineage"] + [[package]] name = "apache-airflow-providers-common-sql" -version = "1.8.0" -description = "Provider for Apache Airflow. Implements apache-airflow-providers-common-sql package" +version = "1.11.0" +description = "Provider package apache-airflow-providers-common-sql for Apache Airflow" optional = false python-versions = "~=3.8" files = [ - {file = "apache-airflow-providers-common-sql-1.8.0.tar.gz", hash = "sha256:4d8d99f33f7b5a3e313ef12c5a2f10d1612477ed2e784d0ffb721447e076e3f7"}, - {file = "apache_airflow_providers_common_sql-1.8.0-py3-none-any.whl", hash = "sha256:45117fa38f5a2e83cdb9a8d3bdfdbd602bfdc7a894d087b26e6ebb94df79ec32"}, + {file = "apache_airflow_providers_common_sql-1.11.0-py3-none-any.whl", hash = "sha256:0c200bd17ff89fac03bce8404a3a7cec021dd99e136effe0d6b68c4642c925c5"}, + {file = "apache_airflow_providers_common_sql-1.11.0.tar.gz", hash = "sha256:7667358efdf2ece87bfd136c786d729bc6f3274f8b87566ce9b432ab14b6aa33"}, ] [package.dependencies] -apache-airflow = ">=2.5.0" +apache-airflow = ">=2.6.0" +more-itertools = ">=9.0.0" sqlparse = ">=0.4.2" [package.extras] openlineage = ["apache-airflow-providers-openlineage"] -pandas = ["pandas (>=0.17.1)"] +pandas = ["pandas (>=1.2.5)"] [[package]] name = "apache-airflow-providers-ftp" -version = "3.6.0" -description = "Provider for Apache Airflow. Implements apache-airflow-providers-ftp package" +version = "3.7.0" +description = "Provider package apache-airflow-providers-ftp for Apache Airflow" optional = false python-versions = "~=3.8" files = [ - {file = "apache-airflow-providers-ftp-3.6.0.tar.gz", hash = "sha256:160f12e9f78ffbcdca4bdffbac93c1f04641fd3f1f7d236c7bfe79cd0a68d14b"}, - {file = "apache_airflow_providers_ftp-3.6.0-py3-none-any.whl", hash = "sha256:03264207293710c3821f5ccd548c5e89a3c5ca7562bc4ff629e6f73d112a71a4"}, + {file = "apache_airflow_providers_ftp-3.7.0-py3-none-any.whl", hash = "sha256:817936fa2f9f5d7f00f50bfe0dfdf83a3ffbcd863cb92b862a2ab5a40da1b8c4"}, + {file = "apache_airflow_providers_ftp-3.7.0.tar.gz", hash = "sha256:cc6e7602fb9b92255b83343673923339c8fe7d22c8c738ba372ce38a70cce1cc"}, ] [package.dependencies] -apache-airflow = ">=2.5.0" +apache-airflow = ">=2.6.0" [package.extras] openlineage = ["apache-airflow-providers-openlineage"] @@ -538,49 +553,49 @@ trino = ["apache-airflow-providers-trino"] [[package]] name = "apache-airflow-providers-http" -version = "4.6.0" -description = "Provider for Apache Airflow. Implements apache-airflow-providers-http package" +version = "4.9.1" +description = "Provider package apache-airflow-providers-http for Apache Airflow" optional = false python-versions = "~=3.8" files = [ - {file = "apache-airflow-providers-http-4.6.0.tar.gz", hash = "sha256:c9b08782031daa8c18ba62c2c8ae687659968d636fbf6b9fbed488d1fe4f0162"}, - {file = "apache_airflow_providers_http-4.6.0-py3-none-any.whl", hash = "sha256:ca3cf6c209cb27144fd4d676ee5feef96a1ed67002f13bf4a8b74d859ef8b56c"}, + {file = "apache_airflow_providers_http-4.9.1-py3-none-any.whl", hash = "sha256:3b7c002899193acccf19bc29fa98e2c91b0b5f2fa05524bc3042fab0dc1700fb"}, + {file = "apache_airflow_providers_http-4.9.1.tar.gz", hash = "sha256:2bb670f9e89a4f4e50ce71faf8002aff729516feceba99f9947acbb5d7163754"}, ] [package.dependencies] -aiohttp = "*" -apache-airflow = ">=2.5.0" +aiohttp = ">=3.9.2" +apache-airflow = ">=2.6.0" asgiref = "*" -requests = ">=2.26.0" -requests-toolbelt = "*" +requests = ">=2.27.0,<3" +requests_toolbelt = "*" [[package]] name = "apache-airflow-providers-imap" -version = "3.4.0" -description = "Provider for Apache Airflow. Implements apache-airflow-providers-imap package" +version = "3.5.0" +description = "Provider package apache-airflow-providers-imap for Apache Airflow" optional = false python-versions = "~=3.8" files = [ - {file = "apache-airflow-providers-imap-3.4.0.tar.gz", hash = "sha256:347f78efa0e1353f90be78244fad0136d7c0cb1af25b9a3ba296d4e31fb53f6c"}, - {file = "apache_airflow_providers_imap-3.4.0-py3-none-any.whl", hash = "sha256:4972793b0dbb25d5372fe1bf174329958075985c0beca013459ec89fcbbca620"}, + {file = "apache_airflow_providers_imap-3.5.0-py3-none-any.whl", hash = "sha256:f5f26c662cff27a532c6a7c3ed0a8bc9c7fcae14634424e82e85150e631a2adb"}, + {file = "apache_airflow_providers_imap-3.5.0.tar.gz", hash = "sha256:d50929801cb9b7abcea33799e8b3cd64b756bd42530a44281febaffcdb30998f"}, ] [package.dependencies] -apache-airflow = ">=2.5.0" +apache-airflow = ">=2.6.0" [[package]] name = "apache-airflow-providers-sqlite" -version = "3.5.0" -description = "Provider for Apache Airflow. Implements apache-airflow-providers-sqlite package" +version = "3.7.1" +description = "Provider package apache-airflow-providers-sqlite for Apache Airflow" optional = false python-versions = "~=3.8" files = [ - {file = "apache-airflow-providers-sqlite-3.5.0.tar.gz", hash = "sha256:6f47c25d7fb026fa8b8b4dc8edfee1491998255048255625716fceaae2c67024"}, - {file = "apache_airflow_providers_sqlite-3.5.0-py3-none-any.whl", hash = "sha256:7baba67c9ddf75b31d8197e22ca491c2e1cf9e4c6306c1788c150b5457c3a182"}, + {file = "apache_airflow_providers_sqlite-3.7.1-py3-none-any.whl", hash = "sha256:49af9ce1012e2d52ef89dc5d5832ff9bc245330635aa4f011590dc19113a380f"}, + {file = "apache_airflow_providers_sqlite-3.7.1.tar.gz", hash = "sha256:0dd8967ac1f3fb518cef278611a2f8bbae19421e215e0bf4ede01542d4af86cf"}, ] [package.dependencies] -apache-airflow = ">=2.5.0" +apache-airflow = ">=2.6.0" apache-airflow-providers-common-sql = ">=1.3.1" [package.extras] @@ -588,13 +603,13 @@ common-sql = ["apache-airflow-providers-common-sql"] [[package]] name = "apispec" -version = "6.3.0" +version = "6.5.0" description = "A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "apispec-6.3.0-py3-none-any.whl", hash = "sha256:95a0b9355785df998bb0e9b939237a30ee4c7428fd6ef97305eae3da06b9b339"}, - {file = "apispec-6.3.0.tar.gz", hash = "sha256:6cb08d92ce73ff0b3bf46cb2ea5c00d57289b0f279fb0256a3df468182ba5344"}, + {file = "apispec-6.5.0-py3-none-any.whl", hash = "sha256:708a9a6e6ccd5e69cd73bf75b41e7ed5ea8866f8a4539f419db3df642789bb1e"}, + {file = "apispec-6.5.0.tar.gz", hash = "sha256:c03a4d848ae70e9bb2269dd4e4d30d8ec7ec069d24ef9e9b422e3cbd1a9fe794"}, ] [package.dependencies] @@ -602,12 +617,10 @@ packaging = ">=21.3" PyYAML = {version = ">=3.10", optional = true, markers = "extra == \"yaml\""} [package.extras] -dev = ["PyYAML (>=3.10)", "flake8 (==5.0.4)", "flake8-bugbear (==22.9.23)", "marshmallow (>=3.13.0)", "mypy (==0.982)", "openapi-spec-validator (<0.5)", "prance[osv] (>=0.11)", "pre-commit (>=2.4,<3.0)", "pytest", "tox", "types-PyYAML"] -docs = ["marshmallow (>=3.13.0)", "pyyaml (==6.0)", "sphinx (==5.2.3)", "sphinx-issues (==3.0.1)", "sphinx-rtd-theme (==1.0.0)"] -lint = ["flake8 (==5.0.4)", "flake8-bugbear (==22.9.23)", "mypy (==0.982)", "pre-commit (>=2.4,<3.0)", "types-PyYAML"] +dev = ["apispec[tests]", "pre-commit (>=3.5,<4.0)", "tox"] +docs = ["apispec[marshmallow]", "pyyaml (==6.0.1)", "sphinx (==7.2.6)", "sphinx-issues (==4.0.0)", "sphinx-rtd-theme (==2.0.0)"] marshmallow = ["marshmallow (>=3.18.0)"] -tests = ["PyYAML (>=3.10)", "marshmallow (>=3.13.0)", "openapi-spec-validator (<0.5)", "prance[osv] (>=0.11)", "pytest"] -validation = ["openapi-spec-validator (<0.5)", "prance[osv] (>=0.11)"] +tests = ["apispec[marshmallow,yaml]", "openapi-spec-validator (==0.7.1)", "pytest"] yaml = ["PyYAML (>=3.10)"] [[package]] @@ -623,24 +636,24 @@ files = [ [[package]] name = "appnope" -version = "0.1.3" +version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, - {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, ] [[package]] name = "argcomplete" -version = "3.1.2" +version = "3.2.2" description = "Bash tab completion for argparse" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "argcomplete-3.1.2-py3-none-any.whl", hash = "sha256:d97c036d12a752d1079f190bc1521c545b941fda89ad85d15afa909b4d1b9a99"}, - {file = "argcomplete-3.1.2.tar.gz", hash = "sha256:d5d1e5efd41435260b8f85673b74ea2e883affcbec9f4230c582689e8e78251b"}, + {file = "argcomplete-3.2.2-py3-none-any.whl", hash = "sha256:e44f4e7985883ab3e73a103ef0acd27299dbfe2dfed00142c35d4ddd3005901d"}, + {file = "argcomplete-3.2.2.tar.gz", hash = "sha256:f3e49e8ea59b4026ee29548e24488af46e30c9de57d48638e24f54a1ea1000a2"}, ] [package.extras] @@ -694,21 +707,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 = "avro" @@ -737,17 +751,17 @@ files = [ [[package]] name = "azure-core" -version = "1.29.5" +version = "1.30.0" description = "Microsoft Azure Core Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-core-1.29.5.tar.gz", hash = "sha256:52983c89d394c6f881a121e5101c5fa67278ca3b1f339c8fb2ef39230c70e9ac"}, - {file = "azure_core-1.29.5-py3-none-any.whl", hash = "sha256:0fa04b7b1f7d44a4fb8468c4093deb2ea01fdf4faddbf802ed9205615f99d68c"}, + {file = "azure-core-1.30.0.tar.gz", hash = "sha256:6f3a7883ef184722f6bd997262eddaf80cfe7e5b3e0caaaf8db1695695893d35"}, + {file = "azure_core-1.30.0-py3-none-any.whl", hash = "sha256:3dae7962aad109610e68c9a7abb31d79720e1d982ddf61363038d175a5025e89"}, ] [package.dependencies] -requests = ">=2.18.4" +requests = ">=2.21.0" six = ">=1.11.0" typing-extensions = ">=4.6.0" @@ -803,13 +817,13 @@ msrest = ">=0.6.21" [[package]] name = "azure-storage-blob" -version = "12.18.3" +version = "12.19.0" description = "Microsoft Azure Blob Storage Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-storage-blob-12.18.3.tar.gz", hash = "sha256:d8ced0deee3367fa3d4f3d1a03cd9edadf4440c0a371f503d623fa6c807554ee"}, - {file = "azure_storage_blob-12.18.3-py3-none-any.whl", hash = "sha256:c278dde2ac41857a68d615c9f2b36d894ba877a7e84d62795603c7e79d0bb5e9"}, + {file = "azure-storage-blob-12.19.0.tar.gz", hash = "sha256:26c0a4320a34a3c2a1b74528ba6812ebcb632a04cd67b1c7377232c4b01a5897"}, + {file = "azure_storage_blob-12.19.0-py3-none-any.whl", hash = "sha256:7bbc2c9c16678f7a420367fef6b172ba8730a7e66df7f4d7a55d5b3c8216615b"}, ] [package.dependencies] @@ -823,13 +837,13 @@ aio = ["azure-core[aio] (>=1.28.0,<2.0.0)"] [[package]] name = "babel" -version = "2.13.1" +version = "2.14.0" description = "Internationalization utilities" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, - {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] [package.extras] @@ -848,42 +862,45 @@ files = [ [[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"] [[package]] name = "blinker" -version = "1.6.3" +version = "1.7.0" description = "Fast, simple object-to-object and broadcast signaling" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "blinker-1.6.3-py3-none-any.whl", hash = "sha256:296320d6c28b006eb5e32d4712202dbcdcbf5dc482da298c2f44881c43884aaa"}, - {file = "blinker-1.6.3.tar.gz", hash = "sha256:152090d27c1c5c722ee7e48504b02d76502811ce02e1523553b4cf8c8b3d3a8d"}, + {file = "blinker-1.7.0-py3-none-any.whl", hash = "sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9"}, + {file = "blinker-1.7.0.tar.gz", hash = "sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182"}, ] [[package]] name = "bokeh" -version = "3.3.0" +version = "3.3.4" description = "Interactive plots and applications in the browser from Python" optional = false python-versions = ">=3.9" files = [ - {file = "bokeh-3.3.0-py3-none-any.whl", hash = "sha256:65e36824c99fd46530c559263c6d14eabed6945370cd3beffc2eeedb62d6db6d"}, - {file = "bokeh-3.3.0.tar.gz", hash = "sha256:cdbe268f842c139ba8fa0fb43c0c55c172c8215ec5a69a2629482c63c9d4039c"}, + {file = "bokeh-3.3.4-py3-none-any.whl", hash = "sha256:ad7b6f89d0a7c2be01eff1db0ca24e2755ac41de14539db919a62e791809c309"}, + {file = "bokeh-3.3.4.tar.gz", hash = "sha256:73b7982dc2b8df15bf660cdddc8d3825e829195c438015a5d09824f1a7028368"}, ] [package.dependencies] @@ -899,32 +916,32 @@ xyzservices = ">=2021.09.1" [[package]] name = "boto3" -version = "1.28.75" +version = "1.34.50" description = "The AWS SDK for Python" optional = false -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "boto3-1.28.75-py3-none-any.whl", hash = "sha256:b959decd588982bc919bfcbebc7916926b05003a0093e7f2845362da4f5dd9fc"}, - {file = "boto3-1.28.75.tar.gz", hash = "sha256:63d772a784e8e35ee51974eb1c20dff5faa51b007d22c5647783f18966bf4042"}, + {file = "boto3-1.34.50-py3-none-any.whl", hash = "sha256:8d709365231234bc4f0ca98fdf33a25eeebf78072853c6aa3d259f0f5cf09877"}, + {file = "boto3-1.34.50.tar.gz", hash = "sha256:290952be7899560039cb0042e8a2354f61a7dead0d0ca8bea6ba901930df0468"}, ] [package.dependencies] -botocore = ">=1.31.75,<1.32.0" +botocore = ">=1.34.50,<1.35.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.7.0,<0.8.0" +s3transfer = ">=0.10.0,<0.11.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.31.75" +version = "1.34.50" description = "Low-level, data-driven core of boto 3." optional = false -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "botocore-1.31.75-py3-none-any.whl", hash = "sha256:fa078c4aa9a5777b3ede756540e62fec551e13d39cf7abf9a37bb81981496d68"}, - {file = "botocore-1.31.75.tar.gz", hash = "sha256:d704ea9867b2227de0350bc2a5ca2543349e164ecb5d15edbfacbb05f2056482"}, + {file = "botocore-1.34.50-py3-none-any.whl", hash = "sha256:fda510559dbe796eefdb59561cc81be1b99afba3dee53fd23db9a3d587adc0ab"}, + {file = "botocore-1.34.50.tar.gz", hash = "sha256:33ab82cb96c4bb684f0dbafb071808e4817d83debc88b223e7d988256370c6d7"}, ] [package.dependencies] @@ -933,7 +950,7 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = {version = ">=1.25.4,<2.1", markers = "python_version >= \"3.10\""} [package.extras] -crt = ["awscrt (==0.16.26)"] +crt = ["awscrt (==0.19.19)"] [[package]] name = "bracex" @@ -959,49 +976,49 @@ files = [ [[package]] name = "cachetools" -version = "5.3.2" +version = "5.3.3" description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.2-py3-none-any.whl", hash = "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1"}, - {file = "cachetools-5.3.2.tar.gz", hash = "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"}, + {file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"}, + {file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"}, ] [[package]] name = "cattrs" -version = "23.1.2" +version = "23.2.3" description = "Composable complex class support for attrs and dataclasses." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "cattrs-23.1.2-py3-none-any.whl", hash = "sha256:b2bb14311ac17bed0d58785e5a60f022e5431aca3932e3fc5cc8ed8639de50a4"}, - {file = "cattrs-23.1.2.tar.gz", hash = "sha256:db1c821b8c537382b2c7c66678c3790091ca0275ac486c76f3c8f3920e83c657"}, + {file = "cattrs-23.2.3-py3-none-any.whl", hash = "sha256:0341994d94971052e9ee70662542699a3162ea1e0c62f7ce1b4a57f563685108"}, + {file = "cattrs-23.2.3.tar.gz", hash = "sha256:a934090d95abaa9e911dac357e3a8699e0b4b14f8529bcc7d2b1ad9d51672b9f"}, ] [package.dependencies] -attrs = ">=20" -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} -typing_extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} +attrs = ">=23.1.0" +exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} [package.extras] -bson = ["pymongo (>=4.2.0,<5.0.0)"] -cbor2 = ["cbor2 (>=5.4.6,<6.0.0)"] -msgpack = ["msgpack (>=1.0.2,<2.0.0)"] -orjson = ["orjson (>=3.5.2,<4.0.0)"] -pyyaml = ["PyYAML (>=6.0,<7.0)"] -tomlkit = ["tomlkit (>=0.11.4,<0.12.0)"] -ujson = ["ujson (>=5.4.0,<6.0.0)"] +bson = ["pymongo (>=4.4.0)"] +cbor2 = ["cbor2 (>=5.4.6)"] +msgpack = ["msgpack (>=1.0.5)"] +orjson = ["orjson (>=3.9.2)"] +pyyaml = ["pyyaml (>=6.0)"] +tomlkit = ["tomlkit (>=0.11.8)"] +ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" -version = "2023.7.22" +version = "2024.2.2" 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-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -1081,112 +1098,112 @@ files = [ [[package]] name = "chardet" -version = "4.0.0" -description = "Universal encoding detector for Python 2 and 3" +version = "5.2.0" +description = "Universal encoding detector for Python 3" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, - {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, + {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.1" +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.3.1.tar.gz", hash = "sha256:d9137a876020661972ca6eec0766d81aef8a5627df628b664b234b73396e727e"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8aee051c89e13565c6bd366813c386939f8e928af93c29fda4af86d25b73d8f8"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:352a88c3df0d1fa886562384b86f9a9e27563d4704ee0e9d56ec6fcd270ea690"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:223b4d54561c01048f657fa6ce41461d5ad8ff128b9678cfe8b2ecd951e3f8a2"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f861d94c2a450b974b86093c6c027888627b8082f1299dfd5a4bae8e2292821"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1171ef1fc5ab4693c5d151ae0fdad7f7349920eabbaca6271f95969fa0756c2d"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28f512b9a33235545fbbdac6a330a510b63be278a50071a336afc1b78781b147"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0e842112fe3f1a4ffcf64b06dc4c61a88441c2f02f373367f7b4c1aa9be2ad5"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f9bc2ce123637a60ebe819f9fccc614da1bcc05798bbbaf2dd4ec91f3e08846"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f194cce575e59ffe442c10a360182a986535fd90b57f7debfaa5c845c409ecc3"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9a74041ba0bfa9bc9b9bb2cd3238a6ab3b7618e759b41bd15b5f6ad958d17605"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b578cbe580e3b41ad17b1c428f382c814b32a6ce90f2d8e39e2e635d49e498d1"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6db3cfb9b4fcecb4390db154e75b49578c87a3b9979b40cdf90d7e4b945656e1"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:debb633f3f7856f95ad957d9b9c781f8e2c6303ef21724ec94bea2ce2fcbd056"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-win32.whl", hash = "sha256:87071618d3d8ec8b186d53cb6e66955ef2a0e4fa63ccd3709c0c90ac5a43520f"}, - {file = "charset_normalizer-3.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:e372d7dfd154009142631de2d316adad3cc1c36c32a38b16a4751ba78da2a397"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae4070f741f8d809075ef697877fd350ecf0b7c5837ed68738607ee0a2c572cf"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:58e875eb7016fd014c0eea46c6fa92b87b62c0cb31b9feae25cbbe62c919f54d"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dbd95e300367aa0827496fe75a1766d198d34385a58f97683fe6e07f89ca3e3c"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de0b4caa1c8a21394e8ce971997614a17648f94e1cd0640fbd6b4d14cab13a72"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:985c7965f62f6f32bf432e2681173db41336a9c2611693247069288bcb0c7f8b"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a15c1fe6d26e83fd2e5972425a772cca158eae58b05d4a25a4e474c221053e2d"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae55d592b02c4349525b6ed8f74c692509e5adffa842e582c0f861751701a673"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be4d9c2770044a59715eb57c1144dedea7c5d5ae80c68fb9959515037cde2008"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:851cf693fb3aaef71031237cd68699dded198657ec1e76a76eb8be58c03a5d1f"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:31bbaba7218904d2eabecf4feec0d07469284e952a27400f23b6628439439fa7"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:871d045d6ccc181fd863a3cd66ee8e395523ebfbc57f85f91f035f50cee8e3d4"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:501adc5eb6cd5f40a6f77fbd90e5ab915c8fd6e8c614af2db5561e16c600d6f3"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f5fb672c396d826ca16a022ac04c9dce74e00a1c344f6ad1a0fdc1ba1f332213"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-win32.whl", hash = "sha256:bb06098d019766ca16fc915ecaa455c1f1cd594204e7f840cd6258237b5079a8"}, - {file = "charset_normalizer-3.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:8af5a8917b8af42295e86b64903156b4f110a30dca5f3b5aedea123fbd638bff"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7ae8e5142dcc7a49168f4055255dbcced01dc1714a90a21f87448dc8d90617d1"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5b70bab78accbc672f50e878a5b73ca692f45f5b5e25c8066d748c09405e6a55"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ceca5876032362ae73b83347be8b5dbd2d1faf3358deb38c9c88776779b2e2f"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34d95638ff3613849f473afc33f65c401a89f3b9528d0d213c7037c398a51296"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9edbe6a5bf8b56a4a84533ba2b2f489d0046e755c29616ef8830f9e7d9cf5728"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6a02a3c7950cafaadcd46a226ad9e12fc9744652cc69f9e5534f98b47f3bbcf"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10b8dd31e10f32410751b3430996f9807fc4d1587ca69772e2aa940a82ab571a"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edc0202099ea1d82844316604e17d2b175044f9bcb6b398aab781eba957224bd"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b891a2f68e09c5ef989007fac11476ed33c5c9994449a4e2c3386529d703dc8b"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:71ef3b9be10070360f289aea4838c784f8b851be3ba58cf796262b57775c2f14"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:55602981b2dbf8184c098bc10287e8c245e351cd4fdcad050bd7199d5a8bf514"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:46fb9970aa5eeca547d7aa0de5d4b124a288b42eaefac677bde805013c95725c"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:520b7a142d2524f999447b3a0cf95115df81c4f33003c51a6ab637cbda9d0bf4"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-win32.whl", hash = "sha256:8ec8ef42c6cd5856a7613dcd1eaf21e5573b2185263d87d27c8edcae33b62a61"}, - {file = "charset_normalizer-3.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:baec8148d6b8bd5cee1ae138ba658c71f5b03e0d69d5907703e3e1df96db5e41"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63a6f59e2d01310f754c270e4a257426fe5a591dc487f1983b3bbe793cf6bac6"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d6bfc32a68bc0933819cfdfe45f9abc3cae3877e1d90aac7259d57e6e0f85b1"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f3100d86dcd03c03f7e9c3fdb23d92e32abbca07e7c13ebd7ddfbcb06f5991f"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39b70a6f88eebe239fa775190796d55a33cfb6d36b9ffdd37843f7c4c1b5dc67"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e12f8ee80aa35e746230a2af83e81bd6b52daa92a8afaef4fea4a2ce9b9f4fa"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b6cefa579e1237ce198619b76eaa148b71894fb0d6bcf9024460f9bf30fd228"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:61f1e3fb621f5420523abb71f5771a204b33c21d31e7d9d86881b2cffe92c47c"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4f6e2a839f83a6a76854d12dbebde50e4b1afa63e27761549d006fa53e9aa80e"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:1ec937546cad86d0dce5396748bf392bb7b62a9eeb8c66efac60e947697f0e58"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:82ca51ff0fc5b641a2d4e1cc8c5ff108699b7a56d7f3ad6f6da9dbb6f0145b48"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:633968254f8d421e70f91c6ebe71ed0ab140220469cf87a9857e21c16687c034"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-win32.whl", hash = "sha256:c0c72d34e7de5604df0fde3644cc079feee5e55464967d10b24b1de268deceb9"}, - {file = "charset_normalizer-3.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:63accd11149c0f9a99e3bc095bbdb5a464862d77a7e309ad5938fbc8721235ae"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5a3580a4fdc4ac05f9e53c57f965e3594b2f99796231380adb2baaab96e22761"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2465aa50c9299d615d757c1c888bc6fef384b7c4aec81c05a0172b4400f98557"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb7cd68814308aade9d0c93c5bd2ade9f9441666f8ba5aa9c2d4b389cb5e2a45"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91e43805ccafa0a91831f9cd5443aa34528c0c3f2cc48c4cb3d9a7721053874b"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:854cc74367180beb327ab9d00f964f6d91da06450b0855cbbb09187bcdb02de5"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c15070ebf11b8b7fd1bfff7217e9324963c82dbdf6182ff7050519e350e7ad9f"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4c99f98fc3a1835af8179dcc9013f93594d0670e2fa80c83aa36346ee763d2"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fb765362688821404ad6cf86772fc54993ec11577cd5a92ac44b4c2ba52155b"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dced27917823df984fe0c80a5c4ad75cf58df0fbfae890bc08004cd3888922a2"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a66bcdf19c1a523e41b8e9d53d0cedbfbac2e93c649a2e9502cb26c014d0980c"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ecd26be9f112c4f96718290c10f4caea6cc798459a3a76636b817a0ed7874e42"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f70fd716855cd3b855316b226a1ac8bdb3caf4f7ea96edcccc6f484217c9597"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:17a866d61259c7de1bdadef418a37755050ddb4b922df8b356503234fff7932c"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-win32.whl", hash = "sha256:548eefad783ed787b38cb6f9a574bd8664468cc76d1538215d510a3cd41406cb"}, - {file = "charset_normalizer-3.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:45f053a0ece92c734d874861ffe6e3cc92150e32136dd59ab1fb070575189c97"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bc791ec3fd0c4309a753f95bb6c749ef0d8ea3aea91f07ee1cf06b7b02118f2f"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0c8c61fb505c7dad1d251c284e712d4e0372cef3b067f7ddf82a7fa82e1e9a93"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2c092be3885a1b7899cd85ce24acedc1034199d6fca1483fa2c3a35c86e43041"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2000c54c395d9e5e44c99dc7c20a64dc371f777faf8bae4919ad3e99ce5253e"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4cb50a0335382aac15c31b61d8531bc9bb657cfd848b1d7158009472189f3d62"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c30187840d36d0ba2893bc3271a36a517a717f9fd383a98e2697ee890a37c273"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe81b35c33772e56f4b6cf62cf4aedc1762ef7162a31e6ac7fe5e40d0149eb67"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0bf89afcbcf4d1bb2652f6580e5e55a840fdf87384f6063c4a4f0c95e378656"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:06cf46bdff72f58645434d467bf5228080801298fbba19fe268a01b4534467f5"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3c66df3f41abee950d6638adc7eac4730a306b022570f71dd0bd6ba53503ab57"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd805513198304026bd379d1d516afbf6c3c13f4382134a2c526b8b854da1c2e"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:9505dc359edb6a330efcd2be825fdb73ee3e628d9010597aa1aee5aa63442e97"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:31445f38053476a0c4e6d12b047b08ced81e2c7c712e5a1ad97bc913256f91b2"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-win32.whl", hash = "sha256:bd28b31730f0e982ace8663d108e01199098432a30a4c410d06fe08fdb9e93f4"}, - {file = "charset_normalizer-3.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:555fe186da0068d3354cdf4bbcbc609b0ecae4d04c921cc13e209eece7720727"}, - {file = "charset_normalizer-3.3.1-py3-none-any.whl", hash = "sha256:800561453acdecedaac137bf09cd719c7a440b6800ec182f077bb8e7025fb708"}, + {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]] @@ -1245,22 +1262,20 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} [[package]] name = "comm" -version = "0.1.4" +version = "0.2.1" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "comm-0.1.4-py3-none-any.whl", hash = "sha256:6d52794cba11b36ed9860999cd10fd02d6b2eac177068fdd585e1e2f8a96e67a"}, - {file = "comm-0.1.4.tar.gz", hash = "sha256:354e40a59c9dd6db50c5cc6b4acc887d82e9603787f83b68c01a80a923984d15"}, + {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"}, + {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"}, ] [package.dependencies] traitlets = ">=4" [package.extras] -lint = ["black (>=22.6.0)", "mdformat (>0.7)", "mdformat-gfm (>=0.3.5)", "ruff (>=0.0.156)"] test = ["pytest"] -typing = ["mypy (>=0.990)"] [[package]] name = "commonmark" @@ -1278,17 +1293,17 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] [[package]] name = "configupdater" -version = "3.1.1" +version = "3.2" description = "Parser like ConfigParser but for updating configuration files" optional = false python-versions = ">=3.6" files = [ - {file = "ConfigUpdater-3.1.1-py2.py3-none-any.whl", hash = "sha256:805986dbeba317886c7a8d348b2e34986dc9e3128cd3761ecc35decbd372b286"}, - {file = "ConfigUpdater-3.1.1.tar.gz", hash = "sha256:46f0c74d73efa723776764b43c9739f68052495dd3d734319c1d0eb58511f15b"}, + {file = "ConfigUpdater-3.2-py2.py3-none-any.whl", hash = "sha256:0f65a041627d7693840b4dd743581db4c441c97195298a29d075f91b79539df2"}, + {file = "ConfigUpdater-3.2.tar.gz", hash = "sha256:9fdac53831c1b062929bf398b649b87ca30e7f1a735f3fbf482072804106306b"}, ] [package.extras] -testing = ["flake8", "pytest", "pytest-cov", "pytest-virtualenv", "pytest-xdist", "sphinx"] +testing = ["flake8", "pytest", "pytest-cov", "pytest-randomly", "pytest-xdist", "sphinx"] [[package]] name = "connexion" @@ -1321,134 +1336,126 @@ tests = ["MarkupSafe (>=0.23)", "aiohttp (>=2.3.10,<4)", "aiohttp-jinja2 (>=0.14 [[package]] name = "contourpy" -version = "1.1.1" +version = "1.2.0" description = "Python library for calculating contours of 2D quadrilateral grids" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "contourpy-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:46e24f5412c948d81736509377e255f6040e94216bf1a9b5ea1eaa9d29f6ec1b"}, - {file = "contourpy-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e48694d6a9c5a26ee85b10130c77a011a4fedf50a7279fa0bdaf44bafb4299d"}, - {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a66045af6cf00e19d02191ab578a50cb93b2028c3eefed999793698e9ea768ae"}, - {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ebf42695f75ee1a952f98ce9775c873e4971732a87334b099dde90b6af6a916"}, - {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6aec19457617ef468ff091669cca01fa7ea557b12b59a7908b9474bb9674cf0"}, - {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:462c59914dc6d81e0b11f37e560b8a7c2dbab6aca4f38be31519d442d6cde1a1"}, - {file = "contourpy-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6d0a8efc258659edc5299f9ef32d8d81de8b53b45d67bf4bfa3067f31366764d"}, - {file = "contourpy-1.1.1-cp310-cp310-win32.whl", hash = "sha256:d6ab42f223e58b7dac1bb0af32194a7b9311065583cc75ff59dcf301afd8a431"}, - {file = "contourpy-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:549174b0713d49871c6dee90a4b499d3f12f5e5f69641cd23c50a4542e2ca1eb"}, - {file = "contourpy-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:407d864db716a067cc696d61fa1ef6637fedf03606e8417fe2aeed20a061e6b2"}, - {file = "contourpy-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe80c017973e6a4c367e037cb31601044dd55e6bfacd57370674867d15a899b"}, - {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e30aaf2b8a2bac57eb7e1650df1b3a4130e8d0c66fc2f861039d507a11760e1b"}, - {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3de23ca4f381c3770dee6d10ead6fff524d540c0f662e763ad1530bde5112532"}, - {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:566f0e41df06dfef2431defcfaa155f0acfa1ca4acbf8fd80895b1e7e2ada40e"}, - {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b04c2f0adaf255bf756cf08ebef1be132d3c7a06fe6f9877d55640c5e60c72c5"}, - {file = "contourpy-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d0c188ae66b772d9d61d43c6030500344c13e3f73a00d1dc241da896f379bb62"}, - {file = "contourpy-1.1.1-cp311-cp311-win32.whl", hash = "sha256:0683e1ae20dc038075d92e0e0148f09ffcefab120e57f6b4c9c0f477ec171f33"}, - {file = "contourpy-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:8636cd2fc5da0fb102a2504fa2c4bea3cbc149533b345d72cdf0e7a924decc45"}, - {file = "contourpy-1.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:560f1d68a33e89c62da5da4077ba98137a5e4d3a271b29f2f195d0fba2adcb6a"}, - {file = "contourpy-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24216552104ae8f3b34120ef84825400b16eb6133af2e27a190fdc13529f023e"}, - {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56de98a2fb23025882a18b60c7f0ea2d2d70bbbcfcf878f9067234b1c4818442"}, - {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:07d6f11dfaf80a84c97f1a5ba50d129d9303c5b4206f776e94037332e298dda8"}, - {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1eaac5257a8f8a047248d60e8f9315c6cff58f7803971170d952555ef6344a7"}, - {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19557fa407e70f20bfaba7d55b4d97b14f9480856c4fb65812e8a05fe1c6f9bf"}, - {file = "contourpy-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:081f3c0880712e40effc5f4c3b08feca6d064cb8cfbb372ca548105b86fd6c3d"}, - {file = "contourpy-1.1.1-cp312-cp312-win32.whl", hash = "sha256:059c3d2a94b930f4dafe8105bcdc1b21de99b30b51b5bce74c753686de858cb6"}, - {file = "contourpy-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:f44d78b61740e4e8c71db1cf1fd56d9050a4747681c59ec1094750a658ceb970"}, - {file = "contourpy-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:70e5a10f8093d228bb2b552beeb318b8928b8a94763ef03b858ef3612b29395d"}, - {file = "contourpy-1.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8394e652925a18ef0091115e3cc191fef350ab6dc3cc417f06da66bf98071ae9"}, - {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5bd5680f844c3ff0008523a71949a3ff5e4953eb7701b28760805bc9bcff217"}, - {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66544f853bfa85c0d07a68f6c648b2ec81dafd30f272565c37ab47a33b220684"}, - {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0c02b75acfea5cab07585d25069207e478d12309557f90a61b5a3b4f77f46ce"}, - {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41339b24471c58dc1499e56783fedc1afa4bb018bcd035cfb0ee2ad2a7501ef8"}, - {file = "contourpy-1.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f29fb0b3f1217dfe9362ec55440d0743fe868497359f2cf93293f4b2701b8251"}, - {file = "contourpy-1.1.1-cp38-cp38-win32.whl", hash = "sha256:f9dc7f933975367251c1b34da882c4f0e0b2e24bb35dc906d2f598a40b72bfc7"}, - {file = "contourpy-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:498e53573e8b94b1caeb9e62d7c2d053c263ebb6aa259c81050766beb50ff8d9"}, - {file = "contourpy-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ba42e3810999a0ddd0439e6e5dbf6d034055cdc72b7c5c839f37a7c274cb4eba"}, - {file = "contourpy-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c06e4c6e234fcc65435223c7b2a90f286b7f1b2733058bdf1345d218cc59e34"}, - {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca6fab080484e419528e98624fb5c4282148b847e3602dc8dbe0cb0669469887"}, - {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93df44ab351119d14cd1e6b52a5063d3336f0754b72736cc63db59307dabb718"}, - {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eafbef886566dc1047d7b3d4b14db0d5b7deb99638d8e1be4e23a7c7ac59ff0f"}, - {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efe0fab26d598e1ec07d72cf03eaeeba8e42b4ecf6b9ccb5a356fde60ff08b85"}, - {file = "contourpy-1.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f08e469821a5e4751c97fcd34bcb586bc243c39c2e39321822060ba902eac49e"}, - {file = "contourpy-1.1.1-cp39-cp39-win32.whl", hash = "sha256:bfc8a5e9238232a45ebc5cb3bfee71f1167064c8d382cadd6076f0d51cff1da0"}, - {file = "contourpy-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:c84fdf3da00c2827d634de4fcf17e3e067490c4aea82833625c4c8e6cdea0887"}, - {file = "contourpy-1.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:229a25f68046c5cf8067d6d6351c8b99e40da11b04d8416bf8d2b1d75922521e"}, - {file = "contourpy-1.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10dab5ea1bd4401c9483450b5b0ba5416be799bbd50fc7a6cc5e2a15e03e8a3"}, - {file = "contourpy-1.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4f9147051cb8fdb29a51dc2482d792b3b23e50f8f57e3720ca2e3d438b7adf23"}, - {file = "contourpy-1.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a75cc163a5f4531a256f2c523bd80db509a49fc23721b36dd1ef2f60ff41c3cb"}, - {file = "contourpy-1.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b53d5769aa1f2d4ea407c65f2d1d08002952fac1d9e9d307aa2e1023554a163"}, - {file = "contourpy-1.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11b836b7dbfb74e049c302bbf74b4b8f6cb9d0b6ca1bf86cfa8ba144aedadd9c"}, - {file = "contourpy-1.1.1.tar.gz", hash = "sha256:96ba37c2e24b7212a77da85004c38e7c4d155d3e72a45eeaf22c1f03f607e8ab"}, -] - -[package.dependencies] -numpy = {version = ">=1.16,<2.0", markers = "python_version <= \"3.11\""} + {file = "contourpy-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8"}, + {file = "contourpy-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa"}, + {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9"}, + {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab"}, + {file = "contourpy-1.2.0-cp310-cp310-win32.whl", hash = "sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488"}, + {file = "contourpy-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41"}, + {file = "contourpy-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727"}, + {file = "contourpy-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686"}, + {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286"}, + {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95"}, + {file = "contourpy-1.2.0-cp311-cp311-win32.whl", hash = "sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6"}, + {file = "contourpy-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de"}, + {file = "contourpy-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0"}, + {file = "contourpy-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0"}, + {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0"}, + {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431"}, + {file = "contourpy-1.2.0-cp312-cp312-win32.whl", hash = "sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f"}, + {file = "contourpy-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9"}, + {file = "contourpy-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5fd1810973a375ca0e097dee059c407913ba35723b111df75671a1976efa04bc"}, + {file = "contourpy-1.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:999c71939aad2780f003979b25ac5b8f2df651dac7b38fb8ce6c46ba5abe6ae9"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7caf9b241464c404613512d5594a6e2ff0cc9cb5615c9475cc1d9b514218ae8"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:266270c6f6608340f6c9836a0fb9b367be61dde0c9a9a18d5ece97774105ff3e"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbd50d0a0539ae2e96e537553aff6d02c10ed165ef40c65b0e27e744a0f10af8"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11f8d2554e52f459918f7b8e6aa20ec2a3bce35ce95c1f0ef4ba36fbda306df5"}, + {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ce96dd400486e80ac7d195b2d800b03e3e6a787e2a522bfb83755938465a819e"}, + {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d3364b999c62f539cd403f8123ae426da946e142312a514162adb2addd8d808"}, + {file = "contourpy-1.2.0-cp39-cp39-win32.whl", hash = "sha256:1c88dfb9e0c77612febebb6ac69d44a8d81e3dc60f993215425b62c1161353f4"}, + {file = "contourpy-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:78e6ad33cf2e2e80c5dfaaa0beec3d61face0fb650557100ee36db808bfa6843"}, + {file = "contourpy-1.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be16975d94c320432657ad2402f6760990cb640c161ae6da1363051805fa8108"}, + {file = "contourpy-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b95a225d4948b26a28c08307a60ac00fb8671b14f2047fc5476613252a129776"}, + {file = "contourpy-1.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956"}, + {file = "contourpy-1.2.0.tar.gz", hash = "sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a"}, +] + +[package.dependencies] +numpy = ">=1.20,<2.0" [package.extras] bokeh = ["bokeh", "selenium"] docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] -mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.4.1)", "types-Pillow"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.6.1)", "types-Pillow"] test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] -test-no-images = ["pytest", "pytest-cov", "wurlitzer"] +test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] [[package]] name = "coverage" -version = "7.3.2" +version = "7.4.3" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, - {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, - {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, - {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, - {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, - {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, - {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, - {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, - {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, - {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, - {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, - {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, - {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, - {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, + {file = "coverage-7.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8580b827d4746d47294c0e0b92854c85a92c2227927433998f0d3320ae8a71b6"}, + {file = "coverage-7.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:718187eeb9849fc6cc23e0d9b092bc2348821c5e1a901c9f8975df0bc785bfd4"}, + {file = "coverage-7.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:767b35c3a246bcb55b8044fd3a43b8cd553dd1f9f2c1eeb87a302b1f8daa0524"}, + {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae7f19afe0cce50039e2c782bff379c7e347cba335429678450b8fe81c4ef96d"}, + {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba3a8aaed13770e970b3df46980cb068d1c24af1a1968b7818b69af8c4347efb"}, + {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ee866acc0861caebb4f2ab79f0b94dbfbdbfadc19f82e6e9c93930f74e11d7a0"}, + {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:506edb1dd49e13a2d4cac6a5173317b82a23c9d6e8df63efb4f0380de0fbccbc"}, + {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd6545d97c98a192c5ac995d21c894b581f1fd14cf389be90724d21808b657e2"}, + {file = "coverage-7.4.3-cp310-cp310-win32.whl", hash = "sha256:f6a09b360d67e589236a44f0c39218a8efba2593b6abdccc300a8862cffc2f94"}, + {file = "coverage-7.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:18d90523ce7553dd0b7e23cbb28865db23cddfd683a38fb224115f7826de78d0"}, + {file = "coverage-7.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cbbe5e739d45a52f3200a771c6d2c7acf89eb2524890a4a3aa1a7fa0695d2a47"}, + {file = "coverage-7.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:489763b2d037b164846ebac0cbd368b8a4ca56385c4090807ff9fad817de4113"}, + {file = "coverage-7.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:451f433ad901b3bb00184d83fd83d135fb682d780b38af7944c9faeecb1e0bfe"}, + {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcc66e222cf4c719fe7722a403888b1f5e1682d1679bd780e2b26c18bb648cdc"}, + {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ec74cfef2d985e145baae90d9b1b32f85e1741b04cd967aaf9cfa84c1334f3"}, + {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:abbbd8093c5229c72d4c2926afaee0e6e3140de69d5dcd918b2921f2f0c8baba"}, + {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:35eb581efdacf7b7422af677b92170da4ef34500467381e805944a3201df2079"}, + {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8249b1c7334be8f8c3abcaaa996e1e4927b0e5a23b65f5bf6cfe3180d8ca7840"}, + {file = "coverage-7.4.3-cp311-cp311-win32.whl", hash = "sha256:cf30900aa1ba595312ae41978b95e256e419d8a823af79ce670835409fc02ad3"}, + {file = "coverage-7.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:18c7320695c949de11a351742ee001849912fd57e62a706d83dfc1581897fa2e"}, + {file = "coverage-7.4.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b51bfc348925e92a9bd9b2e48dad13431b57011fd1038f08316e6bf1df107d10"}, + {file = "coverage-7.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d6cdecaedea1ea9e033d8adf6a0ab11107b49571bbb9737175444cea6eb72328"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b2eccb883368f9e972e216c7b4c7c06cabda925b5f06dde0650281cb7666a30"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c00cdc8fa4e50e1cc1f941a7f2e3e0f26cb2a1233c9696f26963ff58445bac7"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4a8dd3dcf4cbd3165737358e4d7dfbd9d59902ad11e3b15eebb6393b0446e"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:062b0a75d9261e2f9c6d071753f7eef0fc9caf3a2c82d36d76667ba7b6470003"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ebe7c9e67a2d15fa97b77ea6571ce5e1e1f6b0db71d1d5e96f8d2bf134303c1d"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c0a120238dd71c68484f02562f6d446d736adcc6ca0993712289b102705a9a3a"}, + {file = "coverage-7.4.3-cp312-cp312-win32.whl", hash = "sha256:37389611ba54fd6d278fde86eb2c013c8e50232e38f5c68235d09d0a3f8aa352"}, + {file = "coverage-7.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:d25b937a5d9ffa857d41be042b4238dd61db888533b53bc76dc082cb5a15e914"}, + {file = "coverage-7.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28ca2098939eabab044ad68850aac8f8db6bf0b29bc7f2887d05889b17346454"}, + {file = "coverage-7.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:280459f0a03cecbe8800786cdc23067a8fc64c0bd51dc614008d9c36e1659d7e"}, + {file = "coverage-7.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c0cdedd3500e0511eac1517bf560149764b7d8e65cb800d8bf1c63ebf39edd2"}, + {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a9babb9466fe1da12417a4aed923e90124a534736de6201794a3aea9d98484e"}, + {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dec9de46a33cf2dd87a5254af095a409ea3bf952d85ad339751e7de6d962cde6"}, + {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:16bae383a9cc5abab9bb05c10a3e5a52e0a788325dc9ba8499e821885928968c"}, + {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2c854ce44e1ee31bda4e318af1dbcfc929026d12c5ed030095ad98197eeeaed0"}, + {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ce8c50520f57ec57aa21a63ea4f325c7b657386b3f02ccaedeccf9ebe27686e1"}, + {file = "coverage-7.4.3-cp38-cp38-win32.whl", hash = "sha256:708a3369dcf055c00ddeeaa2b20f0dd1ce664eeabde6623e516c5228b753654f"}, + {file = "coverage-7.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:1bf25fbca0c8d121a3e92a2a0555c7e5bc981aee5c3fdaf4bb7809f410f696b9"}, + {file = "coverage-7.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b253094dbe1b431d3a4ac2f053b6d7ede2664ac559705a704f621742e034f1f"}, + {file = "coverage-7.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77fbfc5720cceac9c200054b9fab50cb2a7d79660609200ab83f5db96162d20c"}, + {file = "coverage-7.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6679060424faa9c11808598504c3ab472de4531c571ab2befa32f4971835788e"}, + {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af154d617c875b52651dd8dd17a31270c495082f3d55f6128e7629658d63765"}, + {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8640f1fde5e1b8e3439fe482cdc2b0bb6c329f4bb161927c28d2e8879c6029ee"}, + {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:69b9f6f66c0af29642e73a520b6fed25ff9fd69a25975ebe6acb297234eda501"}, + {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0842571634f39016a6c03e9d4aba502be652a6e4455fadb73cd3a3a49173e38f"}, + {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a78ed23b08e8ab524551f52953a8a05d61c3a760781762aac49f8de6eede8c45"}, + {file = "coverage-7.4.3-cp39-cp39-win32.whl", hash = "sha256:c0524de3ff096e15fcbfe8f056fdb4ea0bf497d584454f344d59fce069d3e6e9"}, + {file = "coverage-7.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:0209a6369ccce576b43bb227dc8322d8ef9e323d089c6f3f26a597b09cb4d2aa"}, + {file = "coverage-7.4.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:7cbde573904625509a3f37b6fecea974e363460b556a627c60dc2f47e2fffa51"}, + {file = "coverage-7.4.3.tar.gz", hash = "sha256:276f6077a5c61447a48d133ed13e759c09e62aff0dc84274a68dc18660104d52"}, ] [package.dependencies] @@ -1459,12 +1466,13 @@ toml = ["tomli"] [[package]] name = "cron-descriptor" -version = "1.4.0" +version = "1.4.3" description = "A Python library that converts cron expressions into human readable strings." optional = false python-versions = "*" files = [ - {file = "cron_descriptor-1.4.0.tar.gz", hash = "sha256:b6ff4e3a988d7ca04a4ab150248e9f166fb7a5c828a85090e75bcc25aa93b4dd"}, + {file = "cron_descriptor-1.4.3-py3-none-any.whl", hash = "sha256:a67ba21804983b1427ed7f3e1ec27ee77bf24c652b0430239c268c5ddfbf9dc0"}, + {file = "cron_descriptor-1.4.3.tar.gz", hash = "sha256:7b1a00d7d25d6ae6896c0da4457e790b98cba778398a3d48e341e5e0d33f0488"}, ] [package.extras] @@ -1487,49 +1495,48 @@ pytz = ">2021.1" [[package]] name = "cryptography" -version = "38.0.4" +version = "41.0.7" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "cryptography-38.0.4-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:2fa36a7b2cc0998a3a4d5af26ccb6273f3df133d61da2ba13b3286261e7efb70"}, - {file = "cryptography-38.0.4-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:1f13ddda26a04c06eb57119caf27a524ccae20533729f4b1e4a69b54e07035eb"}, - {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:2ec2a8714dd005949d4019195d72abed84198d877112abb5a27740e217e0ea8d"}, - {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50a1494ed0c3f5b4d07650a68cd6ca62efe8b596ce743a5c94403e6f11bf06c1"}, - {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10498349d4c8eab7357a8f9aa3463791292845b79597ad1b98a543686fb1ec8"}, - {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:10652dd7282de17990b88679cb82f832752c4e8237f0c714be518044269415db"}, - {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:bfe6472507986613dc6cc00b3d492b2f7564b02b3b3682d25ca7f40fa3fd321b"}, - {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ce127dd0a6a0811c251a6cddd014d292728484e530d80e872ad9806cfb1c5b3c"}, - {file = "cryptography-38.0.4-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:53049f3379ef05182864d13bb9686657659407148f901f3f1eee57a733fb4b00"}, - {file = "cryptography-38.0.4-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8a4b2bdb68a447fadebfd7d24855758fe2d6fecc7fed0b78d190b1af39a8e3b0"}, - {file = "cryptography-38.0.4-cp36-abi3-win32.whl", hash = "sha256:1d7e632804a248103b60b16fb145e8df0bc60eed790ece0d12efe8cd3f3e7744"}, - {file = "cryptography-38.0.4-cp36-abi3-win_amd64.whl", hash = "sha256:8e45653fb97eb2f20b8c96f9cd2b3a0654d742b47d638cf2897afbd97f80fa6d"}, - {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca57eb3ddaccd1112c18fc80abe41db443cc2e9dcb1917078e02dfa010a4f353"}, - {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:c9e0d79ee4c56d841bd4ac6e7697c8ff3c8d6da67379057f29e66acffcd1e9a7"}, - {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0e70da4bdff7601b0ef48e6348339e490ebfb0cbe638e083c9c41fb49f00c8bd"}, - {file = "cryptography-38.0.4-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:998cd19189d8a747b226d24c0207fdaa1e6658a1d3f2494541cb9dfbf7dcb6d2"}, - {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67461b5ebca2e4c2ab991733f8ab637a7265bb582f07c7c88914b5afb88cb95b"}, - {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:4eb85075437f0b1fd8cd66c688469a0c4119e0ba855e3fef86691971b887caf6"}, - {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3178d46f363d4549b9a76264f41c6948752183b3f587666aff0555ac50fd7876"}, - {file = "cryptography-38.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6391e59ebe7c62d9902c24a4d8bcbc79a68e7c4ab65863536127c8a9cd94043b"}, - {file = "cryptography-38.0.4-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:78e47e28ddc4ace41dd38c42e6feecfdadf9c3be2af389abbfeef1ff06822285"}, - {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fb481682873035600b5502f0015b664abc26466153fab5c6bc92c1ea69d478b"}, - {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:4367da5705922cf7070462e964f66e4ac24162e22ab0a2e9d31f1b270dd78083"}, - {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b4cad0cea995af760f82820ab4ca54e5471fc782f70a007f31531957f43e9dee"}, - {file = "cryptography-38.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:80ca53981ceeb3241998443c4964a387771588c4e4a5d92735a493af868294f9"}, - {file = "cryptography-38.0.4.tar.gz", hash = "sha256:175c1a818b87c9ac80bb7377f5520b7f31b3ef2a0004e2420319beadedb67290"}, + {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"}, ] [package.dependencies] cffi = ">=1.12" [package.extras] -docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] +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)"] -pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] -sdist = ["setuptools-rust (>=0.11.4)"] +nox = ["nox"] +pep8test = ["black", "check-sdist", "mypy", "ruff"] +sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] +test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] [[package]] name = "darglint" @@ -1544,13 +1551,13 @@ files = [ [[package]] name = "db-dtypes" -version = "1.1.1" +version = "1.2.0" description = "Pandas Data Types for SQL systems (BigQuery, Spanner)" optional = false python-versions = ">=3.7" files = [ - {file = "db-dtypes-1.1.1.tar.gz", hash = "sha256:ab485c85fef2454f3182427def0b0a3ab179b2871542787d33ba519d62078883"}, - {file = "db_dtypes-1.1.1-py2.py3-none-any.whl", hash = "sha256:23be34ea2bc91065447ecea4d5f107e46d1de223d152e69fa73673a62d5bd27d"}, + {file = "db-dtypes-1.2.0.tar.gz", hash = "sha256:3531bb1fb8b5fbab33121fe243ccc2ade16ab2524f4c113b05cc702a1908e6ea"}, + {file = "db_dtypes-1.2.0-py2.py3-none-any.whl", hash = "sha256:6320bddd31d096447ef749224d64aab00972ed20e4392d86f7d8b81ad79f7ff0"}, ] [package.dependencies] @@ -1561,40 +1568,44 @@ pyarrow = ">=3.0.0" [[package]] name = "dbldatagen" -version = "0.3.5" +version = "0.3.6" description = "Databricks Labs - PySpark Synthetic Data Generator" optional = false python-versions = ">=3.8.10" files = [ - {file = "dbldatagen-0.3.5-py3-none-any.whl", hash = "sha256:75db379c68adda518fbe5d09184ca0756255f2086d8466fbdeaba29863b98349"}, - {file = "dbldatagen-0.3.5.tar.gz", hash = "sha256:d50dd7f2180d6f3e21a107b8759d62f9a9dd093b64833f73940d99f58723c4b4"}, + {file = "dbldatagen-0.3.6-py3-none-any.whl", hash = "sha256:610c8568197d20c27835b92f0db86ee2bc5f339568cfc5637d4280ba30dd10fa"}, + {file = "dbldatagen-0.3.6.tar.gz", hash = "sha256:e360fba8cc4393b53214daf708444c9d4843903d05858a25b830fb37886f5345"}, ] [[package]] name = "debugpy" -version = "1.8.0" +version = "1.8.1" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"}, - {file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"}, - {file = "debugpy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f"}, - {file = "debugpy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637"}, - {file = "debugpy-1.8.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e"}, - {file = "debugpy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6"}, - {file = "debugpy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b"}, - {file = "debugpy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153"}, - {file = "debugpy-1.8.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd"}, - {file = "debugpy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f"}, - {file = "debugpy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa"}, - {file = "debugpy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595"}, - {file = "debugpy-1.8.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8"}, - {file = "debugpy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332"}, - {file = "debugpy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6"}, - {file = "debugpy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926"}, - {file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"}, - {file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"}, + {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"}, + {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"}, + {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"}, + {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"}, + {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"}, + {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"}, + {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"}, + {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"}, + {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"}, + {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"}, + {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"}, + {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"}, + {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"}, + {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"}, + {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"}, + {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"}, + {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"}, + {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"}, + {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"}, + {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"}, + {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"}, + {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"}, ] [[package]] @@ -1645,47 +1656,49 @@ tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} [[package]] name = "dill" -version = "0.3.7" +version = "0.3.8" description = "serialize all of Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"}, - {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"}, + {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, + {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, ] [package.extras] graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "distlib" -version = "0.3.7" +version = "0.3.8" description = "Distribution utilities" optional = false python-versions = "*" files = [ - {file = "distlib-0.3.7-py2.py3-none-any.whl", hash = "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057"}, - {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, + {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, + {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, ] [[package]] name = "dnspython" -version = "2.4.2" +version = "2.6.1" 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.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, + {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, ] [package.extras] -dnssec = ["cryptography (>=2.6,<42.0)"] -doh = ["h2 (>=4.1.0)", "httpcore (>=0.17.3)", "httpx (>=0.24.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)"] +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 = "docker-pycreds" @@ -1751,13 +1764,13 @@ idna = ">=2.0.0" [[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] @@ -1809,19 +1822,19 @@ typing = ["typing-extensions (>=4.8)"] [[package]] name = "flake8" -version = "6.1.0" +version = "7.0.0" description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" files = [ - {file = "flake8-6.1.0-py2.py3-none-any.whl", hash = "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"}, - {file = "flake8-6.1.0.tar.gz", hash = "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23"}, + {file = "flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"}, + {file = "flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" pycodestyle = ">=2.11.0,<2.12.0" -pyflakes = ">=3.1.0,<3.2.0" +pyflakes = ">=3.2.0,<3.3.0" [[package]] name = "flask" @@ -1846,13 +1859,13 @@ dotenv = ["python-dotenv"] [[package]] name = "flask-appbuilder" -version = "4.3.10" +version = "4.3.11" description = "Simple and rapid application development framework, built on top of Flask. includes detailed security, auto CRUD generation for your models, google charts and much more." optional = false python-versions = "~=3.7" files = [ - {file = "Flask-AppBuilder-4.3.10.tar.gz", hash = "sha256:4173c878e56b81c6acac5e3c80c133f4183f43442fd944552bd9f4023f5baceb"}, - {file = "Flask_AppBuilder-4.3.10-py3-none-any.whl", hash = "sha256:c0af506e1a68e7ee14f26a16fda829f1a14f8343654c30bdbb1351d23c545df9"}, + {file = "Flask-AppBuilder-4.3.11.tar.gz", hash = "sha256:193d72e953b5100809df89ec4c8b62c7617c24998a3b501ad85c49ed2aa73fc5"}, + {file = "Flask_AppBuilder-4.3.11-py3-none-any.whl", hash = "sha256:9630b19e7fee1bfd03982ff9d48309e5eaf0302594542072385dc5d7073fd700"}, ] [package.dependencies] @@ -1921,13 +1934,13 @@ Flask = "*" [[package]] name = "flask-jwt-extended" -version = "4.5.3" +version = "4.6.0" description = "Extended JWT integration with Flask" optional = false python-versions = ">=3.7,<4" files = [ - {file = "Flask-JWT-Extended-4.5.3.tar.gz", hash = "sha256:061ef3d25ed5743babe4964ab38f36d870e6d2fd8a126bab5d77ddef8a01932b"}, - {file = "Flask_JWT_Extended-4.5.3-py2.py3-none-any.whl", hash = "sha256:eaec42af107dcb919785a4b3766c09ffba9f286b92a8d58603933f28fd4db6a3"}, + {file = "Flask-JWT-Extended-4.6.0.tar.gz", hash = "sha256:9215d05a9413d3855764bcd67035e75819d23af2fafb6b55197eb5a3313fdfb2"}, + {file = "Flask_JWT_Extended-4.6.0-py2.py3-none-any.whl", hash = "sha256:63a28fc9731bcc6c4b8815b6f954b5904caa534fc2ae9b93b1d3ef12930dca95"}, ] [package.dependencies] @@ -1940,13 +1953,13 @@ asymmetric-crypto = ["cryptography (>=3.3.1)"] [[package]] name = "flask-limiter" -version = "3.5.0" +version = "3.5.1" description = "Rate limiting for flask applications" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Flask-Limiter-3.5.0.tar.gz", hash = "sha256:13a3491b994c49f7cb4706587a38ca47e8162b576530472df38be68104f299c0"}, - {file = "Flask_Limiter-3.5.0-py3-none-any.whl", hash = "sha256:dbda4174f44e6cb858c6eb75e7488186f2977dd5d33d7028ba1aabf179de1bee"}, + {file = "Flask-Limiter-3.5.1.tar.gz", hash = "sha256:8117e1040e5d5c31bf667d3b649fcba325f979d814a3d76a3a2331c3eab63c5e"}, + {file = "Flask_Limiter-3.5.1-py3-none-any.whl", hash = "sha256:d40526719994197da180caa870ba01e722ed6a70a75790021638dbf29aae82ee"}, ] [package.dependencies] @@ -2027,83 +2040,99 @@ email = ["email-validator"] [[package]] name = "frozenlist" -version = "1.4.0" +version = "1.4.1" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" files = [ - {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab"}, - {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559"}, - {file = "frozenlist-1.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62"}, - {file = "frozenlist-1.4.0-cp310-cp310-win32.whl", hash = "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0"}, - {file = "frozenlist-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956"}, - {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95"}, - {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3"}, - {file = "frozenlist-1.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb"}, - {file = "frozenlist-1.4.0-cp311-cp311-win32.whl", hash = "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431"}, - {file = "frozenlist-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1"}, - {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3"}, - {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503"}, - {file = "frozenlist-1.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8"}, - {file = "frozenlist-1.4.0-cp38-cp38-win32.whl", hash = "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc"}, - {file = "frozenlist-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7"}, - {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf"}, - {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963"}, - {file = "frozenlist-1.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3"}, - {file = "frozenlist-1.4.0-cp39-cp39-win32.whl", hash = "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f"}, - {file = "frozenlist-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167"}, - {file = "frozenlist-1.4.0.tar.gz", hash = "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, + {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, + {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, + {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, + {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, + {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, + {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, + {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, + {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, + {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, + {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, + {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, + {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, ] [[package]] name = "fsspec" -version = "2023.10.0" +version = "2024.2.0" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2023.10.0-py3-none-any.whl", hash = "sha256:346a8f024efeb749d2a5fca7ba8854474b1ff9af7c3faaf636a4548781136529"}, - {file = "fsspec-2023.10.0.tar.gz", hash = "sha256:330c66757591df346ad3091a53bd907e15348c2ba17d63fd54f5c39c4457d2a5"}, + {file = "fsspec-2024.2.0-py3-none-any.whl", hash = "sha256:817f969556fa5916bc682e02ca2045f96ff7f586d45110fcb76022063ad2c7d8"}, + {file = "fsspec-2024.2.0.tar.gz", hash = "sha256:b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84"}, ] [package.extras] @@ -2121,7 +2150,7 @@ github = ["requests"] gs = ["gcsfs"] gui = ["panel"] hdfs = ["pyarrow (>=1)"] -http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "requests"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] libarchive = ["libarchive-c"] oci = ["ocifs"] s3 = ["s3fs"] @@ -2130,45 +2159,34 @@ smb = ["smbprotocol"] ssh = ["paramiko"] tqdm = ["tqdm"] -[[package]] -name = "future" -version = "0.18.3" -description = "Clean single-source support for Python 3 and 2" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "future-0.18.3.tar.gz", hash = "sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307"}, -] - [[package]] name = "gcloud-aio-auth" -version = "4.1.5" +version = "4.2.3" description = "Python Client for Google Cloud Auth" optional = false python-versions = ">=3.7,<4.0" files = [ - {file = "gcloud_aio_auth-4.1.5-py3-none-any.whl", hash = "sha256:606431bd670effc4b67456877747d400c4dd0d8d20bbca98c72f09041359985f"}, - {file = "gcloud_aio_auth-4.1.5.tar.gz", hash = "sha256:12b8308f32a83b76ae04129800df8eb09e8803219c2ebabccad2364f39744f79"}, + {file = "gcloud_aio_auth-4.2.3-py3-none-any.whl", hash = "sha256:e4adadd36e35eeeb8537b926840372c3080c2f5a6909d44aa1bacbced2260bb1"}, + {file = "gcloud_aio_auth-4.2.3.tar.gz", hash = "sha256:8e12297c5b45cfc20d629b83e1233f83a1c7d5f830f24f31bc5bb8816c0cda1b"}, ] [package.dependencies] aiohttp = ">=3.3.0,<4.0.0" backoff = ">=1.0.0,<3.0.0" -chardet = {version = ">=2.0,<4.1", markers = "python_version >= \"3.7\""} -cryptography = ">=2.0.0,<39.0.0" -future = ">=0.17.0,<0.19.0" +chardet = ">=2.0,<6.0" +cryptography = ">=2.0.0,<42.0.0" pyjwt = ">=1.5.3,<3.0.0" -six = ">=1.11.0,<2.0.0" +setuptools = ">=66.0.0,<67.0.0" [[package]] name = "gcloud-aio-bigquery" -version = "7.0.0" +version = "7.1.0" description = "Python Client for Google Cloud BigQuery" optional = false python-versions = ">=3.8,<4.0" files = [ - {file = "gcloud_aio_bigquery-7.0.0-py3-none-any.whl", hash = "sha256:188b96b16b0fdbef2a0bc15ffce3f5a930ecc36de537fcfa5794fc397506fdd8"}, - {file = "gcloud_aio_bigquery-7.0.0.tar.gz", hash = "sha256:2cd1c7c9dcb68122ff6187f2b533941c86d954e5312d942c8107aac4d20ea2ec"}, + {file = "gcloud_aio_bigquery-7.1.0-py3-none-any.whl", hash = "sha256:524ae3cc14c1af6977a358829cc673b4471159caa7d62bba7f2d9334262bcd4a"}, + {file = "gcloud_aio_bigquery-7.1.0.tar.gz", hash = "sha256:4a3c775c2677c0588e9caeb2df40d81a54b31c174e562a527cb08e023c4408a3"}, ] [package.dependencies] @@ -2176,13 +2194,13 @@ gcloud-aio-auth = ">=3.1.0,<6.0.0" [[package]] name = "gcloud-aio-storage" -version = "9.0.0" +version = "9.2.0" description = "Python Client for Google Cloud Storage" optional = false python-versions = ">=3.8,<4.0" files = [ - {file = "gcloud_aio_storage-9.0.0-py3-none-any.whl", hash = "sha256:223583018b0ad68f22201593970c638e00fb86f40d9bb9187b17910a02ab118c"}, - {file = "gcloud_aio_storage-9.0.0.tar.gz", hash = "sha256:99e6d30c65809ceafe059d496dbf10a4186edb1850fe9634988e096966503046"}, + {file = "gcloud_aio_storage-9.2.0-py3-none-any.whl", hash = "sha256:0a8cc27223cea05ad27117fa574ce8697ec32a252382cbfdfe54df0678e92d03"}, + {file = "gcloud_aio_storage-9.2.0.tar.gz", hash = "sha256:47be865222d22fdf873cd5a4af9a285d7b64b176d4d92f1773ecacd52a6a8c6f"}, ] [package.dependencies] @@ -2193,19 +2211,19 @@ rsa = ">=3.1.4,<5.0.0" [[package]] name = "gcsfs" -version = "2023.10.0" +version = "2024.2.0" description = "Convenient Filesystem interface over GCS" optional = false python-versions = ">=3.8" files = [ - {file = "gcsfs-2023.10.0-py2.py3-none-any.whl", hash = "sha256:f3ad41652a596ca56e44778e041f428d022add3eff62b97a47302014affd270f"}, - {file = "gcsfs-2023.10.0.tar.gz", hash = "sha256:1915e6d766faad9a295e815b13c59966b925a274108b8a56f673623bf4aef83f"}, + {file = "gcsfs-2024.2.0-py2.py3-none-any.whl", hash = "sha256:20bf70cc81d580474dd299d55e1ffcf8b3e81721aeb562e148ca0a3c900d0421"}, + {file = "gcsfs-2024.2.0.tar.gz", hash = "sha256:f7cffd7cae2fb50c56ef883f8aef9792be045b5059f06c1902c3a6151509f506"}, ] [package.dependencies] aiohttp = "<4.0.0a0 || >4.0.0a0,<4.0.0a1 || >4.0.0a1" decorator = ">4.1.2" -fsspec = "2023.10.0" +fsspec = "2024.2.0" google-auth = ">=1.2" google-auth-oauthlib = "*" google-cloud-storage = "*" @@ -2248,20 +2266,20 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.40" +version = "3.1.42" description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.40-py3-none-any.whl", hash = "sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"}, - {file = "GitPython-3.1.40.tar.gz", hash = "sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4"}, + {file = "GitPython-3.1.42-py3-none-any.whl", hash = "sha256:1bf9cd7c9e7255f77778ea54359e54ac22a72a5b51288c457c881057b7bb9ecd"}, + {file = "GitPython-3.1.42.tar.gz", hash = "sha256:2d99869e0fef71a73cbd242528105af1d6c1b108c60dfabd994bf292f76c3ceb"}, ] [package.dependencies] gitdb = ">=4.0.1,<5" [package.extras] -test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-sugar"] +test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar"] [[package]] name = "google" @@ -2304,30 +2322,30 @@ tests = ["nox (>=2020.12.31,<2022.6)"] [[package]] name = "google-analytics-admin" -version = "0.22.5" +version = "0.22.6" description = "Google Analytics Admin API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-analytics-admin-0.22.5.tar.gz", hash = "sha256:2de1671ea945c23b3587323ed1dc6e6c78d02a7507b562d425de1dc7fb27b08f"}, - {file = "google_analytics_admin-0.22.5-py2.py3-none-any.whl", hash = "sha256:54c6e00baeb9be61492b4efcd4859ca1b94b181ce454ba70ff5d73a630dd5661"}, + {file = "google-analytics-admin-0.22.6.tar.gz", hash = "sha256:9299b30a51c1da4bd77406211efe10f30f672ef7b36f3d223a0248ebf2916d05"}, + {file = "google_analytics_admin-0.22.6-py2.py3-none-any.whl", hash = "sha256:f4122133bbd66693f641d548a6d3a8ffcd29eabca17392bf2b7e6b3d83aaee5e"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} google-auth = ">=2.14.1,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-api-core" -version = "2.12.0" +version = "2.17.1" description = "Google API client core library" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-core-2.12.0.tar.gz", hash = "sha256:c22e01b1e3c4dcd90998494879612c38d0a3411d1f7b679eb89e2abe3ce1f553"}, - {file = "google_api_core-2.12.0-py3-none-any.whl", hash = "sha256:ec6054f7d64ad13b41e43d96f735acbd763b0f3b695dabaa2d579673f6a6e160"}, + {file = "google-api-core-2.17.1.tar.gz", hash = "sha256:9df18a1f87ee0df0bc4eea2770ebc4228392d8cc4066655b320e2cfccb15db95"}, + {file = "google_api_core-2.17.1-py3-none-any.whl", hash = "sha256:610c5b90092c360736baccf17bd3efbcb30dd380e7a6dc28a71059edb8bd0d8e"}, ] [package.dependencies] @@ -2345,13 +2363,13 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-api-python-client" -version = "2.106.0" +version = "2.119.0" description = "Google API Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-python-client-2.106.0.tar.gz", hash = "sha256:f6a3862be2f6e5e0536d7bd47b5af3f24ac0b9147c76c830cafb3329d71d5724"}, - {file = "google_api_python_client-2.106.0-py2.py3-none-any.whl", hash = "sha256:c47c0dae5dd20aa43e4ea184566fe59d0c8fd0b86dd223b29040d8ea4f7ed6ea"}, + {file = "google-api-python-client-2.119.0.tar.gz", hash = "sha256:ff9ef7539eaf7e088a481b25d1af4704210b07863e1d51b5ee498b910a3a46a3"}, + {file = "google_api_python_client-2.119.0-py2.py3-none-any.whl", hash = "sha256:84e43bdb58dd8d2301669513863996378ffe9a3bf6d23b5ccd4f1e021323dbeb"}, ] [package.dependencies] @@ -2363,13 +2381,13 @@ uritemplate = ">=3.0.1,<5" [[package]] name = "google-auth" -version = "2.23.4" +version = "2.28.1" description = "Google Authentication Library" optional = false python-versions = ">=3.7" files = [ - {file = "google-auth-2.23.4.tar.gz", hash = "sha256:79905d6b1652187def79d491d6e23d0cbb3a21d3c7ba0dbaa9c8a01906b13ff3"}, - {file = "google_auth-2.23.4-py2.py3-none-any.whl", hash = "sha256:d4bbc92fe4b8bfd2f3e8d88e5ba7085935da208ee38a134fc280e7ce682a05f2"}, + {file = "google-auth-2.28.1.tar.gz", hash = "sha256:34fc3046c257cedcf1622fc4b31fc2be7923d9b4d44973d481125ecc50d83885"}, + {file = "google_auth-2.28.1-py2.py3-none-any.whl", hash = "sha256:25141e2d7a14bfcba945f5e9827f98092716e99482562f15306e5b026e21aa72"}, ] [package.dependencies] @@ -2386,13 +2404,13 @@ requests = ["requests (>=2.20.0,<3.0.0.dev0)"] [[package]] name = "google-auth-httplib2" -version = "0.1.1" +version = "0.2.0" description = "Google Authentication Library: httplib2 transport" optional = false python-versions = "*" files = [ - {file = "google-auth-httplib2-0.1.1.tar.gz", hash = "sha256:c64bc555fdc6dd788ea62ecf7bccffcf497bf77244887a3f3d7a5a02f8e3fc29"}, - {file = "google_auth_httplib2-0.1.1-py2.py3-none-any.whl", hash = "sha256:42c50900b8e4dcdf8222364d1f0efe32b8421fb6ed72f2613f12f75cc933478c"}, + {file = "google-auth-httplib2-0.2.0.tar.gz", hash = "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05"}, + {file = "google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d"}, ] [package.dependencies] @@ -2419,17 +2437,18 @@ tool = ["click (>=6.0.0)"] [[package]] name = "google-cloud-aiplatform" -version = "1.36.0" +version = "1.42.1" description = "Vertex AI API client library" optional = false python-versions = ">=3.8" files = [ - {file = "google-cloud-aiplatform-1.36.0.tar.gz", hash = "sha256:c35eb179fa3107c262024a63bb4a3dc1887678424a0b9f49f0da3f5179896186"}, - {file = "google_cloud_aiplatform-1.36.0-py2.py3-none-any.whl", hash = "sha256:06adb1605208a9bdbadd8c4deeaeb6511a7f59220ef606e2d95ccc1da705ebda"}, + {file = "google-cloud-aiplatform-1.42.1.tar.gz", hash = "sha256:679068e068e29059d673a6410483fea762286fa07739d684fb1b4626698e0805"}, + {file = "google_cloud_aiplatform-1.42.1-py2.py3-none-any.whl", hash = "sha256:9f25ebd306807972cf05a578abc16695c4f72d4a2dd7e7b1624dbe247937ba24"}, ] [package.dependencies] -google-api-core = {version = ">=1.32.0,<2.0.dev0 || >=2.8.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.8.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" google-cloud-bigquery = ">=1.15.0,<4.0.0dev" google-cloud-resource-manager = ">=1.3.3,<3.0.0dev" google-cloud-storage = ">=1.32.0,<3.0.0dev" @@ -2443,7 +2462,7 @@ autologging = ["mlflow (>=1.27.0,<=2.1.1)"] cloud-profiler = ["tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "werkzeug (>=2.0.0,<2.1.0dev)"] datasets = ["pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)"] endpoint = ["requests (>=2.28.1)"] -full = ["cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (==0.0.11)", "google-vizier (==0.0.4)", "google-vizier (>=0.0.14)", "google-vizier (>=0.1.6)", "httpx (>=0.23.0,<0.25.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5)", "ray[default] (>=2.5,<2.5.1)", "requests (>=2.28.1)", "starlette (>=0.17.1)", "tensorflow (>=2.3.0,<3.0.0dev)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)"] +full = ["cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "httpx (>=0.23.0,<0.25.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5)", "ray[default] (>=2.5,<2.5.1)", "requests (>=2.28.1)", "starlette (>=0.17.1)", "tensorflow (>=2.3.0,<2.15.0)", "tensorflow (>=2.3.0,<3.0.0dev)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)"] lit = ["explainable-ai-sdk (>=1.0.0)", "lit-nlp (==0.4.0)", "pandas (>=1.0.0)", "tensorflow (>=2.3.0,<3.0.0dev)"] metadata = ["numpy (>=1.15.0)", "pandas (>=1.0.0)"] pipelines = ["pyyaml (==5.3.1)"] @@ -2451,25 +2470,26 @@ prediction = ["docker (>=5.0.3)", "fastapi (>=0.71.0,<0.103.1)", "httpx (>=0.23. preview = ["cloudpickle (<3.0)", "google-cloud-logging (<4.0)"] private-endpoints = ["requests (>=2.28.1)", "urllib3 (>=1.21.1,<1.27)"] ray = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "pandas (>=1.0.0)", "pyarrow (>=6.0.1)", "pydantic (<2)", "ray[default] (>=2.4,<2.5)", "ray[default] (>=2.5,<2.5.1)"] -tensorboard = ["tensorflow (>=2.3.0,<3.0.0dev)"] -testing = ["bigframes", "cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (==0.0.11)", "google-vizier (==0.0.4)", "google-vizier (>=0.0.14)", "google-vizier (>=0.1.6)", "grpcio-testing", "httpx (>=0.23.0,<0.25.0)", "ipython", "kfp", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyfakefs", "pytest-asyncio", "pytest-xdist", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5)", "ray[default] (>=2.5,<2.5.1)", "requests (>=2.28.1)", "requests-toolbelt (<1.0.0)", "scikit-learn", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<=2.12.0)", "tensorflow (>=2.4.0,<3.0.0dev)", "torch (>=2.0.0,<2.1.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)", "xgboost", "xgboost-ray"] -vizier = ["google-vizier (==0.0.11)", "google-vizier (==0.0.4)", "google-vizier (>=0.0.14)", "google-vizier (>=0.1.6)"] +tensorboard = ["tensorflow (>=2.3.0,<2.15.0)"] +testing = ["bigframes", "cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-api-core (>=2.11,<3.0.0)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "grpcio-testing", "httpx (>=0.23.0,<0.25.0)", "ipython", "kfp (>=2.6.0,<3.0.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyfakefs", "pytest-asyncio", "pytest-xdist", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5)", "ray[default] (>=2.5,<2.5.1)", "requests (>=2.28.1)", "requests-toolbelt (<1.0.0)", "scikit-learn", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.3.0,<2.15.0)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<=2.12.0)", "tensorflow (>=2.4.0,<3.0.0dev)", "torch (>=2.0.0,<2.1.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)", "xgboost", "xgboost-ray"] +vizier = ["google-vizier (>=0.1.6)"] xai = ["tensorflow (>=2.3.0,<3.0.0dev)"] [[package]] name = "google-cloud-appengine-logging" -version = "1.3.2" +version = "1.4.2" description = "Google Cloud Appengine Logging API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-appengine-logging-1.3.2.tar.gz", hash = "sha256:a2989fca0e88463b56432aa821e64b81c3d171ee37b84771189b48e8b97cd496"}, - {file = "google_cloud_appengine_logging-1.3.2-py2.py3-none-any.whl", hash = "sha256:6ac6261567b56611f6891fa650f76db8a48d528762e5c2a09230b41d82ee2be0"}, + {file = "google-cloud-appengine-logging-1.4.2.tar.gz", hash = "sha256:134de64a84017cfe26a4b3a325bcc9b4a2dba05f9c9d3902ee24b4b1fa3e28af"}, + {file = "google_cloud_appengine_logging-1.4.2-py2.py3-none-any.whl", hash = "sha256:08d46bacf7e6bb4cb963dc5c0ab6995f2cd3fec69c7a2862405e98dce0c194bc"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] @@ -2489,17 +2509,18 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4 [[package]] name = "google-cloud-automl" -version = "2.12.0" +version = "2.13.2" description = "Google Cloud Automl API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-automl-2.12.0.tar.gz", hash = "sha256:22f7a61e04b4a9b03d504ef2db6683df462a032da53fe3fbb2c36f525074abb5"}, - {file = "google_cloud_automl-2.12.0-py2.py3-none-any.whl", hash = "sha256:e20e9aec2f368bda29b039d8109384379a6cd9410ac5ee81acdab3afbf89ad8e"}, + {file = "google-cloud-automl-2.13.2.tar.gz", hash = "sha256:d90273ab8b74a28d7c81b237cc5cf92b189d3a47d2b90dac8cd36722527ba24e"}, + {file = "google_cloud_automl-2.13.2-py2.py3-none-any.whl", hash = "sha256:bb36c140955ae14b26969054e8bcdfe9fa81e6f99e430d832579d6884647b8f7"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2510,77 +2531,77 @@ storage = ["google-cloud-storage (>=1.18.0,<3.0.0dev)"] [[package]] name = "google-cloud-batch" -version = "0.17.2" +version = "0.17.12" description = "Google Cloud Batch API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-batch-0.17.2.tar.gz", hash = "sha256:381ac83d18b46354cb5c51d33dbfcede62b039f3f13960ac9691cb4178f3c5b7"}, - {file = "google_cloud_batch-0.17.2-py2.py3-none-any.whl", hash = "sha256:c614f17d47095fd0b41e3f7de2e66f6ec5f1168d682b8338dfa3c18803234be0"}, + {file = "google-cloud-batch-0.17.12.tar.gz", hash = "sha256:ff351f5a4a46283fa7e8353f71cdb1fb750d4d407f7a14eae752801a22b76fe9"}, + {file = "google_cloud_batch-0.17.12-py2.py3-none-any.whl", hash = "sha256:4d6d0f6c392c5ed2e1fe59d38f1151b1414abcf9daa50ffb25a5981984fd0b63"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-bigquery" -version = "3.13.0" +version = "3.17.2" description = "Google BigQuery API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-bigquery-3.13.0.tar.gz", hash = "sha256:794ccfc93ccb0e0ad689442f896f9c82de56da0fe18a195531bb37096c2657d6"}, - {file = "google_cloud_bigquery-3.13.0-py2.py3-none-any.whl", hash = "sha256:eda3dbcff676e17962c54e5224e415b55e4f6833a5c896c6c8902b69e7dba4b4"}, + {file = "google-cloud-bigquery-3.17.2.tar.gz", hash = "sha256:6e1cf669a40e567ab3289c7b5f2056363da9fcb85d9a4736ee90240d4a7d84ea"}, + {file = "google_cloud_bigquery-3.17.2-py2.py3-none-any.whl", hash = "sha256:cdadf5283dca55a1a350bacf8c8a7466169d3cf46c5a0a3abc5e9aa0b0a51dee"}, ] [package.dependencies] -google-api-core = {version = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0dev", extras = ["grpc"]} +google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0dev" google-cloud-core = ">=1.6.0,<3.0.0dev" google-resumable-media = ">=0.6.0,<3.0dev" -grpcio = ">=1.47.0,<2.0dev" packaging = ">=20.0.0" -proto-plus = ">=1.15.0,<2.0.0dev" -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" python-dateutil = ">=2.7.2,<3.0dev" requests = ">=2.21.0,<3.0.0dev" [package.extras] -all = ["Shapely (>=1.8.4,<3.0.0dev)", "db-dtypes (>=0.3.0,<2.0.0dev)", "geopandas (>=0.9.0,<1.0dev)", "google-cloud-bigquery-storage (>=2.6.0,<3.0.0dev)", "grpcio (>=1.47.0,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "ipykernel (>=6.0.0)", "ipython (>=7.23.1,!=8.1.0)", "ipywidgets (>=7.7.0)", "opentelemetry-api (>=1.1.0)", "opentelemetry-instrumentation (>=0.20b0)", "opentelemetry-sdk (>=1.1.0)", "pandas (>=1.1.0)", "pyarrow (>=3.0.0)", "tqdm (>=4.7.4,<5.0.0dev)"] +all = ["Shapely (>=1.8.4,<3.0.0dev)", "db-dtypes (>=0.3.0,<2.0.0dev)", "geopandas (>=0.9.0,<1.0dev)", "google-cloud-bigquery-storage (>=2.6.0,<3.0.0dev)", "grpcio (>=1.47.0,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "importlib-metadata (>=1.0.0)", "ipykernel (>=6.0.0)", "ipython (>=7.23.1,!=8.1.0)", "ipywidgets (>=7.7.0)", "opentelemetry-api (>=1.1.0)", "opentelemetry-instrumentation (>=0.20b0)", "opentelemetry-sdk (>=1.1.0)", "pandas (>=1.1.0)", "proto-plus (>=1.15.0,<2.0.0dev)", "protobuf (>=3.19.5,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev)", "pyarrow (>=3.0.0)", "tqdm (>=4.7.4,<5.0.0dev)"] +bigquery-v2 = ["proto-plus (>=1.15.0,<2.0.0dev)", "protobuf (>=3.19.5,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev)"] bqstorage = ["google-cloud-bigquery-storage (>=2.6.0,<3.0.0dev)", "grpcio (>=1.47.0,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "pyarrow (>=3.0.0)"] geopandas = ["Shapely (>=1.8.4,<3.0.0dev)", "geopandas (>=0.9.0,<1.0dev)"] ipython = ["ipykernel (>=6.0.0)", "ipython (>=7.23.1,!=8.1.0)"] ipywidgets = ["ipykernel (>=6.0.0)", "ipywidgets (>=7.7.0)"] opentelemetry = ["opentelemetry-api (>=1.1.0)", "opentelemetry-instrumentation (>=0.20b0)", "opentelemetry-sdk (>=1.1.0)"] -pandas = ["db-dtypes (>=0.3.0,<2.0.0dev)", "pandas (>=1.1.0)", "pyarrow (>=3.0.0)"] +pandas = ["db-dtypes (>=0.3.0,<2.0.0dev)", "importlib-metadata (>=1.0.0)", "pandas (>=1.1.0)", "pyarrow (>=3.0.0)"] tqdm = ["tqdm (>=4.7.4,<5.0.0dev)"] [[package]] name = "google-cloud-bigquery-datatransfer" -version = "3.13.0" +version = "3.15.0" description = "Google Cloud Bigquery Datatransfer API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-bigquery-datatransfer-3.13.0.tar.gz", hash = "sha256:27a845cb22605a512c05ce28c2890d2ef97ad4edfc9817af555a73d8024ec3ba"}, - {file = "google_cloud_bigquery_datatransfer-3.13.0-py2.py3-none-any.whl", hash = "sha256:f8a73ba135fc6f6df4516187b5d88c7d1fcd68ecb1b0ed259ff55b89c5a0974a"}, + {file = "google-cloud-bigquery-datatransfer-3.15.0.tar.gz", hash = "sha256:fcb0613c9a2b210bf28889df372ecf25c5723af1f6d7b144aedc220b65d366f4"}, + {file = "google_cloud_bigquery_datatransfer-3.15.0-py2.py3-none-any.whl", hash = "sha256:edf78337b1e2f96ed1c582e617b2545ea176cc6e90f8ff983bf2da5164d586b1"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-bigquery-storage" -version = "2.22.0" +version = "2.24.0" description = "Google Cloud Bigquery Storage API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-bigquery-storage-2.22.0.tar.gz", hash = "sha256:f6d8c7b3ab9b574c66977fcee9d336e334ad1a3843a722be19123640e7808ea3"}, - {file = "google_cloud_bigquery_storage-2.22.0-py2.py3-none-any.whl", hash = "sha256:7f11b2ae590a5b3874fb6ddf705a66a070340db238f971cf7b53349eee9ca317"}, + {file = "google-cloud-bigquery-storage-2.24.0.tar.gz", hash = "sha256:b4af5b9aacd8396b8407d1b877601a376d8eea6d192823a8a7881bd2fdc076ce"}, + {file = "google_cloud_bigquery_storage-2.24.0-py2.py3-none-any.whl", hash = "sha256:7981eb2758cba56603058d11bb1eeeebf2e1c18097a7118a894510a16e02be52"}, ] [package.dependencies] @@ -2590,23 +2611,23 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4 [package.extras] fastavro = ["fastavro (>=0.21.2)"] -pandas = ["pandas (>=0.21.1)"] +pandas = ["importlib-metadata (>=1.0.0)", "pandas (>=0.21.1)"] pyarrow = ["pyarrow (>=0.15.0)"] [[package]] name = "google-cloud-bigtable" -version = "2.21.0" +version = "2.23.0" description = "Google Cloud Bigtable API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-bigtable-2.21.0.tar.gz", hash = "sha256:d9f0efbf940ca392f07d13787fc2da76d1e168dedafae0f8f1b4208e0c1132dc"}, - {file = "google_cloud_bigtable-2.21.0-py2.py3-none-any.whl", hash = "sha256:219d39f2787b76394b045603bbd0b13dfc37645ca855022e646b8ecbfbe9ad1f"}, + {file = "google-cloud-bigtable-2.23.0.tar.gz", hash = "sha256:c3cabb6619f5f2eea11b3db72731e84d28b168055c9cc17c2d2daff15cb82379"}, + {file = "google_cloud_bigtable-2.23.0-py2.py3-none-any.whl", hash = "sha256:d89ed580733865007ae89639b7d961024a2385aa8c2828cf3aff3f5889782402"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-cloud-core = ">=1.4.1,<3.0.0dev" +google-api-core = {version = ">=2.16.0,<3.0.0dev", extras = ["grpc"]} +google-cloud-core = ">=1.4.4,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2616,62 +2637,65 @@ libcst = ["libcst (>=0.2.5)"] [[package]] name = "google-cloud-build" -version = "3.22.0" +version = "3.23.2" description = "Google Cloud Build API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-build-3.22.0.tar.gz", hash = "sha256:72a8330c31108cc47ce510956196a98c158eeecd796004928bf239a2e1ea300e"}, - {file = "google_cloud_build-3.22.0-py2.py3-none-any.whl", hash = "sha256:b2906d59d02066f859a5e3a0ef9437dffc08f11a1f0f9381c92c986c73ab7ae0"}, + {file = "google-cloud-build-3.23.2.tar.gz", hash = "sha256:52ee4e94298401f7ba6ef32f9a7e3bdaa478867fd0ef6f93017b88a3832aa7e2"}, + {file = "google_cloud_build-3.23.2-py2.py3-none-any.whl", hash = "sha256:233580a601a266f643cdb68db844f9568ba63065e3cdcc252e48e55292dd4a78"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-compute" -version = "1.14.1" +version = "1.17.0" description = "Google Cloud Compute API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-compute-1.14.1.tar.gz", hash = "sha256:acd987647d7c826aa97b4418141c740ead5e8811d3349315f2f89a30c01c7f4b"}, - {file = "google_cloud_compute-1.14.1-py2.py3-none-any.whl", hash = "sha256:b40d6aeeb2c5ce373675c869f1404a1bc19b9763b746ad8f2d91ed1148893d6f"}, + {file = "google-cloud-compute-1.17.0.tar.gz", hash = "sha256:74fb3b8527b461c0f796e36a1e417a4fc7d31c2e3fbb71cc270b30e931d62f8e"}, + {file = "google_cloud_compute-1.17.0-py2.py3-none-any.whl", hash = "sha256:f281f1960f236d3be6614002af11becfe088600f2d3fa7da92dade28fac42f0e"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-container" -version = "2.32.0" +version = "2.41.0" description = "Google Cloud Container API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-container-2.32.0.tar.gz", hash = "sha256:694fb8da77963653e1c70fa60928b4a11faf8e1f1580a39025053a3e1bcce6de"}, - {file = "google_cloud_container-2.32.0-py2.py3-none-any.whl", hash = "sha256:a5555c6c19679332086859838fbaee468cb206e5e76365bb5027d5305a2c5bf4"}, + {file = "google-cloud-container-2.41.0.tar.gz", hash = "sha256:e43505690ab322f37ff15a3b309341aec31a0781c034eec46f69eecf1de70c97"}, + {file = "google_cloud_container-2.41.0-py2.py3-none-any.whl", hash = "sha256:fb7f53ba8e750ee1ccefae971b0123880753b41dab27ef8e05711d62b6d38b3e"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-core" -version = "2.3.3" +version = "2.4.1" description = "Google Cloud API client core library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-core-2.3.3.tar.gz", hash = "sha256:37b80273c8d7eee1ae816b3a20ae43585ea50506cb0e60f3cf5be5f87f1373cb"}, - {file = "google_cloud_core-2.3.3-py2.py3-none-any.whl", hash = "sha256:fbd11cad3e98a7e5b0343dc07cb1039a5ffd7a5bb96e1f1e27cee4bda4a90863"}, + {file = "google-cloud-core-2.4.1.tar.gz", hash = "sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073"}, + {file = "google_cloud_core-2.4.1-py2.py3-none-any.whl", hash = "sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61"}, ] [package.dependencies] @@ -2679,167 +2703,176 @@ google-api-core = ">=1.31.6,<2.0.dev0 || >2.3.0,<3.0.0dev" google-auth = ">=1.25.0,<3.0dev" [package.extras] -grpc = ["grpcio (>=1.38.0,<2.0dev)"] +grpc = ["grpcio (>=1.38.0,<2.0dev)", "grpcio-status (>=1.38.0,<2.0.dev0)"] [[package]] name = "google-cloud-datacatalog" -version = "3.16.0" +version = "3.18.2" description = "Google Cloud Datacatalog API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-datacatalog-3.16.0.tar.gz", hash = "sha256:703e414396248fa98474bbab9ea962f4c96a3caf1184c903bfc9453d274b0ea2"}, - {file = "google_cloud_datacatalog-3.16.0-py2.py3-none-any.whl", hash = "sha256:06f43501ce57742f394508bca6b0eb14e6dd5aa7e0d51cc0fd9d259295d46c9f"}, + {file = "google-cloud-datacatalog-3.18.2.tar.gz", hash = "sha256:512a3c95d51b7ec02bbe3c39f8c3ae6c50ce957915e063e8c07615b111c11eb9"}, + {file = "google_cloud_datacatalog-3.18.2-py2.py3-none-any.whl", hash = "sha256:1de2f9c214779b90f558d952daf2dd9d02cc8e6c89b0d5df338bf934abc7c524"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.0,<2.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataflow-client" -version = "0.8.6" +version = "0.8.9" description = "Google Cloud Dataflow Client API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataflow-client-0.8.6.tar.gz", hash = "sha256:8753fff57edf640a984015dbd6b3a0f427a779244f9b0ad8981f77d82272798a"}, - {file = "google_cloud_dataflow_client-0.8.6-py2.py3-none-any.whl", hash = "sha256:2d7a6e0586f50421567252283c330dd81cecafa139a12c6021e9da0ca2bf619c"}, + {file = "google-cloud-dataflow-client-0.8.9.tar.gz", hash = "sha256:f024118695f2e5b8ca2f57e22c7e479238bd6a7bd9c24bf5f60c0893ed234fb7"}, + {file = "google_cloud_dataflow_client-0.8.9-py2.py3-none-any.whl", hash = "sha256:2dbfc4333dbaf825fd1a1baaf6899f240bde80510e73ea23e29525681d279c4e"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataform" -version = "0.5.3" +version = "0.5.8" description = "Google Cloud Dataform API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataform-0.5.3.tar.gz", hash = "sha256:89ed0dce20ce34f74cb038d614dd71191451fb70ea60888b6dbfc4265cea7a48"}, - {file = "google_cloud_dataform-0.5.3-py2.py3-none-any.whl", hash = "sha256:aa265043272b0b925fe5e40ea928a4793e1e30f37fff4169a38dfde9d7e32dc9"}, + {file = "google-cloud-dataform-0.5.8.tar.gz", hash = "sha256:40009ed80dfb152f675db4395b86b45bf5ae9a032c7f37c98b464066ff6ff54e"}, + {file = "google_cloud_dataform-0.5.8-py2.py3-none-any.whl", hash = "sha256:3d1810b42e1bb533af7e891e3e478b5fa36b412542d6054d77c38f55cb71e3a4"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.0,<2.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataplex" -version = "1.11.0" +version = "1.12.2" description = "Google Cloud Dataplex API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataplex-1.11.0.tar.gz", hash = "sha256:c71b16166e03a04386d2379754912d2ea081ad8fb9dd7547a65d91ee2f2cd4b4"}, - {file = "google_cloud_dataplex-1.11.0-py2.py3-none-any.whl", hash = "sha256:92f616319fbd1fe03b1e9a401930c927edc22795002dd600d42cbe8a3c7cc1dd"}, + {file = "google-cloud-dataplex-1.12.2.tar.gz", hash = "sha256:fdd89ce585954a8e75972be5a00475b1ff1d2f26dadb29ef574deaa654aa2236"}, + {file = "google_cloud_dataplex-1.12.2-py2.py3-none-any.whl", hash = "sha256:c6ae7a85276e9eaa4072e27ffd90aef52fa0bb2d1d21db6a1af8322b1278b758"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataproc" -version = "5.9.0" +version = "5.9.2" description = "Google Cloud Dataproc API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataproc-5.9.0.tar.gz", hash = "sha256:7e51f9c9005bc5f1bcb23627171de9cd6246a44775118a48cc632861280a76df"}, - {file = "google_cloud_dataproc-5.9.0-py2.py3-none-any.whl", hash = "sha256:be7bdf2efe9af2a54632dd476dc3c13a1bb848bcebc337c1e83d2f961bffc106"}, + {file = "google-cloud-dataproc-5.9.2.tar.gz", hash = "sha256:1352e3cc4e146db1f09fa4287559248c8b3d9c0cfecea56c25c3f4f63d58e4f8"}, + {file = "google_cloud_dataproc-5.9.2-py2.py3-none-any.whl", hash = "sha256:a728e35db70132dc5d2e6b27627825775f5a0a2cd7024fa1149669d3de4b436d"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataproc-metastore" -version = "1.13.0" +version = "1.15.2" description = "Google Cloud Dataproc Metastore API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataproc-metastore-1.13.0.tar.gz", hash = "sha256:58066b89d782bcf6985afb29822fb2a1d9a67c20210c87e3a990f69e6354e52c"}, - {file = "google_cloud_dataproc_metastore-1.13.0-py2.py3-none-any.whl", hash = "sha256:76e462a42537077ba4f9b1c4c8ec5d91d4fc4bac6d3f31a81446f50d39ef850f"}, + {file = "google-cloud-dataproc-metastore-1.15.2.tar.gz", hash = "sha256:61c4832bce9ba8288c81d48a2661a853e3d852210ebec15b7e505bcf9c95d26e"}, + {file = "google_cloud_dataproc_metastore-1.15.2-py2.py3-none-any.whl", hash = "sha256:ab6bba67d94665126aff5ddff697255eab5f12d23a4d6dfe7f5c2d20e2aa0712"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.0,<2.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dlp" -version = "3.12.3" +version = "3.15.2" description = "Google Cloud Dlp API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dlp-3.12.3.tar.gz", hash = "sha256:73880f2a8bfa60049576fb94d85698aa2367d32ac901b76278fe50b75663440b"}, - {file = "google_cloud_dlp-3.12.3-py2.py3-none-any.whl", hash = "sha256:db263305466d0fb22b756043c8a7e1cc2842e3ed6b59fb800b9e9af63a8b0ec8"}, + {file = "google-cloud-dlp-3.15.2.tar.gz", hash = "sha256:4edcdae94b950942549a81fd8455565734df5f8913312f4443e8b1a189bdc4e8"}, + {file = "google_cloud_dlp-3.15.2-py2.py3-none-any.whl", hash = "sha256:4d5e0d2b055bfabba61ee2565c3461055a82f22d44f9aec3f73275f9d6b69b27"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-kms" -version = "2.19.2" +version = "2.21.2" description = "Google Cloud Kms API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-kms-2.19.2.tar.gz", hash = "sha256:17a5034592e85ef0031d25bbe5894bdb2d719460855980bfeb68aa4e8ffc12bd"}, - {file = "google_cloud_kms-2.19.2-py2.py3-none-any.whl", hash = "sha256:0cc0b9d16338a46b7fc5beba7e96a88df0f836586eb8650e9acd36eb249b52d9"}, + {file = "google-cloud-kms-2.21.2.tar.gz", hash = "sha256:f06ad9dfc801544fba1183788b964f6b017483a66091aa686b51abd074806c84"}, + {file = "google_cloud_kms-2.21.2-py2.py3-none-any.whl", hash = "sha256:98a092fb7501d0c7d4a64e409a8a0510916f7f982fafaae9572835ac8080ba0f"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.0,<2.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-language" -version = "2.11.1" +version = "2.13.2" description = "Google Cloud Language API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-language-2.11.1.tar.gz", hash = "sha256:5f184409f040c0c73057c2616e6bd2e86e45aeb646180d19c189df4aa3d02dba"}, - {file = "google_cloud_language-2.11.1-py2.py3-none-any.whl", hash = "sha256:beb5dd1344a6ed00dd04b1eb05a967e7f83fc1b51471f9bd51f238f63f46f9d4"}, + {file = "google-cloud-language-2.13.2.tar.gz", hash = "sha256:813ad3dddca97890710098e76ad48c37ea63ea3a14a0f6d7f4246c6fb15cb2a5"}, + {file = "google_cloud_language-2.13.2-py2.py3-none-any.whl", hash = "sha256:74ececa7918f183ed7652b3b6ba57adb3541e199803bd9ce8faa2f048997a2db"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-logging" -version = "3.8.0" +version = "3.9.0" description = "Stackdriver Logging API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-logging-3.8.0.tar.gz", hash = "sha256:fdd916e59a84aa8c02e8148d7fdd3b3b623c57b0c1ff71f43297ce8e50fc1eab"}, - {file = "google_cloud_logging-3.8.0-py2.py3-none-any.whl", hash = "sha256:c868b276b021cf5f32b6e8356b6cb3666357d149ad0fd798076043a5ec7ed988"}, + {file = "google-cloud-logging-3.9.0.tar.gz", hash = "sha256:4decb1b0bed4a0e3c0e58a376646e6002d6be7cad039e3466822e8665072ea33"}, + {file = "google_cloud_logging-3.9.0-py2.py3-none-any.whl", hash = "sha256:094a2db068ff7f38c9e0c1017673fa49c0768fbae02769e03e06baa30f138b87"}, ] [package.dependencies] @@ -2853,33 +2886,35 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4 [[package]] name = "google-cloud-memcache" -version = "1.7.3" +version = "1.9.2" description = "Google Cloud Memcache API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-memcache-1.7.3.tar.gz", hash = "sha256:a73f44ec5bfc398b4c9d94d5e77621c54795bcade19960242dec2cd91b854bcb"}, - {file = "google_cloud_memcache-1.7.3-py2.py3-none-any.whl", hash = "sha256:054e2adde4e99fca6a2e3f9ef733a2159083923c0a41af51b7d5e9d38ca9de12"}, + {file = "google-cloud-memcache-1.9.2.tar.gz", hash = "sha256:d6ab1600fad9617731666ebae780d7e4c15ea58eb3c573296d533380567c2018"}, + {file = "google_cloud_memcache-1.9.2-py2.py3-none-any.whl", hash = "sha256:4c22b5d15f8d53969a1a5bc2171bf9deda446e96b42ddee8db1f30dd6e370ca2"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-monitoring" -version = "2.18.0" +version = "2.19.2" description = "Google Cloud Monitoring API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-monitoring-2.18.0.tar.gz", hash = "sha256:06cc1d7fb75c5e50b54bcc004941ea4b20a7a9f09ed7e6e753514fd8c436096a"}, - {file = "google_cloud_monitoring-2.18.0-py2.py3-none-any.whl", hash = "sha256:548a1ac0b88c38694e14e1359e89c7eb19b27423906f456bb590f3f0962bb562"}, + {file = "google-cloud-monitoring-2.19.2.tar.gz", hash = "sha256:3881b026204e0648707461a9783ef7e84c6c716bd067a3864b1cb3d4c9f5dc73"}, + {file = "google_cloud_monitoring-2.19.2-py2.py3-none-any.whl", hash = "sha256:4d60247403d36576c561ed3cc684131d32a455e9bdc188c14cc83d7cb6b28fa2"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2888,49 +2923,52 @@ pandas = ["pandas (>=0.23.2)"] [[package]] name = "google-cloud-orchestration-airflow" -version = "1.10.0" +version = "1.12.0" description = "Google Cloud Orchestration Airflow API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-orchestration-airflow-1.10.0.tar.gz", hash = "sha256:2aa88b4882d3c5dd0f7ecc572d37972d51f2cf69530783c524344d018de0b1bf"}, - {file = "google_cloud_orchestration_airflow-1.10.0-py2.py3-none-any.whl", hash = "sha256:363e22e3b52316eb556899ffb3b1d2122bb4fce3937e4f7cef42202ec1a15e20"}, + {file = "google-cloud-orchestration-airflow-1.12.0.tar.gz", hash = "sha256:2e7b6f507b3ef9796638faed6d0cdb402db134bbb60b3f46cb115b16b44e88ee"}, + {file = "google_cloud_orchestration_airflow-1.12.0-py2.py3-none-any.whl", hash = "sha256:683135931bd714027cbc984cad49ff811759b40e5e522dbb5a19c052f4640ebf"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-os-login" -version = "2.11.0" +version = "2.14.2" description = "Google Cloud Os Login API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-os-login-2.11.0.tar.gz", hash = "sha256:e3219d00b75ea44182871681985e9db3f1e38641bb84519dd85d3dbb62b97656"}, - {file = "google_cloud_os_login-2.11.0-py2.py3-none-any.whl", hash = "sha256:1b0679d772fbef486230208a65b3a96d513b599000beca1dc8ff5bde4838607f"}, + {file = "google-cloud-os-login-2.14.2.tar.gz", hash = "sha256:9b26fe84e8d3cd2499e3b306283909fb57d1a8f40377822416085fd174345294"}, + {file = "google_cloud_os_login-2.14.2-py2.py3-none-any.whl", hash = "sha256:24c64b06b4a2e07d35b47eb9074d26c3769dd00f4f22b352b8b9aeee3893b2a1"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-pubsub" -version = "2.19.0" +version = "2.19.7" description = "Google Cloud Pub/Sub API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-pubsub-2.19.0.tar.gz", hash = "sha256:6a98c33f7eb5f7de2ae52efa059b2b5f75b2ccd9f0f11f2edcefdda8d14e425c"}, - {file = "google_cloud_pubsub-2.19.0-py2.py3-none-any.whl", hash = "sha256:0cc444e5b2220a703106668829315a724cfb4304d6772725035993bb2fc81388"}, + {file = "google-cloud-pubsub-2.19.7.tar.gz", hash = "sha256:da5f1eb217c0727befa7c85b9b95e6a89b32b422d548c9cf9a1e029410270b87"}, + {file = "google_cloud_pubsub-2.19.7-py2.py3-none-any.whl", hash = "sha256:443cb58e2440729876f3b0d6046c30c7a873aeb247e5e17f161fe967c91b53fb"}, ] [package.dependencies] google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" grpcio = ">=1.51.3,<2.0dev" grpcio-status = ">=1.33.2" @@ -2942,86 +2980,92 @@ libcst = ["libcst (>=0.3.10)"] [[package]] name = "google-cloud-redis" -version = "2.13.2" +version = "2.15.2" description = "Google Cloud Redis API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-redis-2.13.2.tar.gz", hash = "sha256:5c485730355d96723d64ae637f1b2264f35b57c301ec0ef2c6d30b2f06dca14e"}, - {file = "google_cloud_redis-2.13.2-py2.py3-none-any.whl", hash = "sha256:86378e8ed1c5a1c621eb2731d734436f443dffdbbafc6cd5d24511c94d6c38bc"}, + {file = "google-cloud-redis-2.15.2.tar.gz", hash = "sha256:baaf93114e4acb752e6a06b5f58e7c50bf683eb0e138645fece76e0a0159c188"}, + {file = "google_cloud_redis-2.15.2-py2.py3-none-any.whl", hash = "sha256:ec239088ba8901014d716c5e763227cb9978bc442dc8e3ae23d2bfb9fb7bd8d3"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-resource-manager" -version = "1.10.4" +version = "1.12.2" description = "Google Cloud Resource Manager API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-resource-manager-1.10.4.tar.gz", hash = "sha256:456b25ddda3d4cd27488a72736bbc3af04d713ae2fe3655c01b66a339d28d679"}, - {file = "google_cloud_resource_manager-1.10.4-py2.py3-none-any.whl", hash = "sha256:2ba56ba8e5280cd425bd63620da48b78da2cd299ece58a71f0f2ce3a32d56f99"}, + {file = "google-cloud-resource-manager-1.12.2.tar.gz", hash = "sha256:2ede446a5087b236f0e1fb39cca3791bae97eb0d9125057401454b190d5572ee"}, + {file = "google_cloud_resource_manager-1.12.2-py2.py3-none-any.whl", hash = "sha256:45abbb8911195cc831cc77c8e3be84decc271686579b332d4142af507f423ebf"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.0,<2.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-run" -version = "0.10.0" +version = "0.10.4" description = "Google Cloud Run API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-run-0.10.0.tar.gz", hash = "sha256:e597dff8da3d6e0f43bdaaa38c80933d8e81e8eac8c1b5e119812af99539d734"}, - {file = "google_cloud_run-0.10.0-py2.py3-none-any.whl", hash = "sha256:3f3d317200e890c20e744e692d69b241ca4a25ec161f02babbc77c1df68c7a4d"}, + {file = "google-cloud-run-0.10.4.tar.gz", hash = "sha256:e278e91822c26a895190e4193b84950cb9aa3f437f6895c806620a1890e2cc90"}, + {file = "google_cloud_run-0.10.4-py2.py3-none-any.whl", hash = "sha256:179045cc576e3aa2446ae2a11537a1af6c032407cd28f6bb58b1f8abdee2b796"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.0,<2.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-secret-manager" -version = "2.16.4" +version = "2.18.2" description = "Google Cloud Secret Manager API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-secret-manager-2.16.4.tar.gz", hash = "sha256:371dc72f9145af323e8a813c8e50380e6ac4bd6a5dbcd42dcf3162d8f37e5080"}, - {file = "google_cloud_secret_manager-2.16.4-py2.py3-none-any.whl", hash = "sha256:5031c45dd84dc584d91ee0baae2bbd5df6710efe0c42719ee370a3ab62aaf618"}, + {file = "google-cloud-secret-manager-2.18.2.tar.gz", hash = "sha256:a00d62115a70083e86b1d44ca7ebcae041b36a44cc62ea57de4005731f8d3c88"}, + {file = "google_cloud_secret_manager-2.18.2-py2.py3-none-any.whl", hash = "sha256:bb2f2b23a588f9eeae51df4a028d6198a603231a056f838e6a476b5aecadbbca"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.0,<2.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-spanner" -version = "3.40.1" +version = "3.42.0" description = "Google Cloud Spanner API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-spanner-3.40.1.tar.gz", hash = "sha256:616b07c86cdae6c78bad27b8ab39d8ce7a273511f2b91fe260f170d926653c2e"}, - {file = "google_cloud_spanner-3.40.1-py2.py3-none-any.whl", hash = "sha256:0c5825bb5956df83ee1d732e1851467be97bbc4502ccd91ed0c5e7fb4b3f4ccb"}, + {file = "google-cloud-spanner-3.42.0.tar.gz", hash = "sha256:13b6aba86059fd03f36c032c4143274d6883d39e2d32bf753e0ad3d2dcd08e12"}, + {file = "google_cloud_spanner-3.42.0-py2.py3-none-any.whl", hash = "sha256:53a68d3cce1df986729244e829a607cd5b97c8f1dd721d8af0cfdd12413fb09f"}, ] [package.dependencies] +deprecated = ">=1.2.14" google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-cloud-core = ">=1.4.1,<3.0dev" +google-cloud-core = ">=1.4.4,<3.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" +grpc-interceptor = ">=0.15.4" proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" sqlparse = ">=0.4.4" @@ -3032,29 +3076,30 @@ tracing = ["opentelemetry-api (>=1.1.0)", "opentelemetry-instrumentation (>=0.20 [[package]] name = "google-cloud-speech" -version = "2.21.1" +version = "2.25.0" description = "Google Cloud Speech API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-speech-2.21.1.tar.gz", hash = "sha256:4935375eaaf18656e53e2631770b9d579e80cb4ec1b3d46dd23346f789aa016a"}, - {file = "google_cloud_speech-2.21.1-py2.py3-none-any.whl", hash = "sha256:36089039640c5ab79cefd32af7a482043a67144d393ec752c6b57c1fdc02a95d"}, + {file = "google-cloud-speech-2.25.0.tar.gz", hash = "sha256:070b7a73735d871cdcf5590238e9c4ff59bb5f524172876ba55646b5c5eb86b8"}, + {file = "google_cloud_speech-2.25.0-py2.py3-none-any.whl", hash = "sha256:3741c1b0cea6e86b389572c25c6d4aee93d77579651edc79fe9e22d7a574ecc5"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-storage" -version = "2.13.0" +version = "2.14.0" description = "Google Cloud Storage API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-storage-2.13.0.tar.gz", hash = "sha256:f62dc4c7b6cd4360d072e3deb28035fbdad491ac3d9b0b1815a12daea10f37c7"}, - {file = "google_cloud_storage-2.13.0-py2.py3-none-any.whl", hash = "sha256:ab0bf2e1780a1b74cf17fccb13788070b729f50c252f0c94ada2aae0ca95437d"}, + {file = "google-cloud-storage-2.14.0.tar.gz", hash = "sha256:2d23fcf59b55e7b45336729c148bb1c464468c69d5efbaee30f7201dd90eb97e"}, + {file = "google_cloud_storage-2.14.0-py2.py3-none-any.whl", hash = "sha256:8641243bbf2a2042c16a6399551fbb13f062cbc9a2de38d6c0bb5426962e9dbd"}, ] [package.dependencies] @@ -3070,116 +3115,123 @@ protobuf = ["protobuf (<5.0.0dev)"] [[package]] name = "google-cloud-storage-transfer" -version = "1.9.2" +version = "1.11.2" description = "Google Cloud Storage Transfer API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-storage-transfer-1.9.2.tar.gz", hash = "sha256:c36800cf425e23cca5bed51320dce6eec313b68db8dd4677be6e3b49c891207d"}, - {file = "google_cloud_storage_transfer-1.9.2-py2.py3-none-any.whl", hash = "sha256:d30b519b57eee0d337da6d9051442337625128e950e6b487b4fd63f4942f7cb7"}, + {file = "google-cloud-storage-transfer-1.11.2.tar.gz", hash = "sha256:391b31934a9bed3d46f27d2d5daca1bda40b87ce3731e86b177342092a9fe5bf"}, + {file = "google_cloud_storage_transfer-1.11.2-py2.py3-none-any.whl", hash = "sha256:fc2d3478ac998a76bd4c5eb660b65b4452aea15049e010009862df643d807e1a"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-tasks" -version = "2.14.2" +version = "2.16.2" description = "Google Cloud Tasks API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-tasks-2.14.2.tar.gz", hash = "sha256:3efb280e7a635f57860a06a346131c117042e820ad483afd256800fae1b4d701"}, - {file = "google_cloud_tasks-2.14.2-py2.py3-none-any.whl", hash = "sha256:801a671c6dbd2269179037e93490f87e2df59ddfcb59551128bab27e7dd09f94"}, + {file = "google-cloud-tasks-2.16.2.tar.gz", hash = "sha256:2f5c15c581151d913d840fca348dc9a5fbd1cc16ec511e3f66b2fc6a01f06e38"}, + {file = "google_cloud_tasks-2.16.2-py2.py3-none-any.whl", hash = "sha256:c47355f7de04f7ebf00d352ef9995fa32533eb24ff56b3a0af613367b3073a27"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.0,<2.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-texttospeech" -version = "2.14.2" +version = "2.16.2" description = "Google Cloud Texttospeech API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-texttospeech-2.14.2.tar.gz", hash = "sha256:a23738366988faf4d265200f57c5de4312efa3d14bb434b92a6e541713f5d906"}, - {file = "google_cloud_texttospeech-2.14.2-py2.py3-none-any.whl", hash = "sha256:3a4e7ca71a1d3f90de77170a013b37f18775858dac01c80793752b8c160d6555"}, + {file = "google-cloud-texttospeech-2.16.2.tar.gz", hash = "sha256:eaac809d9a7d07c5c9eb58613916542cb2fa52c14f9f31da7ff4989f717f8e0c"}, + {file = "google_cloud_texttospeech-2.16.2-py2.py3-none-any.whl", hash = "sha256:59de4d6021d39502572e9d6acdf851c2466f9140357dce249641d137bf63f062"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-translate" -version = "3.12.1" +version = "3.15.2" description = "Google Cloud Translate API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-translate-3.12.1.tar.gz", hash = "sha256:661cb8879aa3c63a2f725a3ea68f90199bd354c95ca169cc2e83a5105987d29e"}, - {file = "google_cloud_translate-3.12.1-py2.py3-none-any.whl", hash = "sha256:2a0f6aa398a64d7836d0f2880dfd023be0de05f8b688ac537825391014fc114a"}, + {file = "google-cloud-translate-3.15.2.tar.gz", hash = "sha256:6d4c2447bc2f88ec5e0d3a6778c3d85fab36da214b9384b10659b29e8db9f594"}, + {file = "google_cloud_translate-3.15.2-py2.py3-none-any.whl", hash = "sha256:f20d5ea4bbe686e3bfd897f3afb6ddaf91738e86233ab0b8343f43a9cbc5e672"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" google-cloud-core = ">=1.4.4,<3.0.0dev" -proto-plus = ">=1.22.0,<2.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-videointelligence" -version = "2.11.4" +version = "2.13.2" description = "Google Cloud Videointelligence API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-videointelligence-2.11.4.tar.gz", hash = "sha256:07ace299a63f5b3d4441375634853b55ce8f90c62c6a24f8a47eb054149f6f99"}, - {file = "google_cloud_videointelligence-2.11.4-py2.py3-none-any.whl", hash = "sha256:4d62f7b074f6f1eae4efd8697b5a93fb59b3b22f9934e383b4f6fbed69f49eb6"}, + {file = "google-cloud-videointelligence-2.13.2.tar.gz", hash = "sha256:c077e25599a107f18c7e057ca661f37600b1b71c65d90d6cf5c42043dadc8db1"}, + {file = "google_cloud_videointelligence-2.13.2-py2.py3-none-any.whl", hash = "sha256:11a220d00254edf5cac55515aadfee23131d9ba45fe4114f9113200f780158e7"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-vision" -version = "3.4.5" +version = "3.7.1" description = "Google Cloud Vision API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-vision-3.4.5.tar.gz", hash = "sha256:0df8241ab277199b919ca3837a7de85059363fea0e3d660060870be7ceffc047"}, - {file = "google_cloud_vision-3.4.5-py2.py3-none-any.whl", hash = "sha256:4e67f5985ecbb8f7252fe47b8e26f1ac083af4c45626bae23869cf097ba9292e"}, + {file = "google-cloud-vision-3.7.1.tar.gz", hash = "sha256:868be6df5bb5491c6f31bedf600af23661c02776ca564c151c42c63e0b3465db"}, + {file = "google_cloud_vision-3.7.1-py2.py3-none-any.whl", hash = "sha256:55bb95304ccfe6d8b7a7de7fe6cb3f580d87dcbf971bb8225d1beb0e17a2d75c"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-workflows" -version = "1.12.1" +version = "1.14.2" description = "Google Cloud Workflows API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-workflows-1.12.1.tar.gz", hash = "sha256:fad66cece6279f7be4fd919c1cc50f2a4a7ebf8bba97feaba75b9addece0b64b"}, - {file = "google_cloud_workflows-1.12.1-py2.py3-none-any.whl", hash = "sha256:1c24dc2b7eb4d953677407a0826e2680fc03fe6dc81b75a15d38d5a452aa467f"}, + {file = "google-cloud-workflows-1.14.2.tar.gz", hash = "sha256:2f580bdebf87cf2c2fb1b7d6936f11b61c26f25ab3d12f5e913716521f0570b3"}, + {file = "google_cloud_workflows-1.14.2-py2.py3-none-any.whl", hash = "sha256:23e1e00f8ff7dd16a984c0b6c7e530565a613df97d249da1a3ee548212cfb0e6"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" +google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" +proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] @@ -3426,67 +3478,17 @@ files = [ {file = "google_re2-1.1-3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d140c7b9395b4d1e654127aa1c99bcc603ed01000b7bc7e28c52562f1894ec12"}, {file = "google_re2-1.1-3-cp39-cp39-win32.whl", hash = "sha256:80c5fc200f64b2d903eeb07b8d6cefc620a872a0240c7caaa9aca05b20f5568f"}, {file = "google_re2-1.1-3-cp39-cp39-win_amd64.whl", hash = "sha256:9eb6dbcee9b5dc4069bbc0634f2eb039ca524a14bed5868fdf6560aaafcbca06"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0db114d7e1aa96dbcea452a40136d7d747d60cbb61394965774688ef59cccd4e"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:82133958e003a1344e5b7a791b9a9dd7560b5c8f96936dbe16f294604524a633"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:9e74fd441d1f3d917d3303e319f61b82cdbd96b9a5ba919377a6eef1504a1e2b"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:734a2e7a4541c57253b5ebee24f3f3366ba3658bcad01da25fb623c78723471a"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d88d5eecbc908abe16132456fae13690d0508f3ac5777f320ef95cb6cab9a961"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:b91db80b171ecec435a07977a227757dd487356701a32f556fa6fca5d0a40522"}, - {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b23129887a64bb9948af14c84705273ed1a40054e99433b4acccab4dcf6a226"}, - {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5dc1a0cc7cd19261dcaf76763e2499305dbb7e51dc69555167cdb8af98782698"}, - {file = "google_re2-1.1-4-cp310-cp310-win32.whl", hash = "sha256:3b2ab1e2420b5dd9743a2d6bc61b64e5f708563702a75b6db86637837eaeaf2f"}, - {file = "google_re2-1.1-4-cp310-cp310-win_amd64.whl", hash = "sha256:92efca1a7ef83b6df012d432a1cbc71d10ff42200640c0f9a5ff5b343a48e633"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854818fd4ce79787aca5ba459d6e5abe4ca9be2c684a5b06a7f1757452ca3708"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:4ceef51174b6f653b6659a8fdaa9c38960c5228b44b25be2a3bcd8566827554f"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:ee49087c3db7e6f5238105ab5299c09e9b77516fe8cfb0a37e5f1e813d76ecb8"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:dc2312854bdc01410acc5d935f1906a49cb1f28980341c20a68797ad89d8e178"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0dc0d2e42296fa84a3cb3e1bd667c6969389cd5cdf0786e6b1f911ae2d75375b"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6bf04ced98453b035f84320f348f67578024f44d2997498def149054eb860ae8"}, - {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d6b6ef11dc4ab322fa66c2f3561925f2b5372a879c3ed764d20e939e2fd3e5f"}, - {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0dcde6646fa9a97fd3692b3f6ae7daf7f3277d7500b6c253badeefa11db8956a"}, - {file = "google_re2-1.1-4-cp311-cp311-win32.whl", hash = "sha256:5f4f0229deb057348893574d5b0a96d055abebac6debf29d95b0c0e26524c9f6"}, - {file = "google_re2-1.1-4-cp311-cp311-win_amd64.whl", hash = "sha256:4713ddbe48a18875270b36a462b0eada5e84d6826f8df7edd328d8706b6f9d07"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:40a698300b8faddbb325662973f839489c89b960087060bd389c376828978a04"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:103d2d7ac92ba23911a151fd1fc7035cbf6dc92a7f6aea92270ebceb5cd5acd3"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:51fb7182bccab05e8258a2b6a63dda1a6b4a9e8dfb9b03ec50e50c49c2827dd4"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:65383022abd63d7b620221eba7935132b53244b8b463d8fdce498c93cf58b7b7"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396281fc68a9337157b3ffcd9392c6b7fcb8aab43e5bdab496262a81d56a4ecc"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8198adcfcff1c680e052044124621730fc48d08005f90a75487f5651f1ebfce2"}, - {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:81f7bff07c448aec4db9ca453d2126ece8710dbd9278b8bb09642045d3402a96"}, - {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7dacf730fd7d6ec71b11d6404b0b26e230814bfc8e9bb0d3f13bec9b5531f8d"}, - {file = "google_re2-1.1-4-cp312-cp312-win32.whl", hash = "sha256:8c764f62f4b1d89d1ef264853b6dd9fee14a89e9b86a81bc2157fe3531425eb4"}, - {file = "google_re2-1.1-4-cp312-cp312-win_amd64.whl", hash = "sha256:0be2666df4bc5381a5d693585f9bbfefb0bfd3c07530d7e403f181f5de47254a"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:5cb1b63a0bfd8dd65d39d2f3b2e5ae0a06ce4b2ce5818a1d1fc78a786a252673"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e41751ce6b67a95230edd0772226dc94c2952a2909674cd69df9804ed0125307"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:b998cfa2d50bf4c063e777c999a7e8645ec7e5d7baf43ad71b1e2e10bb0300c3"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:226ca3b0c2e970f3fc82001ac89e845ecc7a4bb7c68583e7a76cda70b61251a7"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:9adec1f734ebad7c72e56c85f205a281d8fe9bf6583bc21020157d3f2812ce89"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:9c34f3c64ba566af967d29e11299560e6fdfacd8ca695120a7062b6ed993b179"}, - {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b85385fe293838e0d0b6e19e6c48ba8c6f739ea92ce2e23b718afe7b343363"}, - {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4694daa8a8987cfb568847aa872f9990e930c91a68c892ead876411d4b9012c3"}, - {file = "google_re2-1.1-4-cp38-cp38-win32.whl", hash = "sha256:5e671e9be1668187e2995aac378de574fa40df70bb6f04657af4d30a79274ce0"}, - {file = "google_re2-1.1-4-cp38-cp38-win_amd64.whl", hash = "sha256:f66c164d6049a8299f6dfcfa52d1580576b4b9724d6fcdad2f36f8f5da9304b6"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:25cb17ae0993a48c70596f3a3ef5d659638106401cc8193f51c0d7961b3b3eb7"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5f101f86d14ca94ca4dcf63cceaa73d351f2be2481fcaa29d9e68eeab0dc2a88"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:4e82591e85bf262a6d74cff152867e05fc97867c68ba81d6836ff8b0e7e62365"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:1f61c09b93ffd34b1e2557e5a9565039f935407a5786dbad46f64f1a484166e6"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:12b390ad8c7e74bab068732f774e75e0680dade6469b249a721f3432f90edfc3"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:1284343eb31c2e82ed2d8159f33ba6842238a56782c881b07845a6d85613b055"}, - {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c7b38e0daf2c06e4d3163f4c732ab3ad2521aecfed6605b69e4482c612da303"}, - {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f4d4f0823e8b2f6952a145295b1ff25245ce9bb136aff6fe86452e507d4c1dd"}, - {file = "google_re2-1.1-4-cp39-cp39-win32.whl", hash = "sha256:1afae56b2a07bb48cfcfefaa15ed85bae26a68f5dc7f9e128e6e6ea36914e847"}, - {file = "google_re2-1.1-4-cp39-cp39-win_amd64.whl", hash = "sha256:aa7d6d05911ab9c8adbf3c225a7a120ab50fd2784ac48f2f0d140c0b7afc2b55"}, ] [[package]] name = "google-resumable-media" -version = "2.6.0" +version = "2.7.0" description = "Utilities for Google Media Downloads and Resumable Uploads" optional = false python-versions = ">= 3.7" files = [ - {file = "google-resumable-media-2.6.0.tar.gz", hash = "sha256:972852f6c65f933e15a4a210c2b96930763b47197cdf4aa5f5bea435efb626e7"}, - {file = "google_resumable_media-2.6.0-py2.py3-none-any.whl", hash = "sha256:fc03d344381970f79eebb632a3c18bb1828593a2dc5572b5f90115ef7d11e81b"}, + {file = "google-resumable-media-2.7.0.tar.gz", hash = "sha256:5f18f5fa9836f4b083162064a1c2c98c17239bfda9ca50ad970ccf905f3e625b"}, + {file = "google_resumable_media-2.7.0-py2.py3-none-any.whl", hash = "sha256:79543cfe433b63fd81c0844b7803aba1bb8950b47bedf7d980c38fa123937e08"}, ] [package.dependencies] @@ -3498,13 +3500,13 @@ requests = ["requests (>=2.18.0,<3.0.0dev)"] [[package]] name = "googleapis-common-protos" -version = "1.61.0" +version = "1.62.0" description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.61.0.tar.gz", hash = "sha256:8a64866a97f6304a7179873a465d6eee97b7a24ec6cfd78e0f575e96b821240b"}, - {file = "googleapis_common_protos-1.61.0-py2.py3-none-any.whl", hash = "sha256:22f1915393bb3245343f6efe87f6fe868532efc12aa26b391b15132e1279f1c0"}, + {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] @@ -3514,101 +3516,86 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4 [package.extras] grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] -[[package]] -name = "graphviz" -version = "0.20.1" -description = "Simple Python interface for Graphviz" -optional = false -python-versions = ">=3.7" -files = [ - {file = "graphviz-0.20.1-py3-none-any.whl", hash = "sha256:587c58a223b51611c0cf461132da386edd896a029524ca61a1462b880bf97977"}, - {file = "graphviz-0.20.1.zip", hash = "sha256:8c58f14adaa3b947daf26c19bc1e98c4e0702cdc31cf99153e6f06904d492bf8"}, -] - -[package.extras] -dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"] -docs = ["sphinx (>=5)", "sphinx-autodoc-typehints", "sphinx-rtd-theme"] -test = ["coverage", "mock (>=4)", "pytest (>=7)", "pytest-cov", "pytest-mock (>=3)"] - [[package]] name = "greenlet" -version = "3.0.1" +version = "3.0.3" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63"}, - {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e"}, - {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846"}, - {file = "greenlet-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9"}, - {file = "greenlet-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234"}, - {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884"}, - {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94"}, - {file = "greenlet-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c"}, - {file = "greenlet-3.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5"}, - {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d"}, - {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445"}, - {file = "greenlet-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de"}, - {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166"}, - {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36"}, - {file = "greenlet-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1"}, - {file = "greenlet-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8"}, - {file = "greenlet-3.0.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9"}, - {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e"}, - {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a"}, - {file = "greenlet-3.0.1-cp38-cp38-win32.whl", hash = "sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd"}, - {file = "greenlet-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6"}, - {file = "greenlet-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d"}, - {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8"}, - {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546"}, - {file = "greenlet-3.0.1-cp39-cp39-win32.whl", hash = "sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57"}, - {file = "greenlet-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619"}, - {file = "greenlet-3.0.1.tar.gz", hash = "sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b"}, -] - -[package.extras] -docs = ["Sphinx"] + {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, + {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, + {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, + {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, + {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, + {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, + {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, + {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, + {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, + {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, + {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, + {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, + {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, + {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, + {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, + {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, +] + +[package.extras] +docs = ["Sphinx", "furo"] test = ["objgraph", "psutil"] [[package]] name = "griffe" -version = "0.38.0" +version = "0.41.0" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." optional = false python-versions = ">=3.8" files = [ - {file = "griffe-0.38.0-py3-none-any.whl", hash = "sha256:6a5bc457320e8e199006aa5fbb03e162f5e21abe31aa6221f7a5c37ea0724c71"}, - {file = "griffe-0.38.0.tar.gz", hash = "sha256:9b97487b583042b543d1e28196caee638ecd766c8c4c98135071806cb5333ac2"}, + {file = "griffe-0.41.0-py3-none-any.whl", hash = "sha256:8aa7fc6eb00cb80af9c0198178c6b7110cb59fa2c5187bb13ea25eebbe4dd928"}, + {file = "griffe-0.41.0.tar.gz", hash = "sha256:850128c3198c18713eaf0a6cc8572e590a16b1965f72a4e871e66cf84740903f"}, ] [package.dependencies] @@ -3616,13 +3603,13 @@ colorama = ">=0.4" [[package]] name = "grpc-google-iam-v1" -version = "0.12.6" +version = "0.13.0" description = "IAM API client library" optional = false python-versions = ">=3.7" files = [ - {file = "grpc-google-iam-v1-0.12.6.tar.gz", hash = "sha256:2bc4b8fdf22115a65d751c9317329322602c39b7c86a289c9b72d228d960ef5f"}, - {file = "grpc_google_iam_v1-0.12.6-py2.py3-none-any.whl", hash = "sha256:5c10f3d8dc2d88678ab1a9b0cb5482735c5efee71e6c0cd59f872eef22913f5c"}, + {file = "grpc-google-iam-v1-0.13.0.tar.gz", hash = "sha256:fad318608b9e093258fbf12529180f400d1c44453698a33509cc6ecf005b294e"}, + {file = "grpc_google_iam_v1-0.13.0-py2.py3-none-any.whl", hash = "sha256:53902e2af7de8df8c1bd91373d9be55b0743ec267a7428ea638db3775becae89"}, ] [package.dependencies] @@ -3630,71 +3617,88 @@ googleapis-common-protos = {version = ">=1.56.0,<2.0.0dev", extras = ["grpc"]} grpcio = ">=1.44.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" +[[package]] +name = "grpc-interceptor" +version = "0.15.4" +description = "Simplifies gRPC interceptors" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "grpc-interceptor-0.15.4.tar.gz", hash = "sha256:1f45c0bcb58b6f332f37c637632247c9b02bc6af0fdceb7ba7ce8d2ebbfb0926"}, + {file = "grpc_interceptor-0.15.4-py3-none-any.whl", hash = "sha256:0035f33228693ed3767ee49d937bac424318db173fef4d2d0170b3215f254d9d"}, +] + +[package.dependencies] +grpcio = ">=1.49.1,<2.0.0" + +[package.extras] +testing = ["protobuf (>=4.21.9)"] + [[package]] name = "grpcio" -version = "1.59.2" +version = "1.62.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.59.2-cp310-cp310-linux_armv7l.whl", hash = "sha256:d2fa68a96a30dd240be80bbad838a0ac81a61770611ff7952b889485970c4c71"}, - {file = "grpcio-1.59.2-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:cf0dead5a2c5a3347af2cfec7131d4f2a2e03c934af28989c9078f8241a491fa"}, - {file = "grpcio-1.59.2-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:e420ced29b5904cdf9ee5545e23f9406189d8acb6750916c2db4793dada065c6"}, - {file = "grpcio-1.59.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b230028a008ae1d0f430acb227d323ff8a619017415cf334c38b457f814119f"}, - {file = "grpcio-1.59.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a4a3833c0e067f3558538727235cd8a49709bff1003200bbdefa2f09334e4b1"}, - {file = "grpcio-1.59.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6b25ed37c27e652db01be341af93fbcea03d296c024d8a0e680017a268eb85dd"}, - {file = "grpcio-1.59.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73abb8584b0cf74d37f5ef61c10722adc7275502ab71789a8fe3cb7ef04cf6e2"}, - {file = "grpcio-1.59.2-cp310-cp310-win32.whl", hash = "sha256:d6f70406695e3220f09cd7a2f879333279d91aa4a8a1d34303b56d61a8180137"}, - {file = "grpcio-1.59.2-cp310-cp310-win_amd64.whl", hash = "sha256:3c61d641d4f409c5ae46bfdd89ea42ce5ea233dcf69e74ce9ba32b503c727e29"}, - {file = "grpcio-1.59.2-cp311-cp311-linux_armv7l.whl", hash = "sha256:3059668df17627f0e0fa680e9ef8c995c946c792612e9518f5cc1503be14e90b"}, - {file = "grpcio-1.59.2-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:72ca2399097c0b758198f2ff30f7178d680de8a5cfcf3d9b73a63cf87455532e"}, - {file = "grpcio-1.59.2-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:c978f864b35f2261e0819f5cd88b9830b04dc51bcf055aac3c601e525a10d2ba"}, - {file = "grpcio-1.59.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9411e24328a2302e279e70cae6e479f1fddde79629fcb14e03e6d94b3956eabf"}, - {file = "grpcio-1.59.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb7e0fe6ad73b7f06d7e2b689c19a71cf5cc48f0c2bf8608469e51ffe0bd2867"}, - {file = "grpcio-1.59.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c2504eed520958a5b77cc99458297cb7906308cb92327f35fb7fbbad4e9b2188"}, - {file = "grpcio-1.59.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2171c39f355ba5b551c5d5928d65aa6c69807fae195b86ef4a7d125bcdb860a9"}, - {file = "grpcio-1.59.2-cp311-cp311-win32.whl", hash = "sha256:d2794f0e68b3085d99b4f6ff9c089f6fdd02b32b9d3efdfbb55beac1bf22d516"}, - {file = "grpcio-1.59.2-cp311-cp311-win_amd64.whl", hash = "sha256:2067274c88bc6de89c278a672a652b4247d088811ece781a4858b09bdf8448e3"}, - {file = "grpcio-1.59.2-cp312-cp312-linux_armv7l.whl", hash = "sha256:535561990e075fa6bd4b16c4c3c1096b9581b7bb35d96fac4650f1181e428268"}, - {file = "grpcio-1.59.2-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a213acfbf186b9f35803b52e4ca9addb153fc0b67f82a48f961be7000ecf6721"}, - {file = "grpcio-1.59.2-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:6959fb07e8351e20501ffb8cc4074c39a0b7ef123e1c850a7f8f3afdc3a3da01"}, - {file = "grpcio-1.59.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e82c5cf1495244adf5252f925ac5932e5fd288b3e5ab6b70bec5593074b7236c"}, - {file = "grpcio-1.59.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:023088764012411affe7db183d1ada3ad9daf2e23ddc719ff46d7061de661340"}, - {file = "grpcio-1.59.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:da2d94c15f88cd40d7e67f7919d4f60110d2b9d5b1e08cf354c2be773ab13479"}, - {file = "grpcio-1.59.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6009386a2df66159f64ac9f20425ae25229b29b9dd0e1d3dd60043f037e2ad7e"}, - {file = "grpcio-1.59.2-cp312-cp312-win32.whl", hash = "sha256:75c6ecb70e809cf1504465174343113f51f24bc61e22a80ae1c859f3f7034c6d"}, - {file = "grpcio-1.59.2-cp312-cp312-win_amd64.whl", hash = "sha256:cbe946b3e6e60a7b4618f091e62a029cb082b109a9d6b53962dd305087c6e4fd"}, - {file = "grpcio-1.59.2-cp37-cp37m-linux_armv7l.whl", hash = "sha256:f8753a6c88d1d0ba64302309eecf20f70d2770f65ca02d83c2452279085bfcd3"}, - {file = "grpcio-1.59.2-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:f1ef0d39bc1feb420caf549b3c657c871cad4ebbcf0580c4d03816b0590de0cf"}, - {file = "grpcio-1.59.2-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:4c93f4abbb54321ee6471e04a00139c80c754eda51064187963ddf98f5cf36a4"}, - {file = "grpcio-1.59.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08d77e682f2bf730a4961eea330e56d2f423c6a9b91ca222e5b1eb24a357b19f"}, - {file = "grpcio-1.59.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ff16d68bf453275466a9a46739061a63584d92f18a0f5b33d19fc97eb69867c"}, - {file = "grpcio-1.59.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4abb717e320e74959517dc8e84a9f48fbe90e9abe19c248541e9418b1ce60acd"}, - {file = "grpcio-1.59.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:36f53c2b3449c015880e7d55a89c992c357f176327b0d2873cdaaf9628a37c69"}, - {file = "grpcio-1.59.2-cp37-cp37m-win_amd64.whl", hash = "sha256:cc3e4cd087f07758b16bef8f31d88dbb1b5da5671d2f03685ab52dece3d7a16e"}, - {file = "grpcio-1.59.2-cp38-cp38-linux_armv7l.whl", hash = "sha256:27f879ae604a7fcf371e59fba6f3ff4635a4c2a64768bd83ff0cac503142fef4"}, - {file = "grpcio-1.59.2-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:7cf05053242f61ba94014dd3a986e11a083400a32664058f80bf4cf817c0b3a1"}, - {file = "grpcio-1.59.2-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:e1727c1c0e394096bb9af185c6923e8ea55a5095b8af44f06903bcc0e06800a2"}, - {file = "grpcio-1.59.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5d573e70a6fe77555fb6143c12d3a7d3fa306632a3034b4e7c59ca09721546f8"}, - {file = "grpcio-1.59.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31176aa88f36020055ace9adff2405a33c8bdbfa72a9c4980e25d91b2f196873"}, - {file = "grpcio-1.59.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:11168ef43e4a43ff1b1a65859f3e0ef1a173e277349e7fb16923ff108160a8cd"}, - {file = "grpcio-1.59.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:53c9aa5ddd6857c0a1cd0287225a2a25873a8e09727c2e95c4aebb1be83a766a"}, - {file = "grpcio-1.59.2-cp38-cp38-win32.whl", hash = "sha256:3b4368b33908f683a363f376dfb747d40af3463a6e5044afee07cf9436addf96"}, - {file = "grpcio-1.59.2-cp38-cp38-win_amd64.whl", hash = "sha256:0a754aff9e3af63bdc4c75c234b86b9d14e14a28a30c4e324aed1a9b873d755f"}, - {file = "grpcio-1.59.2-cp39-cp39-linux_armv7l.whl", hash = "sha256:1f9524d1d701e399462d2c90ba7c193e49d1711cf429c0d3d97c966856e03d00"}, - {file = "grpcio-1.59.2-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:f93dbf58f03146164048be5426ffde298b237a5e059144847e4940f5b80172c3"}, - {file = "grpcio-1.59.2-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:6da6dea3a1bacf99b3c2187e296db9a83029ed9c38fd4c52b7c9b7326d13c828"}, - {file = "grpcio-1.59.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5f09cffa619adfb44799fa4a81c2a1ad77c887187613fb0a8f201ab38d89ba1"}, - {file = "grpcio-1.59.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c35aa9657f5d5116d23b934568e0956bd50c615127810fffe3ac356a914c176a"}, - {file = "grpcio-1.59.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:74100fecaec8a535e380cf5f2fb556ff84957d481c13e54051c52e5baac70541"}, - {file = "grpcio-1.59.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:128e20f57c5f27cb0157e73756d1586b83c1b513ebecc83ea0ac37e4b0e4e758"}, - {file = "grpcio-1.59.2-cp39-cp39-win32.whl", hash = "sha256:686e975a5d16602dc0982c7c703948d17184bd1397e16c8ee03511ecb8c4cdda"}, - {file = "grpcio-1.59.2-cp39-cp39-win_amd64.whl", hash = "sha256:242adc47725b9a499ee77c6a2e36688fa6c96484611f33b1be4c57ab075a92dd"}, - {file = "grpcio-1.59.2.tar.gz", hash = "sha256:d8f9cd4ad1be90b0cf350a2f04a38a36e44a026cac1e036ac593dc48efe91d52"}, -] - -[package.extras] -protobuf = ["grpcio-tools (>=1.59.2)"] + {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.62.0)"] [[package]] name = "grpcio-gcp" @@ -3806,24 +3810,24 @@ uvloop = {version = ">=0.19.0,<1", markers = "sys_platform != \"win32\""} [[package]] name = "httpcore" -version = "0.18.0" +version = "1.0.4" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-0.18.0-py3-none-any.whl", hash = "sha256:adc5398ee0a476567bf87467063ee63584a8bce86078bf748e48754f60202ced"}, - {file = "httpcore-0.18.0.tar.gz", hash = "sha256:13b5e5cd1dca1a6636a6aaea212b19f4f85cd88c366a2b82304181b769aab3c9"}, + {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"}, + {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"}, ] [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.25.0)"] [[package]] name = "httplib2" @@ -3841,18 +3845,19 @@ pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0 [[package]] name = "httpx" -version = "0.25.0" +version = "0.27.0" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpx-0.25.0-py3-none-any.whl", hash = "sha256:181ea7f8ba3a82578be86ef4171554dd45fec26a02556a744db029a0a27b7100"}, - {file = "httpx-0.25.0.tar.gz", hash = "sha256:47ecda285389cb32bb2691cc6e069e3ab0205956f681c5b2ad2325719751d875"}, + {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, + {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, ] [package.dependencies] +anyio = "*" certifi = "*" -httpcore = ">=0.18.0,<0.19.0" +httpcore = "==1.*" idna = "*" sniffio = "*" @@ -3894,13 +3899,13 @@ packaging = "*" [[package]] name = "identify" -version = "2.5.31" +version = "2.5.35" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.31-py2.py3-none-any.whl", hash = "sha256:90199cb9e7bd3c5407a9b7e81b4abec4bb9d249991c79439ec8af740afc6293d"}, - {file = "identify-2.5.31.tar.gz", hash = "sha256:7736b3c7a28233637e3c36550646fc6389bedd74ae84cb788200cc8e2dd60b75"}, + {file = "identify-2.5.35-py2.py3-none-any.whl", hash = "sha256:c4de0081837b211594f8e877a6b4fad7ca32bbfc1a9307fdd61c28bfe923f13e"}, + {file = "identify-2.5.35.tar.gz", hash = "sha256:10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791"}, ] [package.extras] @@ -3908,48 +3913,48 @@ license = ["ukkonen"] [[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]] 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.1.0" +version = "6.1.2" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.1.0-py3-none-any.whl", hash = "sha256:aa50258bbfa56d4e33fbd8aa3ef48ded10d1735f11532b8df95388cc6bdb7e83"}, - {file = "importlib_resources-6.1.0.tar.gz", hash = "sha256:9d48dcccc213325e810fd723e7fbb45ccb39f6cf5c31f00cf2b965f5f10f3cb9"}, + {file = "importlib_resources-6.1.2-py3-none-any.whl", hash = "sha256:9a0a862501dc38b68adebc82970140c9e4209fc99601782925178f8386339938"}, + {file = "importlib_resources-6.1.2.tar.gz", hash = "sha256:308abf8474e2dba5f867d279237cd4076482c3de7104a40b41426370e891549b"}, ] [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)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] [[package]] name = "inflection" @@ -4000,13 +4005,13 @@ tests = ["pytest", "pytest-cov", "pytest-mock"] [[package]] name = "ipykernel" -version = "6.29.0" +version = "6.29.3" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.29.0-py3-none-any.whl", hash = "sha256:076663ca68492576f051e4af7720d33f34383e655f2be0d544c8b1c9de915b2f"}, - {file = "ipykernel-6.29.0.tar.gz", hash = "sha256:b5dd3013cab7b330df712891c96cd1ab868c27a7159e606f762015e9bf8ceb3f"}, + {file = "ipykernel-6.29.3-py3-none-any.whl", hash = "sha256:5aa086a4175b0229d4eca211e181fb473ea78ffd9869af36ba7694c947302a21"}, + {file = "ipykernel-6.29.3.tar.gz", hash = "sha256:e14c250d1f9ea3989490225cc1a542781b095a18a19447fcf2b5eaf7d0ac5bd2"}, ] [package.dependencies] @@ -4029,7 +4034,7 @@ cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] pyqt5 = ["pyqt5"] pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.2)", "pytest-cov", "pytest-timeout"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] [[package]] name = "ipython" @@ -4141,13 +4146,13 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" -version = "3.1.2" +version = "3.1.3" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, ] [package.dependencies] @@ -4204,13 +4209,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.19.2" +version = "4.21.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.19.2-py3-none-any.whl", hash = "sha256:eee9e502c788e89cb166d4d37f43084e3b64ab405c795c03d343a4dbc2c810fc"}, - {file = "jsonschema-4.19.2.tar.gz", hash = "sha256:c9ff4d7447eed9592c23a12ccee508baf0dd0d59650615e847feb6cdca74f392"}, + {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, + {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, ] [package.dependencies] @@ -4225,27 +4230,27 @@ 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] -referencing = ">=0.28.0" +referencing = ">=0.31.0" [[package]] name = "jupyter-client" -version = "8.5.0" +version = "8.6.0" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.5.0-py3-none-any.whl", hash = "sha256:c3877aac7257ec68d79b5c622ce986bd2a992ca42f6ddc9b4dd1da50e89f7028"}, - {file = "jupyter_client-8.5.0.tar.gz", hash = "sha256:e8754066510ce456358df363f97eae64b50860f30dc1fe8c6771440db3be9a63"}, + {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"}, + {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"}, ] [package.dependencies] @@ -4261,13 +4266,13 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.5.0" +version = "5.7.1" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.5.0-py3-none-any.whl", hash = "sha256:e11e02cd8ae0a9de5c6c44abf5727df9f2581055afe00b22183f621ba3585805"}, - {file = "jupyter_core-5.5.0.tar.gz", hash = "sha256:880b86053bf298a8724994f95e99b99130659022a4f7f45f563084b6223861d3"}, + {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"}, + {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"}, ] [package.dependencies] @@ -4281,58 +4286,59 @@ test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] [[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 = "limits" -version = "3.6.0" +version = "3.9.0" description = "Rate limiting utilities" optional = false python-versions = ">=3.7" files = [ - {file = "limits-3.6.0-py3-none-any.whl", hash = "sha256:32fe29a398352c71bc43d53773117d47e22c5ea4200aef28d3f5fdee10334cd7"}, - {file = "limits-3.6.0.tar.gz", hash = "sha256:57a9c69fd37ad1e4fa3886dff8d035227e1f6af87f47e9118627e72cf1ced3bf"}, + {file = "limits-3.9.0-py3-none-any.whl", hash = "sha256:6dce07d1a4d7bd3361d36f59f3f43c4f39675001daeeae2617c3be42d718daa8"}, + {file = "limits-3.9.0.tar.gz", hash = "sha256:7b44aa4d05c539276928372681190136914958cccbb99c30ecc5df72a179661a"}, ] [package.dependencies] @@ -4355,13 +4361,13 @@ rediscluster = ["redis (>=4.2.0,!=4.5.2,!=4.5.3)"] [[package]] name = "linkify-it-py" -version = "2.0.2" +version = "2.0.3" description = "Links recognition library with FULL unicode support." optional = false python-versions = ">=3.7" files = [ - {file = "linkify-it-py-2.0.2.tar.gz", hash = "sha256:19f3060727842c254c808e99d465c80c49d2c7306788140987a1a7a29b0d6ad2"}, - {file = "linkify_it_py-2.0.2-py3-none-any.whl", hash = "sha256:a3a24428f6c96f27370d7fe61d2ac0be09017be5190d68d8658233171f1b6541"}, + {file = "linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048"}, + {file = "linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79"}, ] [package.dependencies] @@ -4386,13 +4392,13 @@ files = [ [[package]] name = "looker-sdk" -version = "23.16.0" +version = "24.2.0" description = "Looker REST API" optional = false python-versions = ">=3.6" files = [ - {file = "looker_sdk-23.16.0-py3-none-any.whl", hash = "sha256:c5a680d4641a7725be6920630aa7ece0430e2a92abe1f396e8c63ed74dcd43d5"}, - {file = "looker_sdk-23.16.0.tar.gz", hash = "sha256:4daa7a9812a92fdd1e0094cb0afb0db2e7bb54e10492b1345b67705dbe5089d5"}, + {file = "looker_sdk-24.2.0-py3-none-any.whl", hash = "sha256:714a550a42e6b8d8b3f42e6119a8559445b415d3837bac692fbfd9c400d9203f"}, + {file = "looker_sdk-24.2.0.tar.gz", hash = "sha256:51022762eae9df7c3e64458c4f1945f6030378aa75ed4a2ef6b965007466ec91"}, ] [package.dependencies] @@ -4496,13 +4502,13 @@ source = ["Cython (>=3.0.7)"] [[package]] name = "mako" -version = "1.2.4" +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.7" +python-versions = ">=3.8" files = [ - {file = "Mako-1.2.4-py3-none-any.whl", hash = "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818"}, - {file = "Mako-1.2.4.tar.gz", hash = "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34"}, + {file = "Mako-1.3.2-py3-none-any.whl", hash = "sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c"}, + {file = "Mako-1.3.2.tar.gz", hash = "sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e"}, ] [package.dependencies] @@ -4515,13 +4521,13 @@ testing = ["pytest"] [[package]] name = "markdown" -version = "3.5.1" +version = "3.5.2" description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "Markdown-3.5.1-py3-none-any.whl", hash = "sha256:5874b47d4ee3f0b14d764324d2c94c03ea66bee56f2d929da9f2508d65e722dc"}, - {file = "Markdown-3.5.1.tar.gz", hash = "sha256:b65d7beb248dc22f2e8a31fb706d93798093c308dc1aba295aedeb9d41a813bd"}, + {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, + {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, ] [package.extras] @@ -4554,111 +4560,109 @@ 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]] name = "marshmallow" -version = "3.20.1" +version = "3.21.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.8" files = [ - {file = "marshmallow-3.20.1-py3-none-any.whl", hash = "sha256:684939db93e80ad3561392f47be0230743131560a41c5110684c16e21ade0a5c"}, - {file = "marshmallow-3.20.1.tar.gz", hash = "sha256:5d2371bbe42000f2b3fb5eaa065224df7d8f8597bc19a1bbfa5bfe7fba8da889"}, + {file = "marshmallow-3.21.0-py3-none-any.whl", hash = "sha256:e7997f83571c7fd476042c2c188e4ee8a78900ca5e74bd9c8097afa56624e9bd"}, + {file = "marshmallow-3.21.0.tar.gz", hash = "sha256:20f53be28c6e374a711a16165fb22a8dc6003e3f7cda1285e3ca777b9193885b"}, ] [package.dependencies] packaging = ">=17.0" [package.extras] -dev = ["flake8 (==6.0.0)", "flake8-bugbear (==23.7.10)", "mypy (==1.4.1)", "pre-commit (>=2.4,<4.0)", "pytest", "pytz", "simplejson", "tox"] -docs = ["alabaster (==0.7.13)", "autodocsumm (==0.2.11)", "sphinx (==7.0.1)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"] -lint = ["flake8 (==6.0.0)", "flake8-bugbear (==23.7.10)", "mypy (==1.4.1)", "pre-commit (>=2.4,<4.0)"] +dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"] +docs = ["alabaster (==0.7.16)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==4.0.0)", "sphinx-version-warning (==1.1.2)"] tests = ["pytest", "pytz", "simplejson"] [[package]] name = "marshmallow-oneofschema" -version = "3.0.1" +version = "3.1.1" description = "marshmallow multiplexing schema" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "marshmallow-oneofschema-3.0.1.tar.gz", hash = "sha256:62cd2099b29188c92493c2940ee79d1bf2f2619a71721664e5a98ec2faa58237"}, - {file = "marshmallow_oneofschema-3.0.1-py2.py3-none-any.whl", hash = "sha256:bd29410a9f2f7457a2b428286e2a80ef76b8ddc3701527dc1f935a88914b02f2"}, + {file = "marshmallow_oneofschema-3.1.1-py3-none-any.whl", hash = "sha256:ff4cb2a488785ee8edd521a765682c2c80c78b9dc48894124531bdfa1ec9303b"}, + {file = "marshmallow_oneofschema-3.1.1.tar.gz", hash = "sha256:68b4a57d0281a04ac25d4eb7a4c5865a57090a0a8fd30fd6362c8e833ac6a6d9"}, ] [package.dependencies] marshmallow = ">=3.0.0,<4.0.0" [package.extras] -dev = ["flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "mock", "pre-commit (>=2.7,<3.0)", "pytest", "tox"] -lint = ["flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "pre-commit (>=2.7,<3.0)"] -tests = ["mock", "pytest"] +dev = ["marshmallow-oneofschema[tests]", "pre-commit (>=3.5,<4.0)", "tox"] +tests = ["pytest"] [[package]] name = "marshmallow-sqlalchemy" @@ -4793,17 +4797,18 @@ mkdocs = ">=1.2.3" [[package]] name = "mkdocs-autorefs" -version = "0.5.0" +version = "1.0.0" description = "Automatically link across pages in MkDocs." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_autorefs-0.5.0-py3-none-any.whl", hash = "sha256:7930fcb8ac1249f10e683967aeaddc0af49d90702af111a5e390e8b20b3d97ff"}, - {file = "mkdocs_autorefs-0.5.0.tar.gz", hash = "sha256:9a5054a94c08d28855cfab967ada10ed5be76e2bfad642302a610b252c3274c0"}, + {file = "mkdocs_autorefs-1.0.0-py3-none-any.whl", hash = "sha256:2b6d288f0582589d1be7c99ce4470c8e7c5077892014051ff0d4ff574a73dbe8"}, + {file = "mkdocs_autorefs-1.0.0.tar.gz", hash = "sha256:1b20db41cade632b07b7a73dee818977b52e869c9deb438f6f20e2896ff01859"}, ] [package.dependencies] Markdown = ">=3.3" +markupsafe = ">=2.0.1" mkdocs = ">=1.1" [[package]] @@ -4853,13 +4858,13 @@ requests = "*" [[package]] name = "mkdocs-git-revision-date-localized-plugin" -version = "1.2.2" +version = "1.2.4" description = "Mkdocs plugin that enables displaying the localized date of the last git modification of a markdown file." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "mkdocs-git-revision-date-localized-plugin-1.2.2.tar.gz", hash = "sha256:0c43a9aac1fa69df99a823f833cc223bac9967b60d5261a857761c7c6e3b30de"}, - {file = "mkdocs_git_revision_date_localized_plugin-1.2.2-py3-none-any.whl", hash = "sha256:85c7fe9ab06e7a63c4e522c26fee8b51d357cb8cbe605064501ad80f4f31cb94"}, + {file = "mkdocs-git-revision-date-localized-plugin-1.2.4.tar.gz", hash = "sha256:08fd0c6f33c8da9e00daf40f7865943113b3879a1c621b2bbf0fa794ffe997d3"}, + {file = "mkdocs_git_revision_date_localized_plugin-1.2.4-py3-none-any.whl", hash = "sha256:1f94eb510862ef94e982a2910404fa17a1657ecf29f45a07b0f438c00767fc85"}, ] [package.dependencies] @@ -4870,13 +4875,13 @@ pytz = "*" [[package]] name = "mkdocs-material" -version = "9.5.3" +version = "9.5.11" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.3-py3-none-any.whl", hash = "sha256:76c93a8525cceb0b395b9cedab3428bf518cf6439adef2b940f1c1574b775d89"}, - {file = "mkdocs_material-9.5.3.tar.gz", hash = "sha256:5899219f422f0a6de784232d9d40374416302ffae3c160cacc72969fcc1ee372"}, + {file = "mkdocs_material-9.5.11-py3-none-any.whl", hash = "sha256:788ee0f3e036dca2dc20298d65e480297d348a44c9d7b2ee05c5262983e66072"}, + {file = "mkdocs_material-9.5.11.tar.gz", hash = "sha256:7af7f8af0dea16175558f3fb9245d26c83a17199baa5f157755e63d7437bf971"}, ] [package.dependencies] @@ -4893,19 +4898,19 @@ regex = ">=2022.4" requests = ">=2.26,<3.0" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=9.4,<10.0)"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] [[package]] name = "mkdocs-material-extensions" -version = "1.3" +version = "1.3.1" description = "Extension pack for Python Markdown and MkDocs Material." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material_extensions-1.3-py3-none-any.whl", hash = "sha256:0297cc48ba68a9fdd1ef3780a3b41b534b0d0df1d1181a44676fda5f464eeadc"}, - {file = "mkdocs_material_extensions-1.3.tar.gz", hash = "sha256:f0446091503acb110a7cab9349cbc90eeac51b58d1caa92a704a81ca1e24ddbd"}, + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, ] [[package]] @@ -4924,21 +4929,23 @@ mkdocs = ">=1.2" [[package]] name = "mkdocstrings" -version = "0.23.0" +version = "0.24.0" description = "Automatic documentation from sources, for MkDocs." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocstrings-0.23.0-py3-none-any.whl", hash = "sha256:051fa4014dfcd9ed90254ae91de2dbb4f24e166347dae7be9a997fe16316c65e"}, - {file = "mkdocstrings-0.23.0.tar.gz", hash = "sha256:d9c6a37ffbe7c14a7a54ef1258c70b8d394e6a33a1c80832bce40b9567138d1c"}, + {file = "mkdocstrings-0.24.0-py3-none-any.whl", hash = "sha256:f4908560c10f587326d8f5165d1908817b2e280bbf707607f601c996366a2264"}, + {file = "mkdocstrings-0.24.0.tar.gz", hash = "sha256:222b1165be41257b494a9d29b14135d2b7ca43f38161d5b10caae03b87bd4f7e"}, ] [package.dependencies] +click = ">=7.0" Jinja2 = ">=2.11.1" Markdown = ">=3.3" MarkupSafe = ">=1.1" -mkdocs = ">=1.2" +mkdocs = ">=1.4" mkdocs-autorefs = ">=0.3.1" +platformdirs = ">=2.2.0" pymdown-extensions = ">=6.3" [package.extras] @@ -4961,41 +4968,53 @@ files = [ griffe = ">=0.37" mkdocstrings = ">=0.20" +[[package]] +name = "more-itertools" +version = "10.2.0" +description = "More routines for operating on iterables, beyond itertools" +optional = false +python-versions = ">=3.8" +files = [ + {file = "more-itertools-10.2.0.tar.gz", hash = "sha256:8fccb480c43d3e99a00087634c06dd02b0d50fbf088b380de5a41a015ec239e1"}, + {file = "more_itertools-10.2.0-py3-none-any.whl", hash = "sha256:686b06abe565edfab151cb8fd385a05651e1fdf8f0a14191e4439283421f8684"}, +] + [[package]] name = "msal" -version = "1.24.1" -description = "The Microsoft Authentication Library (MSAL) for Python library" +version = "1.27.0" +description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." optional = false python-versions = ">=2.7" files = [ - {file = "msal-1.24.1-py2.py3-none-any.whl", hash = "sha256:ce4320688f95c301ee74a4d0e9dbcfe029a63663a8cc61756f40d0d0d36574ad"}, - {file = "msal-1.24.1.tar.gz", hash = "sha256:aa0972884b3c6fdec53d9a0bd15c12e5bd7b71ac1b66d746f54d128709f3f8f8"}, + {file = "msal-1.27.0-py2.py3-none-any.whl", hash = "sha256:572d07149b83e7343a85a3bcef8e581167b4ac76befcbbb6eef0c0e19643cdc0"}, + {file = "msal-1.27.0.tar.gz", hash = "sha256:3109503c038ba6b307152b0e8d34f98113f2e7a78986e28d0baf5b5303afda52"}, ] [package.dependencies] -cryptography = ">=0.6,<44" +cryptography = ">=0.6,<45" PyJWT = {version = ">=1.0.0,<3", extras = ["crypto"]} requests = ">=2.0.0,<3" [package.extras] -broker = ["pymsalruntime (>=0.13.2,<0.14)"] +broker = ["pymsalruntime (>=0.13.2,<0.15)"] [[package]] name = "msal-extensions" -version = "1.0.0" +version = "1.1.0" description = "Microsoft Authentication Library extensions (MSAL EX) provides a persistence API that can save your data on disk, encrypted on Windows, macOS and Linux. Concurrent data access will be coordinated by a file lock mechanism." optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "msal-extensions-1.0.0.tar.gz", hash = "sha256:c676aba56b0cce3783de1b5c5ecfe828db998167875126ca4b47dc6436451354"}, - {file = "msal_extensions-1.0.0-py2.py3-none-any.whl", hash = "sha256:91e3db9620b822d0ed2b4d1850056a0f133cba04455e62f11612e40f5502f2ee"}, + {file = "msal-extensions-1.1.0.tar.gz", hash = "sha256:6ab357867062db7b253d0bd2df6d411c7891a0ee7308d54d1e4317c1d1c54252"}, + {file = "msal_extensions-1.1.0-py3-none-any.whl", hash = "sha256:01be9711b4c0b1a151450068eeb2c4f0997df3bba085ac299de3a66f585e382f"}, ] [package.dependencies] msal = ">=0.4.1,<2.0.0" +packaging = "*" portalocker = [ - {version = ">=1.0,<3", markers = "python_version >= \"3.5\" and platform_system != \"Windows\""}, - {version = ">=1.6,<3", markers = "python_version >= \"3.5\" and platform_system == \"Windows\""}, + {version = ">=1.0,<3", markers = "platform_system != \"Windows\""}, + {version = ">=1.6,<3", markers = "platform_system == \"Windows\""}, ] [[package]] @@ -5021,85 +5040,101 @@ async = ["aiodns", "aiohttp (>=3.0)"] [[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]] @@ -5177,13 +5212,13 @@ icu = ["PyICU (>=1.0.0)"] [[package]] name = "nest-asyncio" -version = "1.5.8" +version = "1.6.0" description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" files = [ - {file = "nest_asyncio-1.5.8-py3-none-any.whl", hash = "sha256:accda7a339a70599cb08f9dd09a67e0c2ef8d8d6f4c07f96ab203f2ae254e48d"}, - {file = "nest_asyncio-1.5.8.tar.gz", hash = "sha256:25aa2ca0d2a5b5531956b9e273b45cf664cae2b145101d73b86b199978d48fdb"}, + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, ] [[package]] @@ -5202,47 +5237,47 @@ setuptools = "*" [[package]] name = "numpy" -version = "1.26.3" +version = "1.26.4" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.26.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:806dd64230dbbfaca8a27faa64e2f414bf1c6622ab78cc4264f7f5f028fee3bf"}, - {file = "numpy-1.26.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02f98011ba4ab17f46f80f7f8f1c291ee7d855fcef0a5a98db80767a468c85cd"}, - {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d45b3ec2faed4baca41c76617fcdcfa4f684ff7a151ce6fc78ad3b6e85af0a6"}, - {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdd2b45bf079d9ad90377048e2747a0c82351989a2165821f0c96831b4a2a54b"}, - {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:211ddd1e94817ed2d175b60b6374120244a4dd2287f4ece45d49228b4d529178"}, - {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1240f767f69d7c4c8a29adde2310b871153df9b26b5cb2b54a561ac85146485"}, - {file = "numpy-1.26.3-cp310-cp310-win32.whl", hash = "sha256:21a9484e75ad018974a2fdaa216524d64ed4212e418e0a551a2d83403b0531d3"}, - {file = "numpy-1.26.3-cp310-cp310-win_amd64.whl", hash = "sha256:9e1591f6ae98bcfac2a4bbf9221c0b92ab49762228f38287f6eeb5f3f55905ce"}, - {file = "numpy-1.26.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b831295e5472954104ecb46cd98c08b98b49c69fdb7040483aff799a755a7374"}, - {file = "numpy-1.26.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e87562b91f68dd8b1c39149d0323b42e0082db7ddb8e934ab4c292094d575d6"}, - {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c66d6fec467e8c0f975818c1796d25c53521124b7cfb760114be0abad53a0a2"}, - {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25e2811a9c932e43943a2615e65fc487a0b6b49218899e62e426e7f0a57eeda"}, - {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:af36e0aa45e25c9f57bf684b1175e59ea05d9a7d3e8e87b7ae1a1da246f2767e"}, - {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:51c7f1b344f302067b02e0f5b5d2daa9ed4a721cf49f070280ac202738ea7f00"}, - {file = "numpy-1.26.3-cp311-cp311-win32.whl", hash = "sha256:7ca4f24341df071877849eb2034948459ce3a07915c2734f1abb4018d9c49d7b"}, - {file = "numpy-1.26.3-cp311-cp311-win_amd64.whl", hash = "sha256:39763aee6dfdd4878032361b30b2b12593fb445ddb66bbac802e2113eb8a6ac4"}, - {file = "numpy-1.26.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a7081fd19a6d573e1a05e600c82a1c421011db7935ed0d5c483e9dd96b99cf13"}, - {file = "numpy-1.26.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12c70ac274b32bc00c7f61b515126c9205323703abb99cd41836e8125ea0043e"}, - {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f784e13e598e9594750b2ef6729bcd5a47f6cfe4a12cca13def35e06d8163e3"}, - {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f24750ef94d56ce6e33e4019a8a4d68cfdb1ef661a52cdaee628a56d2437419"}, - {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:77810ef29e0fb1d289d225cabb9ee6cf4d11978a00bb99f7f8ec2132a84e0166"}, - {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8ed07a90f5450d99dad60d3799f9c03c6566709bd53b497eb9ccad9a55867f36"}, - {file = "numpy-1.26.3-cp312-cp312-win32.whl", hash = "sha256:f73497e8c38295aaa4741bdfa4fda1a5aedda5473074369eca10626835445511"}, - {file = "numpy-1.26.3-cp312-cp312-win_amd64.whl", hash = "sha256:da4b0c6c699a0ad73c810736303f7fbae483bcb012e38d7eb06a5e3b432c981b"}, - {file = "numpy-1.26.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1666f634cb3c80ccbd77ec97bc17337718f56d6658acf5d3b906ca03e90ce87f"}, - {file = "numpy-1.26.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18c3319a7d39b2c6a9e3bb75aab2304ab79a811ac0168a671a62e6346c29b03f"}, - {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b7e807d6888da0db6e7e75838444d62495e2b588b99e90dd80c3459594e857b"}, - {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4d362e17bcb0011738c2d83e0a65ea8ce627057b2fdda37678f4374a382a137"}, - {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b8c275f0ae90069496068c714387b4a0eba5d531aace269559ff2b43655edd58"}, - {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cc0743f0302b94f397a4a65a660d4cd24267439eb16493fb3caad2e4389bccbb"}, - {file = "numpy-1.26.3-cp39-cp39-win32.whl", hash = "sha256:9bc6d1a7f8cedd519c4b7b1156d98e051b726bf160715b769106661d567b3f03"}, - {file = "numpy-1.26.3-cp39-cp39-win_amd64.whl", hash = "sha256:867e3644e208c8922a3be26fc6bbf112a035f50f0a86497f98f228c50c607bb2"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3c67423b3703f8fbd90f5adaa37f85b5794d3366948efe9a5190a5f3a83fc34e"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46f47ee566d98849323f01b349d58f2557f02167ee301e5e28809a8c0e27a2d0"}, - {file = "numpy-1.26.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8474703bffc65ca15853d5fd4d06b18138ae90c17c8d12169968e998e448bb5"}, - {file = "numpy-1.26.3.tar.gz", hash = "sha256:697df43e2b6310ecc9d95f05d5ef20eacc09c7c4ecc9da3f235d39e71b7da1e4"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] [[package]] @@ -5278,13 +5313,13 @@ PyYAML = ">=5.1.0" [[package]] name = "opentelemetry-api" -version = "1.20.0" +version = "1.23.0" description = "OpenTelemetry Python API" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "opentelemetry_api-1.20.0-py3-none-any.whl", hash = "sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5"}, - {file = "opentelemetry_api-1.20.0.tar.gz", hash = "sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983"}, + {file = "opentelemetry_api-1.23.0-py3-none-any.whl", hash = "sha256:cc03ea4025353048aadb9c64919099663664672ea1c6be6ddd8fee8e4cd5e774"}, + {file = "opentelemetry_api-1.23.0.tar.gz", hash = "sha256:14a766548c8dd2eb4dfc349739eb4c3893712a0daa996e5dbf945f9da665da9d"}, ] [package.dependencies] @@ -5293,91 +5328,88 @@ importlib-metadata = ">=6.0,<7.0" [[package]] name = "opentelemetry-exporter-otlp" -version = "1.20.0" +version = "1.23.0" description = "OpenTelemetry Collector Exporters" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "opentelemetry_exporter_otlp-1.20.0-py3-none-any.whl", hash = "sha256:3b4d47726da83fef84467bdf96da4f8f3d1a61b35db3c16354c391ce8e9decf6"}, - {file = "opentelemetry_exporter_otlp-1.20.0.tar.gz", hash = "sha256:f8cb69f80c333166e5cfaa030f9e28f7faaf343aff24caaa2cb4202ea4849b6b"}, + {file = "opentelemetry_exporter_otlp-1.23.0-py3-none-any.whl", hash = "sha256:92371fdc8d7803465a45801fe30cd8c522ef355a385b0a1d5346d32f77511ea2"}, + {file = "opentelemetry_exporter_otlp-1.23.0.tar.gz", hash = "sha256:4af8798f9bc3bddb92fcbb5b4aa9d0e955d962aa1d9bceaab08891c355a9f907"}, ] [package.dependencies] -opentelemetry-exporter-otlp-proto-grpc = "1.20.0" -opentelemetry-exporter-otlp-proto-http = "1.20.0" +opentelemetry-exporter-otlp-proto-grpc = "1.23.0" +opentelemetry-exporter-otlp-proto-http = "1.23.0" [[package]] name = "opentelemetry-exporter-otlp-proto-common" -version = "1.20.0" +version = "1.23.0" description = "OpenTelemetry Protobuf encoding" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "opentelemetry_exporter_otlp_proto_common-1.20.0-py3-none-any.whl", hash = "sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef"}, - {file = "opentelemetry_exporter_otlp_proto_common-1.20.0.tar.gz", hash = "sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49"}, + {file = "opentelemetry_exporter_otlp_proto_common-1.23.0-py3-none-any.whl", hash = "sha256:2a9e7e9d5a8b026b572684b6b24dcdefcaa58613d5ce3d644130b0c373c056c1"}, + {file = "opentelemetry_exporter_otlp_proto_common-1.23.0.tar.gz", hash = "sha256:35e4ea909e7a0b24235bd0aaf17fba49676527feb1823b46565ff246d5a1ab18"}, ] [package.dependencies] -backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""} -opentelemetry-proto = "1.20.0" +opentelemetry-proto = "1.23.0" [[package]] name = "opentelemetry-exporter-otlp-proto-grpc" -version = "1.20.0" +version = "1.23.0" description = "OpenTelemetry Collector Protobuf over gRPC Exporter" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "opentelemetry_exporter_otlp_proto_grpc-1.20.0-py3-none-any.whl", hash = "sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec"}, - {file = "opentelemetry_exporter_otlp_proto_grpc-1.20.0.tar.gz", hash = "sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52"}, + {file = "opentelemetry_exporter_otlp_proto_grpc-1.23.0-py3-none-any.whl", hash = "sha256:40f9e3e7761eb34f2a1001f4543028783ac26e2db27e420d5374f2cca0182dad"}, + {file = "opentelemetry_exporter_otlp_proto_grpc-1.23.0.tar.gz", hash = "sha256:aa1a012eea5342bfef51fcf3f7f22601dcb0f0984a07ffe6025b2fbb6d91a2a9"}, ] [package.dependencies] -backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""} deprecated = ">=1.2.6" googleapis-common-protos = ">=1.52,<2.0" grpcio = ">=1.0.0,<2.0.0" opentelemetry-api = ">=1.15,<2.0" -opentelemetry-exporter-otlp-proto-common = "1.20.0" -opentelemetry-proto = "1.20.0" -opentelemetry-sdk = ">=1.20.0,<1.21.0" +opentelemetry-exporter-otlp-proto-common = "1.23.0" +opentelemetry-proto = "1.23.0" +opentelemetry-sdk = ">=1.23.0,<1.24.0" [package.extras] test = ["pytest-grpc"] [[package]] name = "opentelemetry-exporter-otlp-proto-http" -version = "1.20.0" +version = "1.23.0" description = "OpenTelemetry Collector Protobuf over HTTP Exporter" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "opentelemetry_exporter_otlp_proto_http-1.20.0-py3-none-any.whl", hash = "sha256:03f6e768ad25f1c3a9586e8c695db4a4adf978f8546a1285fa962e16bfbb0bd6"}, - {file = "opentelemetry_exporter_otlp_proto_http-1.20.0.tar.gz", hash = "sha256:500f42821420fdf0759193d6438edc0f4e984a83e14c08a23023c06a188861b4"}, + {file = "opentelemetry_exporter_otlp_proto_http-1.23.0-py3-none-any.whl", hash = "sha256:ad853b58681df8efcb2cfc93be2b5fd86351c99ff4ab47dc917da384b8650d91"}, + {file = "opentelemetry_exporter_otlp_proto_http-1.23.0.tar.gz", hash = "sha256:088eac2320f4a604e2d9ff71aced71fdae601ac6457005fb0303d6bbbf44e6ca"}, ] [package.dependencies] -backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""} deprecated = ">=1.2.6" googleapis-common-protos = ">=1.52,<2.0" opentelemetry-api = ">=1.15,<2.0" -opentelemetry-exporter-otlp-proto-common = "1.20.0" -opentelemetry-proto = "1.20.0" -opentelemetry-sdk = ">=1.20.0,<1.21.0" +opentelemetry-exporter-otlp-proto-common = "1.23.0" +opentelemetry-proto = "1.23.0" +opentelemetry-sdk = ">=1.23.0,<1.24.0" requests = ">=2.7,<3.0" [package.extras] -test = ["responses (==0.22.0)"] +test = ["responses (>=0.22.0,<0.25)"] [[package]] name = "opentelemetry-proto" -version = "1.20.0" +version = "1.23.0" description = "OpenTelemetry Python Proto" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "opentelemetry_proto-1.20.0-py3-none-any.whl", hash = "sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b"}, - {file = "opentelemetry_proto-1.20.0.tar.gz", hash = "sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2"}, + {file = "opentelemetry_proto-1.23.0-py3-none-any.whl", hash = "sha256:4c017deca052cb287a6003b7c989ed8b47af65baeb5d57ebf93dde0793f78509"}, + {file = "opentelemetry_proto-1.23.0.tar.gz", hash = "sha256:e6aaf8b7ace8d021942d546161401b83eed90f9f2cc6f13275008cea730e4651"}, ] [package.dependencies] @@ -5385,29 +5417,29 @@ protobuf = ">=3.19,<5.0" [[package]] name = "opentelemetry-sdk" -version = "1.20.0" +version = "1.23.0" description = "OpenTelemetry Python SDK" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "opentelemetry_sdk-1.20.0-py3-none-any.whl", hash = "sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804"}, - {file = "opentelemetry_sdk-1.20.0.tar.gz", hash = "sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8"}, + {file = "opentelemetry_sdk-1.23.0-py3-none-any.whl", hash = "sha256:a93c96990ac0f07c6d679e2f1015864ff7a4f5587122dd5af968034436efb1fd"}, + {file = "opentelemetry_sdk-1.23.0.tar.gz", hash = "sha256:9ddf60195837b59e72fd2033d6a47e2b59a0f74f0ec37d89387d89e3da8cab7f"}, ] [package.dependencies] -opentelemetry-api = "1.20.0" -opentelemetry-semantic-conventions = "0.41b0" +opentelemetry-api = "1.23.0" +opentelemetry-semantic-conventions = "0.44b0" typing-extensions = ">=3.7.4" [[package]] name = "opentelemetry-semantic-conventions" -version = "0.41b0" +version = "0.44b0" description = "OpenTelemetry Semantic Conventions" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "opentelemetry_semantic_conventions-0.41b0-py3-none-any.whl", hash = "sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2"}, - {file = "opentelemetry_semantic_conventions-0.41b0.tar.gz", hash = "sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7"}, + {file = "opentelemetry_semantic_conventions-0.44b0-py3-none-any.whl", hash = "sha256:7c434546c9cbd797ab980cc88bf9ff3f4a5a28f941117cad21694e43d5d92019"}, + {file = "opentelemetry_semantic_conventions-0.44b0.tar.gz", hash = "sha256:2e997cb28cd4ca81a25a9a43365f593d0c2b76be0685015349a89abdf1aa4ffa"}, ] [[package]] @@ -5426,61 +5458,61 @@ dev = ["black", "mypy", "pytest"] [[package]] name = "orjson" -version = "3.9.10" +version = "3.9.15" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.9.10-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c18a4da2f50050a03d1da5317388ef84a16013302a5281d6f64e4a3f406aabc4"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5148bab4d71f58948c7c39d12b14a9005b6ab35a0bdf317a8ade9a9e4d9d0bd5"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cf7837c3b11a2dfb589f8530b3cff2bd0307ace4c301e8997e95c7468c1378e"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c62b6fa2961a1dcc51ebe88771be5319a93fd89bd247c9ddf732bc250507bc2b"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deeb3922a7a804755bbe6b5be9b312e746137a03600f488290318936c1a2d4dc"}, - {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1234dc92d011d3554d929b6cf058ac4a24d188d97be5e04355f1b9223e98bbe9"}, - {file = "orjson-3.9.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:06ad5543217e0e46fd7ab7ea45d506c76f878b87b1b4e369006bdb01acc05a83"}, - {file = "orjson-3.9.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4fd72fab7bddce46c6826994ce1e7de145ae1e9e106ebb8eb9ce1393ca01444d"}, - {file = "orjson-3.9.10-cp310-none-win32.whl", hash = "sha256:b5b7d4a44cc0e6ff98da5d56cde794385bdd212a86563ac321ca64d7f80c80d1"}, - {file = "orjson-3.9.10-cp310-none-win_amd64.whl", hash = "sha256:61804231099214e2f84998316f3238c4c2c4aaec302df12b21a64d72e2a135c7"}, - {file = "orjson-3.9.10-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:cff7570d492bcf4b64cc862a6e2fb77edd5e5748ad715f487628f102815165e9"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8bc367f725dfc5cabeed1ae079d00369900231fbb5a5280cf0736c30e2adf7"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c812312847867b6335cfb264772f2a7e85b3b502d3a6b0586aa35e1858528ab1"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9edd2856611e5050004f4722922b7b1cd6268da34102667bd49d2a2b18bafb81"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:674eb520f02422546c40401f4efaf8207b5e29e420c17051cddf6c02783ff5ca"}, - {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d0dc4310da8b5f6415949bd5ef937e60aeb0eb6b16f95041b5e43e6200821fb"}, - {file = "orjson-3.9.10-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e99c625b8c95d7741fe057585176b1b8783d46ed4b8932cf98ee145c4facf499"}, - {file = "orjson-3.9.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec6f18f96b47299c11203edfbdc34e1b69085070d9a3d1f302810cc23ad36bf3"}, - {file = "orjson-3.9.10-cp311-none-win32.whl", hash = "sha256:ce0a29c28dfb8eccd0f16219360530bc3cfdf6bf70ca384dacd36e6c650ef8e8"}, - {file = "orjson-3.9.10-cp311-none-win_amd64.whl", hash = "sha256:cf80b550092cc480a0cbd0750e8189247ff45457e5a023305f7ef1bcec811616"}, - {file = "orjson-3.9.10-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:602a8001bdf60e1a7d544be29c82560a7b49319a0b31d62586548835bbe2c862"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f295efcd47b6124b01255d1491f9e46f17ef40d3d7eabf7364099e463fb45f0f"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92af0d00091e744587221e79f68d617b432425a7e59328ca4c496f774a356071"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5a02360e73e7208a872bf65a7554c9f15df5fe063dc047f79738998b0506a14"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:858379cbb08d84fe7583231077d9a36a1a20eb72f8c9076a45df8b083724ad1d"}, - {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666c6fdcaac1f13eb982b649e1c311c08d7097cbda24f32612dae43648d8db8d"}, - {file = "orjson-3.9.10-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3fb205ab52a2e30354640780ce4587157a9563a68c9beaf52153e1cea9aa0921"}, - {file = "orjson-3.9.10-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7ec960b1b942ee3c69323b8721df2a3ce28ff40e7ca47873ae35bfafeb4555ca"}, - {file = "orjson-3.9.10-cp312-none-win_amd64.whl", hash = "sha256:3e892621434392199efb54e69edfff9f699f6cc36dd9553c5bf796058b14b20d"}, - {file = "orjson-3.9.10-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8b9ba0ccd5a7f4219e67fbbe25e6b4a46ceef783c42af7dbc1da548eb28b6531"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e2ecd1d349e62e3960695214f40939bbfdcaeaaa62ccc638f8e651cf0970e5f"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f433be3b3f4c66016d5a20e5b4444ef833a1f802ced13a2d852c637f69729c1"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4689270c35d4bb3102e103ac43c3f0b76b169760aff8bcf2d401a3e0e58cdb7f"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd176f528a8151a6efc5359b853ba3cc0e82d4cd1fab9c1300c5d957dc8f48c"}, - {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a2ce5ea4f71681623f04e2b7dadede3c7435dfb5e5e2d1d0ec25b35530e277b"}, - {file = "orjson-3.9.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:49f8ad582da6e8d2cf663c4ba5bf9f83cc052570a3a767487fec6af839b0e777"}, - {file = "orjson-3.9.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2a11b4b1a8415f105d989876a19b173f6cdc89ca13855ccc67c18efbd7cbd1f8"}, - {file = "orjson-3.9.10-cp38-none-win32.whl", hash = "sha256:a353bf1f565ed27ba71a419b2cd3db9d6151da426b61b289b6ba1422a702e643"}, - {file = "orjson-3.9.10-cp38-none-win_amd64.whl", hash = "sha256:e28a50b5be854e18d54f75ef1bb13e1abf4bc650ab9d635e4258c58e71eb6ad5"}, - {file = "orjson-3.9.10-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ee5926746232f627a3be1cc175b2cfad24d0170d520361f4ce3fa2fd83f09e1d"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a73160e823151f33cdc05fe2cea557c5ef12fdf276ce29bb4f1c571c8368a60"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c338ed69ad0b8f8f8920c13f529889fe0771abbb46550013e3c3d01e5174deef"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5869e8e130e99687d9e4be835116c4ebd83ca92e52e55810962446d841aba8de"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2c1e559d96a7f94a4f581e2a32d6d610df5840881a8cba8f25e446f4d792df3"}, - {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a3a3a72c9811b56adf8bcc829b010163bb2fc308877e50e9910c9357e78521"}, - {file = "orjson-3.9.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7f8fb7f5ecf4f6355683ac6881fd64b5bb2b8a60e3ccde6ff799e48791d8f864"}, - {file = "orjson-3.9.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c943b35ecdf7123b2d81d225397efddf0bce2e81db2f3ae633ead38e85cd5ade"}, - {file = "orjson-3.9.10-cp39-none-win32.whl", hash = "sha256:fb0b361d73f6b8eeceba47cd37070b5e6c9de5beaeaa63a1cb35c7e1a73ef088"}, - {file = "orjson-3.9.10-cp39-none-win_amd64.whl", hash = "sha256:b90f340cb6397ec7a854157fac03f0c82b744abdd1c0941a024c3c29d1340aff"}, - {file = "orjson-3.9.10.tar.gz", hash = "sha256:9ebbdbd6a046c304b1845e96fbcc5559cd296b4dfd3ad2509e33c4d9ce07d6a1"}, + {file = "orjson-3.9.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d61f7ce4727a9fa7680cd6f3986b0e2c732639f46a5e0156e550e35258aa313a"}, + {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4feeb41882e8aa17634b589533baafdceb387e01e117b1ec65534ec724023d04"}, + {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fbbeb3c9b2edb5fd044b2a070f127a0ac456ffd079cb82746fc84af01ef021a4"}, + {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b66bcc5670e8a6b78f0313bcb74774c8291f6f8aeef10fe70e910b8040f3ab75"}, + {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2973474811db7b35c30248d1129c64fd2bdf40d57d84beed2a9a379a6f57d0ab"}, + {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fe41b6f72f52d3da4db524c8653e46243c8c92df826ab5ffaece2dba9cccd58"}, + {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4228aace81781cc9d05a3ec3a6d2673a1ad0d8725b4e915f1089803e9efd2b99"}, + {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6f7b65bfaf69493c73423ce9db66cfe9138b2f9ef62897486417a8fcb0a92bfe"}, + {file = "orjson-3.9.15-cp310-none-win32.whl", hash = "sha256:2d99e3c4c13a7b0fb3792cc04c2829c9db07838fb6973e578b85c1745e7d0ce7"}, + {file = "orjson-3.9.15-cp310-none-win_amd64.whl", hash = "sha256:b725da33e6e58e4a5d27958568484aa766e825e93aa20c26c91168be58e08cbb"}, + {file = "orjson-3.9.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c8e8fe01e435005d4421f183038fc70ca85d2c1e490f51fb972db92af6e047c2"}, + {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87f1097acb569dde17f246faa268759a71a2cb8c96dd392cd25c668b104cad2f"}, + {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff0f9913d82e1d1fadbd976424c316fbc4d9c525c81d047bbdd16bd27dd98cfc"}, + {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8055ec598605b0077e29652ccfe9372247474375e0e3f5775c91d9434e12d6b1"}, + {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6768a327ea1ba44c9114dba5fdda4a214bdb70129065cd0807eb5f010bfcbb5"}, + {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12365576039b1a5a47df01aadb353b68223da413e2e7f98c02403061aad34bde"}, + {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:71c6b009d431b3839d7c14c3af86788b3cfac41e969e3e1c22f8a6ea13139404"}, + {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e18668f1bd39e69b7fed19fa7cd1cd110a121ec25439328b5c89934e6d30d357"}, + {file = "orjson-3.9.15-cp311-none-win32.whl", hash = "sha256:62482873e0289cf7313461009bf62ac8b2e54bc6f00c6fabcde785709231a5d7"}, + {file = "orjson-3.9.15-cp311-none-win_amd64.whl", hash = "sha256:b3d336ed75d17c7b1af233a6561cf421dee41d9204aa3cfcc6c9c65cd5bb69a8"}, + {file = "orjson-3.9.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:82425dd5c7bd3adfe4e94c78e27e2fa02971750c2b7ffba648b0f5d5cc016a73"}, + {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c51378d4a8255b2e7c1e5cc430644f0939539deddfa77f6fac7b56a9784160a"}, + {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6ae4e06be04dc00618247c4ae3f7c3e561d5bc19ab6941427f6d3722a0875ef7"}, + {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcef128f970bb63ecf9a65f7beafd9b55e3aaf0efc271a4154050fc15cdb386e"}, + {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b72758f3ffc36ca566ba98a8e7f4f373b6c17c646ff8ad9b21ad10c29186f00d"}, + {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c57bc7b946cf2efa67ac55766e41764b66d40cbd9489041e637c1304400494"}, + {file = "orjson-3.9.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:946c3a1ef25338e78107fba746f299f926db408d34553b4754e90a7de1d44068"}, + {file = "orjson-3.9.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2f256d03957075fcb5923410058982aea85455d035607486ccb847f095442bda"}, + {file = "orjson-3.9.15-cp312-none-win_amd64.whl", hash = "sha256:5bb399e1b49db120653a31463b4a7b27cf2fbfe60469546baf681d1b39f4edf2"}, + {file = "orjson-3.9.15-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b17f0f14a9c0ba55ff6279a922d1932e24b13fc218a3e968ecdbf791b3682b25"}, + {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f6cbd8e6e446fb7e4ed5bac4661a29e43f38aeecbf60c4b900b825a353276a1"}, + {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:76bc6356d07c1d9f4b782813094d0caf1703b729d876ab6a676f3aaa9a47e37c"}, + {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fdfa97090e2d6f73dced247a2f2d8004ac6449df6568f30e7fa1a045767c69a6"}, + {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7413070a3e927e4207d00bd65f42d1b780fb0d32d7b1d951f6dc6ade318e1b5a"}, + {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cf1596680ac1f01839dba32d496136bdd5d8ffb858c280fa82bbfeb173bdd40"}, + {file = "orjson-3.9.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:809d653c155e2cc4fd39ad69c08fdff7f4016c355ae4b88905219d3579e31eb7"}, + {file = "orjson-3.9.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:920fa5a0c5175ab14b9c78f6f820b75804fb4984423ee4c4f1e6d748f8b22bc1"}, + {file = "orjson-3.9.15-cp38-none-win32.whl", hash = "sha256:2b5c0f532905e60cf22a511120e3719b85d9c25d0e1c2a8abb20c4dede3b05a5"}, + {file = "orjson-3.9.15-cp38-none-win_amd64.whl", hash = "sha256:67384f588f7f8daf040114337d34a5188346e3fae6c38b6a19a2fe8c663a2f9b"}, + {file = "orjson-3.9.15-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6fc2fe4647927070df3d93f561d7e588a38865ea0040027662e3e541d592811e"}, + {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34cbcd216e7af5270f2ffa63a963346845eb71e174ea530867b7443892d77180"}, + {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f541587f5c558abd93cb0de491ce99a9ef8d1ae29dd6ab4dbb5a13281ae04cbd"}, + {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92255879280ef9c3c0bcb327c5a1b8ed694c290d61a6a532458264f887f052cb"}, + {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:05a1f57fb601c426635fcae9ddbe90dfc1ed42245eb4c75e4960440cac667262"}, + {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ede0bde16cc6e9b96633df1631fbcd66491d1063667f260a4f2386a098393790"}, + {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e88b97ef13910e5f87bcbc4dd7979a7de9ba8702b54d3204ac587e83639c0c2b"}, + {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57d5d8cf9c27f7ef6bc56a5925c7fbc76b61288ab674eb352c26ac780caa5b10"}, + {file = "orjson-3.9.15-cp39-none-win32.whl", hash = "sha256:001f4eb0ecd8e9ebd295722d0cbedf0748680fb9998d3993abaed2f40587257a"}, + {file = "orjson-3.9.15-cp39-none-win_amd64.whl", hash = "sha256:ea0b183a5fe6b2b45f3b854b0d19c4e932d6f5934ae1f723b07cf9560edd4ec7"}, + {file = "orjson-3.9.15.tar.gz", hash = "sha256:95cae920959d772f30ab36d3b25f83bb0f3be671e986c72ce22f8fa700dae061"}, ] [[package]] @@ -5506,40 +5538,40 @@ files = [ [[package]] name = "pandas" -version = "2.2.0" +version = "2.2.1" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, - {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, - {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, - {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, - {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, - {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, - {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, - {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, - {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, - {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, - {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, - {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, - {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, - {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, - {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, - {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, - {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, - {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, + {file = "pandas-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8df8612be9cd1c7797c93e1c5df861b2ddda0b48b08f2c3eaa0702cf88fb5f88"}, + {file = "pandas-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f573ab277252ed9aaf38240f3b54cfc90fff8e5cab70411ee1d03f5d51f3944"}, + {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f02a3a6c83df4026e55b63c1f06476c9aa3ed6af3d89b4f04ea656ccdaaaa359"}, + {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38ce92cb22a4bea4e3929429aa1067a454dcc9c335799af93ba9be21b6beb51"}, + {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c2ce852e1cf2509a69e98358e8458775f89599566ac3775e70419b98615f4b06"}, + {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53680dc9b2519cbf609c62db3ed7c0b499077c7fefda564e330286e619ff0dd9"}, + {file = "pandas-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94e714a1cca63e4f5939cdce5f29ba8d415d85166be3441165edd427dc9f6bc0"}, + {file = "pandas-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f821213d48f4ab353d20ebc24e4faf94ba40d76680642fb7ce2ea31a3ad94f9b"}, + {file = "pandas-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70e00c2d894cb230e5c15e4b1e1e6b2b478e09cf27cc593a11ef955b9ecc81a"}, + {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97fbb5387c69209f134893abc788a6486dbf2f9e511070ca05eed4b930b1b02"}, + {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101d0eb9c5361aa0146f500773395a03839a5e6ecde4d4b6ced88b7e5a1a6403"}, + {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7d2ed41c319c9fb4fd454fe25372028dfa417aacb9790f68171b2e3f06eae8cd"}, + {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5d3c00557d657c8773ef9ee702c61dd13b9d7426794c9dfeb1dc4a0bf0ebc7"}, + {file = "pandas-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:06cf591dbaefb6da9de8472535b185cba556d0ce2e6ed28e21d919704fef1a9e"}, + {file = "pandas-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:88ecb5c01bb9ca927ebc4098136038519aa5d66b44671861ffab754cae75102c"}, + {file = "pandas-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04f6ec3baec203c13e3f8b139fb0f9f86cd8c0b94603ae3ae8ce9a422e9f5bee"}, + {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a935a90a76c44fe170d01e90a3594beef9e9a6220021acfb26053d01426f7dc2"}, + {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c391f594aae2fd9f679d419e9a4d5ba4bce5bb13f6a989195656e7dc4b95c8f0"}, + {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9d1265545f579edf3f8f0cb6f89f234f5e44ba725a34d86535b1a1d38decbccc"}, + {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11940e9e3056576ac3244baef2fedade891977bcc1cb7e5cc8f8cc7d603edc89"}, + {file = "pandas-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acf681325ee1c7f950d058b05a820441075b0dd9a2adf5c4835b9bc056bf4fb"}, + {file = "pandas-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9bd8a40f47080825af4317d0340c656744f2bfdb6819f818e6ba3cd24c0e1397"}, + {file = "pandas-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df0c37ebd19e11d089ceba66eba59a168242fc6b7155cba4ffffa6eccdfb8f16"}, + {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:739cc70eaf17d57608639e74d63387b0d8594ce02f69e7a0b046f117974b3019"}, + {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d3558d263073ed95e46f4650becff0c5e1ffe0fc3a015de3c79283dfbdb3df"}, + {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4aa1d8707812a658debf03824016bf5ea0d516afdea29b7dc14cf687bc4d4ec6"}, + {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:76f27a809cda87e07f192f001d11adc2b930e93a2b0c4a236fde5429527423be"}, + {file = "pandas-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:1ba21b1d5c0e43416218db63037dbe1a01fc101dc6e6024bcad08123e48004ab"}, + {file = "pandas-2.2.1.tar.gz", hash = "sha256:0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572"}, ] [package.dependencies] @@ -5567,6 +5599,7 @@ parquet = ["pyarrow (>=10.0.1)"] performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] plot = ["matplotlib (>=3.6.3)"] postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] spss = ["pyreadstat (>=1.2.0)"] sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] @@ -5574,13 +5607,13 @@ xml = ["lxml (>=4.9.2)"] [[package]] name = "pandas-gbq" -version = "0.19.2" +version = "0.21.0" description = "Google BigQuery connector for pandas" optional = false python-versions = ">=3.7" files = [ - {file = "pandas-gbq-0.19.2.tar.gz", hash = "sha256:b0f7fa84a2be0fe767e33a008ca7e4ad9a9e3ac67255fd0a41fc19b503138447"}, - {file = "pandas_gbq-0.19.2-py2.py3-none-any.whl", hash = "sha256:0ef8da3e4088053a2bea069ed688992a44b52af67dadb97eee494b32a2147563"}, + {file = "pandas-gbq-0.21.0.tar.gz", hash = "sha256:f9c137430d34059f380af6c37781334d0be0a16021a8bdbf2836687e50ab63af"}, + {file = "pandas_gbq-0.21.0-py2.py3-none-any.whl", hash = "sha256:1f82db5048e86516d7bafae68a911982c1f2590ea117ad72879cc981b050bf11"}, ] [package.dependencies] @@ -5591,6 +5624,7 @@ google-auth-oauthlib = ">=0.7.0" google-cloud-bigquery = ">=3.3.5,<4.0.0dev" google-cloud-bigquery-storage = ">=2.16.2,<3.0.0dev" numpy = ">=1.16.6" +packaging = ">=20.0.0" pandas = ">=1.1.4" pyarrow = ">=3.0.0" pydata-google-auth = ">=1.5.0" @@ -5630,48 +5664,113 @@ testing = ["docopt", "pytest (<6.0.0)"] [[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 = "pendulum" -version = "2.1.2" +version = "3.0.0" description = "Python datetimes made easy" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.8" files = [ - {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, - {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, - {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, - {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, - {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, - {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, - {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, - {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, - {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, - {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, - {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, - {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, - {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, - {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, - {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, - {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, -] - -[package.dependencies] -python-dateutil = ">=2.6,<3.0" -pytzdata = ">=2020.1" + {file = "pendulum-3.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2cf9e53ef11668e07f73190c805dbdf07a1939c3298b78d5a9203a86775d1bfd"}, + {file = "pendulum-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fb551b9b5e6059377889d2d878d940fd0bbb80ae4810543db18e6f77b02c5ef6"}, + {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c58227ac260d5b01fc1025176d7b31858c9f62595737f350d22124a9a3ad82d"}, + {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60fb6f415fea93a11c52578eaa10594568a6716602be8430b167eb0d730f3332"}, + {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b69f6b4dbcb86f2c2fe696ba991e67347bcf87fe601362a1aba6431454b46bde"}, + {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:138afa9c373ee450ede206db5a5e9004fd3011b3c6bbe1e57015395cd076a09f"}, + {file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:83d9031f39c6da9677164241fd0d37fbfc9dc8ade7043b5d6d62f56e81af8ad2"}, + {file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c2308af4033fa534f089595bcd40a95a39988ce4059ccd3dc6acb9ef14ca44a"}, + {file = "pendulum-3.0.0-cp310-none-win_amd64.whl", hash = "sha256:9a59637cdb8462bdf2dbcb9d389518c0263799189d773ad5c11db6b13064fa79"}, + {file = "pendulum-3.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3725245c0352c95d6ca297193192020d1b0c0f83d5ee6bb09964edc2b5a2d508"}, + {file = "pendulum-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c035f03a3e565ed132927e2c1b691de0dbf4eb53b02a5a3c5a97e1a64e17bec"}, + {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:597e66e63cbd68dd6d58ac46cb7a92363d2088d37ccde2dae4332ef23e95cd00"}, + {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99a0f8172e19f3f0c0e4ace0ad1595134d5243cf75985dc2233e8f9e8de263ca"}, + {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:77d8839e20f54706aed425bec82a83b4aec74db07f26acd039905d1237a5e1d4"}, + {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afde30e8146292b059020fbc8b6f8fd4a60ae7c5e6f0afef937bbb24880bdf01"}, + {file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:660434a6fcf6303c4efd36713ca9212c753140107ee169a3fc6c49c4711c2a05"}, + {file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dee9e5a48c6999dc1106eb7eea3e3a50e98a50651b72c08a87ee2154e544b33e"}, + {file = "pendulum-3.0.0-cp311-none-win_amd64.whl", hash = "sha256:d4cdecde90aec2d67cebe4042fd2a87a4441cc02152ed7ed8fb3ebb110b94ec4"}, + {file = "pendulum-3.0.0-cp311-none-win_arm64.whl", hash = "sha256:773c3bc4ddda2dda9f1b9d51fe06762f9200f3293d75c4660c19b2614b991d83"}, + {file = "pendulum-3.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:409e64e41418c49f973d43a28afe5df1df4f1dd87c41c7c90f1a63f61ae0f1f7"}, + {file = "pendulum-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a38ad2121c5ec7c4c190c7334e789c3b4624798859156b138fcc4d92295835dc"}, + {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fde4d0b2024b9785f66b7f30ed59281bd60d63d9213cda0eb0910ead777f6d37"}, + {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b2c5675769fb6d4c11238132962939b960fcb365436b6d623c5864287faa319"}, + {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8af95e03e066826f0f4c65811cbee1b3123d4a45a1c3a2b4fc23c4b0dff893b5"}, + {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2165a8f33cb15e06c67070b8afc87a62b85c5a273e3aaa6bc9d15c93a4920d6f"}, + {file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ad5e65b874b5e56bd942546ea7ba9dd1d6a25121db1c517700f1c9de91b28518"}, + {file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17fe4b2c844bbf5f0ece69cfd959fa02957c61317b2161763950d88fed8e13b9"}, + {file = "pendulum-3.0.0-cp312-none-win_amd64.whl", hash = "sha256:78f8f4e7efe5066aca24a7a57511b9c2119f5c2b5eb81c46ff9222ce11e0a7a5"}, + {file = "pendulum-3.0.0-cp312-none-win_arm64.whl", hash = "sha256:28f49d8d1e32aae9c284a90b6bb3873eee15ec6e1d9042edd611b22a94ac462f"}, + {file = "pendulum-3.0.0-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d4e2512f4e1a4670284a153b214db9719eb5d14ac55ada5b76cbdb8c5c00399d"}, + {file = "pendulum-3.0.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:3d897eb50883cc58d9b92f6405245f84b9286cd2de6e8694cb9ea5cb15195a32"}, + {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e169cc2ca419517f397811bbe4589cf3cd13fca6dc38bb352ba15ea90739ebb"}, + {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f17c3084a4524ebefd9255513692f7e7360e23c8853dc6f10c64cc184e1217ab"}, + {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:826d6e258052715f64d05ae0fc9040c0151e6a87aae7c109ba9a0ed930ce4000"}, + {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2aae97087872ef152a0c40e06100b3665d8cb86b59bc8471ca7c26132fccd0f"}, + {file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ac65eeec2250d03106b5e81284ad47f0d417ca299a45e89ccc69e36130ca8bc7"}, + {file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a5346d08f3f4a6e9e672187faa179c7bf9227897081d7121866358af369f44f9"}, + {file = "pendulum-3.0.0-cp37-none-win_amd64.whl", hash = "sha256:235d64e87946d8f95c796af34818c76e0f88c94d624c268693c85b723b698aa9"}, + {file = "pendulum-3.0.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:6a881d9c2a7f85bc9adafcfe671df5207f51f5715ae61f5d838b77a1356e8b7b"}, + {file = "pendulum-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d7762d2076b9b1cb718a6631ad6c16c23fc3fac76cbb8c454e81e80be98daa34"}, + {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e8e36a8130819d97a479a0e7bf379b66b3b1b520e5dc46bd7eb14634338df8c"}, + {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7dc843253ac373358ffc0711960e2dd5b94ab67530a3e204d85c6e8cb2c5fa10"}, + {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a78ad3635d609ceb1e97d6aedef6a6a6f93433ddb2312888e668365908c7120"}, + {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b30a137e9e0d1f751e60e67d11fc67781a572db76b2296f7b4d44554761049d6"}, + {file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c95984037987f4a457bb760455d9ca80467be792236b69d0084f228a8ada0162"}, + {file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d29c6e578fe0f893766c0d286adbf0b3c726a4e2341eba0917ec79c50274ec16"}, + {file = "pendulum-3.0.0-cp38-none-win_amd64.whl", hash = "sha256:deaba8e16dbfcb3d7a6b5fabdd5a38b7c982809567479987b9c89572df62e027"}, + {file = "pendulum-3.0.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b11aceea5b20b4b5382962b321dbc354af0defe35daa84e9ff3aae3c230df694"}, + {file = "pendulum-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90d4d504e82ad236afac9adca4d6a19e4865f717034fc69bafb112c320dcc8f"}, + {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:825799c6b66e3734227756fa746cc34b3549c48693325b8b9f823cb7d21b19ac"}, + {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad769e98dc07972e24afe0cff8d365cb6f0ebc7e65620aa1976fcfbcadc4c6f3"}, + {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6fc26907eb5fb8cc6188cc620bc2075a6c534d981a2f045daa5f79dfe50d512"}, + {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c717eab1b6d898c00a3e0fa7781d615b5c5136bbd40abe82be100bb06df7a56"}, + {file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3ddd1d66d1a714ce43acfe337190be055cdc221d911fc886d5a3aae28e14b76d"}, + {file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:822172853d7a9cf6da95d7b66a16c7160cb99ae6df55d44373888181d7a06edc"}, + {file = "pendulum-3.0.0-cp39-none-win_amd64.whl", hash = "sha256:840de1b49cf1ec54c225a2a6f4f0784d50bd47f68e41dc005b7f67c7d5b5f3ae"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b1f74d1e6ffe5d01d6023870e2ce5c2191486928823196f8575dcc786e107b1"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:729e9f93756a2cdfa77d0fc82068346e9731c7e884097160603872686e570f07"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e586acc0b450cd21cbf0db6bae386237011b75260a3adceddc4be15334689a9a"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22e7944ffc1f0099a79ff468ee9630c73f8c7835cd76fdb57ef7320e6a409df4"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fa30af36bd8e50686846bdace37cf6707bdd044e5cb6e1109acbad3277232e04"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:440215347b11914ae707981b9a57ab9c7b6983ab0babde07063c6ee75c0dc6e7"}, + {file = "pendulum-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:314c4038dc5e6a52991570f50edb2f08c339debdf8cea68ac355b32c4174e820"}, + {file = "pendulum-3.0.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5acb1d386337415f74f4d1955c4ce8d0201978c162927d07df8eb0692b2d8533"}, + {file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a789e12fbdefaffb7b8ac67f9d8f22ba17a3050ceaaa635cd1cc4645773a4b1e"}, + {file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:860aa9b8a888e5913bd70d819306749e5eb488e6b99cd6c47beb701b22bdecf5"}, + {file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5ebc65ea033ef0281368217fbf59f5cb05b338ac4dd23d60959c7afcd79a60a0"}, + {file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9fef18ab0386ef6a9ac7bad7e43ded42c83ff7ad412f950633854f90d59afa8"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1c134ba2f0571d0b68b83f6972e2307a55a5a849e7dac8505c715c531d2a8795"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:385680812e7e18af200bb9b4a49777418c32422d05ad5a8eb85144c4a285907b"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9eec91cd87c59fb32ec49eb722f375bd58f4be790cae11c1b70fac3ee4f00da0"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4386bffeca23c4b69ad50a36211f75b35a4deb6210bdca112ac3043deb7e494a"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dfbcf1661d7146d7698da4b86e7f04814221081e9fe154183e34f4c5f5fa3bf8"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:04a1094a5aa1daa34a6b57c865b25f691848c61583fb22722a4df5699f6bf74c"}, + {file = "pendulum-3.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5b0ec85b9045bd49dd3a3493a5e7ddfd31c36a2a60da387c419fa04abcaecb23"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0a15b90129765b705eb2039062a6daf4d22c4e28d1a54fa260892e8c3ae6e157"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:bb8f6d7acd67a67d6fedd361ad2958ff0539445ef51cbe8cd288db4306503cd0"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd69b15374bef7e4b4440612915315cc42e8575fcda2a3d7586a0d88192d0c88"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc00f8110db6898360c53c812872662e077eaf9c75515d53ecc65d886eec209a"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:83a44e8b40655d0ba565a5c3d1365d27e3e6778ae2a05b69124db9e471255c4a"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1a3604e9fbc06b788041b2a8b78f75c243021e0f512447806a6d37ee5214905d"}, + {file = "pendulum-3.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:92c307ae7accebd06cbae4729f0ba9fa724df5f7d91a0964b1b972a22baa482b"}, + {file = "pendulum-3.0.0.tar.gz", hash = "sha256:5d034998dea404ec31fae27af6b22cff1708f830a1ed7353be4d1019bb9f584e"}, +] + +[package.dependencies] +python-dateutil = ">=2.6" +tzdata = ">=2020.1" + +[package.extras] +test = ["time-machine (>=2.6.0)"] [[package]] name = "pep8-naming" @@ -5689,13 +5788,13 @@ flake8 = ">=5.0.0" [[package]] name = "pexpect" -version = "4.8.0" +version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" files = [ - {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, - {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, ] [package.dependencies] @@ -5703,95 +5802,113 @@ ptyprocess = ">=0.5" [[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 = "platformdirs" -version = "3.11.0" +version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, - {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, ] [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)"] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] [[package]] name = "plotly" -version = "5.18.0" +version = "5.19.0" description = "An open-source, interactive data visualization library for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "plotly-5.18.0-py3-none-any.whl", hash = "sha256:23aa8ea2f4fb364a20d34ad38235524bd9d691bf5299e800bca608c31e8db8de"}, - {file = "plotly-5.18.0.tar.gz", hash = "sha256:360a31e6fbb49d12b007036eb6929521343d6bee2236f8459915821baefa2cbb"}, + {file = "plotly-5.19.0-py3-none-any.whl", hash = "sha256:906abcc5f15945765328c5d47edaa884bc99f5985fbc61e8cd4dc361f4ff8f5a"}, + {file = "plotly-5.19.0.tar.gz", hash = "sha256:5ea91a56571292ade3e3bc9bf712eba0b95a1fb0a941375d978cc79432e055f4"}, ] [package.dependencies] @@ -5800,13 +5917,13 @@ tenacity = ">=6.2.0" [[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] @@ -5834,13 +5951,13 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p [[package]] name = "pre-commit" -version = "3.6.0" +version = "3.6.2" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" files = [ - {file = "pre_commit-3.6.0-py2.py3-none-any.whl", hash = "sha256:c255039ef399049a5544b6ce13d135caba8f2c28c3b4033277a788f434308376"}, - {file = "pre_commit-3.6.0.tar.gz", hash = "sha256:d30bad9abf165f7785c15a21a1f46da7d0677cb00ee7ff4c579fd38922efe15d"}, + {file = "pre_commit-3.6.2-py2.py3-none-any.whl", hash = "sha256:ba637c2d7a670c10daedc059f5c49b5bd0aadbccfcd7ec15592cf9665117532c"}, + {file = "pre_commit-3.6.2.tar.gz", hash = "sha256:c3ef34f463045c88658c5b99f38c1e297abdcc0ff13f98d3370055fbbfabc67e"}, ] [package.dependencies] @@ -5880,13 +5997,13 @@ dev = ["nose", "pipreqs", "twine"] [[package]] name = "prompt-toolkit" -version = "3.0.41" +version = "3.0.43" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.41-py3-none-any.whl", hash = "sha256:f36fe301fafb7470e86aaf90f036eef600a3210be4decf461a5b1ca8403d3cb2"}, - {file = "prompt_toolkit-3.0.41.tar.gz", hash = "sha256:941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0"}, + {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] @@ -5894,13 +6011,13 @@ wcwidth = "*" [[package]] name = "proto-plus" -version = "1.22.3" +version = "1.23.0" description = "Beautiful, Pythonic protocol buffers." optional = false python-versions = ">=3.6" files = [ - {file = "proto-plus-1.22.3.tar.gz", hash = "sha256:fdcd09713cbd42480740d2fe29c990f7fbd885a67efc328aa8be6ee3e9f76a6b"}, - {file = "proto_plus-1.22.3-py3-none-any.whl", hash = "sha256:a49cd903bc0b6ab41f76bf65510439d56ca76f868adf0274e738bfdd096894df"}, + {file = "proto-plus-1.23.0.tar.gz", hash = "sha256:89075171ef11988b3fa157f5dbd8b9cf09d65fffee97e29ce403cd8defba19d2"}, + {file = "proto_plus-1.23.0-py3-none-any.whl", hash = "sha256:a829c79e619e1cf632de091013a4173deed13a55f326ef84f05af6f50ff4c82c"}, ] [package.dependencies] @@ -5942,27 +6059,27 @@ files = [ [[package]] name = "psutil" -version = "5.9.6" +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.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:fb8a697f11b0f5994550555fcfe3e69799e5b060c8ecf9e2f75c69302cc35c0d"}, - {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:91ecd2d9c00db9817a4b4192107cf6954addb5d9d67a969a4f436dbc9200f88c"}, - {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:10e8c17b4f898d64b121149afb136c53ea8b68c7531155147867b7b1ac9e7e28"}, - {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:18cd22c5db486f33998f37e2bb054cc62fd06646995285e02a51b1e08da97017"}, - {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:ca2780f5e038379e520281e4c032dddd086906ddff9ef0d1b9dcf00710e5071c"}, - {file = "psutil-5.9.6-cp27-none-win32.whl", hash = "sha256:70cb3beb98bc3fd5ac9ac617a327af7e7f826373ee64c80efd4eb2856e5051e9"}, - {file = "psutil-5.9.6-cp27-none-win_amd64.whl", hash = "sha256:51dc3d54607c73148f63732c727856f5febec1c7c336f8f41fcbd6315cce76ac"}, - {file = "psutil-5.9.6-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c69596f9fc2f8acd574a12d5f8b7b1ba3765a641ea5d60fb4736bf3c08a8214a"}, - {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92e0cc43c524834af53e9d3369245e6cc3b130e78e26100d1f63cdb0abeb3d3c"}, - {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:748c9dd2583ed86347ed65d0035f45fa8c851e8d90354c122ab72319b5f366f4"}, - {file = "psutil-5.9.6-cp36-cp36m-win32.whl", hash = "sha256:3ebf2158c16cc69db777e3c7decb3c0f43a7af94a60d72e87b2823aebac3d602"}, - {file = "psutil-5.9.6-cp36-cp36m-win_amd64.whl", hash = "sha256:ff18b8d1a784b810df0b0fff3bcb50ab941c3b8e2c8de5726f9c71c601c611aa"}, - {file = "psutil-5.9.6-cp37-abi3-win32.whl", hash = "sha256:a6f01f03bf1843280f4ad16f4bde26b817847b4c1a0db59bf6419807bc5ce05c"}, - {file = "psutil-5.9.6-cp37-abi3-win_amd64.whl", hash = "sha256:6e5fb8dc711a514da83098bc5234264e551ad980cec5f85dabf4d38ed6f15e9a"}, - {file = "psutil-5.9.6-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:daecbcbd29b289aac14ece28eca6a3e60aa361754cf6da3dfb20d4d32b6c7f57"}, - {file = "psutil-5.9.6.tar.gz", hash = "sha256:e4b92ddcd7dd4cdd3f900180ea1e104932c7bce234fb88976e2a3b296441225a"}, + {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] @@ -6017,61 +6134,61 @@ files = [ [[package]] name = "pyarrow" -version = "14.0.1" +version = "15.0.0" description = "Python library for Apache Arrow" optional = false python-versions = ">=3.8" files = [ - {file = "pyarrow-14.0.1-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:96d64e5ba7dceb519a955e5eeb5c9adcfd63f73a56aea4722e2cc81364fc567a"}, - {file = "pyarrow-14.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a8ae88c0038d1bc362a682320112ee6774f006134cd5afc291591ee4bc06505"}, - {file = "pyarrow-14.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f6f053cb66dc24091f5511e5920e45c83107f954a21032feadc7b9e3a8e7851"}, - {file = "pyarrow-14.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:906b0dc25f2be12e95975722f1e60e162437023f490dbd80d0deb7375baf3171"}, - {file = "pyarrow-14.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:78d4a77a46a7de9388b653af1c4ce539350726cd9af62e0831e4f2bd0c95a2f4"}, - {file = "pyarrow-14.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:06ca79080ef89d6529bb8e5074d4b4f6086143b2520494fcb7cf8a99079cde93"}, - {file = "pyarrow-14.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:32542164d905002c42dff896efdac79b3bdd7291b1b74aa292fac8450d0e4dcd"}, - {file = "pyarrow-14.0.1-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:c7331b4ed3401b7ee56f22c980608cf273f0380f77d0f73dd3c185f78f5a6220"}, - {file = "pyarrow-14.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:922e8b49b88da8633d6cac0e1b5a690311b6758d6f5d7c2be71acb0f1e14cd61"}, - {file = "pyarrow-14.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58c889851ca33f992ea916b48b8540735055201b177cb0dcf0596a495a667b00"}, - {file = "pyarrow-14.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30d8494870d9916bb53b2a4384948491444741cb9a38253c590e21f836b01222"}, - {file = "pyarrow-14.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:be28e1a07f20391bb0b15ea03dcac3aade29fc773c5eb4bee2838e9b2cdde0cb"}, - {file = "pyarrow-14.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:981670b4ce0110d8dcb3246410a4aabf5714db5d8ea63b15686bce1c914b1f83"}, - {file = "pyarrow-14.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:4756a2b373a28f6166c42711240643fb8bd6322467e9aacabd26b488fa41ec23"}, - {file = "pyarrow-14.0.1-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:cf87e2cec65dd5cf1aa4aba918d523ef56ef95597b545bbaad01e6433851aa10"}, - {file = "pyarrow-14.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:470ae0194fbfdfbf4a6b65b4f9e0f6e1fa0ea5b90c1ee6b65b38aecee53508c8"}, - {file = "pyarrow-14.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6263cffd0c3721c1e348062997babdf0151301f7353010c9c9a8ed47448f82ab"}, - {file = "pyarrow-14.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8089d7e77d1455d529dbd7cff08898bbb2666ee48bc4085203af1d826a33cc"}, - {file = "pyarrow-14.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fada8396bc739d958d0b81d291cfd201126ed5e7913cb73de6bc606befc30226"}, - {file = "pyarrow-14.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:2a145dab9ed7849fc1101bf03bcdc69913547f10513fdf70fc3ab6c0a50c7eee"}, - {file = "pyarrow-14.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:05fe7994745b634c5fb16ce5717e39a1ac1fac3e2b0795232841660aa76647cd"}, - {file = "pyarrow-14.0.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:a8eeef015ae69d104c4c3117a6011e7e3ecd1abec79dc87fd2fac6e442f666ee"}, - {file = "pyarrow-14.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3c76807540989fe8fcd02285dd15e4f2a3da0b09d27781abec3adc265ddbeba1"}, - {file = "pyarrow-14.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:450e4605e3c20e558485f9161a79280a61c55efe585d51513c014de9ae8d393f"}, - {file = "pyarrow-14.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:323cbe60210173ffd7db78bfd50b80bdd792c4c9daca8843ef3cd70b186649db"}, - {file = "pyarrow-14.0.1-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:0140c7e2b740e08c5a459439d87acd26b747fc408bde0a8806096ee0baaa0c15"}, - {file = "pyarrow-14.0.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:e592e482edd9f1ab32f18cd6a716c45b2c0f2403dc2af782f4e9674952e6dd27"}, - {file = "pyarrow-14.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:d264ad13605b61959f2ae7c1d25b1a5b8505b112715c961418c8396433f213ad"}, - {file = "pyarrow-14.0.1-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:01e44de9749cddc486169cb632f3c99962318e9dacac7778315a110f4bf8a450"}, - {file = "pyarrow-14.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d0351fecf0e26e152542bc164c22ea2a8e8c682726fce160ce4d459ea802d69c"}, - {file = "pyarrow-14.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33c1f6110c386464fd2e5e4ea3624466055bbe681ff185fd6c9daa98f30a3f9a"}, - {file = "pyarrow-14.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11e045dfa09855b6d3e7705a37c42e2dc2c71d608fab34d3c23df2e02df9aec3"}, - {file = "pyarrow-14.0.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:097828b55321897db0e1dbfc606e3ff8101ae5725673498cbfa7754ee0da80e4"}, - {file = "pyarrow-14.0.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1daab52050a1c48506c029e6fa0944a7b2436334d7e44221c16f6f1b2cc9c510"}, - {file = "pyarrow-14.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:3f6d5faf4f1b0d5a7f97be987cf9e9f8cd39902611e818fe134588ee99bf0283"}, - {file = "pyarrow-14.0.1.tar.gz", hash = "sha256:b8b3f4fe8d4ec15e1ef9b599b94683c5216adaed78d5cb4c606180546d1e2ee1"}, -] - -[package.dependencies] -numpy = ">=1.16.6" + {file = "pyarrow-15.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:0a524532fd6dd482edaa563b686d754c70417c2f72742a8c990b322d4c03a15d"}, + {file = "pyarrow-15.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:60a6bdb314affa9c2e0d5dddf3d9cbb9ef4a8dddaa68669975287d47ece67642"}, + {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66958fd1771a4d4b754cd385835e66a3ef6b12611e001d4e5edfcef5f30391e2"}, + {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f500956a49aadd907eaa21d4fff75f73954605eaa41f61cb94fb008cf2e00c6"}, + {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6f87d9c4f09e049c2cade559643424da84c43a35068f2a1c4653dc5b1408a929"}, + {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85239b9f93278e130d86c0e6bb455dcb66fc3fd891398b9d45ace8799a871a1e"}, + {file = "pyarrow-15.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5b8d43e31ca16aa6e12402fcb1e14352d0d809de70edd185c7650fe80e0769e3"}, + {file = "pyarrow-15.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:fa7cd198280dbd0c988df525e50e35b5d16873e2cdae2aaaa6363cdb64e3eec5"}, + {file = "pyarrow-15.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8780b1a29d3c8b21ba6b191305a2a607de2e30dab399776ff0aa09131e266340"}, + {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0ec198ccc680f6c92723fadcb97b74f07c45ff3fdec9dd765deb04955ccf19"}, + {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036a7209c235588c2f07477fe75c07e6caced9b7b61bb897c8d4e52c4b5f9555"}, + {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2bd8a0e5296797faf9a3294e9fa2dc67aa7f10ae2207920dbebb785c77e9dbe5"}, + {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e8ebed6053dbe76883a822d4e8da36860f479d55a762bd9e70d8494aed87113e"}, + {file = "pyarrow-15.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:17d53a9d1b2b5bd7d5e4cd84d018e2a45bc9baaa68f7e6e3ebed45649900ba99"}, + {file = "pyarrow-15.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:9950a9c9df24090d3d558b43b97753b8f5867fb8e521f29876aa021c52fda351"}, + {file = "pyarrow-15.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:003d680b5e422d0204e7287bb3fa775b332b3fce2996aa69e9adea23f5c8f970"}, + {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f75fce89dad10c95f4bf590b765e3ae98bcc5ba9f6ce75adb828a334e26a3d40"}, + {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca9cb0039923bec49b4fe23803807e4ef39576a2bec59c32b11296464623dc2"}, + {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9ed5a78ed29d171d0acc26a305a4b7f83c122d54ff5270810ac23c75813585e4"}, + {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6eda9e117f0402dfcd3cd6ec9bfee89ac5071c48fc83a84f3075b60efa96747f"}, + {file = "pyarrow-15.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9a3a6180c0e8f2727e6f1b1c87c72d3254cac909e609f35f22532e4115461177"}, + {file = "pyarrow-15.0.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:19a8918045993349b207de72d4576af0191beef03ea655d8bdb13762f0cd6eac"}, + {file = "pyarrow-15.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0ec076b32bacb6666e8813a22e6e5a7ef1314c8069d4ff345efa6246bc38593"}, + {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5db1769e5d0a77eb92344c7382d6543bea1164cca3704f84aa44e26c67e320fb"}, + {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2617e3bf9df2a00020dd1c1c6dce5cc343d979efe10bc401c0632b0eef6ef5b"}, + {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:d31c1d45060180131caf10f0f698e3a782db333a422038bf7fe01dace18b3a31"}, + {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:c8c287d1d479de8269398b34282e206844abb3208224dbdd7166d580804674b7"}, + {file = "pyarrow-15.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:07eb7f07dc9ecbb8dace0f58f009d3a29ee58682fcdc91337dfeb51ea618a75b"}, + {file = "pyarrow-15.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:47af7036f64fce990bb8a5948c04722e4e3ea3e13b1007ef52dfe0aa8f23cf7f"}, + {file = "pyarrow-15.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93768ccfff85cf044c418bfeeafce9a8bb0cee091bd8fd19011aff91e58de540"}, + {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6ee87fd6892700960d90abb7b17a72a5abb3b64ee0fe8db6c782bcc2d0dc0b4"}, + {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:001fca027738c5f6be0b7a3159cc7ba16a5c52486db18160909a0831b063c4e4"}, + {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:d1c48648f64aec09accf44140dccb92f4f94394b8d79976c426a5b79b11d4fa7"}, + {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:972a0141be402bb18e3201448c8ae62958c9c7923dfaa3b3d4530c835ac81aed"}, + {file = "pyarrow-15.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:f01fc5cf49081426429127aa2d427d9d98e1cb94a32cb961d583a70b7c4504e6"}, + {file = "pyarrow-15.0.0.tar.gz", hash = "sha256:876858f549d540898f927eba4ef77cd549ad8d24baa3207cf1b72e5788b50e83"}, +] + +[package.dependencies] +numpy = ">=1.16.6,<2" [[package]] name = "pyasn1" -version = "0.5.0" +version = "0.5.1" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "pyasn1-0.5.0-py2.py3-none-any.whl", hash = "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57"}, - {file = "pyasn1-0.5.0.tar.gz", hash = "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde"}, + {file = "pyasn1-0.5.1-py2.py3-none-any.whl", hash = "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58"}, + {file = "pyasn1-0.5.1.tar.gz", hash = "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"}, ] [[package]] @@ -6178,18 +6295,18 @@ files = [ [[package]] name = "pydantic" -version = "2.4.2" +version = "2.6.2" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.4.2-py3-none-any.whl", hash = "sha256:bc3ddf669d234f4220e6e1c4d96b061abe0998185a8d7855c0126782b7abc8c1"}, - {file = "pydantic-2.4.2.tar.gz", hash = "sha256:94f336138093a5d7f426aac732dcfe7ab4eb4da243c88f891d65deb4a2556ee7"}, + {file = "pydantic-2.6.2-py3-none-any.whl", hash = "sha256:37a5432e54b12fecaa1049c5195f3d860a10e01bdfd24f1840ef14bd0d3aeab3"}, + {file = "pydantic-2.6.2.tar.gz", hash = "sha256:a09be1c3d28f3abe37f8a78af58284b236a92ce520105ddc91a6d29ea1176ba7"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.10.1" +pydantic-core = "2.16.3" typing-extensions = ">=4.6.1" [package.extras] @@ -6197,117 +6314,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.10.1" +version = "2.16.3" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.10.1-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:d64728ee14e667ba27c66314b7d880b8eeb050e58ffc5fec3b7a109f8cddbd63"}, - {file = "pydantic_core-2.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:48525933fea744a3e7464c19bfede85df4aba79ce90c60b94d8b6e1eddd67096"}, - {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef337945bbd76cce390d1b2496ccf9f90b1c1242a3a7bc242ca4a9fc5993427a"}, - {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1392e0638af203cee360495fd2cfdd6054711f2db5175b6e9c3c461b76f5175"}, - {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0675ba5d22de54d07bccde38997e780044dcfa9a71aac9fd7d4d7a1d2e3e65f7"}, - {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:128552af70a64660f21cb0eb4876cbdadf1a1f9d5de820fed6421fa8de07c893"}, - {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f6e6aed5818c264412ac0598b581a002a9f050cb2637a84979859e70197aa9e"}, - {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ecaac27da855b8d73f92123e5f03612b04c5632fd0a476e469dfc47cd37d6b2e"}, - {file = "pydantic_core-2.10.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3c01c2fb081fced3bbb3da78510693dc7121bb893a1f0f5f4b48013201f362e"}, - {file = "pydantic_core-2.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:92f675fefa977625105708492850bcbc1182bfc3e997f8eecb866d1927c98ae6"}, - {file = "pydantic_core-2.10.1-cp310-none-win32.whl", hash = "sha256:420a692b547736a8d8703c39ea935ab5d8f0d2573f8f123b0a294e49a73f214b"}, - {file = "pydantic_core-2.10.1-cp310-none-win_amd64.whl", hash = "sha256:0880e239827b4b5b3e2ce05e6b766a7414e5f5aedc4523be6b68cfbc7f61c5d0"}, - {file = "pydantic_core-2.10.1-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:073d4a470b195d2b2245d0343569aac7e979d3a0dcce6c7d2af6d8a920ad0bea"}, - {file = "pydantic_core-2.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:600d04a7b342363058b9190d4e929a8e2e715c5682a70cc37d5ded1e0dd370b4"}, - {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39215d809470f4c8d1881758575b2abfb80174a9e8daf8f33b1d4379357e417c"}, - {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eeb3d3d6b399ffe55f9a04e09e635554012f1980696d6b0aca3e6cf42a17a03b"}, - {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7a7902bf75779bc12ccfc508bfb7a4c47063f748ea3de87135d433a4cca7a2f"}, - {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3625578b6010c65964d177626fde80cf60d7f2e297d56b925cb5cdeda6e9925a"}, - {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caa48fc31fc7243e50188197b5f0c4228956f97b954f76da157aae7f67269ae8"}, - {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:07ec6d7d929ae9c68f716195ce15e745b3e8fa122fc67698ac6498d802ed0fa4"}, - {file = "pydantic_core-2.10.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e6f31a17acede6a8cd1ae2d123ce04d8cca74056c9d456075f4f6f85de055607"}, - {file = "pydantic_core-2.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d8f1ebca515a03e5654f88411420fea6380fc841d1bea08effb28184e3d4899f"}, - {file = "pydantic_core-2.10.1-cp311-none-win32.whl", hash = "sha256:6db2eb9654a85ada248afa5a6db5ff1cf0f7b16043a6b070adc4a5be68c716d6"}, - {file = "pydantic_core-2.10.1-cp311-none-win_amd64.whl", hash = "sha256:4a5be350f922430997f240d25f8219f93b0c81e15f7b30b868b2fddfc2d05f27"}, - {file = "pydantic_core-2.10.1-cp311-none-win_arm64.whl", hash = "sha256:5fdb39f67c779b183b0c853cd6b45f7db84b84e0571b3ef1c89cdb1dfc367325"}, - {file = "pydantic_core-2.10.1-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1f22a9ab44de5f082216270552aa54259db20189e68fc12484873d926426921"}, - {file = "pydantic_core-2.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8572cadbf4cfa95fb4187775b5ade2eaa93511f07947b38f4cd67cf10783b118"}, - {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db9a28c063c7c00844ae42a80203eb6d2d6bbb97070cfa00194dff40e6f545ab"}, - {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e2a35baa428181cb2270a15864ec6286822d3576f2ed0f4cd7f0c1708472aff"}, - {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05560ab976012bf40f25d5225a58bfa649bb897b87192a36c6fef1ab132540d7"}, - {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6495008733c7521a89422d7a68efa0a0122c99a5861f06020ef5b1f51f9ba7c"}, - {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ac492c686defc8e6133e3a2d9eaf5261b3df26b8ae97450c1647286750b901"}, - {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8282bab177a9a3081fd3d0a0175a07a1e2bfb7fcbbd949519ea0980f8a07144d"}, - {file = "pydantic_core-2.10.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:aafdb89fdeb5fe165043896817eccd6434aee124d5ee9b354f92cd574ba5e78f"}, - {file = "pydantic_core-2.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f6defd966ca3b187ec6c366604e9296f585021d922e666b99c47e78738b5666c"}, - {file = "pydantic_core-2.10.1-cp312-none-win32.whl", hash = "sha256:7c4d1894fe112b0864c1fa75dffa045720a194b227bed12f4be7f6045b25209f"}, - {file = "pydantic_core-2.10.1-cp312-none-win_amd64.whl", hash = "sha256:5994985da903d0b8a08e4935c46ed8daf5be1cf217489e673910951dc533d430"}, - {file = "pydantic_core-2.10.1-cp312-none-win_arm64.whl", hash = "sha256:0d8a8adef23d86d8eceed3e32e9cca8879c7481c183f84ed1a8edc7df073af94"}, - {file = "pydantic_core-2.10.1-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9badf8d45171d92387410b04639d73811b785b5161ecadabf056ea14d62d4ede"}, - {file = "pydantic_core-2.10.1-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:ebedb45b9feb7258fac0a268a3f6bec0a2ea4d9558f3d6f813f02ff3a6dc6698"}, - {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfe1090245c078720d250d19cb05d67e21a9cd7c257698ef139bc41cf6c27b4f"}, - {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e357571bb0efd65fd55f18db0a2fb0ed89d0bb1d41d906b138f088933ae618bb"}, - {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b3dcd587b69bbf54fc04ca157c2323b8911033e827fffaecf0cafa5a892a0904"}, - {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c120c9ce3b163b985a3b966bb701114beb1da4b0468b9b236fc754783d85aa3"}, - {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15d6bca84ffc966cc9976b09a18cf9543ed4d4ecbd97e7086f9ce9327ea48891"}, - {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5cabb9710f09d5d2e9e2748c3e3e20d991a4c5f96ed8f1132518f54ab2967221"}, - {file = "pydantic_core-2.10.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:82f55187a5bebae7d81d35b1e9aaea5e169d44819789837cdd4720d768c55d15"}, - {file = "pydantic_core-2.10.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1d40f55222b233e98e3921df7811c27567f0e1a4411b93d4c5c0f4ce131bc42f"}, - {file = "pydantic_core-2.10.1-cp37-none-win32.whl", hash = "sha256:14e09ff0b8fe6e46b93d36a878f6e4a3a98ba5303c76bb8e716f4878a3bee92c"}, - {file = "pydantic_core-2.10.1-cp37-none-win_amd64.whl", hash = "sha256:1396e81b83516b9d5c9e26a924fa69164156c148c717131f54f586485ac3c15e"}, - {file = "pydantic_core-2.10.1-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6835451b57c1b467b95ffb03a38bb75b52fb4dc2762bb1d9dbed8de31ea7d0fc"}, - {file = "pydantic_core-2.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b00bc4619f60c853556b35f83731bd817f989cba3e97dc792bb8c97941b8053a"}, - {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fa467fd300a6f046bdb248d40cd015b21b7576c168a6bb20aa22e595c8ffcdd"}, - {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d99277877daf2efe074eae6338453a4ed54a2d93fb4678ddfe1209a0c93a2468"}, - {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa7db7558607afeccb33c0e4bf1c9a9a835e26599e76af6fe2fcea45904083a6"}, - {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aad7bd686363d1ce4ee930ad39f14e1673248373f4a9d74d2b9554f06199fb58"}, - {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:443fed67d33aa85357464f297e3d26e570267d1af6fef1c21ca50921d2976302"}, - {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:042462d8d6ba707fd3ce9649e7bf268633a41018d6a998fb5fbacb7e928a183e"}, - {file = "pydantic_core-2.10.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ecdbde46235f3d560b18be0cb706c8e8ad1b965e5c13bbba7450c86064e96561"}, - {file = "pydantic_core-2.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ed550ed05540c03f0e69e6d74ad58d026de61b9eaebebbaaf8873e585cbb18de"}, - {file = "pydantic_core-2.10.1-cp38-none-win32.whl", hash = "sha256:8cdbbd92154db2fec4ec973d45c565e767ddc20aa6dbaf50142676484cbff8ee"}, - {file = "pydantic_core-2.10.1-cp38-none-win_amd64.whl", hash = "sha256:9f6f3e2598604956480f6c8aa24a3384dbf6509fe995d97f6ca6103bb8c2534e"}, - {file = "pydantic_core-2.10.1-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:655f8f4c8d6a5963c9a0687793da37b9b681d9ad06f29438a3b2326d4e6b7970"}, - {file = "pydantic_core-2.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e570ffeb2170e116a5b17e83f19911020ac79d19c96f320cbfa1fa96b470185b"}, - {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64322bfa13e44c6c30c518729ef08fda6026b96d5c0be724b3c4ae4da939f875"}, - {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:485a91abe3a07c3a8d1e082ba29254eea3e2bb13cbbd4351ea4e5a21912cc9b0"}, - {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7c2b8eb9fc872e68b46eeaf835e86bccc3a58ba57d0eedc109cbb14177be531"}, - {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a5cb87bdc2e5f620693148b5f8f842d293cae46c5f15a1b1bf7ceeed324a740c"}, - {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25bd966103890ccfa028841a8f30cebcf5875eeac8c4bde4fe221364c92f0c9a"}, - {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f323306d0556351735b54acbf82904fe30a27b6a7147153cbe6e19aaaa2aa429"}, - {file = "pydantic_core-2.10.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0c27f38dc4fbf07b358b2bc90edf35e82d1703e22ff2efa4af4ad5de1b3833e7"}, - {file = "pydantic_core-2.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f1365e032a477c1430cfe0cf2856679529a2331426f8081172c4a74186f1d595"}, - {file = "pydantic_core-2.10.1-cp39-none-win32.whl", hash = "sha256:a1c311fd06ab3b10805abb72109f01a134019739bd3286b8ae1bc2fc4e50c07a"}, - {file = "pydantic_core-2.10.1-cp39-none-win_amd64.whl", hash = "sha256:ae8a8843b11dc0b03b57b52793e391f0122e740de3df1474814c700d2622950a"}, - {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d43002441932f9a9ea5d6f9efaa2e21458221a3a4b417a14027a1d530201ef1b"}, - {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fcb83175cc4936a5425dde3356f079ae03c0802bbdf8ff82c035f8a54b333521"}, - {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:962ed72424bf1f72334e2f1e61b68f16c0e596f024ca7ac5daf229f7c26e4208"}, - {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cf5bb4dd67f20f3bbc1209ef572a259027c49e5ff694fa56bed62959b41e1f9"}, - {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e544246b859f17373bed915182ab841b80849ed9cf23f1f07b73b7c58baee5fb"}, - {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c0877239307b7e69d025b73774e88e86ce82f6ba6adf98f41069d5b0b78bd1bf"}, - {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:53df009d1e1ba40f696f8995683e067e3967101d4bb4ea6f667931b7d4a01357"}, - {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a1254357f7e4c82e77c348dabf2d55f1d14d19d91ff025004775e70a6ef40ada"}, - {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:524ff0ca3baea164d6d93a32c58ac79eca9f6cf713586fdc0adb66a8cdeab96a"}, - {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f0ac9fb8608dbc6eaf17956bf623c9119b4db7dbb511650910a82e261e6600f"}, - {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:320f14bd4542a04ab23747ff2c8a778bde727158b606e2661349557f0770711e"}, - {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:63974d168b6233b4ed6a0046296803cb13c56637a7b8106564ab575926572a55"}, - {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:417243bf599ba1f1fef2bb8c543ceb918676954734e2dcb82bf162ae9d7bd514"}, - {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dda81e5ec82485155a19d9624cfcca9be88a405e2857354e5b089c2a982144b2"}, - {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:14cfbb00959259e15d684505263d5a21732b31248a5dd4941f73a3be233865b9"}, - {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:631cb7415225954fdcc2a024119101946793e5923f6c4d73a5914d27eb3d3a05"}, - {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:bec7dd208a4182e99c5b6c501ce0b1f49de2802448d4056091f8e630b28e9a52"}, - {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:149b8a07712f45b332faee1a2258d8ef1fb4a36f88c0c17cb687f205c5dc6e7d"}, - {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d966c47f9dd73c2d32a809d2be529112d509321c5310ebf54076812e6ecd884"}, - {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7eb037106f5c6b3b0b864ad226b0b7ab58157124161d48e4b30c4a43fef8bc4b"}, - {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:154ea7c52e32dce13065dbb20a4a6f0cc012b4f667ac90d648d36b12007fa9f7"}, - {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e562617a45b5a9da5be4abe72b971d4f00bf8555eb29bb91ec2ef2be348cd132"}, - {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f23b55eb5464468f9e0e9a9935ce3ed2a870608d5f534025cd5536bca25b1402"}, - {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:e9121b4009339b0f751955baf4543a0bfd6bc3f8188f8056b1a25a2d45099934"}, - {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:0523aeb76e03f753b58be33b26540880bac5aa54422e4462404c432230543f33"}, - {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0e2959ef5d5b8dc9ef21e1a305a21a36e254e6a34432d00c72a92fdc5ecda5"}, - {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da01bec0a26befab4898ed83b362993c844b9a607a86add78604186297eb047e"}, - {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2e9072d71c1f6cfc79a36d4484c82823c560e6f5599c43c1ca6b5cdbd54f881"}, - {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f36a3489d9e28fe4b67be9992a23029c3cec0babc3bd9afb39f49844a8c721c5"}, - {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f64f82cc3443149292b32387086d02a6c7fb39b8781563e0ca7b8d7d9cf72bd7"}, - {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b4a6db486ac8e99ae696e09efc8b2b9fea67b63c8f88ba7a1a16c24a057a0776"}, - {file = "pydantic_core-2.10.1.tar.gz", hash = "sha256:0f8682dbdd2f67f8e1edddcbffcc29f60a6182b4901c367fc8c1c40d30bb0a82"}, + {file = "pydantic_core-2.16.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:75b81e678d1c1ede0785c7f46690621e4c6e63ccd9192af1f0bd9d504bbb6bf4"}, + {file = "pydantic_core-2.16.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c865a7ee6f93783bd5d781af5a4c43dadc37053a5b42f7d18dc019f8c9d2bd1"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:162e498303d2b1c036b957a1278fa0899d02b2842f1ff901b6395104c5554a45"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f583bd01bbfbff4eaee0868e6fc607efdfcc2b03c1c766b06a707abbc856187"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b926dd38db1519ed3043a4de50214e0d600d404099c3392f098a7f9d75029ff8"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:716b542728d4c742353448765aa7cdaa519a7b82f9564130e2b3f6766018c9ec"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4ad7f7ee1a13d9cb49d8198cd7d7e3aa93e425f371a68235f784e99741561f"}, + {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd87f48924f360e5d1c5f770d6155ce0e7d83f7b4e10c2f9ec001c73cf475c99"}, + {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0df446663464884297c793874573549229f9eca73b59360878f382a0fc085979"}, + {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4df8a199d9f6afc5ae9a65f8f95ee52cae389a8c6b20163762bde0426275b7db"}, + {file = "pydantic_core-2.16.3-cp310-none-win32.whl", hash = "sha256:456855f57b413f077dff513a5a28ed838dbbb15082ba00f80750377eed23d132"}, + {file = "pydantic_core-2.16.3-cp310-none-win_amd64.whl", hash = "sha256:732da3243e1b8d3eab8c6ae23ae6a58548849d2e4a4e03a1924c8ddf71a387cb"}, + {file = "pydantic_core-2.16.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:519ae0312616026bf4cedc0fe459e982734f3ca82ee8c7246c19b650b60a5ee4"}, + {file = "pydantic_core-2.16.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b3992a322a5617ded0a9f23fd06dbc1e4bd7cf39bc4ccf344b10f80af58beacd"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d62da299c6ecb04df729e4b5c52dc0d53f4f8430b4492b93aa8de1f541c4aac"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2acca2be4bb2f2147ada8cac612f8a98fc09f41c89f87add7256ad27332c2fda"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b662180108c55dfbf1280d865b2d116633d436cfc0bba82323554873967b340"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7c6ed0dc9d8e65f24f5824291550139fe6f37fac03788d4580da0d33bc00c97"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1bb0827f56654b4437955555dc3aeeebeddc47c2d7ed575477f082622c49e"}, + {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e56f8186d6210ac7ece503193ec84104da7ceb98f68ce18c07282fcc2452e76f"}, + {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:936e5db01dd49476fa8f4383c259b8b1303d5dd5fb34c97de194560698cc2c5e"}, + {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33809aebac276089b78db106ee692bdc9044710e26f24a9a2eaa35a0f9fa70ba"}, + {file = "pydantic_core-2.16.3-cp311-none-win32.whl", hash = "sha256:ded1c35f15c9dea16ead9bffcde9bb5c7c031bff076355dc58dcb1cb436c4721"}, + {file = "pydantic_core-2.16.3-cp311-none-win_amd64.whl", hash = "sha256:d89ca19cdd0dd5f31606a9329e309d4fcbb3df860960acec32630297d61820df"}, + {file = "pydantic_core-2.16.3-cp311-none-win_arm64.whl", hash = "sha256:6162f8d2dc27ba21027f261e4fa26f8bcb3cf9784b7f9499466a311ac284b5b9"}, + {file = "pydantic_core-2.16.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f56ae86b60ea987ae8bcd6654a887238fd53d1384f9b222ac457070b7ac4cff"}, + {file = "pydantic_core-2.16.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9bd22a2a639e26171068f8ebb5400ce2c1bc7d17959f60a3b753ae13c632975"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4204e773b4b408062960e65468d5346bdfe139247ee5f1ca2a378983e11388a2"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f651dd19363c632f4abe3480a7c87a9773be27cfe1341aef06e8759599454120"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aaf09e615a0bf98d406657e0008e4a8701b11481840be7d31755dc9f97c44053"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e47755d8152c1ab5b55928ab422a76e2e7b22b5ed8e90a7d584268dd49e9c6b"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:500960cb3a0543a724a81ba859da816e8cf01b0e6aaeedf2c3775d12ee49cade"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf6204fe865da605285c34cf1172879d0314ff267b1c35ff59de7154f35fdc2e"}, + {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d33dd21f572545649f90c38c227cc8631268ba25c460b5569abebdd0ec5974ca"}, + {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:49d5d58abd4b83fb8ce763be7794d09b2f50f10aa65c0f0c1696c677edeb7cbf"}, + {file = "pydantic_core-2.16.3-cp312-none-win32.whl", hash = "sha256:f53aace168a2a10582e570b7736cc5bef12cae9cf21775e3eafac597e8551fbe"}, + {file = "pydantic_core-2.16.3-cp312-none-win_amd64.whl", hash = "sha256:0d32576b1de5a30d9a97f300cc6a3f4694c428d956adbc7e6e2f9cad279e45ed"}, + {file = "pydantic_core-2.16.3-cp312-none-win_arm64.whl", hash = "sha256:ec08be75bb268473677edb83ba71e7e74b43c008e4a7b1907c6d57e940bf34b6"}, + {file = "pydantic_core-2.16.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:b1f6f5938d63c6139860f044e2538baeee6f0b251a1816e7adb6cbce106a1f01"}, + {file = "pydantic_core-2.16.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2a1ef6a36fdbf71538142ed604ad19b82f67b05749512e47f247a6ddd06afdc7"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704d35ecc7e9c31d48926150afada60401c55efa3b46cd1ded5a01bdffaf1d48"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d937653a696465677ed583124b94a4b2d79f5e30b2c46115a68e482c6a591c8a"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9803edf8e29bd825f43481f19c37f50d2b01899448273b3a7758441b512acf8"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72282ad4892a9fb2da25defeac8c2e84352c108705c972db82ab121d15f14e6d"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f752826b5b8361193df55afcdf8ca6a57d0232653494ba473630a83ba50d8c9"}, + {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4384a8f68ddb31a0b0c3deae88765f5868a1b9148939c3f4121233314ad5532c"}, + {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a4b2bf78342c40b3dc830880106f54328928ff03e357935ad26c7128bbd66ce8"}, + {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:13dcc4802961b5f843a9385fc821a0b0135e8c07fc3d9949fd49627c1a5e6ae5"}, + {file = "pydantic_core-2.16.3-cp38-none-win32.whl", hash = "sha256:e3e70c94a0c3841e6aa831edab1619ad5c511199be94d0c11ba75fe06efe107a"}, + {file = "pydantic_core-2.16.3-cp38-none-win_amd64.whl", hash = "sha256:ecdf6bf5f578615f2e985a5e1f6572e23aa632c4bd1dc67f8f406d445ac115ed"}, + {file = "pydantic_core-2.16.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bda1ee3e08252b8d41fa5537413ffdddd58fa73107171a126d3b9ff001b9b820"}, + {file = "pydantic_core-2.16.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:21b888c973e4f26b7a96491c0965a8a312e13be108022ee510248fe379a5fa23"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be0ec334369316fa73448cc8c982c01e5d2a81c95969d58b8f6e272884df0074"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5b6079cc452a7c53dd378c6f881ac528246b3ac9aae0f8eef98498a75657805"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee8d5f878dccb6d499ba4d30d757111847b6849ae07acdd1205fffa1fc1253c"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7233d65d9d651242a68801159763d09e9ec96e8a158dbf118dc090cd77a104c9"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6119dc90483a5cb50a1306adb8d52c66e447da88ea44f323e0ae1a5fcb14256"}, + {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:578114bc803a4c1ff9946d977c221e4376620a46cf78da267d946397dc9514a8"}, + {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d8f99b147ff3fcf6b3cc60cb0c39ea443884d5559a30b1481e92495f2310ff2b"}, + {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4ac6b4ce1e7283d715c4b729d8f9dab9627586dafce81d9eaa009dd7f25dd972"}, + {file = "pydantic_core-2.16.3-cp39-none-win32.whl", hash = "sha256:e7774b570e61cb998490c5235740d475413a1f6de823169b4cf94e2fe9e9f6b2"}, + {file = "pydantic_core-2.16.3-cp39-none-win_amd64.whl", hash = "sha256:9091632a25b8b87b9a605ec0e61f241c456e9248bfdcf7abdf344fdb169c81cf"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:36fa178aacbc277bc6b62a2c3da95226520da4f4e9e206fdf076484363895d2c"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dcca5d2bf65c6fb591fff92da03f94cd4f315972f97c21975398bd4bd046854a"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a72fb9963cba4cd5793854fd12f4cfee731e86df140f59ff52a49b3552db241"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60cc1a081f80a2105a59385b92d82278b15d80ebb3adb200542ae165cd7d183"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cbcc558401de90a746d02ef330c528f2e668c83350f045833543cd57ecead1ad"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fee427241c2d9fb7192b658190f9f5fd6dfe41e02f3c1489d2ec1e6a5ab1e04a"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4cb85f693044e0f71f394ff76c98ddc1bc0953e48c061725e540396d5c8a2e1"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b29eeb887aa931c2fcef5aa515d9d176d25006794610c264ddc114c053bf96fe"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a425479ee40ff021f8216c9d07a6a3b54b31c8267c6e17aa88b70d7ebd0e5e5b"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c5cbc703168d1b7a838668998308018a2718c2130595e8e190220238addc96f"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b6add4c0b39a513d323d3b93bc173dac663c27b99860dd5bf491b240d26137"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f76ee558751746d6a38f89d60b6228fa174e5172d143886af0f85aa306fd89"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:287073c66748f624be4cef893ef9174e3eb88fe0b8a78dc22e88eca4bc357ca6"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed25e1835c00a332cb10c683cd39da96a719ab1dfc08427d476bce41b92531fc"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:86b3d0033580bd6bbe07590152007275bd7af95f98eaa5bd36f3da219dcd93da"}, + {file = "pydantic_core-2.16.3.tar.gz", hash = "sha256:1cac689f80a3abab2d3c0048b29eea5751114054f032a941a32de4c852c59cad"}, ] [package.dependencies] @@ -6350,28 +6440,29 @@ flake8 = ["flake8 (>=4)"] [[package]] name = "pyflakes" -version = "3.1.0" +version = "3.2.0" description = "passive checker of Python programs" optional = false python-versions = ">=3.8" files = [ - {file = "pyflakes-3.1.0-py2.py3-none-any.whl", hash = "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774"}, - {file = "pyflakes-3.1.0.tar.gz", hash = "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"}, + {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, + {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, ] [[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 = "pyjwt" @@ -6395,12 +6486,13 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pyliftover" -version = "0.4" +version = "0.4.1" description = "Pure-python implementation of UCSC ``liftOver`` genome coordinate conversion." optional = false python-versions = "*" files = [ - {file = "pyliftover-0.4.tar.gz", hash = "sha256:72bcfb7de907569b0eb75e86c817840365297d63ba43a961da394187e399da41"}, + {file = "pyliftover-0.4.1-py3-none-any.whl", hash = "sha256:49ef8938010d2e934abb483d3ef8073897ed6b88bcd978c486c8f7631c24dbc1"}, + {file = "pyliftover-0.4.1.tar.gz", hash = "sha256:33ad187e35d1b6662ba446432f4dd1a808ac2914ce1645eef37598fa5a3860cd"}, ] [[package]] @@ -6423,20 +6515,20 @@ extra = ["pygments (>=2.12)"] [[package]] name = "pyopenssl" -version = "23.2.0" +version = "24.0.0" description = "Python wrapper module around the OpenSSL library" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pyOpenSSL-23.2.0-py3-none-any.whl", hash = "sha256:24f0dc5227396b3e831f4c7f602b950a5e9833d292c8e4a2e06b709292806ae2"}, - {file = "pyOpenSSL-23.2.0.tar.gz", hash = "sha256:276f931f55a452e7dea69c7173e984eb2a4407ce413c918aa34b55f82f9b8bac"}, + {file = "pyOpenSSL-24.0.0-py3-none-any.whl", hash = "sha256:ba07553fb6fd6a7a2259adb9b84e12302a9a8a75c44046e8bb5d3e5ee887e3c3"}, + {file = "pyOpenSSL-24.0.0.tar.gz", hash = "sha256:6aa33039a93fffa4563e655b61d11364d01264be8ccb49906101e02a334530bf"}, ] [package.dependencies] -cryptography = ">=38.0.0,<40.0.0 || >40.0.0,<40.0.1 || >40.0.1,<42" +cryptography = ">=41.0.5,<43" [package.extras] -docs = ["sphinx (!=5.2.0,!=5.2.0.post0)", "sphinx-rtd-theme"] +docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] test = ["flaky", "pretend", "pytest (>=3.0.1)"] [[package]] @@ -6474,13 +6566,13 @@ sql = ["pandas (>=1.0.5)", "pyarrow (>=1.0.0)"] [[package]] name = "pytest" -version = "8.0.1" +version = "8.0.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.0.1-py3-none-any.whl", hash = "sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca"}, - {file = "pytest-8.0.1.tar.gz", hash = "sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae"}, + {file = "pytest-8.0.2-py3-none-any.whl", hash = "sha256:edfaaef32ce5172d5466b5127b42e0d6d35ebbe4453f0e3505d96afd93f6b096"}, + {file = "pytest-8.0.2.tar.gz", hash = "sha256:d4051d623a2e0b7e51960ba963193b09ce6daeb9759a451844a21e4ddedfc1bd"}, ] [package.dependencies] @@ -6587,13 +6679,13 @@ six = ">=1.5" [[package]] name = "python-gitlab" -version = "3.15.0" -description = "Interact with GitLab API" +version = "4.4.0" +description = "A python wrapper for the GitLab API" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" files = [ - {file = "python-gitlab-3.15.0.tar.gz", hash = "sha256:c9e65eb7612a9fbb8abf0339972eca7fd7a73d4da66c9b446ffe528930aff534"}, - {file = "python_gitlab-3.15.0-py3-none-any.whl", hash = "sha256:8f8d1c0d387f642eb1ac7bf5e8e0cd8b3dd49c6f34170cee3c7deb7d384611f3"}, + {file = "python-gitlab-4.4.0.tar.gz", hash = "sha256:1d117bf7b433ae8255e5d74e72c660978f50ee85eb62248c9fb52ef43c3e3814"}, + {file = "python_gitlab-4.4.0-py3-none-any.whl", hash = "sha256:cdad39d016f59664cdaad0f878f194c79cb4357630776caa9a92c1da25c8d986"}, ] [package.dependencies] @@ -6602,7 +6694,7 @@ requests-toolbelt = ">=0.10.1" [package.extras] autocompletion = ["argcomplete (>=1.10.0,<3)"] -yaml = ["PyYaml (>=5.2)"] +yaml = ["PyYaml (>=6.0.1)"] [[package]] name = "python-json-logger" @@ -6631,13 +6723,13 @@ python-slugify = ">=1.2.5" [[package]] name = "python-semantic-release" -version = "9.1.0" +version = "9.1.1" description = "Automatic Semantic Versioning for Python projects" optional = false python-versions = ">=3.8" files = [ - {file = "python-semantic-release-9.1.0.tar.gz", hash = "sha256:0317e72a940c5080c8aa6ff56cce6230f045b1a8f91f0a58fdc8f80745912369"}, - {file = "python_semantic_release-9.1.0-py3-none-any.whl", hash = "sha256:7ca5fb1ea4d5215182db477fbc53d9f4c907b7030520c4ac6640b9aaa71dbce7"}, + {file = "python-semantic-release-9.1.1.tar.gz", hash = "sha256:fe4fc40f52cdddbfe82c710070978306b35e9e4f2c7d98a77db55bf6f5e544f2"}, + {file = "python_semantic_release-9.1.1-py3-none-any.whl", hash = "sha256:4d45bc6540dd894663636ced5a98cf4d3ea5765a9f1f18f4ffef6ae0733e05a3"}, ] [package.dependencies] @@ -6661,13 +6753,13 @@ test = ["coverage[toml] (>=6,<8)", "pytest (>=7,<8)", "pytest-clarity (>=1.0.1)" [[package]] name = "python-slugify" -version = "8.0.1" +version = "8.0.4" description = "A Python slugify application that also handles Unicode" optional = false python-versions = ">=3.7" files = [ - {file = "python-slugify-8.0.1.tar.gz", hash = "sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27"}, - {file = "python_slugify-8.0.1-py2.py3-none-any.whl", hash = "sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395"}, + {file = "python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856"}, + {file = "python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8"}, ] [package.dependencies] @@ -6678,24 +6770,13 @@ unidecode = ["Unidecode (>=1.1.1)"] [[package]] name = "pytz" -version = "2023.3.post1" +version = "2024.1" 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"}, -] - -[[package]] -name = "pytzdata" -version = "2020.1" -description = "The Olson timezone database for Python." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, - {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, ] [[package]] @@ -6746,7 +6827,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"}, @@ -6797,104 +6877,104 @@ pyyaml = "*" [[package]] name = "pyzmq" -version = "25.1.1" +version = "25.1.2" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:381469297409c5adf9a0e884c5eb5186ed33137badcbbb0560b86e910a2f1e76"}, - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:955215ed0604dac5b01907424dfa28b40f2b2292d6493445dd34d0dfa72586a8"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:985bbb1316192b98f32e25e7b9958088431d853ac63aca1d2c236f40afb17c83"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afea96f64efa98df4da6958bae37f1cbea7932c35878b185e5982821bc883369"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76705c9325d72a81155bb6ab48d4312e0032bf045fb0754889133200f7a0d849"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77a41c26205d2353a4c94d02be51d6cbdf63c06fbc1295ea57dad7e2d3381b71"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:12720a53e61c3b99d87262294e2b375c915fea93c31fc2336898c26d7aed34cd"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:57459b68e5cd85b0be8184382cefd91959cafe79ae019e6b1ae6e2ba8a12cda7"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:292fe3fc5ad4a75bc8df0dfaee7d0babe8b1f4ceb596437213821f761b4589f9"}, - {file = "pyzmq-25.1.1-cp310-cp310-win32.whl", hash = "sha256:35b5ab8c28978fbbb86ea54958cd89f5176ce747c1fb3d87356cf698048a7790"}, - {file = "pyzmq-25.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:11baebdd5fc5b475d484195e49bae2dc64b94a5208f7c89954e9e354fc609d8f"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:d20a0ddb3e989e8807d83225a27e5c2eb2260eaa851532086e9e0fa0d5287d83"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1c1be77bc5fb77d923850f82e55a928f8638f64a61f00ff18a67c7404faf008"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d89528b4943d27029a2818f847c10c2cecc79fa9590f3cb1860459a5be7933eb"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90f26dc6d5f241ba358bef79be9ce06de58d477ca8485e3291675436d3827cf8"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2b92812bd214018e50b6380ea3ac0c8bb01ac07fcc14c5f86a5bb25e74026e9"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f957ce63d13c28730f7fd6b72333814221c84ca2421298f66e5143f81c9f91f"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:047a640f5c9c6ade7b1cc6680a0e28c9dd5a0825135acbd3569cc96ea00b2505"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7f7e58effd14b641c5e4dec8c7dab02fb67a13df90329e61c869b9cc607ef752"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c2910967e6ab16bf6fbeb1f771c89a7050947221ae12a5b0b60f3bca2ee19bca"}, - {file = "pyzmq-25.1.1-cp311-cp311-win32.whl", hash = "sha256:76c1c8efb3ca3a1818b837aea423ff8a07bbf7aafe9f2f6582b61a0458b1a329"}, - {file = "pyzmq-25.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:44e58a0554b21fc662f2712814a746635ed668d0fbc98b7cb9d74cb798d202e6"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e1ffa1c924e8c72778b9ccd386a7067cddf626884fd8277f503c48bb5f51c762"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1af379b33ef33757224da93e9da62e6471cf4a66d10078cf32bae8127d3d0d4a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cff084c6933680d1f8b2f3b4ff5bbb88538a4aac00d199ac13f49d0698727ecb"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2400a94f7dd9cb20cd012951a0cbf8249e3d554c63a9c0cdfd5cbb6c01d2dec"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d81f1ddae3858b8299d1da72dd7d19dd36aab654c19671aa8a7e7fb02f6638a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:255ca2b219f9e5a3a9ef3081512e1358bd4760ce77828e1028b818ff5610b87b"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a882ac0a351288dd18ecae3326b8a49d10c61a68b01419f3a0b9a306190baf69"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:724c292bb26365659fc434e9567b3f1adbdb5e8d640c936ed901f49e03e5d32e"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ca1ed0bb2d850aa8471387882247c68f1e62a4af0ce9c8a1dbe0d2bf69e41fb"}, - {file = "pyzmq-25.1.1-cp312-cp312-win32.whl", hash = "sha256:b3451108ab861040754fa5208bca4a5496c65875710f76789a9ad27c801a0075"}, - {file = "pyzmq-25.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:eadbefd5e92ef8a345f0525b5cfd01cf4e4cc651a2cffb8f23c0dd184975d787"}, - {file = "pyzmq-25.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:db0b2af416ba735c6304c47f75d348f498b92952f5e3e8bff449336d2728795d"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c133e93b405eb0d36fa430c94185bdd13c36204a8635470cccc200723c13bb"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:273bc3959bcbff3f48606b28229b4721716598d76b5aaea2b4a9d0ab454ec062"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cbc8df5c6a88ba5ae385d8930da02201165408dde8d8322072e3e5ddd4f68e22"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:18d43df3f2302d836f2a56f17e5663e398416e9dd74b205b179065e61f1a6edf"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:73461eed88a88c866656e08f89299720a38cb4e9d34ae6bf5df6f71102570f2e"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c850ce7976d19ebe7b9d4b9bb8c9dfc7aac336c0958e2651b88cbd46682123"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win32.whl", hash = "sha256:d2045d6d9439a0078f2a34b57c7b18c4a6aef0bee37f22e4ec9f32456c852c71"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:458dea649f2f02a0b244ae6aef8dc29325a2810aa26b07af8374dc2a9faf57e3"}, - {file = "pyzmq-25.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cff25c5b315e63b07a36f0c2bab32c58eafbe57d0dce61b614ef4c76058c115"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1579413ae492b05de5a6174574f8c44c2b9b122a42015c5292afa4be2507f28"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0a409d3b28607cc427aa5c30a6f1e4452cc44e311f843e05edb28ab5e36da0"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21eb4e609a154a57c520e3d5bfa0d97e49b6872ea057b7c85257b11e78068222"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:034239843541ef7a1aee0c7b2cb7f6aafffb005ede965ae9cbd49d5ff4ff73cf"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8115e303280ba09f3898194791a153862cbf9eef722ad8f7f741987ee2a97c7"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a5d26fe8f32f137e784f768143728438877d69a586ddeaad898558dc971a5ae"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win32.whl", hash = "sha256:f32260e556a983bc5c7ed588d04c942c9a8f9c2e99213fec11a031e316874c7e"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf34e43c531bbb510ae7e8f5b2b1f2a8ab93219510e2b287a944432fad135f3"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:87e34f31ca8f168c56d6fbf99692cc8d3b445abb5bfd08c229ae992d7547a92a"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c9c6c9b2c2f80747a98f34ef491c4d7b1a8d4853937bb1492774992a120f475d"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5619f3f5a4db5dbb572b095ea3cb5cc035335159d9da950830c9c4db2fbb6995"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a34d2395073ef862b4032343cf0c32a712f3ab49d7ec4f42c9661e0294d106f"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0e6b78220aba09815cd1f3a32b9c7cb3e02cb846d1cfc526b6595f6046618"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3669cf8ee3520c2f13b2e0351c41fea919852b220988d2049249db10046a7afb"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2d163a18819277e49911f7461567bda923461c50b19d169a062536fffe7cd9d2"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df27ffddff4190667d40de7beba4a950b5ce78fe28a7dcc41d6f8a700a80a3c0"}, - {file = "pyzmq-25.1.1-cp38-cp38-win32.whl", hash = "sha256:a382372898a07479bd34bda781008e4a954ed8750f17891e794521c3e21c2e1c"}, - {file = "pyzmq-25.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:52533489f28d62eb1258a965f2aba28a82aa747202c8fa5a1c7a43b5db0e85c1"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:03b3f49b57264909aacd0741892f2aecf2f51fb053e7d8ac6767f6c700832f45"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:330f9e188d0d89080cde66dc7470f57d1926ff2fb5576227f14d5be7ab30b9fa"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2ca57a5be0389f2a65e6d3bb2962a971688cbdd30b4c0bd188c99e39c234f414"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d457aed310f2670f59cc5b57dcfced452aeeed77f9da2b9763616bd57e4dbaae"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c56d748ea50215abef7030c72b60dd723ed5b5c7e65e7bc2504e77843631c1a6"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f03d3f0d01cb5a018debeb412441996a517b11c5c17ab2001aa0597c6d6882c"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:820c4a08195a681252f46926de10e29b6bbf3e17b30037bd4250d72dd3ddaab8"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17ef5f01d25b67ca8f98120d5fa1d21efe9611604e8eb03a5147360f517dd1e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win32.whl", hash = "sha256:04ccbed567171579ec2cebb9c8a3e30801723c575601f9a990ab25bcac6b51e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:e61f091c3ba0c3578411ef505992d356a812fb200643eab27f4f70eed34a29ef"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ade6d25bb29c4555d718ac6d1443a7386595528c33d6b133b258f65f963bb0f6"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0c95ddd4f6e9fca4e9e3afaa4f9df8552f0ba5d1004e89ef0a68e1f1f9807c7"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48e466162a24daf86f6b5ca72444d2bf39a5e58da5f96370078be67c67adc978"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abc719161780932c4e11aaebb203be3d6acc6b38d2f26c0f523b5b59d2fc1996"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ccf825981640b8c34ae54231b7ed00271822ea1c6d8ba1090ebd4943759abf5"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2f20ce161ebdb0091a10c9ca0372e023ce24980d0e1f810f519da6f79c60800"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:deee9ca4727f53464daf089536e68b13e6104e84a37820a88b0a057b97bba2d2"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa8d6cdc8b8aa19ceb319aaa2b660cdaccc533ec477eeb1309e2a291eaacc43a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:019e59ef5c5256a2c7378f2fb8560fc2a9ff1d315755204295b2eab96b254d0a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b9af3757495c1ee3b5c4e945c1df7be95562277c6e5bccc20a39aec50f826cd0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:548d6482dc8aadbe7e79d1b5806585c8120bafa1ef841167bc9090522b610fa6"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:057e824b2aae50accc0f9a0570998adc021b372478a921506fddd6c02e60308e"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2243700cc5548cff20963f0ca92d3e5e436394375ab8a354bbea2b12911b20b0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79986f3b4af059777111409ee517da24a529bdbd46da578b33f25580adcff728"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:11d58723d44d6ed4dd677c5615b2ffb19d5c426636345567d6af82be4dff8a55"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:49d238cf4b69652257db66d0c623cd3e09b5d2e9576b56bc067a396133a00d4a"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fedbdc753827cf014c01dbbee9c3be17e5a208dcd1bf8641ce2cd29580d1f0d4"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc16ac425cc927d0a57d242589f87ee093884ea4804c05a13834d07c20db203c"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11c1d2aed9079c6b0c9550a7257a836b4a637feb334904610f06d70eb44c56d2"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e8a701123029cc240cea61dd2d16ad57cab4691804143ce80ecd9286b464d180"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:61706a6b6c24bdece85ff177fec393545a3191eeda35b07aaa1458a027ad1304"}, - {file = "pyzmq-25.1.1.tar.gz", hash = "sha256:259c22485b71abacdfa8bf79720cd7bcf4b9d128b30ea554f01ae71fdbfdaa23"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, + {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, + {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, + {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, + {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, + {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, + {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, + {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, + {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, + {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, + {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, + {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, + {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, ] [package.dependencies] @@ -6902,13 +6982,13 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[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] @@ -6917,99 +6997,104 @@ rpds-py = ">=0.7.0" [[package]] name = "regex" -version = "2023.10.3" +version = "2023.12.25" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.7" files = [ - {file = "regex-2023.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc"}, - {file = "regex-2023.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a"}, - {file = "regex-2023.10.3-cp310-cp310-win32.whl", hash = "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec"}, - {file = "regex-2023.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353"}, - {file = "regex-2023.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e"}, - {file = "regex-2023.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54"}, - {file = "regex-2023.10.3-cp311-cp311-win32.whl", hash = "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2"}, - {file = "regex-2023.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c"}, - {file = "regex-2023.10.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037"}, - {file = "regex-2023.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a"}, - {file = "regex-2023.10.3-cp312-cp312-win32.whl", hash = "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a"}, - {file = "regex-2023.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b"}, - {file = "regex-2023.10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb"}, - {file = "regex-2023.10.3-cp37-cp37m-win32.whl", hash = "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a"}, - {file = "regex-2023.10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed"}, - {file = "regex-2023.10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533"}, - {file = "regex-2023.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4"}, - {file = "regex-2023.10.3-cp38-cp38-win32.whl", hash = "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d"}, - {file = "regex-2023.10.3-cp38-cp38-win_amd64.whl", hash = "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b"}, - {file = "regex-2023.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af"}, - {file = "regex-2023.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48"}, - {file = "regex-2023.10.3-cp39-cp39-win32.whl", hash = "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd"}, - {file = "regex-2023.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988"}, - {file = "regex-2023.10.3.tar.gz", hash = "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f"}, + {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]] @@ -7113,110 +7198,110 @@ rich = ">=11.0.0" [[package]] name = "rpds-py" -version = "0.10.6" +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.10.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:6bdc11f9623870d75692cc33c59804b5a18d7b8a4b79ef0b00b773a27397d1f6"}, - {file = "rpds_py-0.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:26857f0f44f0e791f4a266595a7a09d21f6b589580ee0585f330aaccccb836e3"}, - {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7f5e15c953ace2e8dde9824bdab4bec50adb91a5663df08d7d994240ae6fa31"}, - {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61fa268da6e2e1cd350739bb61011121fa550aa2545762e3dc02ea177ee4de35"}, - {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c48f3fbc3e92c7dd6681a258d22f23adc2eb183c8cb1557d2fcc5a024e80b094"}, - {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0503c5b681566e8b722fe8c4c47cce5c7a51f6935d5c7012c4aefe952a35eed"}, - {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:734c41f9f57cc28658d98270d3436dba65bed0cfc730d115b290e970150c540d"}, - {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a5d7ed104d158c0042a6a73799cf0eb576dfd5fc1ace9c47996e52320c37cb7c"}, - {file = "rpds_py-0.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e3df0bc35e746cce42579826b89579d13fd27c3d5319a6afca9893a9b784ff1b"}, - {file = "rpds_py-0.10.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:73e0a78a9b843b8c2128028864901f55190401ba38aae685350cf69b98d9f7c9"}, - {file = "rpds_py-0.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5ed505ec6305abd2c2c9586a7b04fbd4baf42d4d684a9c12ec6110deefe2a063"}, - {file = "rpds_py-0.10.6-cp310-none-win32.whl", hash = "sha256:d97dd44683802000277bbf142fd9f6b271746b4846d0acaf0cefa6b2eaf2a7ad"}, - {file = "rpds_py-0.10.6-cp310-none-win_amd64.whl", hash = "sha256:b455492cab07107bfe8711e20cd920cc96003e0da3c1f91297235b1603d2aca7"}, - {file = "rpds_py-0.10.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e8cdd52744f680346ff8c1ecdad5f4d11117e1724d4f4e1874f3a67598821069"}, - {file = "rpds_py-0.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66414dafe4326bca200e165c2e789976cab2587ec71beb80f59f4796b786a238"}, - {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc435d059f926fdc5b05822b1be4ff2a3a040f3ae0a7bbbe672babb468944722"}, - {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8e7f2219cb72474571974d29a191714d822e58be1eb171f229732bc6fdedf0ac"}, - {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3953c6926a63f8ea5514644b7afb42659b505ece4183fdaaa8f61d978754349e"}, - {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2bb2e4826be25e72013916eecd3d30f66fd076110de09f0e750163b416500721"}, - {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bf347b495b197992efc81a7408e9a83b931b2f056728529956a4d0858608b80"}, - {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:102eac53bb0bf0f9a275b438e6cf6904904908562a1463a6fc3323cf47d7a532"}, - {file = "rpds_py-0.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40f93086eef235623aa14dbddef1b9fb4b22b99454cb39a8d2e04c994fb9868c"}, - {file = "rpds_py-0.10.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e22260a4741a0e7a206e175232867b48a16e0401ef5bce3c67ca5b9705879066"}, - {file = "rpds_py-0.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f4e56860a5af16a0fcfa070a0a20c42fbb2012eed1eb5ceeddcc7f8079214281"}, - {file = "rpds_py-0.10.6-cp311-none-win32.whl", hash = "sha256:0774a46b38e70fdde0c6ded8d6d73115a7c39d7839a164cc833f170bbf539116"}, - {file = "rpds_py-0.10.6-cp311-none-win_amd64.whl", hash = "sha256:4a5ee600477b918ab345209eddafde9f91c0acd931f3776369585a1c55b04c57"}, - {file = "rpds_py-0.10.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:5ee97c683eaface61d38ec9a489e353d36444cdebb128a27fe486a291647aff6"}, - {file = "rpds_py-0.10.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0713631d6e2d6c316c2f7b9320a34f44abb644fc487b77161d1724d883662e31"}, - {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5a53f5998b4bbff1cb2e967e66ab2addc67326a274567697379dd1e326bded7"}, - {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a555ae3d2e61118a9d3e549737bb4a56ff0cec88a22bd1dfcad5b4e04759175"}, - {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:945eb4b6bb8144909b203a88a35e0a03d22b57aefb06c9b26c6e16d72e5eb0f0"}, - {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:52c215eb46307c25f9fd2771cac8135d14b11a92ae48d17968eda5aa9aaf5071"}, - {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1b3cd23d905589cb205710b3988fc8f46d4a198cf12862887b09d7aaa6bf9b9"}, - {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64ccc28683666672d7c166ed465c09cee36e306c156e787acef3c0c62f90da5a"}, - {file = "rpds_py-0.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:516a611a2de12fbea70c78271e558f725c660ce38e0006f75139ba337d56b1f6"}, - {file = "rpds_py-0.10.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9ff93d3aedef11f9c4540cf347f8bb135dd9323a2fc705633d83210d464c579d"}, - {file = "rpds_py-0.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d858532212f0650be12b6042ff4378dc2efbb7792a286bee4489eaa7ba010586"}, - {file = "rpds_py-0.10.6-cp312-none-win32.whl", hash = "sha256:3c4eff26eddac49d52697a98ea01b0246e44ca82ab09354e94aae8823e8bda02"}, - {file = "rpds_py-0.10.6-cp312-none-win_amd64.whl", hash = "sha256:150eec465dbc9cbca943c8e557a21afdcf9bab8aaabf386c44b794c2f94143d2"}, - {file = "rpds_py-0.10.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:cf693eb4a08eccc1a1b636e4392322582db2a47470d52e824b25eca7a3977b53"}, - {file = "rpds_py-0.10.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4134aa2342f9b2ab6c33d5c172e40f9ef802c61bb9ca30d21782f6e035ed0043"}, - {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e782379c2028a3611285a795b89b99a52722946d19fc06f002f8b53e3ea26ea9"}, - {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f6da6d842195fddc1cd34c3da8a40f6e99e4a113918faa5e60bf132f917c247"}, - {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4a9fe992887ac68256c930a2011255bae0bf5ec837475bc6f7edd7c8dfa254e"}, - {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b788276a3c114e9f51e257f2a6f544c32c02dab4aa7a5816b96444e3f9ffc336"}, - {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caa1afc70a02645809c744eefb7d6ee8fef7e2fad170ffdeacca267fd2674f13"}, - {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bddd4f91eede9ca5275e70479ed3656e76c8cdaaa1b354e544cbcf94c6fc8ac4"}, - {file = "rpds_py-0.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:775049dfa63fb58293990fc59473e659fcafd953bba1d00fc5f0631a8fd61977"}, - {file = "rpds_py-0.10.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:c6c45a2d2b68c51fe3d9352733fe048291e483376c94f7723458cfd7b473136b"}, - {file = "rpds_py-0.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0699ab6b8c98df998c3eacf51a3b25864ca93dab157abe358af46dc95ecd9801"}, - {file = "rpds_py-0.10.6-cp38-none-win32.whl", hash = "sha256:ebdab79f42c5961682654b851f3f0fc68e6cc7cd8727c2ac4ffff955154123c1"}, - {file = "rpds_py-0.10.6-cp38-none-win_amd64.whl", hash = "sha256:24656dc36f866c33856baa3ab309da0b6a60f37d25d14be916bd3e79d9f3afcf"}, - {file = "rpds_py-0.10.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:0898173249141ee99ffcd45e3829abe7bcee47d941af7434ccbf97717df020e5"}, - {file = "rpds_py-0.10.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9e9184fa6c52a74a5521e3e87badbf9692549c0fcced47443585876fcc47e469"}, - {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5752b761902cd15073a527b51de76bbae63d938dc7c5c4ad1e7d8df10e765138"}, - {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99a57006b4ec39dbfb3ed67e5b27192792ffb0553206a107e4aadb39c5004cd5"}, - {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09586f51a215d17efdb3a5f090d7cbf1633b7f3708f60a044757a5d48a83b393"}, - {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e225a6a14ecf44499aadea165299092ab0cba918bb9ccd9304eab1138844490b"}, - {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2039f8d545f20c4e52713eea51a275e62153ee96c8035a32b2abb772b6fc9e5"}, - {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:34ad87a831940521d462ac11f1774edf867c34172010f5390b2f06b85dcc6014"}, - {file = "rpds_py-0.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dcdc88b6b01015da066da3fb76545e8bb9a6880a5ebf89e0f0b2e3ca557b3ab7"}, - {file = "rpds_py-0.10.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:25860ed5c4e7f5e10c496ea78af46ae8d8468e0be745bd233bab9ca99bfd2647"}, - {file = "rpds_py-0.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7854a207ef77319ec457c1eb79c361b48807d252d94348305db4f4b62f40f7f3"}, - {file = "rpds_py-0.10.6-cp39-none-win32.whl", hash = "sha256:e6fcc026a3f27c1282c7ed24b7fcac82cdd70a0e84cc848c0841a3ab1e3dea2d"}, - {file = "rpds_py-0.10.6-cp39-none-win_amd64.whl", hash = "sha256:e98c4c07ee4c4b3acf787e91b27688409d918212dfd34c872201273fdd5a0e18"}, - {file = "rpds_py-0.10.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:68fe9199184c18d997d2e4293b34327c0009a78599ce703e15cd9a0f47349bba"}, - {file = "rpds_py-0.10.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3339eca941568ed52d9ad0f1b8eb9fe0958fa245381747cecf2e9a78a5539c42"}, - {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a360cfd0881d36c6dc271992ce1eda65dba5e9368575663de993eeb4523d895f"}, - {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:031f76fc87644a234883b51145e43985aa2d0c19b063e91d44379cd2786144f8"}, - {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f36a9d751f86455dc5278517e8b65580eeee37d61606183897f122c9e51cef3"}, - {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:052a832078943d2b2627aea0d19381f607fe331cc0eb5df01991268253af8417"}, - {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:023574366002bf1bd751ebaf3e580aef4a468b3d3c216d2f3f7e16fdabd885ed"}, - {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:defa2c0c68734f4a82028c26bcc85e6b92cced99866af118cd6a89b734ad8e0d"}, - {file = "rpds_py-0.10.6-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:879fb24304ead6b62dbe5034e7b644b71def53c70e19363f3c3be2705c17a3b4"}, - {file = "rpds_py-0.10.6-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:53c43e10d398e365da2d4cc0bcaf0854b79b4c50ee9689652cdc72948e86f487"}, - {file = "rpds_py-0.10.6-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:3777cc9dea0e6c464e4b24760664bd8831738cc582c1d8aacf1c3f546bef3f65"}, - {file = "rpds_py-0.10.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:40578a6469e5d1df71b006936ce95804edb5df47b520c69cf5af264d462f2cbb"}, - {file = "rpds_py-0.10.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:cf71343646756a072b85f228d35b1d7407da1669a3de3cf47f8bbafe0c8183a4"}, - {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10f32b53f424fc75ff7b713b2edb286fdbfc94bf16317890260a81c2c00385dc"}, - {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:81de24a1c51cfb32e1fbf018ab0bdbc79c04c035986526f76c33e3f9e0f3356c"}, - {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac17044876e64a8ea20ab132080ddc73b895b4abe9976e263b0e30ee5be7b9c2"}, - {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e8a78bd4879bff82daef48c14d5d4057f6856149094848c3ed0ecaf49f5aec2"}, - {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78ca33811e1d95cac8c2e49cb86c0fb71f4d8409d8cbea0cb495b6dbddb30a55"}, - {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c63c3ef43f0b3fb00571cff6c3967cc261c0ebd14a0a134a12e83bdb8f49f21f"}, - {file = "rpds_py-0.10.6-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:7fde6d0e00b2fd0dbbb40c0eeec463ef147819f23725eda58105ba9ca48744f4"}, - {file = "rpds_py-0.10.6-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:79edd779cfc46b2e15b0830eecd8b4b93f1a96649bcb502453df471a54ce7977"}, - {file = "rpds_py-0.10.6-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9164ec8010327ab9af931d7ccd12ab8d8b5dc2f4c6a16cbdd9d087861eaaefa1"}, - {file = "rpds_py-0.10.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d29ddefeab1791e3c751e0189d5f4b3dbc0bbe033b06e9c333dca1f99e1d523e"}, - {file = "rpds_py-0.10.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:30adb75ecd7c2a52f5e76af50644b3e0b5ba036321c390b8e7ec1bb2a16dd43c"}, - {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd609fafdcdde6e67a139898196698af37438b035b25ad63704fd9097d9a3482"}, - {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6eef672de005736a6efd565577101277db6057f65640a813de6c2707dc69f396"}, - {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cf4393c7b41abbf07c88eb83e8af5013606b1cdb7f6bc96b1b3536b53a574b8"}, - {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad857f42831e5b8d41a32437f88d86ead6c191455a3499c4b6d15e007936d4cf"}, - {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d7360573f1e046cb3b0dceeb8864025aa78d98be4bb69f067ec1c40a9e2d9df"}, - {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d08f63561c8a695afec4975fae445245386d645e3e446e6f260e81663bfd2e38"}, - {file = "rpds_py-0.10.6-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:f0f17f2ce0f3529177a5fff5525204fad7b43dd437d017dd0317f2746773443d"}, - {file = "rpds_py-0.10.6-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:442626328600bde1d09dc3bb00434f5374948838ce75c41a52152615689f9403"}, - {file = "rpds_py-0.10.6-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e9616f5bd2595f7f4a04b67039d890348ab826e943a9bfdbe4938d0eba606971"}, - {file = "rpds_py-0.10.6.tar.gz", hash = "sha256:4ce5a708d65a8dbf3748d2474b580d606b1b9f91b5c6ab2a316e0b0cf7a4ba50"}, + {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]] @@ -7235,100 +7320,80 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruff" -version = "0.2.0" +version = "0.2.2" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.2.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:638ea3294f800d18bae84a492cb5a245c8d29c90d19a91d8e338937a4c27fca0"}, - {file = "ruff-0.2.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3ff35433fcf4dff6d610738712152df6b7d92351a1bde8e00bd405b08b3d5759"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf9faafbdcf4f53917019f2c230766da437d4fd5caecd12ddb68bb6a17d74399"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8153a3e4128ed770871c47545f1ae7b055023e0c222ff72a759f5a341ee06483"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8a75a98ae989a27090e9c51f763990ad5bbc92d20626d54e9701c7fe597f399"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:87057dd2fdde297130ff99553be8549ca38a2965871462a97394c22ed2dfc19d"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d232f99d3ab00094ebaf88e0fb7a8ccacaa54cc7fa3b8993d9627a11e6aed7a"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d3c641f95f435fc6754b05591774a17df41648f0daf3de0d75ad3d9f099ab92"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3826fb34c144ef1e171b323ed6ae9146ab76d109960addca730756dc19dc7b22"}, - {file = "ruff-0.2.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:eceab7d85d09321b4de18b62d38710cf296cb49e98979960a59c6b9307c18cfe"}, - {file = "ruff-0.2.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:30ad74687e1f4a9ff8e513b20b82ccadb6bd796fe5697f1e417189c5cde6be3e"}, - {file = "ruff-0.2.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a7e3818698f8460bd0f8d4322bbe99db8327e9bc2c93c789d3159f5b335f47da"}, - {file = "ruff-0.2.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:edf23041242c48b0d8295214783ef543847ef29e8226d9f69bf96592dba82a83"}, - {file = "ruff-0.2.0-py3-none-win32.whl", hash = "sha256:e155147199c2714ff52385b760fe242bb99ea64b240a9ffbd6a5918eb1268843"}, - {file = "ruff-0.2.0-py3-none-win_amd64.whl", hash = "sha256:ba918e01cdd21e81b07555564f40d307b0caafa9a7a65742e98ff244f5035c59"}, - {file = "ruff-0.2.0-py3-none-win_arm64.whl", hash = "sha256:3fbaff1ba9564a2c5943f8f38bc221f04bac687cc7485e45237579fee7ccda79"}, - {file = "ruff-0.2.0.tar.gz", hash = "sha256:63856b91837606c673537d2889989733d7dffde553828d3b0f0bacfa6def54be"}, + {file = "ruff-0.2.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0a9efb032855ffb3c21f6405751d5e147b0c6b631e3ca3f6b20f917572b97eb6"}, + {file = "ruff-0.2.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d450b7fbff85913f866a5384d8912710936e2b96da74541c82c1b458472ddb39"}, + {file = "ruff-0.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecd46e3106850a5c26aee114e562c329f9a1fbe9e4821b008c4404f64ff9ce73"}, + {file = "ruff-0.2.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e22676a5b875bd72acd3d11d5fa9075d3a5f53b877fe7b4793e4673499318ba"}, + {file = "ruff-0.2.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1695700d1e25a99d28f7a1636d85bafcc5030bba9d0578c0781ba1790dbcf51c"}, + {file = "ruff-0.2.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b0c232af3d0bd8f521806223723456ffebf8e323bd1e4e82b0befb20ba18388e"}, + {file = "ruff-0.2.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f63d96494eeec2fc70d909393bcd76c69f35334cdbd9e20d089fb3f0640216ca"}, + {file = "ruff-0.2.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a61ea0ff048e06de273b2e45bd72629f470f5da8f71daf09fe481278b175001"}, + {file = "ruff-0.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1439c8f407e4f356470e54cdecdca1bd5439a0673792dbe34a2b0a551a2fe3"}, + {file = "ruff-0.2.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:940de32dc8853eba0f67f7198b3e79bc6ba95c2edbfdfac2144c8235114d6726"}, + {file = "ruff-0.2.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:0c126da55c38dd917621552ab430213bdb3273bb10ddb67bc4b761989210eb6e"}, + {file = "ruff-0.2.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3b65494f7e4bed2e74110dac1f0d17dc8e1f42faaa784e7c58a98e335ec83d7e"}, + {file = "ruff-0.2.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1ec49be4fe6ddac0503833f3ed8930528e26d1e60ad35c2446da372d16651ce9"}, + {file = "ruff-0.2.2-py3-none-win32.whl", hash = "sha256:d920499b576f6c68295bc04e7b17b6544d9d05f196bb3aac4358792ef6f34325"}, + {file = "ruff-0.2.2-py3-none-win_amd64.whl", hash = "sha256:cc9a91ae137d687f43a44c900e5d95e9617cb37d4c989e462980ba27039d239d"}, + {file = "ruff-0.2.2-py3-none-win_arm64.whl", hash = "sha256:c9d15fc41e6054bfc7200478720570078f0b41c9ae4f010bcc16bd6f4d1aacdd"}, + {file = "ruff-0.2.2.tar.gz", hash = "sha256:e62ed7f36b3068a30ba39193a14274cd706bc486fad521276458022f7bccb31d"}, ] [[package]] name = "s3transfer" -version = "0.7.0" +version = "0.10.0" description = "An Amazon S3 Transfer Manager" optional = false -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "s3transfer-0.7.0-py3-none-any.whl", hash = "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a"}, - {file = "s3transfer-0.7.0.tar.gz", hash = "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"}, + {file = "s3transfer-0.10.0-py3-none-any.whl", hash = "sha256:3cdb40f5cfa6966e812209d0994f2a4709b561c88e90cf00c2696d2df4e56b2e"}, + {file = "s3transfer-0.10.0.tar.gz", hash = "sha256:d0c8bbf672d5eebbe4e57945e23b972d963f07d82f661cabf678a5c88831595b"}, ] [package.dependencies] -botocore = ">=1.12.36,<2.0a.0" +botocore = ">=1.33.2,<2.0a.0" [package.extras] -crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] +crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] [[package]] name = "scikit-learn" -version = "1.4.0" +version = "1.4.1.post1" description = "A set of python modules for machine learning and data mining" optional = false python-versions = ">=3.9" files = [ - {file = "scikit-learn-1.4.0.tar.gz", hash = "sha256:d4373c984eba20e393216edd51a3e3eede56cbe93d4247516d205643c3b93121"}, - {file = "scikit_learn-1.4.0-1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fce93a7473e2f4ee4cc280210968288d6a7d7ad8dc6fa7bb7892145e407085f9"}, - {file = "scikit_learn-1.4.0-1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d77df3d1e15fc37a9329999979fa7868ba8655dbab21fe97fc7ddabac9e08cc7"}, - {file = "scikit_learn-1.4.0-1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2404659fedec40eeafa310cd14d613e564d13dbf8f3c752d31c095195ec05de6"}, - {file = "scikit_learn-1.4.0-1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e98632da8f6410e6fb6bf66937712c949b4010600ccd3f22a5388a83e610cc3c"}, - {file = "scikit_learn-1.4.0-1-cp310-cp310-win_amd64.whl", hash = "sha256:11b3b140f70fbc9f6a08884631ae8dd60a4bb2d7d6d1de92738ea42b740d8992"}, - {file = "scikit_learn-1.4.0-1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8341eabdc754d5ab91641a7763243845e96b6d68e03e472531e88a4f1b09f21"}, - {file = "scikit_learn-1.4.0-1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d1f6bce875ac2bb6b52514f67c185c564ccd299a05b65b7bab091a4c13dde12d"}, - {file = "scikit_learn-1.4.0-1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c408b46b2fd61952d519ea1af2f8f0a7a703e1433923ab1704c4131520b2083b"}, - {file = "scikit_learn-1.4.0-1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b465dd1dcd237b7b1dcd1a9048ccbf70a98c659474324fa708464c3a2533fad"}, - {file = "scikit_learn-1.4.0-1-cp311-cp311-win_amd64.whl", hash = "sha256:0db8e22c42f7980fe5eb22069b1f84c48966f3e0d23a01afde5999e3987a2501"}, - {file = "scikit_learn-1.4.0-1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7eef6ea2ed289af40e88c0be9f7704ca8b5de18508a06897c3fe21e0905efdf"}, - {file = "scikit_learn-1.4.0-1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:349669b01435bc4dbf25c6410b0892073befdaec52637d1a1d1ff53865dc8db3"}, - {file = "scikit_learn-1.4.0-1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d439c584e58434d0350701bd33f6c10b309e851fccaf41c121aed55f6851d8cf"}, - {file = "scikit_learn-1.4.0-1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0e2427d9ef46477625ab9b55c1882844fe6fc500f418c3f8e650200182457bc"}, - {file = "scikit_learn-1.4.0-1-cp312-cp312-win_amd64.whl", hash = "sha256:d3d75343940e7bf9b85c830c93d34039fa015eeb341c5c0b4cd7a90dadfe00d4"}, - {file = "scikit_learn-1.4.0-1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:76986d22e884ab062b1beecdd92379656e9d3789ecc1f9870923c178de55f9fe"}, - {file = "scikit_learn-1.4.0-1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:e22446ad89f1cb7657f0d849dcdc345b48e2d10afa3daf2925fdb740f85b714c"}, - {file = "scikit_learn-1.4.0-1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74812c9eabb265be69d738a8ea8d4884917a59637fcbf88a5f0e9020498bc6b3"}, - {file = "scikit_learn-1.4.0-1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aad2a63e0dd386b92da3270887a29b308af4d7c750d8c4995dfd9a4798691bcc"}, - {file = "scikit_learn-1.4.0-1-cp39-cp39-win_amd64.whl", hash = "sha256:53b9e29177897c37e2ff9d4ba6ca12fdb156e22523e463db05def303f5c72b5c"}, - {file = "scikit_learn-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb8f044a8f5962613ce1feb4351d66f8d784bd072d36393582f351859b065f7d"}, - {file = "scikit_learn-1.4.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:a6372c90bbf302387792108379f1ec77719c1618d88496d0df30cb8e370b4661"}, - {file = "scikit_learn-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:785ce3c352bf697adfda357c3922c94517a9376002971bc5ea50896144bc8916"}, - {file = "scikit_learn-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0aba2a20d89936d6e72d95d05e3bf1db55bca5c5920926ad7b92c34f5e7d3bbe"}, - {file = "scikit_learn-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:2bac5d56b992f8f06816f2cd321eb86071c6f6d44bb4b1cb3d626525820d754b"}, - {file = "scikit_learn-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:27ae4b0f1b2c77107c096a7e05b33458354107b47775428d1f11b23e30a73e8a"}, - {file = "scikit_learn-1.4.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5c5c62ffb52c3ffb755eb21fa74cc2cbf2c521bd53f5c04eaa10011dbecf5f80"}, - {file = "scikit_learn-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f0d2018ac6fa055dab65fe8a485967990d33c672d55bc254c56c35287b02fab"}, - {file = "scikit_learn-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91a8918c415c4b4bf1d60c38d32958849a9191c2428ab35d30b78354085c7c7a"}, - {file = "scikit_learn-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:80a21de63275f8bcd7877b3e781679d2ff1eddfed515a599f95b2502a3283d42"}, - {file = "scikit_learn-1.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0f33bbafb310c26b81c4d41ecaebdbc1f63498a3f13461d50ed9a2e8f24d28e4"}, - {file = "scikit_learn-1.4.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:8b6ac1442ec714b4911e5aef8afd82c691b5c88b525ea58299d455acc4e8dcec"}, - {file = "scikit_learn-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05fc5915b716c6cc60a438c250108e9a9445b522975ed37e416d5ea4f9a63381"}, - {file = "scikit_learn-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:842b7d6989f3c574685e18da6f91223eb32301d0f93903dd399894250835a6f7"}, - {file = "scikit_learn-1.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:88bcb586fdff865372df1bc6be88bb7e6f9e0aa080dab9f54f5cac7eca8e2b6b"}, - {file = "scikit_learn-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f77674647dd31f56cb12ed13ed25b6ed43a056fffef051715022d2ebffd7a7d1"}, - {file = "scikit_learn-1.4.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:833999872e2920ce00f3a50839946bdac7539454e200eb6db54898a41f4bfd43"}, - {file = "scikit_learn-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:970ec697accaef10fb4f51763f3a7b1250f9f0553cf05514d0e94905322a0172"}, - {file = "scikit_learn-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:923d778f378ebacca2c672ab1740e5a413e437fb45ab45ab02578f8b689e5d43"}, - {file = "scikit_learn-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:1d041bc95006b545b59e458399e3175ab11ca7a03dc9a74a573ac891f5df1489"}, + {file = "scikit-learn-1.4.1.post1.tar.gz", hash = "sha256:93d3d496ff1965470f9977d05e5ec3376fb1e63b10e4fda5e39d23c2d8969a30"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c540aaf44729ab5cd4bd5e394f2b375e65ceaea9cdd8c195788e70433d91bbc5"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4310bff71aa98b45b46cd26fa641309deb73a5d1c0461d181587ad4f30ea3c36"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f43dd527dabff5521af2786a2f8de5ba381e182ec7292663508901cf6ceaf6e"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c02e27d65b0c7dc32f2c5eb601aaf5530b7a02bfbe92438188624524878336f2"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-win_amd64.whl", hash = "sha256:629e09f772ad42f657ca60a1a52342eef786218dd20cf1369a3b8d085e55ef8f"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6145dfd9605b0b50ae72cdf72b61a2acd87501369a763b0d73d004710ebb76b5"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1afed6951bc9d2053c6ee9a518a466cbc9b07c6a3f9d43bfe734192b6125d508"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce03506ccf5f96b7e9030fea7eb148999b254c44c10182ac55857bc9b5d4815f"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ba516fcdc73d60e7f48cbb0bccb9acbdb21807de3651531208aac73c758e3ab"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-win_amd64.whl", hash = "sha256:78cd27b4669513b50db4f683ef41ea35b5dddc797bd2bbd990d49897fd1c8a46"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a1e289f33f613cefe6707dead50db31930530dc386b6ccff176c786335a7b01c"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0df87de9ce1c0140f2818beef310fb2e2afdc1e66fc9ad587965577f17733649"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712c1c69c45b58ef21635360b3d0a680ff7d83ac95b6f9b82cf9294070cda710"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1754b0c2409d6ed5a3380512d0adcf182a01363c669033a2b55cca429ed86a81"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-win_amd64.whl", hash = "sha256:1d491ef66e37f4e812db7e6c8286520c2c3fc61b34bf5e59b67b4ce528de93af"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aa0029b78ef59af22cfbd833e8ace8526e4df90212db7ceccbea582ebb5d6794"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:14e4c88436ac96bf69eb6d746ac76a574c314a23c6961b7d344b38877f20fee1"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7cd3a77c32879311f2aa93466d3c288c955ef71d191503cf0677c3340ae8ae0"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a3ee19211ded1a52ee37b0a7b373a8bfc66f95353af058a210b692bd4cda0dd"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-win_amd64.whl", hash = "sha256:234b6bda70fdcae9e4abbbe028582ce99c280458665a155eed0b820599377d25"}, ] [package.dependencies] joblib = ">=1.2.0" -numpy = ">=1.19.5" +numpy = ">=1.19.5,<2.0" scipy = ">=1.6.0" threadpoolctl = ">=2.0.0" @@ -7382,13 +7447,13 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo [[package]] name = "sentry-sdk" -version = "1.33.1" +version = "1.40.6" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.33.1.tar.gz", hash = "sha256:816aeb900a54bba2d9346bad8ffac2d258c4fa09271b95a6533a714e9000f074"}, - {file = "sentry_sdk-1.33.1-py2.py3-none-any.whl", hash = "sha256:1cce906dc86afda1ecd22c4716b0c846639151a3c3b59e23826711c6525c5642"}, + {file = "sentry-sdk-1.40.6.tar.gz", hash = "sha256:f143f3fb4bb57c90abef6e2ad06b5f6f02b2ca13e4060ec5c0549c7a9ccce3fa"}, + {file = "sentry_sdk-1.40.6-py2.py3-none-any.whl", hash = "sha256:becda09660df63e55f307570e9817c664392655a7328bbc414b507e9cb874c67"}, ] [package.dependencies] @@ -7527,72 +7592,72 @@ test = ["pytest"] [[package]] name = "setuptools" -version = "68.2.2" +version = "66.1.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, - {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, + {file = "setuptools-66.1.1-py3-none-any.whl", hash = "sha256:6f590d76b713d5de4e49fe4fbca24474469f53c83632d5d0fd056f7ff7e8112b"}, + {file = "setuptools-66.1.1.tar.gz", hash = "sha256:ac4008d396bc9cd983ea483cb7139c0240a07bbc74ffb6232fceffedc6cf03a8"}, ] [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)", "sphinx-favicon", "sphinx-hoverxref (<2)", "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] (>=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"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "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"] [[package]] name = "shapely" -version = "2.0.2" +version = "2.0.3" description = "Manipulation and analysis of geometric objects" optional = false python-versions = ">=3.7" files = [ - {file = "shapely-2.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6ca8cffbe84ddde8f52b297b53f8e0687bd31141abb2c373fd8a9f032df415d6"}, - {file = "shapely-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:baa14fc27771e180c06b499a0a7ba697c7988c7b2b6cba9a929a19a4d2762de3"}, - {file = "shapely-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:36480e32c434d168cdf2f5e9862c84aaf4d714a43a8465ae3ce8ff327f0affb7"}, - {file = "shapely-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ef753200cbffd4f652efb2c528c5474e5a14341a473994d90ad0606522a46a2"}, - {file = "shapely-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9a41ff4323fc9d6257759c26eb1cf3a61ebc7e611e024e6091f42977303fd3a"}, - {file = "shapely-2.0.2-cp310-cp310-win32.whl", hash = "sha256:72b5997272ae8c25f0fd5b3b967b3237e87fab7978b8d6cd5fa748770f0c5d68"}, - {file = "shapely-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:34eac2337cbd67650248761b140d2535855d21b969d76d76123317882d3a0c1a"}, - {file = "shapely-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5b0c052709c8a257c93b0d4943b0b7a3035f87e2d6a8ac9407b6a992d206422f"}, - {file = "shapely-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2d217e56ae067e87b4e1731d0dc62eebe887ced729ba5c2d4590e9e3e9fdbd88"}, - {file = "shapely-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94ac128ae2ab4edd0bffcd4e566411ea7bdc738aeaf92c32a8a836abad725f9f"}, - {file = "shapely-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa3ee28f5e63a130ec5af4dc3c4cb9c21c5788bb13c15e89190d163b14f9fb89"}, - {file = "shapely-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:737dba15011e5a9b54a8302f1748b62daa207c9bc06f820cd0ad32a041f1c6f2"}, - {file = "shapely-2.0.2-cp311-cp311-win32.whl", hash = "sha256:45ac6906cff0765455a7b49c1670af6e230c419507c13e2f75db638c8fc6f3bd"}, - {file = "shapely-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:dc9342fc82e374130db86a955c3c4525bfbf315a248af8277a913f30911bed9e"}, - {file = "shapely-2.0.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:06f193091a7c6112fc08dfd195a1e3846a64306f890b151fa8c63b3e3624202c"}, - {file = "shapely-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eebe544df5c018134f3c23b6515877f7e4cd72851f88a8d0c18464f414d141a2"}, - {file = "shapely-2.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7e92e7c255f89f5cdf777690313311f422aa8ada9a3205b187113274e0135cd8"}, - {file = "shapely-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be46d5509b9251dd9087768eaf35a71360de6afac82ce87c636990a0871aa18b"}, - {file = "shapely-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5533a925d8e211d07636ffc2fdd9a7f9f13d54686d00577eeb11d16f00be9c4"}, - {file = "shapely-2.0.2-cp312-cp312-win32.whl", hash = "sha256:084b023dae8ad3d5b98acee9d3bf098fdf688eb0bb9b1401e8b075f6a627b611"}, - {file = "shapely-2.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:ea84d1cdbcf31e619d672b53c4532f06253894185ee7acb8ceb78f5f33cbe033"}, - {file = "shapely-2.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ed1e99702125e7baccf401830a3b94d810d5c70b329b765fe93451fe14cf565b"}, - {file = "shapely-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7d897e6bdc6bc64f7f65155dbbb30e49acaabbd0d9266b9b4041f87d6e52b3a"}, - {file = "shapely-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0521d76d1e8af01e712db71da9096b484f081e539d4f4a8c97342e7971d5e1b4"}, - {file = "shapely-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:5324be299d4c533ecfcfd43424dfd12f9428fd6f12cda38a4316da001d6ef0ea"}, - {file = "shapely-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:78128357a0cee573257a0c2c388d4b7bf13cb7dbe5b3fe5d26d45ebbe2a39e25"}, - {file = "shapely-2.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:87dc2be34ac3a3a4a319b963c507ac06682978a5e6c93d71917618b14f13066e"}, - {file = "shapely-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:42997ac806e4583dad51c80a32d38570fd9a3d4778f5e2c98f9090aa7db0fe91"}, - {file = "shapely-2.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ccfd5fa10a37e67dbafc601c1ddbcbbfef70d34c3f6b0efc866ddbdb55893a6c"}, - {file = "shapely-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7c95d3379ae3abb74058938a9fcbc478c6b2e28d20dace38f8b5c587dde90aa"}, - {file = "shapely-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a21353d28209fb0d8cc083e08ca53c52666e0d8a1f9bbe23b6063967d89ed24"}, - {file = "shapely-2.0.2-cp38-cp38-win32.whl", hash = "sha256:03e63a99dfe6bd3beb8d5f41ec2086585bb969991d603f9aeac335ad396a06d4"}, - {file = "shapely-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:c6fd29fbd9cd76350bd5cc14c49de394a31770aed02d74203e23b928f3d2f1aa"}, - {file = "shapely-2.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1f217d28ecb48e593beae20a0082a95bd9898d82d14b8fcb497edf6bff9a44d7"}, - {file = "shapely-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:394e5085b49334fd5b94fa89c086edfb39c3ecab7f669e8b2a4298b9d523b3a5"}, - {file = "shapely-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fd3ad17b64466a033848c26cb5b509625c87d07dcf39a1541461cacdb8f7e91c"}, - {file = "shapely-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d41a116fcad58048d7143ddb01285e1a8780df6dc1f56c3b1e1b7f12ed296651"}, - {file = "shapely-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dea9a0651333cf96ef5bb2035044e3ad6a54f87d90e50fe4c2636debf1b77abc"}, - {file = "shapely-2.0.2-cp39-cp39-win32.whl", hash = "sha256:b8eb0a92f7b8c74f9d8fdd1b40d395113f59bd8132ca1348ebcc1f5aece94b96"}, - {file = "shapely-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:794affd80ca0f2c536fc948a3afa90bd8fb61ebe37fe873483ae818e7f21def4"}, - {file = "shapely-2.0.2.tar.gz", hash = "sha256:1713cc04c171baffc5b259ba8531c58acc2a301707b7f021d88a15ed090649e7"}, -] - -[package.dependencies] -numpy = ">=1.14" + {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:af7e9abe180b189431b0f490638281b43b84a33a960620e6b2e8d3e3458b61a1"}, + {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:98040462b36ced9671e266b95c326b97f41290d9d17504a1ee4dc313a7667b9c"}, + {file = "shapely-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:71eb736ef2843f23473c6e37f6180f90f0a35d740ab284321548edf4e55d9a52"}, + {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:881eb9dbbb4a6419667e91fcb20313bfc1e67f53dbb392c6840ff04793571ed1"}, + {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f10d2ccf0554fc0e39fad5886c839e47e207f99fdf09547bc687a2330efda35b"}, + {file = "shapely-2.0.3-cp310-cp310-win32.whl", hash = "sha256:6dfdc077a6fcaf74d3eab23a1ace5abc50c8bce56ac7747d25eab582c5a2990e"}, + {file = "shapely-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:64c5013dacd2d81b3bb12672098a0b2795c1bf8190cfc2980e380f5ef9d9e4d9"}, + {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:56cee3e4e8159d6f2ce32e421445b8e23154fd02a0ac271d6a6c0b266a8e3cce"}, + {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:619232c8276fded09527d2a9fd91a7885ff95c0ff9ecd5e3cb1e34fbb676e2ae"}, + {file = "shapely-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2a7d256db6f5b4b407dc0c98dd1b2fcf1c9c5814af9416e5498d0a2e4307a4b"}, + {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45f0c8cd4583647db3216d965d49363e6548c300c23fd7e57ce17a03f824034"}, + {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13cb37d3826972a82748a450328fe02a931dcaed10e69a4d83cc20ba021bc85f"}, + {file = "shapely-2.0.3-cp311-cp311-win32.whl", hash = "sha256:9302d7011e3e376d25acd30d2d9e70d315d93f03cc748784af19b00988fc30b1"}, + {file = "shapely-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6b464f2666b13902835f201f50e835f2f153f37741db88f68c7f3b932d3505fa"}, + {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e86e7cb8e331a4850e0c2a8b2d66dc08d7a7b301b8d1d34a13060e3a5b4b3b55"}, + {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c91981c99ade980fc49e41a544629751a0ccd769f39794ae913e53b07b2f78b9"}, + {file = "shapely-2.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd45d456983dc60a42c4db437496d3f08a4201fbf662b69779f535eb969660af"}, + {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:882fb1ffc7577e88c1194f4f1757e277dc484ba096a3b94844319873d14b0f2d"}, + {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9f2d93bff2ea52fa93245798cddb479766a18510ea9b93a4fb9755c79474889"}, + {file = "shapely-2.0.3-cp312-cp312-win32.whl", hash = "sha256:99abad1fd1303b35d991703432c9481e3242b7b3a393c186cfb02373bf604004"}, + {file = "shapely-2.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:6f555fe3304a1f40398977789bc4fe3c28a11173196df9ece1e15c5bc75a48db"}, + {file = "shapely-2.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a983cc418c1fa160b7d797cfef0e0c9f8c6d5871e83eae2c5793fce6a837fad9"}, + {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18bddb8c327f392189a8d5d6b9a858945722d0bb95ccbd6a077b8e8fc4c7890d"}, + {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:442f4dcf1eb58c5a4e3428d88e988ae153f97ab69a9f24e07bf4af8038536325"}, + {file = "shapely-2.0.3-cp37-cp37m-win32.whl", hash = "sha256:31a40b6e3ab00a4fd3a1d44efb2482278642572b8e0451abdc8e0634b787173e"}, + {file = "shapely-2.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:59b16976c2473fec85ce65cc9239bef97d4205ab3acead4e6cdcc72aee535679"}, + {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:705efbce1950a31a55b1daa9c6ae1c34f1296de71ca8427974ec2f27d57554e3"}, + {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:601c5c0058a6192df704cb889439f64994708563f57f99574798721e9777a44b"}, + {file = "shapely-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f24ecbb90a45c962b3b60d8d9a387272ed50dc010bfe605f1d16dfc94772d8a1"}, + {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8c2a2989222c6062f7a0656e16276c01bb308bc7e5d999e54bf4e294ce62e76"}, + {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42bceb9bceb3710a774ce04908fda0f28b291323da2688f928b3f213373b5aee"}, + {file = "shapely-2.0.3-cp38-cp38-win32.whl", hash = "sha256:54d925c9a311e4d109ec25f6a54a8bd92cc03481a34ae1a6a92c1fe6729b7e01"}, + {file = "shapely-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:300d203b480a4589adefff4c4af0b13919cd6d760ba3cbb1e56275210f96f654"}, + {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:083d026e97b6c1f4a9bd2a9171c7692461092ed5375218170d91705550eecfd5"}, + {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:27b6e1910094d93e9627f2664121e0e35613262fc037051680a08270f6058daf"}, + {file = "shapely-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:71b2de56a9e8c0e5920ae5ddb23b923490557ac50cb0b7fa752761bf4851acde"}, + {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d279e56bbb68d218d63f3efc80c819cedcceef0e64efbf058a1df89dc57201b"}, + {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88566d01a30f0453f7d038db46bc83ce125e38e47c5f6bfd4c9c287010e9bf74"}, + {file = "shapely-2.0.3-cp39-cp39-win32.whl", hash = "sha256:58afbba12c42c6ed44c4270bc0e22f3dadff5656d711b0ad335c315e02d04707"}, + {file = "shapely-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:5026b30433a70911979d390009261b8c4021ff87c7c3cbd825e62bb2ffa181bc"}, + {file = "shapely-2.0.3.tar.gz", hash = "sha256:4d65d0aa7910af71efa72fd6447e02a8e5dd44da81a983de9d736d6e6ccbe674"}, +] + +[package.dependencies] +numpy = ">=1.14,<2" [package.extras] docs = ["matplotlib", "numpydoc (==1.1.*)", "sphinx", "sphinx-book-theme", "sphinx-remove-toctrees"] @@ -7633,13 +7698,13 @@ files = [ [[package]] name = "sniffio" -version = "1.3.0" +version = "1.3.1" 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"}, + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] [[package]] @@ -7666,57 +7731,57 @@ files = [ [[package]] name = "sqlalchemy" -version = "1.4.50" +version = "1.4.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.50-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:54138aa80d2dedd364f4e8220eef284c364d3270aaef621570aa2bd99902e2e8"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, - {file = "SQLAlchemy-1.4.50-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:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win32.whl", hash = "sha256:6c78e3fb4a58e900ec433b6b5f4efe1a0bf81bbb366ae7761c6e0051dd310ee3"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win_amd64.whl", hash = "sha256:d55f7a33e8631e15af1b9e67c9387c894fedf6deb1a19f94be8731263c51d515"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:324b1fdd50e960a93a231abb11d7e0f227989a371e3b9bd4f1259920f15d0304"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win32.whl", hash = "sha256:8bdab03ff34fc91bfab005e96f672ae207d87e0ac7ee716d74e87e7046079d8b"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win_amd64.whl", hash = "sha256:52e01d60b06f03b0a5fc303c8aada405729cbc91a56a64cead8cb7c0b9b13c1a"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:77fde9bf74f4659864c8e26ac08add8b084e479b9a18388e7db377afc391f926"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win32.whl", hash = "sha256:e86c920b7d362cfa078c8b40e7765cbc34efb44c1007d7557920be9ddf138ec7"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win_amd64.whl", hash = "sha256:6b3df20fbbcbcd1c1d43f49ccf3eefb370499088ca251ded632b8cbaee1d497d"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:fb9adc4c6752d62c6078c107d23327aa3023ef737938d0135ece8ffb67d07030"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, - {file = "SQLAlchemy-1.4.50-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:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win32.whl", hash = "sha256:1b9c4359d3198f341480e57494471201e736de459452caaacf6faa1aca852bd8"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win_amd64.whl", hash = "sha256:35e4520f7c33c77f2636a1e860e4f8cafaac84b0b44abe5de4c6c8890b6aaa6d"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f5b1fb2943d13aba17795a770d22a2ec2214fc65cff46c487790192dda3a3ee7"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, - {file = "SQLAlchemy-1.4.50-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:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win32.whl", hash = "sha256:7b4396452273aedda447e5aebe68077aa7516abf3b3f48408793e771d696f397"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win_amd64.whl", hash = "sha256:752f9df3dddbacb5f42d8405b2d5885675a93501eb5f86b88f2e47a839cf6337"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:35c7ed095a4b17dbc8813a2bfb38b5998318439da8e6db10a804df855e3a9e3a"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, - {file = "SQLAlchemy-1.4.50-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:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win32.whl", hash = "sha256:8a219688297ee5e887a93ce4679c87a60da4a5ce62b7cb4ee03d47e9e767f558"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl", hash = "sha256:a648770db002452703b729bdcf7d194e904aa4092b9a4d6ab185b48d13252f63"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:4be4da121d297ce81e1ba745a0a0521c6cf8704634d7b520e350dce5964c71ac"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, - {file = "SQLAlchemy-1.4.50-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:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win32.whl", hash = "sha256:a7c9b9dca64036008962dd6b0d9fdab2dfdbf96c82f74dbd5d86006d8d24a30f"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win_amd64.whl", hash = "sha256:df200762efbd672f7621b253721644642ff04a6ff957236e0e2fe56d9ca34d2c"}, - {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, + {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"}, ] [package.dependencies] @@ -7724,7 +7789,7 @@ greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platfo [package.extras] aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] -aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2)"] @@ -7734,24 +7799,24 @@ mssql-pyodbc = ["pyodbc"] mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] mysql-connector = ["mysql-connector-python"] -oracle = ["cx-oracle (>=7)", "cx-oracle (>=7,<8)"] +oracle = ["cx_oracle (>=7)", "cx_oracle (>=7,<8)"] postgresql = ["psycopg2 (>=2.7)"] postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] postgresql-psycopg2binary = ["psycopg2-binary"] postgresql-psycopg2cffi = ["psycopg2cffi"] pymysql = ["pymysql", "pymysql (<1)"] -sqlcipher = ["sqlcipher3-binary"] +sqlcipher = ["sqlcipher3_binary"] [[package]] name = "sqlalchemy-bigquery" -version = "1.8.0" +version = "1.9.0" description = "SQLAlchemy dialect for BigQuery" optional = false -python-versions = ">=3.7, <3.12" +python-versions = ">=3.8, <3.13" files = [ - {file = "sqlalchemy-bigquery-1.8.0.tar.gz", hash = "sha256:fdc58cc23415b9e251dc90a97052a4831894c15b1b54911909d746696eba6f38"}, - {file = "sqlalchemy_bigquery-1.8.0-py2.py3-none-any.whl", hash = "sha256:d755a9f820c373858cc799fd4b03d334fb1c372e21a6d224f82eb4f10db00124"}, + {file = "sqlalchemy-bigquery-1.9.0.tar.gz", hash = "sha256:549b250ad4c75fe9efaff4ee32e08deb488f1886affbb159d8c149b6b537524f"}, + {file = "sqlalchemy_bigquery-1.9.0-py2.py3-none-any.whl", hash = "sha256:b1a4c2f5b672ca7bb02e1357d6f3aeabbb19a67e986f2ccd2654fb005705e98e"}, ] [package.dependencies] @@ -7770,13 +7835,13 @@ tests = ["packaging", "pytz"] [[package]] name = "sqlalchemy-jsonfield" -version = "1.0.1.post0" +version = "1.0.2" description = "SQLALchemy JSONField implementation for storing dicts at SQL" optional = false python-versions = ">=3.7.0" files = [ - {file = "SQLAlchemy-JSONField-1.0.1.post0.tar.gz", hash = "sha256:72a5e714fe0493d2660abd7484a9fd9f492f493a0856288dd22a5decb29f5dc4"}, - {file = "SQLAlchemy_JSONField-1.0.1.post0-py3-none-any.whl", hash = "sha256:d6f1e5ee329a3c0d9d164e40d81a2143ac8332e09988fbbaff84179dac5503d4"}, + {file = "SQLAlchemy-JSONField-1.0.2.tar.gz", hash = "sha256:dab3abc9d75a1640e7f3d4875564a4199f665d27863da8d5a089e4eaca5e67f2"}, + {file = "SQLAlchemy_JSONField-1.0.2-py3-none-any.whl", hash = "sha256:b2945fa1e60b07d5764a7c73b18da427948b35dd4c07c0e94939001dc2dacf77"}, ] [package.dependencies] @@ -7894,13 +7959,13 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] [[package]] name = "termcolor" -version = "2.3.0" +version = "2.4.0" description = "ANSI color formatting for output in terminal" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "termcolor-2.3.0-py3-none-any.whl", hash = "sha256:3afb05607b89aed0ffe25202399ee0867ad4d3cb4180d98aaf8eefa6a5f7d475"}, - {file = "termcolor-2.3.0.tar.gz", hash = "sha256:b5b08f68937f138fe92f6c089b99f1e2da0ae56c52b78bf7075fd95420fd9a5a"}, + {file = "termcolor-2.4.0-py3-none-any.whl", hash = "sha256:9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63"}, + {file = "termcolor-2.4.0.tar.gz", hash = "sha256:aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a"}, ] [package.extras] @@ -7919,13 +7984,13 @@ files = [ [[package]] name = "threadpoolctl" -version = "3.2.0" +version = "3.3.0" description = "threadpoolctl" optional = false python-versions = ">=3.8" files = [ - {file = "threadpoolctl-3.2.0-py3-none-any.whl", hash = "sha256:2b7818516e423bdaebb97c723f86a7c6b0a83d3f3b0970328d66f4d9104dc032"}, - {file = "threadpoolctl-3.2.0.tar.gz", hash = "sha256:c96a0ba3bdddeaca37dc4cc7344aafad41cdb8c313f74fdfe387a867bba93355"}, + {file = "threadpoolctl-3.3.0-py3-none-any.whl", hash = "sha256:6155be1f4a39f31a18ea70f94a77e0ccd57dced08122ea61109e7da89883781e"}, + {file = "threadpoolctl-3.3.0.tar.gz", hash = "sha256:5dac632b4fa2d43f42130267929af3ba01399ef4bd1882918e92dbc30365d30c"}, ] [[package]] @@ -7952,49 +8017,49 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.3" +version = "0.12.4" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"}, - {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"}, + {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, + {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, ] [[package]] name = "tornado" -version = "6.3.3" +version = "6.4" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">= 3.8" files = [ - {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:502fba735c84450974fec147340016ad928d29f1e91f49be168c0a4c18181e1d"}, - {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:805d507b1f588320c26f7f097108eb4023bbaa984d63176d1652e184ba24270a"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd19ca6c16882e4d37368e0152f99c099bad93e0950ce55e71daed74045908f"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ac51f42808cca9b3613f51ffe2a965c8525cb1b00b7b2d56828b8045354f76a"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71a8db65160a3c55d61839b7302a9a400074c9c753040455494e2af74e2501f2"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ceb917a50cd35882b57600709dd5421a418c29ddc852da8bcdab1f0db33406b0"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:7d01abc57ea0dbb51ddfed477dfe22719d376119844e33c661d873bf9c0e4a16"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9dc4444c0defcd3929d5c1eb5706cbe1b116e762ff3e0deca8b715d14bf6ec17"}, - {file = "tornado-6.3.3-cp38-abi3-win32.whl", hash = "sha256:65ceca9500383fbdf33a98c0087cb975b2ef3bfb874cb35b8de8740cf7f41bd3"}, - {file = "tornado-6.3.3-cp38-abi3-win_amd64.whl", hash = "sha256:22d3c2fa10b5793da13c807e6fc38ff49a4f6e1e3868b0a6f4164768bb8e20f5"}, - {file = "tornado-6.3.3.tar.gz", hash = "sha256:e7d8db41c0181c80d76c982aacc442c0783a2c54d6400fe028954201a2e032fe"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, + {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, + {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, + {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, ] [[package]] name = "traitlets" -version = "5.13.0" +version = "5.14.1" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" files = [ - {file = "traitlets-5.13.0-py3-none-any.whl", hash = "sha256:baf991e61542da48fe8aef8b779a9ea0aa38d8a54166ee250d5af5ecf4486619"}, - {file = "traitlets-5.13.0.tar.gz", hash = "sha256:9b232b9430c8f57288c1024b34a8f0251ddcc47268927367a0dd3eeaca40deb5"}, + {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"}, + {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.6.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "typer" @@ -8030,24 +8095,24 @@ files = [ [[package]] name = "tzdata" -version = "2023.3" +version = "2024.1" 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-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, + {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] [[package]] name = "uc-micro-py" -version = "1.0.2" +version = "1.0.3" description = "Micro subset of unicode data files for linkify-it-py projects." optional = false python-versions = ">=3.7" files = [ - {file = "uc-micro-py-1.0.2.tar.gz", hash = "sha256:30ae2ac9c49f39ac6dce743bd187fcd2b574b16ca095fa74cd9396795c954c54"}, - {file = "uc_micro_py-1.0.2-py3-none-any.whl", hash = "sha256:8c9110c309db9d9e87302e2f4ad2c3152770930d88ab385cd544e7a7e75f3de0"}, + {file = "uc-micro-py-1.0.3.tar.gz", hash = "sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a"}, + {file = "uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5"}, ] [package.extras] @@ -8155,19 +8220,19 @@ test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)" [[package]] name = "virtualenv" -version = "20.24.6" +version = "20.25.1" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.24.6-py3-none-any.whl", hash = "sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381"}, - {file = "virtualenv-20.24.6.tar.gz", hash = "sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af"}, + {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"}, + {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"}, ] [package.dependencies] distlib = ">=0.3.7,<1" filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<4" +platformdirs = ">=3.9.1,<5" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] @@ -8175,13 +8240,13 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "wandb" -version = "0.16.2" +version = "0.16.3" description = "A CLI and library for interacting with the Weights & Biases API." optional = false python-versions = ">=3.7" files = [ - {file = "wandb-0.16.2-py3-none-any.whl", hash = "sha256:6b119cf3c01f35e7276b62d052128e5320621d182c9eb5796a12cf62a9b3134f"}, - {file = "wandb-0.16.2.tar.gz", hash = "sha256:e40cd79ea6272fe4762a80b9f47b172e141daeb3b56eb9d1e192ebd10752e64e"}, + {file = "wandb-0.16.3-py3-none-any.whl", hash = "sha256:b8907ddd775c27dc6c12687386a86b5d6acf291060f9ae680bbc61cc8fc03237"}, + {file = "wandb-0.16.3.tar.gz", hash = "sha256:d789acda32053b18b7a160d0595837e45a3c8a79d25e1fe1f051875303f480ec"}, ] [package.dependencies] @@ -8207,42 +8272,45 @@ launch = ["PyYAML (>=6.0.0)", "awscli", "azure-containerregistry", "azure-identi media = ["bokeh", "moviepy", "numpy", "pillow", "plotly (>=5.18.0)", "rdkit-pypi", "soundfile"] models = ["cloudpickle"] perf = ["orjson"] +reports = ["pydantic (>=2.0.0)"] sweeps = ["sweeps (>=0.2.0)"] [[package]] name = "watchdog" -version = "3.0.0" +version = "4.0.0" description = "Filesystem events monitoring" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41"}, - {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397"}, - {file = "watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7"}, - {file = "watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8"}, - {file = "watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100"}, - {file = "watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346"}, - {file = "watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"}, - {file = "watchdog-3.0.0-py3-none-win32.whl", hash = "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f"}, - {file = "watchdog-3.0.0-py3-none-win_amd64.whl", hash = "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c"}, - {file = "watchdog-3.0.0-py3-none-win_ia64.whl", hash = "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759"}, - {file = "watchdog-3.0.0.tar.gz", hash = "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b"}, + {file = "watchdog-4.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6c47bdd680009b11c9ac382163e05ca43baf4127954c5f6d0250e7d772d2b80c"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8350d4055505412a426b6ad8c521bc7d367d1637a762c70fdd93a3a0d595990b"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c17d98799f32e3f55f181f19dd2021d762eb38fdd381b4a748b9f5a36738e935"}, + {file = "watchdog-4.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4986db5e8880b0e6b7cd52ba36255d4793bf5cdc95bd6264806c233173b1ec0b"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:11e12fafb13372e18ca1bbf12d50f593e7280646687463dd47730fd4f4d5d257"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5369136a6474678e02426bd984466343924d1df8e2fd94a9b443cb7e3aa20d19"}, + {file = "watchdog-4.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76ad8484379695f3fe46228962017a7e1337e9acadafed67eb20aabb175df98b"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:45cc09cc4c3b43fb10b59ef4d07318d9a3ecdbff03abd2e36e77b6dd9f9a5c85"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eed82cdf79cd7f0232e2fdc1ad05b06a5e102a43e331f7d041e5f0e0a34a51c4"}, + {file = "watchdog-4.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba30a896166f0fee83183cec913298151b73164160d965af2e93a20bbd2ab605"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d18d7f18a47de6863cd480734613502904611730f8def45fc52a5d97503e5101"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2895bf0518361a9728773083908801a376743bcc37dfa252b801af8fd281b1ca"}, + {file = "watchdog-4.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87e9df830022488e235dd601478c15ad73a0389628588ba0b028cb74eb72fed8"}, + {file = "watchdog-4.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6e949a8a94186bced05b6508faa61b7adacc911115664ccb1923b9ad1f1ccf7b"}, + {file = "watchdog-4.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6a4db54edea37d1058b08947c789a2354ee02972ed5d1e0dca9b0b820f4c7f92"}, + {file = "watchdog-4.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d31481ccf4694a8416b681544c23bd271f5a123162ab603c7d7d2dd7dd901a07"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87"}, + {file = "watchdog-4.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269"}, + {file = "watchdog-4.0.0-py3-none-win32.whl", hash = "sha256:8f9a542c979df62098ae9c58b19e03ad3df1c9d8c6895d96c0d51da17b243b1c"}, + {file = "watchdog-4.0.0-py3-none-win_amd64.whl", hash = "sha256:f970663fa4f7e80401a7b0cbeec00fa801bf0287d93d48368fc3e6fa32716245"}, + {file = "watchdog-4.0.0-py3-none-win_ia64.whl", hash = "sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7"}, + {file = "watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec"}, ] [package.extras] @@ -8250,13 +8318,13 @@ watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "wcmatch" -version = "8.5" +version = "8.5.1" description = "Wildcard/glob file name matcher." optional = false python-versions = ">=3.8" files = [ - {file = "wcmatch-8.5-py3-none-any.whl", hash = "sha256:14554e409b142edeefab901dc68ad570b30a72a8ab9a79106c5d5e9a6d241bd5"}, - {file = "wcmatch-8.5.tar.gz", hash = "sha256:86c17572d0f75cbf3bcb1a18f3bf2f9e72b39a9c08c9b4a74e991e1882a8efb3"}, + {file = "wcmatch-8.5.1-py3-none-any.whl", hash = "sha256:24c19cedc92bc9c9e27f39db4e1824d72f95bd2cea32b254a47a45b1a1b227ed"}, + {file = "wcmatch-8.5.1.tar.gz", hash = "sha256:c0088c7f6426cf6bf27e530e2b7b734031905f7e490475fd83c7c5008ab581b3"}, ] [package.dependencies] @@ -8264,24 +8332,24 @@ bracex = ">=2.1.1" [[package]] name = "wcwidth" -version = "0.2.9" +version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.9-py2.py3-none-any.whl", hash = "sha256:9a929bd8380f6cd9571a968a9c8f4353ca58d7cd812a4822bba831f8d685b223"}, - {file = "wcwidth-0.2.9.tar.gz", hash = "sha256:a675d1a4a2d24ef67096a04b85b02deeecd8e226f57b5e3a72dbb9ed99d27da8"}, + {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 = "werkzeug" -version = "2.3.7" +version = "2.3.8" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.8" files = [ - {file = "werkzeug-2.3.7-py3-none-any.whl", hash = "sha256:effc12dba7f3bd72e605ce49807bbe692bd729c3bb122a3b91747a6ae77df528"}, - {file = "werkzeug-2.3.7.tar.gz", hash = "sha256:2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8"}, + {file = "werkzeug-2.3.8-py3-none-any.whl", hash = "sha256:bba1f19f8ec89d4d607a3bd62f1904bd2e609472d93cd85e9d4e178f472c3748"}, + {file = "werkzeug-2.3.8.tar.gz", hash = "sha256:554b257c74bbeb7a0d254160a4f8ffe185243f52a52035060b761ca62d977f03"}, ] [package.dependencies] @@ -8292,101 +8360,96 @@ watchdog = ["watchdog (>=2.3)"] [[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]] name = "wtforms" -version = "3.0.1" +version = "3.1.2" description = "Form validation and rendering for Python web development." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "WTForms-3.0.1-py3-none-any.whl", hash = "sha256:837f2f0e0ca79481b92884962b914eba4e72b7a2daaf1f939c890ed0124b834b"}, - {file = "WTForms-3.0.1.tar.gz", hash = "sha256:6b351bbb12dd58af57ffef05bc78425d08d1914e0fd68ee14143b7ade023c5bc"}, + {file = "wtforms-3.1.2-py3-none-any.whl", hash = "sha256:bf831c042829c8cdbad74c27575098d541d039b1faa74c771545ecac916f2c07"}, + {file = "wtforms-3.1.2.tar.gz", hash = "sha256:f8d76180d7239c94c6322f7990ae1216dae3659b7aa1cee94b6318bdffb474b9"}, ] [package.dependencies] -MarkupSafe = "*" +markupsafe = "*" [package.extras] email = ["email-validator"] @@ -8449,85 +8512,101 @@ dev = ["doc8", "flake8", "flake8-import-order", "rstcheck[sphinx]", "sphinx"] [[package]] name = "yarl" -version = "1.9.2" +version = "1.9.4" description = "Yet another URL library" optional = false python-versions = ">=3.7" files = [ - {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82"}, - {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8"}, - {file = "yarl-1.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9"}, - {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560"}, - {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac"}, - {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea"}, - {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608"}, - {file = "yarl-1.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5"}, - {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0"}, - {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4"}, - {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095"}, - {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3"}, - {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528"}, - {file = "yarl-1.9.2-cp310-cp310-win32.whl", hash = "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3"}, - {file = "yarl-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde"}, - {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6"}, - {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb"}, - {file = "yarl-1.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0"}, - {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2"}, - {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191"}, - {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d"}, - {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7"}, - {file = "yarl-1.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6"}, - {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8"}, - {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9"}, - {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be"}, - {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7"}, - {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a"}, - {file = "yarl-1.9.2-cp311-cp311-win32.whl", hash = "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8"}, - {file = "yarl-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051"}, - {file = "yarl-1.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74"}, - {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367"}, - {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef"}, - {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3"}, - {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938"}, - {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc"}, - {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33"}, - {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45"}, - {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185"}, - {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04"}, - {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582"}, - {file = "yarl-1.9.2-cp37-cp37m-win32.whl", hash = "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b"}, - {file = "yarl-1.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368"}, - {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac"}, - {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4"}, - {file = "yarl-1.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574"}, - {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb"}, - {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59"}, - {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e"}, - {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417"}, - {file = "yarl-1.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78"}, - {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333"}, - {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c"}, - {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5"}, - {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc"}, - {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b"}, - {file = "yarl-1.9.2-cp38-cp38-win32.whl", hash = "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7"}, - {file = "yarl-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72"}, - {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9"}, - {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8"}, - {file = "yarl-1.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7"}, - {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716"}, - {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a"}, - {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3"}, - {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955"}, - {file = "yarl-1.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1"}, - {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4"}, - {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6"}, - {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf"}, - {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3"}, - {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80"}, - {file = "yarl-1.9.2-cp39-cp39-win32.whl", hash = "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623"}, - {file = "yarl-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18"}, - {file = "yarl-1.9.2.tar.gz", hash = "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, + {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, + {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, + {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, + {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, + {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, + {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, + {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, + {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, + {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, + {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, + {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, + {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, + {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, + {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, + {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, ] [package.dependencies] @@ -8552,4 +8631,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10, <3.11" -content-hash = "8d85933db4bf8f4ca92ef227e9a767d26f4f7d2b360083449cfafc54878885fc" +content-hash = "6f20e245eeac06bbf87c036df5db1198b74d90609a907d5b781eb023a1d7dd81" diff --git a/pyproject.toml b/pyproject.toml index 3f4f44545..2b4150996 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,6 +33,7 @@ omegaconf = "^2.3.0" typing-extensions = "^4.9.0" scikit-learn = "^1.3.2" pandas = "^2.1.4" +fsspec = ">=2022.11.0" [tool.poetry.dev-dependencies] pre-commit = "^3.6.0" diff --git a/src/airflow/dags/gwas_curation_update.py b/src/airflow/dags/gwas_curation_update.py index 1ef0f39f9..830007e6d 100644 --- a/src/airflow/dags/gwas_curation_update.py +++ b/src/airflow/dags/gwas_curation_update.py @@ -18,7 +18,7 @@ ): update_gwas_curation = common.submit_step( cluster_name=CLUSTER_NAME, - step_id="gwas_catalog_curation_update", + step_id="ot_gwas_catalog_study_curation", task_id="gwas_catalog_curation_update", other_args=[ f"step.gwas_catalog_study_curation_out=gs://genetics_etl_python_playground/input/v2d/GWAS_Catalog_study_curation_{RUN_DATE}.tsv", diff --git a/src/gentropy/datasource/gwas_catalog/study_index.py b/src/gentropy/datasource/gwas_catalog/study_index.py index cb6d3338a..4d317b44b 100644 --- a/src/gentropy/datasource/gwas_catalog/study_index.py +++ b/src/gentropy/datasource/gwas_catalog/study_index.py @@ -549,12 +549,12 @@ def annotate_ancestries( ) # Parsing cohort information: - cohorts = ancestry_lut.select( - f.col("STUDY ACCESSION").alias("studyId"), - GWASCatalogStudyIndexParser.parse_cohorts(f.col("COHORT(S)")).alias( - "cohorts" - ), - ).distinct() + # cohorts = ancestry_lut.select( + # f.col("STUDY ACCESSION").alias("studyId"), + # GWASCatalogStudyIndexParser.parse_cohorts(f.col("COHORT(S)")).alias( + # "cohorts" + # ), + # ).distinct() # Get a high resolution dataset on experimental stage: ancestry_stages = ( @@ -644,8 +644,9 @@ def annotate_ancestries( ).select( "studyId", "discoverySamples", "ldPopulationStructure", "replicationSamples" ) - self.df = self.df.join(parsed_ancestry_lut, on="studyId", how="left").join( - cohorts, on="studyId", how="left" + self.df = ( + self.df.join(parsed_ancestry_lut, on="studyId", how="left") + # .join(cohorts, on="studyId", how="left") ) return self diff --git a/utils/update_GWAS_Catalog_data.sh b/utils/update_GWAS_Catalog_data.sh index 1e380d30c..00ee44d8f 100755 --- a/utils/update_GWAS_Catalog_data.sh +++ b/utils/update_GWAS_Catalog_data.sh @@ -15,7 +15,7 @@ get_release_url(){ # Function to get the Ensembl and EFO version which used to ground GWAS data: get_release_info(){ - curl -s https://www.ebi.ac.uk/gwas/api/search/stats | jq -r '"\(.ensemblbuild) \(.efoversion)"' + curl -s "${1}" | jq -r '"\(.ensemblbuild) \(.efoversion)"' } logging(){ @@ -41,6 +41,18 @@ upload_file_to_gcp(){ fi } +fetch_from_ftp(){ + URL=${1} + TARGET=${2} + wget -q ${URL} -O ${TARGET} + if [ $? -ne 0 ]; then + logging "Failed to fetch ${URL}" + return + else + logging "File ${TARGET} saved." + fi +} + # Resources: export BASE_URL=ftp://ftp.ebi.ac.uk/pub/databases/gwas export RELEASE_INFO_URL=https://www.ebi.ac.uk/gwas/api/search/stats @@ -71,7 +83,7 @@ read YEAR MONTH DAY < <(get_release_url) logging "Most recent GWAS Catalog release: ${YEAR}/${MONTH}/${DAY}" # Capturing release metadata: -read ENSEMBL EFO < <(get_release_info) +read ENSEMBL EFO < <(get_release_info ${RELEASE_INFO_URL}) logging "Genes were mapped to v${ENSEMBL} Ensembl release." logging "Diseases were mapped to ${EFO} EFO release." @@ -80,26 +92,19 @@ RELEASE_URL=${BASE_URL}/releases/${YEAR}/${MONTH}/${DAY} logging "Datafiles are fetching from ${RELEASE_URL}" # Fetching files while assigning properly dated and annotated names: -wget -q ${RELEASE_URL}/gwas-catalog-associations_ontology-annotated.tsv -O ${ASSOCIATION_FILE} -logging "File ${ASSOCIATION_FILE} saved." +fetch_from_ftp ${RELEASE_URL}/gwas-catalog-associations_ontology-annotated.tsv ${ASSOCIATION_FILE} -wget -q ${RELEASE_URL}/gwas-catalog-download-studies-v1.0.3.txt -O ${PUBLISHED_STUDIES_FILE} -logging "File ${PUBLISHED_STUDIES_FILE} saved." +fetch_from_ftp ${RELEASE_URL}/gwas-catalog-download-studies-v1.0.3.1.txt ${PUBLISHED_STUDIES_FILE} -wget -q ${RELEASE_URL}/gwas-catalog-unpublished-studies-v1.0.3.tsv -O ${UNPUBLISHED_STUDIES_FILE} -logging "File ${UNPUBLISHED_STUDIES_FILE} saved." +fetch_from_ftp ${RELEASE_URL}/gwas-catalog-unpublished-studies-v1.0.3.1.tsv ${UNPUBLISHED_STUDIES_FILE} -wget -q ${RELEASE_URL}/gwas-catalog-download-ancestries-v1.0.3.txt -O ${PUBLISHED_ANCESTRIES_FILE} -logging "File ${PUBLISHED_ANCESTRIES_FILE} saved." +fetch_from_ftp ${RELEASE_URL}/gwas-catalog-download-ancestries-v1.0.3.1.txt ${PUBLISHED_ANCESTRIES_FILE} -wget -q ${RELEASE_URL}/gwas-catalog-unpublished-ancestries-v1.0.3.tsv -O ${UNPUBLISHED_ANCESTRIES_FILE} -logging "File ${UNPUBLISHED_ANCESTRIES_FILE} saved." +fetch_from_ftp ${RELEASE_URL}/gwas-catalog-unpublished-ancestries-v1.0.3.1.tsv ${UNPUBLISHED_ANCESTRIES_FILE} -wget -q ${BASE_URL}/summary_statistics/harmonised_list.txt -O ${HARMONISED_LIST_FILE} -logging "File ${HARMONISED_LIST_FILE} saved." +fetch_from_ftp ${BASE_URL}/summary_statistics/harmonised_list.txt ${HARMONISED_LIST_FILE} -wget -q ${GWAS_CATALOG_STUDY_CURATION_URL} -O ${GWAS_CATALOG_STUDY_CURATION_FILE} -logging "In-house GWAS Catalog study curation file fetched from GitHub." +fetch_from_ftp ${GWAS_CATALOG_STUDY_CURATION_URL} ${GWAS_CATALOG_STUDY_CURATION_FILE} logging "Copying files to GCP..." From 655a5f36638badf961f97b1e575e92ee0e2e6e2e Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Wed, 28 Feb 2024 14:52:18 +0000 Subject: [PATCH 02/86] fix: updating cohort parser to new GWAS Catalog format --- .../datasource/gwas_catalog/study_index.py | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/gentropy/datasource/gwas_catalog/study_index.py b/src/gentropy/datasource/gwas_catalog/study_index.py index 4d317b44b..641254754 100644 --- a/src/gentropy/datasource/gwas_catalog/study_index.py +++ b/src/gentropy/datasource/gwas_catalog/study_index.py @@ -305,6 +305,7 @@ def _parse_study_table( parse_efos(f.col("MAPPED BACKGROUND TRAIT URI")).alias( "backgroundTraitFromSourceMappedIds" ), + cls.parse_cohorts(f.col("COHORTS")).alias("cohorts"), ), _schema=StudyIndexGWASCatalog.get_schema(), ) @@ -548,14 +549,6 @@ def annotate_ancestries( ) # studyId has not been split yet ) - # Parsing cohort information: - # cohorts = ancestry_lut.select( - # f.col("STUDY ACCESSION").alias("studyId"), - # GWASCatalogStudyIndexParser.parse_cohorts(f.col("COHORT(S)")).alias( - # "cohorts" - # ), - # ).distinct() - # Get a high resolution dataset on experimental stage: ancestry_stages = ( ancestry.groupBy("studyId") @@ -644,10 +637,7 @@ def annotate_ancestries( ).select( "studyId", "discoverySamples", "ldPopulationStructure", "replicationSamples" ) - self.df = ( - self.df.join(parsed_ancestry_lut, on="studyId", how="left") - # .join(cohorts, on="studyId", how="left") - ) + self.df = self.df.join(parsed_ancestry_lut, on="studyId", how="left") return self def annotate_sumstats_info( From d4dd97eaf75448596e971752e9af2f7f4ab8bb2d Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Mon, 4 Mar 2024 11:57:21 +0000 Subject: [PATCH 03/86] fix: updating study index generation from gwas flat files --- src/gentropy/datasource/gwas_catalog/study_index.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gentropy/datasource/gwas_catalog/study_index.py b/src/gentropy/datasource/gwas_catalog/study_index.py index 641254754..e8b49b0da 100644 --- a/src/gentropy/datasource/gwas_catalog/study_index.py +++ b/src/gentropy/datasource/gwas_catalog/study_index.py @@ -305,7 +305,7 @@ def _parse_study_table( parse_efos(f.col("MAPPED BACKGROUND TRAIT URI")).alias( "backgroundTraitFromSourceMappedIds" ), - cls.parse_cohorts(f.col("COHORTS")).alias("cohorts"), + cls.parse_cohorts(f.col("COHORT")).alias("cohorts"), ), _schema=StudyIndexGWASCatalog.get_schema(), ) From c2e3e91cb3a883b672d212265ac4c453fd2fcced Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Thu, 7 Mar 2024 23:36:33 +0000 Subject: [PATCH 04/86] chore: resolve merge commit --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 51d4e05a8..14be15497 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ ci: skip: [poetry-lock] repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.0 + rev: v0.3.1 hooks: - id: ruff args: @@ -59,7 +59,7 @@ repos: exclude: "CHANGELOG.md" - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook - rev: v9.11.0 + rev: v9.13.0 hooks: - id: commitlint additional_dependencies: ["@commitlint/config-conventional"] From 9b64cf8f2d3adfe1fd248799bba9cfdb9bc1ac25 Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Thu, 7 Mar 2024 23:31:20 +0000 Subject: [PATCH 05/86] chore: bumping for 24.03 release --- config/datasets/ot_gcp.yaml | 8 +- src/airflow/dags/common_airflow.py | 6 +- src/airflow/dags/finngen_preprocess.py | 2 +- src/airflow/dags/test_DAG.py | 170 +++++++++++++++++++++++++ 4 files changed, 177 insertions(+), 9 deletions(-) create mode 100644 src/airflow/dags/test_DAG.py diff --git a/config/datasets/ot_gcp.yaml b/config/datasets/ot_gcp.yaml index ebc9fc9c2..566e2ec50 100644 --- a/config/datasets/ot_gcp.yaml +++ b/config/datasets/ot_gcp.yaml @@ -1,10 +1,10 @@ # Release specific configuration: -release_version: "24.01" +release_version: "24.03" dev_version: XX.XX release_folder: gs://genetics_etl_python_playground/releases/${datasets.release_version} inputs: gs://genetics_etl_python_playground/input -static_assets: gs://genetics_etl_python_playground/static_assetss +static_assets: gs://genetics_etl_python_playground/static_assets outputs: gs://genetics_etl_python_playground/output/python_etl/parquet/${datasets.dev_version} ## Datasets: @@ -36,9 +36,9 @@ anderson: ${datasets.static_assets}/andersson2014/enhancer_tss_associations.bed javierre: ${datasets.static_assets}/javierre_2016_preprocessed jung: ${datasets.static_assets}/jung2019_pchic_tableS3.csv thurman: ${datasets.static_assets}/thurman2012/genomewideCorrs_above0.7_promoterPlusMinus500kb_withGeneNames_32celltypeCategories.bed8.gz -target_index: ${datasets.release_folder}/targets # OTP 23.12 data +target_index: ${datasets.static_assets}/targets # OTP 23.12 data +gene_interactions: ${datasets.static_assets}/interaction # OTP 23.12 data -gene_interactions: ${datasets.release_folder}/interaction # OTP 23.12 data finngen_finemapping_results_path: ${datasets.inputs}/Finngen_susie_finemapping_r10/full finngen_finemapping_summaries_path: ${datasets.inputs}/Finngen_susie_finemapping_r10/Finngen_susie_credset_summary_r10.tsv diff --git a/src/airflow/dags/common_airflow.py b/src/airflow/dags/common_airflow.py index e3dc56ccb..b6069b282 100644 --- a/src/airflow/dags/common_airflow.py +++ b/src/airflow/dags/common_airflow.py @@ -302,10 +302,8 @@ def generate_dag(cluster_name: str, tasks: list[DataprocSubmitJobOperator]) -> A Any: Airflow DAG. """ return ( - create_cluster(cluster_name) - >> install_dependencies(cluster_name) - >> tasks - >> delete_cluster(cluster_name) + create_cluster(cluster_name) >> install_dependencies(cluster_name) >> tasks + # >> delete_cluster(cluster_name) ) diff --git a/src/airflow/dags/finngen_preprocess.py b/src/airflow/dags/finngen_preprocess.py index 38aeb2510..d4fc9446d 100644 --- a/src/airflow/dags/finngen_preprocess.py +++ b/src/airflow/dags/finngen_preprocess.py @@ -26,7 +26,7 @@ ) FINNGEN_FM_SUMMARIES = "gs://genetics_etl_python_playground/input/Finngen_susie_finemapping_r10/Finngen_susie_credset_summary_r10.tsv" FINNGEN_PREFIX = "FINNGEN_R10_" -FINNGEN_FM_OUT = "gs://genetics_etl_python_playground/output/python_etl/parquet/XX.XX/finngen_susie_processed" +FINNGEN_FM_OUT = f"{FINNGEN_BUCKET}/credible_set_datasets/finngen_susie" with DAG( dag_id=Path(__file__).stem, diff --git a/src/airflow/dags/test_DAG.py b/src/airflow/dags/test_DAG.py new file mode 100644 index 000000000..3f9a8ee13 --- /dev/null +++ b/src/airflow/dags/test_DAG.py @@ -0,0 +1,170 @@ +"""Test DAG to prototype data transfer.""" + +from __future__ import annotations + +from pathlib import Path + +import common_airflow as common +from airflow.models.dag import DAG +from airflow.operators.python import ShortCircuitOperator +from airflow.providers.google.cloud.hooks.gcs import GCSHook +from airflow.providers.google.cloud.transfers.gcs_to_gcs import GCSToGCSOperator +from airflow.utils.task_group import TaskGroup + +CLUSTER_NAME = "otg-etl" +SOURCE_CONFIG_FILE_PATH = Path(__file__).parent / "configs" / "dag.yaml" + +# Release specific variables: +RELEASE_VERSION = "24.03" +RELEASE_BUCKET_NAME = "genetics_etl_python_playground" + +# Datasource paths: +GWAS_CATALOG_BUCKET_NAME = "gwas_catalog_data" +EQTL_BUCKET_NAME = "eqtl_catalog_data" +FINNGEN_BUCKET_NAME = "finngen_data" +FINNGEN_RELEASE = "r10" + +# Files to move: +DATA_TO_MOVE = { + # GWAS Catalog summary study index: + "gwas_catalog_study_index": { + "source_bucket": GWAS_CATALOG_BUCKET_NAME, + "source_object": "study_index", + "destination_bucket": RELEASE_BUCKET_NAME, + "destination_object": f"releases/{RELEASE_VERSION}/study_index/gwas_catalog", + }, + # PICS credible sets from GWAS Catalog curated associations: + "gwas_catalog_curated_credible_set": { + "source_bucket": GWAS_CATALOG_BUCKET_NAME, + "source_object": "credible_set_datasets/gwas_catalog_curated", + "destination_bucket": RELEASE_BUCKET_NAME, + "destination_object": f"releases/{RELEASE_VERSION}/credible_set/gwas_catalog_curated", + }, + # PICS credible sets from GWAS Catalog summary statistics: + "gwas_catalog_sumstats_credible_set": { + "source_bucket": GWAS_CATALOG_BUCKET_NAME, + "source_object": "credible_set_datasets/gwas_catalog_summary_stats", + "destination_bucket": RELEASE_BUCKET_NAME, + "destination_object": f"releases/{RELEASE_VERSION}/credible_set/gwas_catalog_summary_statistics", + }, + # GWAS Catalog manifest files: + "gwas_catalog_manifests": { + "source_bucket": GWAS_CATALOG_BUCKET_NAME, + "source_object": "manifests", + "destination_bucket": RELEASE_BUCKET_NAME, + "destination_object": f"releases/{RELEASE_VERSION}/manifests", + }, + # eQTL Catalog study index: + "eqtl_catalog_study_index": { + "source_bucket": EQTL_BUCKET_NAME, + "source_object": "study_index", + "destination_bucket": RELEASE_BUCKET_NAME, + "destination_object": f"releases/{RELEASE_VERSION}/study_index/eqtl_catalog", + }, + # eQTL Catalog SuSiE credible sets: + "eqtl_catalog_susie_credible_set": { + "source_bucket": EQTL_BUCKET_NAME, + "source_object": "credible_set_datasets/susie", + "destination_bucket": RELEASE_BUCKET_NAME, + "destination_object": f"releases/{RELEASE_VERSION}/credible_set/eqtl_catalog_susie", + }, + # Finngen study index: + "finngen_study_index": { + "source_bucket": FINNGEN_BUCKET_NAME, + "source_object": f"{FINNGEN_RELEASE}/study_index", + "destination_bucket": RELEASE_BUCKET_NAME, + "destination_object": f"releases/{RELEASE_VERSION}/study_index/finngen", + }, + # Finngen summary statistics: + "finngen_PICS_credible_set": { + "source_bucket": FINNGEN_BUCKET_NAME, + "source_object": f"{FINNGEN_RELEASE}/credible_set_datasets/finngen_pics", + "destination_bucket": RELEASE_BUCKET_NAME, + "destination_object": f"releases/{RELEASE_VERSION}/credible_set/finngen_pics", + }, + # Finngen SuSiE credible sets: + "finngen_susie_credible_set": { + "source_bucket": FINNGEN_BUCKET_NAME, + "source_object": f"{FINNGEN_RELEASE}/credible_set_datasets/finngen_susie_processed", + "destination_bucket": RELEASE_BUCKET_NAME, + "destination_object": f"releases/{RELEASE_VERSION}/credible_set/finngen_susie", + }, + # L2G gold standard: + "gold_standard": { + "source_bucket": "genetics_etl_python_playground", + "source_object": "input/l2g/gold_standard/curation.json", + "destination_bucket": RELEASE_BUCKET_NAME, + "destination_object": f"releases/{RELEASE_VERSION}/locus_to_gene_gold_standard.json", + }, +} + + +# Test if release folder exists: +def test_release_folder_exists() -> bool: + """This function tests if the release folder exists. + + Returns: + bool: False if the release folder exists, True otherwise. + """ + hook = GCSHook(gcp_conn_id="google_cloud_default") + return ( + False + if hook.exists(RELEASE_BUCKET_NAME, f"releases/{RELEASE_VERSION}") + else True + ) + + +# This operator meant to fail the DAG if the release folder exists: +test_folder = ShortCircuitOperator( + task_id="test_release_folder_exists", + python_callable=test_release_folder_exists, +) + +with DAG( + dag_id=Path(__file__).stem, + description="Open Targets Genetics ETL workflow", + default_args=common.shared_dag_args, + **common.shared_dag_kwargs, +): + # Compiling tasks for moving data to the right place: + with TaskGroup(group_id="data_transfer") as data_transfer: + # Defining the tasks to execute in the task group: + [ + GCSToGCSOperator( + task_id=f"move_{data_name}", + source_bucket=data["source_bucket"], + source_object=data["source_object"], + destination_bucket=data["destination_bucket"], + destination_object=data["destination_object"], + ) + for data_name, data in DATA_TO_MOVE.items() + ] + + with TaskGroup(group_id="genetics_etl") as genetics_etl: + # Parse and define all steps and their prerequisites. + tasks = {} + steps = common.read_yaml_config(SOURCE_CONFIG_FILE_PATH) + for step in steps: + # Define task for the current step. + step_id = step["id"] + this_task = common.submit_step( + cluster_name=CLUSTER_NAME, + step_id=step_id, + task_id=step_id, + ) + # Chain prerequisites. + tasks[step_id] = this_task + for prerequisite in step.get("prerequisites", []): + this_task.set_upstream(tasks[prerequisite]) + + common.generate_dag(cluster_name=CLUSTER_NAME, tasks=list(tasks.values())) + + # DAG description: + ( + # Test if release folder exists: + test_folder + # Run data transfer: + >> data_transfer + # Once datasets are transferred, run the rest of the steps: + >> genetics_etl + ) From 9ee712a19cfec8ed2832206eb12407dec1956576 Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Thu, 7 Mar 2024 23:45:15 +0000 Subject: [PATCH 06/86] fix: reverting some changes --- .pre-commit-config.yaml | 4 ++-- src/airflow/dags/common_airflow.py | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 14be15497..51d4e05a8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ ci: skip: [poetry-lock] repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.1 + rev: v0.3.0 hooks: - id: ruff args: @@ -59,7 +59,7 @@ repos: exclude: "CHANGELOG.md" - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook - rev: v9.13.0 + rev: v9.11.0 hooks: - id: commitlint additional_dependencies: ["@commitlint/config-conventional"] diff --git a/src/airflow/dags/common_airflow.py b/src/airflow/dags/common_airflow.py index b6069b282..e3dc56ccb 100644 --- a/src/airflow/dags/common_airflow.py +++ b/src/airflow/dags/common_airflow.py @@ -302,8 +302,10 @@ def generate_dag(cluster_name: str, tasks: list[DataprocSubmitJobOperator]) -> A Any: Airflow DAG. """ return ( - create_cluster(cluster_name) >> install_dependencies(cluster_name) >> tasks - # >> delete_cluster(cluster_name) + create_cluster(cluster_name) + >> install_dependencies(cluster_name) + >> tasks + >> delete_cluster(cluster_name) ) From 6e62c4bfcb3f52c01df28bf6b03f454faff8bed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Irene=20L=C3=B3pez?= Date: Fri, 8 Mar 2024 10:29:57 +0100 Subject: [PATCH 07/86] chore: add tuqtl features to L2Gfeaturematrix schema --- .../assets/schemas/l2g_feature_matrix.json | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/gentropy/assets/schemas/l2g_feature_matrix.json b/src/gentropy/assets/schemas/l2g_feature_matrix.json index a1b58040b..114936168 100644 --- a/src/gentropy/assets/schemas/l2g_feature_matrix.json +++ b/src/gentropy/assets/schemas/l2g_feature_matrix.json @@ -125,6 +125,30 @@ "name": "sqtlColocLlrMaximumNeighborhood", "nullable": true, "type": "float" + }, + { + "metadata": {}, + "name": "tuqtlColocClppMaximum", + "nullable": true, + "type": "float" + }, + { + "metadata": {}, + "name": "tuqtlColocClppMaximumNeighborhood", + "nullable": true, + "type": "float" + }, + { + "metadata": {}, + "name": "tuqtlColocLlrMaximum", + "nullable": true, + "type": "float" + }, + { + "metadata": {}, + "name": "tuqtlColocLlrMaximumNeighborhood", + "nullable": true, + "type": "float" } ], "type": "struct" From fda650b5b2384b3c14cff1d8ca2872a68d8fb329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Irene=20L=C3=B3pez?= Date: Fri, 8 Mar 2024 10:33:27 +0100 Subject: [PATCH 08/86] chore: add sqtl, tuqtl, pqtl features to l2g inclusion list --- src/gentropy/config.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/gentropy/config.py b/src/gentropy/config.py index 7202ee578..28935e637 100644 --- a/src/gentropy/config.py +++ b/src/gentropy/config.py @@ -213,13 +213,17 @@ class LocusToGeneConfig(StepConfig): # max clpp for each (study, locus) aggregating over all eQTLs "eqtlColocClppMaximumNeighborhood", # max clpp for each (study, locus, gene) aggregating over all pQTLs - # "pqtlColocClppMaximum", + "pqtlColocClppMaximum", # max clpp for each (study, locus) aggregating over all pQTLs - # "pqtlColocClppMaximumNeighborhood", + "pqtlColocClppMaximumNeighborhood", # max clpp for each (study, locus, gene) aggregating over all sQTLs - # "sqtlColocClppMaximum", + "sqtlColocClppMaximum", # max clpp for each (study, locus) aggregating over all sQTLs - # "sqtlColocClppMaximumNeighborhood", + "sqtlColocClppMaximumNeighborhood", + # max clpp for each (study, locus) aggregating over all tuQTLs + "tuqtlColocClppMaximum", + # max clpp for each (study, locus, gene) aggregating over all tuQTLs + "tuqtlColocClppMaximumNeighborhood", # # max log-likelihood ratio value for each (study, locus, gene) aggregating over all eQTLs # "eqtlColocLlrLocalMaximum", # # max log-likelihood ratio value for each (study, locus) aggregating over all eQTLs From 02dc66f7f358e74bbeb5d1fce475870e9d3da750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Irene=20L=C3=B3pez?= <45119610+ireneisdoomed@users.noreply.github.com> Date: Wed, 6 Mar 2024 17:16:47 +0000 Subject: [PATCH 09/86] feat: extract credible sets and studies from all eQTL Catalogue finemapping results (#518) * feat: dataflow decompress prototype (#501) * chore: commit susie results gist * feat(study_index): add `tissueFromSourceId` to schema and make `traitFromSource` nullable * fix: bug and linting fixes in new eqtl ingestion step * perf: config bugfixes and performance improvements * perf: remove data persistance to avoid executor failure * perf: load susie results for studies of interest only * perf: collect locus for leads only and optimise partitioning cols * feat: parametrise methods to include * feat: run full dag * test: add tests * fix: reorder test inputs * docs: update eqtl catalogue docs * fix: correct typos in tests docstrings * refactor: change mqtl_quantification_methods to mqtl_quantification_methods_blacklist * feat: studyId is based on measured trait and not on gene * feat: credible set lead is the variant with highest pip * feat(studies): change logic in _identify_study_type to extract qtl type based on quantization method * refactor: externalise reading logic to source classes * chore: add mqtl_quantification_methods_blacklist to yaml config * docs: update docs * fix(dag): pass bucket name to GCSDeleteBucketOperator * refactor(coloc): move get_logsum function to common utils * feat(studylocus): add calculate_credible_set_log10bf and use it for eqtlcat credible sets * fix: credible sets dataset is too large and cant be broadcasted * fix(dag): use GCSDeleteObjectsOperator instead of GCSDeleteBucketOperator * fix: correct typo * fix: correct typo --- config/step/ot_eqtl_catalogue.yaml | 1 + .../eqtl_catalogue/_eqtl_catalogue.md | 2 +- src/airflow/dags/eqtl_preprocess.py | 14 ++-- src/gentropy/common/utils.py | 23 ++++++ src/gentropy/config.py | 6 +- src/gentropy/dataset/study_locus.py | 24 ++++++ .../datasource/eqtl_catalogue/finemapping.py | 80 ++++++++++++++----- .../datasource/eqtl_catalogue/study_index.py | 63 ++++++++++++--- .../datasource/finngen/finemapping.py | 5 +- src/gentropy/eqtl_catalogue.py | 31 +++---- src/gentropy/method/colocalisation.py | 27 +------ 11 files changed, 187 insertions(+), 89 deletions(-) diff --git a/config/step/ot_eqtl_catalogue.yaml b/config/step/ot_eqtl_catalogue.yaml index 06076d228..7d4441864 100644 --- a/config/step/ot_eqtl_catalogue.yaml +++ b/config/step/ot_eqtl_catalogue.yaml @@ -4,6 +4,7 @@ defaults: eqtl_catalogue_paths_imported: ??? eqtl_catalogue_study_index_out: ??? eqtl_catalogue_credible_sets_out: ??? +mqtl_quantification_methods_blacklist: [] session: extended_spark_conf: "spark.sql.shuffle.partitions": "3200" diff --git a/docs/python_api/datasources/eqtl_catalogue/_eqtl_catalogue.md b/docs/python_api/datasources/eqtl_catalogue/_eqtl_catalogue.md index c2e7c79ce..2e95f561c 100644 --- a/docs/python_api/datasources/eqtl_catalogue/_eqtl_catalogue.md +++ b/docs/python_api/datasources/eqtl_catalogue/_eqtl_catalogue.md @@ -4,4 +4,4 @@ title: eQTL Catalogue The [eQTL Catalogue](https://www.ebi.ac.uk/eqtl/) aims to provide unified gene, protein expression and splicing Quantitative Trait Loci (QTLs) from all available human public studies. -It serves as the ultimate resource of mQTLs that we use for colocalization and target prioritization. +It serves as the ultimate resource of molecular QTLs that we use for colocalization and target prioritization. diff --git a/src/airflow/dags/eqtl_preprocess.py b/src/airflow/dags/eqtl_preprocess.py index 40a3c1d6a..ec346d137 100644 --- a/src/airflow/dags/eqtl_preprocess.py +++ b/src/airflow/dags/eqtl_preprocess.py @@ -9,10 +9,10 @@ from airflow.providers.google.cloud.operators.dataflow import ( DataflowTemplatedJobStartOperator, ) -from airflow.providers.google.cloud.operators.gcs import GCSDeleteBucketOperator +from airflow.providers.google.cloud.operators.gcs import GCSDeleteObjectsOperator CLUSTER_NAME = "otg-preprocess-eqtl" -AUTOSCALING = "do-ld-explosion" +AUTOSCALING = "eqtl-preprocess" PROJECT_ID = "open-targets-genetics-dev" EQTL_CATALOG_SUSIE_LOCATION = "gs://eqtl_catalog_data/ebi_ftp/susie" @@ -52,11 +52,10 @@ ], ) - delete_decompressed_job = GCSDeleteBucketOperator( + delete_decompressed_job = GCSDeleteObjectsOperator( task_id="delete_decompressed_files", - bucket_name=TEMP_DECOMPRESS_LOCATION, - force=True, - user_project=PROJECT_ID, + bucket_name=TEMP_DECOMPRESS_LOCATION.split("/")[2], + prefix=f"{TEMP_DECOMPRESS_LOCATION.split('/')[-1]}/", ) ( @@ -69,6 +68,5 @@ ) >> common.install_dependencies(CLUSTER_NAME) >> ingestion_job - >> delete_decompressed_job - >> common.delete_cluster(CLUSTER_NAME) + >> [delete_decompressed_job, common.delete_cluster(CLUSTER_NAME)] ) diff --git a/src/gentropy/common/utils.py b/src/gentropy/common/utils.py index 05704a299..4cdda9ad2 100644 --- a/src/gentropy/common/utils.py +++ b/src/gentropy/common/utils.py @@ -6,6 +6,7 @@ from typing import TYPE_CHECKING, Tuple import hail as hl +import numpy as np from pyspark.sql import functions as f from pyspark.sql import types as t @@ -13,6 +14,7 @@ if TYPE_CHECKING: from hail.table import Table + from numpy.typing import NDArray from pyspark.sql import Column @@ -325,3 +327,24 @@ def parse_efos(efo_uri: Column) -> Column: """ colname = efo_uri._jc.toString() return f.array_sort(f.expr(f"regexp_extract_all(`{colname}`, '([A-Z]+_[0-9]+)')")) + + +def get_logsum(arr: NDArray[np.float64]) -> float: + """Calculates logarithm of the sum of exponentials of a vector. The max is extracted to ensure that the sum is not Inf. + + This function emulates scipy's logsumexp expression. + + Args: + arr (NDArray[np.float64]): input array + + Returns: + float: logsumexp of the input array + + Example: + >>> l = [0.2, 0.1, 0.05, 0] + >>> round(get_logsum(l), 6) + 1.476557 + """ + themax = np.max(arr) + result = themax + np.log(np.sum(np.exp(arr - themax))) + return float(result) diff --git a/src/gentropy/config.py b/src/gentropy/config.py index 5e82055cb..7202ee578 100644 --- a/src/gentropy/config.py +++ b/src/gentropy/config.py @@ -113,11 +113,7 @@ class EqtlCatalogueConfig(StepConfig): eqtl_catalogue_paths_imported: str = MISSING eqtl_catalogue_study_index_out: str = MISSING eqtl_catalogue_credible_sets_out: str = MISSING - mqtl_quantification_methods: list[str] = field( - default_factory=lambda: [ - "ge", - ] - ) + mqtl_quantification_methods_blacklist: list[str] = field(default_factory=lambda: []) _target_: str = "gentropy.eqtl_catalogue.EqtlCatalogueStep" diff --git a/src/gentropy/dataset/study_locus.py b/src/gentropy/dataset/study_locus.py index 1867dfa94..4ff9f0172 100644 --- a/src/gentropy/dataset/study_locus.py +++ b/src/gentropy/dataset/study_locus.py @@ -6,12 +6,14 @@ from typing import TYPE_CHECKING import pyspark.sql.functions as f +from pyspark.sql.types import FloatType from gentropy.common.schemas import parse_spark_schema from gentropy.common.spark_helpers import ( calculate_neglog_pvalue, order_array_of_structs_by_field, ) +from gentropy.common.utils import get_logsum from gentropy.dataset.dataset import Dataset from gentropy.dataset.study_locus_overlap import StudyLocusOverlap from gentropy.method.clump import LDclumping @@ -220,6 +222,28 @@ def assign_study_locus_id(study_id_col: Column, variant_id_col: Column) -> Colum variant_id_col = f.coalesce(variant_id_col, f.rand().cast("string")) return f.xxhash64(study_id_col, variant_id_col).alias("studyLocusId") + @classmethod + def calculate_credible_set_log10bf(cls: type[StudyLocus], logbfs: Column) -> Column: + """Calculate Bayes factor for the entire credible set. The Bayes factor is calculated as the logsumexp of the logBF values of the variants in the locus. + + Args: + logbfs (Column): Array column with the logBF values of the variants in the locus. + + Returns: + Column: log10 Bayes factor for the entire credible set. + + Examples: + >>> spark.createDataFrame([([0.2, 0.1, 0.05, 0.0],)]).toDF("logBF").select(f.round(StudyLocus.calculate_credible_set_log10bf(f.col("logBF")), 7).alias("credibleSetlog10BF")).show() + +------------------+ + |credibleSetlog10BF| + +------------------+ + | 1.4765565| + +------------------+ + + """ + logsumexp_udf = f.udf(lambda x: get_logsum(x), FloatType()) + return logsumexp_udf(logbfs).cast("double").alias("credibleSetlog10BF") + @classmethod def get_schema(cls: type[StudyLocus]) -> StructType: """Provides the schema for the StudyLocus dataset. diff --git a/src/gentropy/datasource/eqtl_catalogue/finemapping.py b/src/gentropy/datasource/eqtl_catalogue/finemapping.py index af814d94f..ff55ead72 100644 --- a/src/gentropy/datasource/eqtl_catalogue/finemapping.py +++ b/src/gentropy/datasource/eqtl_catalogue/finemapping.py @@ -2,6 +2,7 @@ from __future__ import annotations from dataclasses import dataclass +from typing import TYPE_CHECKING import pyspark.sql.functions as f from pyspark.sql import Column, DataFrame, Window @@ -13,17 +14,21 @@ StructType, ) +from gentropy.common.session import Session from gentropy.common.utils import parse_pvalue from gentropy.dataset.study_locus import StudyLocus from gentropy.datasource.eqtl_catalogue.study_index import EqtlCatalogueStudyIndex +if TYPE_CHECKING: + from pyspark.sql import DataFrame + @dataclass class EqtlCatalogueFinemapping: """SuSIE finemapping dataset for eQTL Catalogue. Credible sets from SuSIE are extracted and transformed into StudyLocus objects: - - A study ID is defined as a triad between: the publication, the tissue, and the measured gene (e.g. Braineac2_substantia_nigra_ENSG00000248275) + - A study ID is defined as a triad between: the publication, the tissue, and the measured trait (e.g. Braineac2_substantia_nigra_ENSG00000248275) - Each row in the `credible_sets.tsv.gz` files is represented by molecular_trait_id/variant/rsid trios relevant for a given tissue. Each have their own finemapping statistics - log Bayes Factors are available for all variants in the `lbf_variable.txt` files """ @@ -135,7 +140,7 @@ def parse_susie_results( cls._extract_dataset_id_from_file_path(f.input_file_name()), ) .join( - f.broadcast( + ( credible_sets.withColumn( "dataset_id", cls._extract_dataset_id_from_file_path(f.input_file_name()), @@ -176,18 +181,18 @@ def parse_susie_results( f.col("logBF"), f.lit("SuSie").alias("finemappingMethod"), # Study metadata + f.col("molecular_trait_id").alias("traitFromSource"), f.col("gene_id").alias("geneId"), - f.array(f.col("molecular_trait_id")).alias("traitFromSourceMappedIds"), f.col("dataset_id"), f.concat_ws( "_", f.col("study_label"), f.col("sample_group"), - f.col("gene_id"), + f.col("molecular_trait_id"), ).alias("studyId"), - f.col("tissue_id").alias("c"), + f.col("tissue_id").alias("tissueFromSourceId"), EqtlCatalogueStudyIndex._identify_study_type( - f.col("study_label") + f.col("quant_method") ).alias("studyType"), f.col("study_label").alias("projectId"), f.concat_ws( @@ -220,19 +225,12 @@ def from_susie_results( field.name for field in StudyLocus.get_schema().fields if field.name in processed_finemapping_df.columns - ] + ["studyLocusId", "locus"] + ] + ["locus"] return StudyLocus( _df=( processed_finemapping_df.withColumn( "isLead", - f.row_number().over( - lead_w.orderBy( - *[ - f.col("pValueExponent").asc(), - f.col("pValueMantissa").asc(), - ] - ) - ) + f.row_number().over(lead_w.orderBy(f.desc("posteriorProbability"))) == f.lit(1), ) .withColumn( @@ -255,13 +253,59 @@ def from_susie_results( ) .filter(f.col("isLead")) .drop("isLead") - .withColumn( - "studyLocusId", + .select( + *study_locus_cols, StudyLocus.assign_study_locus_id( f.col("studyId"), f.col("variantId") ), + StudyLocus.calculate_credible_set_log10bf( + f.col("locus.logBF") + ).alias("credibleSetlog10BF"), ) - .select(study_locus_cols) ), _schema=StudyLocus.get_schema(), ).annotate_credible_sets() + + @classmethod + def read_credible_set_from_source( + cls: type[EqtlCatalogueFinemapping], + session: Session, + credible_set_path: str | list[str], + ) -> DataFrame: + """Load raw credible sets from eQTL Catalogue. + + Args: + session (Session): Spark session. + credible_set_path (str | list[str]): Path to raw table(s) containing finemapping results for any variant belonging to a credible set. + + Returns: + DataFrame: Credible sets DataFrame. + """ + return session.spark.read.csv( + credible_set_path, + sep="\t", + header=True, + schema=cls.raw_credible_set_schema, + ) + + @classmethod + def read_lbf_from_source( + cls: type[EqtlCatalogueFinemapping], + session: Session, + lbf_path: str | list[str], + ) -> DataFrame: + """Load raw log Bayes Factors from eQTL Catalogue. + + Args: + session (Session): Spark session. + lbf_path (str | list[str]): Path to raw table(s) containing Log Bayes Factors for each variant. + + Returns: + DataFrame: Log Bayes Factors DataFrame. + """ + return session.spark.read.csv( + lbf_path, + sep="\t", + header=True, + schema=cls.raw_lbf_schema, + ) diff --git a/src/gentropy/datasource/eqtl_catalogue/study_index.py b/src/gentropy/datasource/eqtl_catalogue/study_index.py index 611bcdff7..71cec1ec0 100644 --- a/src/gentropy/datasource/eqtl_catalogue/study_index.py +++ b/src/gentropy/datasource/eqtl_catalogue/study_index.py @@ -2,11 +2,14 @@ from __future__ import annotations +from itertools import chain from typing import TYPE_CHECKING +import pandas as pd import pyspark.sql.functions as f from pyspark.sql.types import IntegerType, StringType, StructField, StructType +from gentropy.common.session import Session from gentropy.dataset.study_index import StudyIndex if TYPE_CHECKING: @@ -23,7 +26,7 @@ class EqtlCatalogueStudyIndex: - in the same publication (e.g. Alasoo_2018) - in the same cell type or tissue (e.g. monocytes) - - and for the same gene associated with the measured molecular trait (e.g. ENSG00000141510) + - and for the same measured molecular trait (e.g. ENSG00000141510) """ @@ -40,24 +43,45 @@ class EqtlCatalogueStudyIndex: StructField("quant_method", StringType(), True), ] ) - raw_studies_metadata_path = "https://raw.githubusercontent.com/eQTL-Catalogue/eQTL-Catalogue-resources/master/data_tables/dataset_metadata.tsv" + raw_studies_metadata_path = "https://raw.githubusercontent.com/eQTL-Catalogue/eQTL-Catalogue-resources/19929ff6a99bf402194292a14f96f9615b35f65f/data_tables/dataset_metadata.tsv" @classmethod def _identify_study_type( - cls: type[EqtlCatalogueStudyIndex], study_label_col: Column + cls: type[EqtlCatalogueStudyIndex], quantification_method_col: Column ) -> Column: - """Identify the study type based on the study label. + """Identify the study type based on the method to quantify the trait. Args: - study_label_col (Column): column with the study label that identifies the supporting publication. + quantification_method_col (Column): column with the label of the method to quantify the trait. Available methods are [here](https://www.ebi.ac.uk/eqtl/Methods/) Returns: Column: The study type. + + Examples: + >>> df = spark.createDataFrame([("ge",), ("exon",), ("tx",)], ["quant_method"]) + >>> df.withColumn("study_type", EqtlCatalogueStudyIndex._identify_study_type(f.col("quant_method"))).show() + +------------+----------+ + |quant_method|study_type| + +------------+----------+ + | ge| eqtl| + | exon| eqtl| + | tx| eqtl| + +------------+----------+ + """ - return f.when( - study_label_col == "Sun_2018", - f.lit("pqtl"), - ).otherwise(f.lit("eqtl")) + method_to_study_type_mapping = { + "ge": "eqtl", + "exon": "eqtl", + "tx": "eqtl", + "microarray": "eqtl", + "leafcutter": "sqtl", + "aptamer": "pqtl", + "txrev": "tuqtl", + } + map_expr = f.create_map( + *[f.lit(x) for x in chain(*method_to_study_type_mapping.items())] + ) + return map_expr.getItem(quantification_method_col) @classmethod def get_studies_of_interest( @@ -100,3 +124,24 @@ def from_susie_results( _df=processed_finemapping_df.select(study_index_cols).distinct(), _schema=StudyIndex.get_schema(), ) + + @classmethod + def read_studies_from_source( + cls: type[EqtlCatalogueStudyIndex], + session: Session, + mqtl_quantification_methods_blacklist: list[str], + ) -> DataFrame: + """Read raw studies metadata from eQTL Catalogue. + + Args: + session (Session): Spark session. + mqtl_quantification_methods_blacklist (list[str]): Molecular trait quantification methods that we don't want to ingest. Available options in https://github.com/eQTL-Catalogue/eQTL-Catalogue-resources/blob/master/data_tables/dataset_metadata.tsv + + Returns: + DataFrame: raw studies metadata. + """ + pd.DataFrame.iteritems = pd.DataFrame.items + return session.spark.createDataFrame( + pd.read_csv(cls.raw_studies_metadata_path, sep="\t"), + schema=cls.raw_studies_metadata_schema, + ).filter(~(f.col("quant_method").isin(mqtl_quantification_methods_blacklist))) diff --git a/src/gentropy/datasource/finngen/finemapping.py b/src/gentropy/datasource/finngen/finemapping.py index 8fd12b0ba..a31ddf511 100644 --- a/src/gentropy/datasource/finngen/finemapping.py +++ b/src/gentropy/datasource/finngen/finemapping.py @@ -253,10 +253,7 @@ def from_finngen_susie_finemapping( toploci_df = get_top_ranked_in_window( processed_finngen_finemapping_df, Window.partitionBy("studyId", "region", "credibleSetIndex").orderBy( - *[ - f.col("pValueExponent").asc(), - f.col("pValueMantissa").asc(), - ] + f.desc("posteriorProbability") ), ).select( "variantId", diff --git a/src/gentropy/eqtl_catalogue.py b/src/gentropy/eqtl_catalogue.py index bfbfd79c2..7adc5d8a2 100644 --- a/src/gentropy/eqtl_catalogue.py +++ b/src/gentropy/eqtl_catalogue.py @@ -2,9 +2,6 @@ from __future__ import annotations -import pandas as pd -import pyspark.sql.functions as f - from gentropy.common.session import Session from gentropy.datasource.eqtl_catalogue.finemapping import EqtlCatalogueFinemapping from gentropy.datasource.eqtl_catalogue.study_index import EqtlCatalogueStudyIndex @@ -19,7 +16,7 @@ class EqtlCatalogueStep: def __init__( self, session: Session, - mqtl_quantification_methods: list[str], + mqtl_quantification_methods_blacklist: list[str], eqtl_catalogue_paths_imported: str, eqtl_catalogue_study_index_out: str, eqtl_catalogue_credible_sets_out: str, @@ -28,39 +25,33 @@ def __init__( Args: session (Session): Session object. - mqtl_quantification_methods (list[str]): Molecular trait quantification methods to ingest. Available options in https://github.com/eQTL-Catalogue/eQTL-Catalogue-resources/blob/master/data_tables/dataset_metadata.tsv + mqtl_quantification_methods_blacklist (list[str]): Molecular trait quantification methods that we don't want to ingest. Available options in https://github.com/eQTL-Catalogue/eQTL-Catalogue-resources/blob/master/data_tables/dataset_metadata.tsv eqtl_catalogue_paths_imported (str): Input eQTL Catalogue fine mapping results path. eqtl_catalogue_study_index_out (str): Output eQTL Catalogue study index path. eqtl_catalogue_credible_sets_out (str): Output eQTL Catalogue credible sets path. """ # Extract - pd.DataFrame.iteritems = pd.DataFrame.items - studies_metadata = session.spark.createDataFrame( - pd.read_csv(EqtlCatalogueStudyIndex.raw_studies_metadata_path, sep="\t"), - schema=EqtlCatalogueStudyIndex.raw_studies_metadata_schema, - ).filter(f.col("quant_method").isin(list(mqtl_quantification_methods))) + studies_metadata = EqtlCatalogueStudyIndex.read_studies_from_source( + session, list(mqtl_quantification_methods_blacklist) + ) # Load raw data only for the studies we are interested in ingestion. This makes the proces much lighter. studies_to_ingest = EqtlCatalogueStudyIndex.get_studies_of_interest( studies_metadata ) - credible_sets_df = session.spark.read.csv( - [ + credible_sets_df = EqtlCatalogueFinemapping.read_credible_set_from_source( + session, + credible_set_path=[ f"{eqtl_catalogue_paths_imported}/{qtd_id}.credible_sets.tsv" for qtd_id in studies_to_ingest ], - sep="\t", - header=True, - schema=EqtlCatalogueFinemapping.raw_credible_set_schema, ) - lbf_df = session.spark.read.csv( - [ + lbf_df = EqtlCatalogueFinemapping.read_lbf_from_source( + session, + lbf_path=[ f"{eqtl_catalogue_paths_imported}/{qtd_id}.lbf_variable.txt" for qtd_id in studies_to_ingest ], - sep="\t", - header=True, - schema=EqtlCatalogueFinemapping.raw_lbf_schema, ) # Transform diff --git a/src/gentropy/method/colocalisation.py b/src/gentropy/method/colocalisation.py index fd56398f0..899343998 100644 --- a/src/gentropy/method/colocalisation.py +++ b/src/gentropy/method/colocalisation.py @@ -10,6 +10,7 @@ from pyspark.ml.linalg import DenseVector, Vectors, VectorUDT from pyspark.sql.types import DoubleType +from gentropy.common.utils import get_logsum from gentropy.dataset.colocalisation import Colocalisation if TYPE_CHECKING: @@ -105,28 +106,6 @@ class Coloc: """ - @staticmethod - def _get_logsum(log_bf: NDArray[np.float64]) -> float: - """Calculates logsum of vector. - - This function calculates the log of the sum of the exponentiated - logs taking out the max, i.e. insuring that the sum is not Inf - - Args: - log_bf (NDArray[np.float64]): log bayes factor - - Returns: - float: logsum - - Example: - >>> l = [0.2, 0.1, 0.05, 0] - >>> round(Coloc._get_logsum(l), 6) - 1.476557 - """ - themax = np.max(log_bf) - result = themax + np.log(np.sum(np.exp(log_bf - themax))) - return float(result) - @staticmethod def _get_posteriors(all_bfs: NDArray[np.float64]) -> DenseVector: """Calculate posterior probabilities for each hypothesis. @@ -142,7 +121,7 @@ def _get_posteriors(all_bfs: NDArray[np.float64]) -> DenseVector: >>> Coloc._get_posteriors(l) DenseVector([0.279, 0.2524, 0.2401, 0.2284]) """ - diff = all_bfs - Coloc._get_logsum(all_bfs) + diff = all_bfs - get_logsum(all_bfs) bfs_posteriors = np.exp(diff) return Vectors.dense(bfs_posteriors) @@ -166,7 +145,7 @@ def colocalise( Colocalisation: Colocalisation results """ # register udfs - logsum = f.udf(Coloc._get_logsum, DoubleType()) + logsum = f.udf(get_logsum, DoubleType()) posteriors = f.udf(Coloc._get_posteriors, VectorUDT()) return Colocalisation( _df=( From 0b0db5ebcccd5cef0a0f683c2ce11952093f145c Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Fri, 8 Mar 2024 15:09:21 +0000 Subject: [PATCH 10/86] fix: fixing merge conflict --- poetry.lock | 759 +++++++++++++++++++++++++--------------------------- 1 file changed, 367 insertions(+), 392 deletions(-) diff --git a/poetry.lock b/poetry.lock index b27acb272..320208a14 100644 --- a/poetry.lock +++ b/poetry.lock @@ -424,13 +424,13 @@ openlineage = ["apache-airflow-providers-openlineage"] [[package]] name = "apache-airflow-providers-common-sql" -version = "1.11.0" +version = "1.11.1" description = "Provider package apache-airflow-providers-common-sql for Apache Airflow" optional = false python-versions = "~=3.8" files = [ - {file = "apache_airflow_providers_common_sql-1.11.0-py3-none-any.whl", hash = "sha256:0c200bd17ff89fac03bce8404a3a7cec021dd99e136effe0d6b68c4642c925c5"}, - {file = "apache_airflow_providers_common_sql-1.11.0.tar.gz", hash = "sha256:7667358efdf2ece87bfd136c786d729bc6f3274f8b87566ce9b432ab14b6aa33"}, + {file = "apache_airflow_providers_common_sql-1.11.1-py3-none-any.whl", hash = "sha256:eb8531b9eedcfdcdd972f12a0bffadc289ade9c3587a5bb5bd146f3240d5eb02"}, + {file = "apache_airflow_providers_common_sql-1.11.1.tar.gz", hash = "sha256:5b8c4d267677758dcb28b1a8976f10f30e50a4b568abda93a667ad6ff938060b"}, ] [package.dependencies] @@ -440,7 +440,7 @@ sqlparse = ">=0.4.2" [package.extras] openlineage = ["apache-airflow-providers-openlineage"] -pandas = ["pandas (>=1.2.5)"] +pandas = ["pandas (>=1.2.5,<2.2)"] [[package]] name = "apache-airflow-providers-ftp" @@ -461,13 +461,13 @@ openlineage = ["apache-airflow-providers-openlineage"] [[package]] name = "apache-airflow-providers-google" -version = "10.15.0" +version = "10.16.0" description = "Provider package apache-airflow-providers-google for Apache Airflow" optional = false python-versions = "~=3.8" files = [ - {file = "apache_airflow_providers_google-10.15.0-py3-none-any.whl", hash = "sha256:70d2d4feb66f06cd750ea673344f3be20d2d575c9645f7e2b030c73551a297fc"}, - {file = "apache_airflow_providers_google-10.15.0.tar.gz", hash = "sha256:ff48fa0a29abec2645a8008c47d0a84a759b7203412707a5e2fc01558c4052a3"}, + {file = "apache_airflow_providers_google-10.16.0-py3-none-any.whl", hash = "sha256:d9e3f04cc9c41ba077f8607e062a975ff3e18a583c51ac56d808455a2074e6ae"}, + {file = "apache_airflow_providers_google-10.16.0.tar.gz", hash = "sha256:dde9ce5b6873558c92438fad3832a63345072736c69222de3246a1d7e6f109f1"}, ] [package.dependencies] @@ -524,7 +524,7 @@ grpcio-gcp = ">=0.2.2" httpx = "*" json-merge-patch = ">=0.2" looker-sdk = ">=22.2.0" -pandas = ">=1.2.5" +pandas = ">=1.2.5,<2.2" pandas-gbq = "*" proto-plus = ">=1.19.6" PyOpenSSL = "*" @@ -553,13 +553,13 @@ trino = ["apache-airflow-providers-trino"] [[package]] name = "apache-airflow-providers-http" -version = "4.9.1" +version = "4.10.0" description = "Provider package apache-airflow-providers-http for Apache Airflow" optional = false python-versions = "~=3.8" files = [ - {file = "apache_airflow_providers_http-4.9.1-py3-none-any.whl", hash = "sha256:3b7c002899193acccf19bc29fa98e2c91b0b5f2fa05524bc3042fab0dc1700fb"}, - {file = "apache_airflow_providers_http-4.9.1.tar.gz", hash = "sha256:2bb670f9e89a4f4e50ce71faf8002aff729516feceba99f9947acbb5d7163754"}, + {file = "apache_airflow_providers_http-4.10.0-py3-none-any.whl", hash = "sha256:3c9af9a64954973a3bc31d33adf145b9b4273e5194603bee86c4fad6c51d872f"}, + {file = "apache_airflow_providers_http-4.10.0.tar.gz", hash = "sha256:f8280633053f25d7d11ef33f26aa7225fb081400a0dd97c6af9e0a9f59b26566"}, ] [package.dependencies] @@ -647,13 +647,13 @@ files = [ [[package]] name = "argcomplete" -version = "3.2.2" +version = "3.2.3" description = "Bash tab completion for argparse" optional = false python-versions = ">=3.8" files = [ - {file = "argcomplete-3.2.2-py3-none-any.whl", hash = "sha256:e44f4e7985883ab3e73a103ef0acd27299dbfe2dfed00142c35d4ddd3005901d"}, - {file = "argcomplete-3.2.2.tar.gz", hash = "sha256:f3e49e8ea59b4026ee29548e24488af46e30c9de57d48638e24f54a1ea1000a2"}, + {file = "argcomplete-3.2.3-py3-none-any.whl", hash = "sha256:c12355e0494c76a2a7b73e3a59b09024ca0ba1e279fb9ed6c1b82d5b74b6a70c"}, + {file = "argcomplete-3.2.3.tar.gz", hash = "sha256:bf7900329262e481be5a15f56f19736b376df6f82ed27576fa893652c5de6c23"}, ] [package.extras] @@ -751,13 +751,13 @@ files = [ [[package]] name = "azure-core" -version = "1.30.0" +version = "1.30.1" description = "Microsoft Azure Core Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-core-1.30.0.tar.gz", hash = "sha256:6f3a7883ef184722f6bd997262eddaf80cfe7e5b3e0caaaf8db1695695893d35"}, - {file = "azure_core-1.30.0-py3-none-any.whl", hash = "sha256:3dae7962aad109610e68c9a7abb31d79720e1d982ddf61363038d175a5025e89"}, + {file = "azure-core-1.30.1.tar.gz", hash = "sha256:26273a254131f84269e8ea4464f3560c731f29c0c1f69ac99010845f239c1a8f"}, + {file = "azure_core-1.30.1-py3-none-any.whl", hash = "sha256:7c5ee397e48f281ec4dd773d67a0a47a0962ed6fa833036057f9ea067f688e74"}, ] [package.dependencies] @@ -817,13 +817,13 @@ msrest = ">=0.6.21" [[package]] name = "azure-storage-blob" -version = "12.19.0" +version = "12.19.1" description = "Microsoft Azure Blob Storage Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-storage-blob-12.19.0.tar.gz", hash = "sha256:26c0a4320a34a3c2a1b74528ba6812ebcb632a04cd67b1c7377232c4b01a5897"}, - {file = "azure_storage_blob-12.19.0-py3-none-any.whl", hash = "sha256:7bbc2c9c16678f7a420367fef6b172ba8730a7e66df7f4d7a55d5b3c8216615b"}, + {file = "azure-storage-blob-12.19.1.tar.gz", hash = "sha256:13e16ba42fc54ac2c7e8f976062173a5c82b9ec0594728e134aac372965a11b0"}, + {file = "azure_storage_blob-12.19.1-py3-none-any.whl", hash = "sha256:c5530dc51c21c9564e4eb706cd499befca8819b10dd89716d3fc90d747556243"}, ] [package.dependencies] @@ -916,17 +916,17 @@ xyzservices = ">=2021.09.1" [[package]] name = "boto3" -version = "1.34.50" +version = "1.34.58" description = "The AWS SDK for Python" optional = false python-versions = ">= 3.8" files = [ - {file = "boto3-1.34.50-py3-none-any.whl", hash = "sha256:8d709365231234bc4f0ca98fdf33a25eeebf78072853c6aa3d259f0f5cf09877"}, - {file = "boto3-1.34.50.tar.gz", hash = "sha256:290952be7899560039cb0042e8a2354f61a7dead0d0ca8bea6ba901930df0468"}, + {file = "boto3-1.34.58-py3-none-any.whl", hash = "sha256:d213a6fea9db6d537b1e65924133d8279ada79a40bc840d4930e1b64be869d4c"}, + {file = "boto3-1.34.58.tar.gz", hash = "sha256:09e3d17c718bc938a76774f31bc557b20733c0f5f9135a3e7782b55f3459cbdd"}, ] [package.dependencies] -botocore = ">=1.34.50,<1.35.0" +botocore = ">=1.34.58,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -935,13 +935,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.50" +version = "1.34.58" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">= 3.8" files = [ - {file = "botocore-1.34.50-py3-none-any.whl", hash = "sha256:fda510559dbe796eefdb59561cc81be1b99afba3dee53fd23db9a3d587adc0ab"}, - {file = "botocore-1.34.50.tar.gz", hash = "sha256:33ab82cb96c4bb684f0dbafb071808e4817d83debc88b223e7d988256370c6d7"}, + {file = "botocore-1.34.58-py3-none-any.whl", hash = "sha256:8086a6ea27d0f658505ac81e6d7314e013561469c40db9b5a4692127eb5c97cf"}, + {file = "botocore-1.34.58.tar.gz", hash = "sha256:d75216952886dc513ea1b5e2979a6af08feed2f537e3fc102e4a0a2ead563a35"}, ] [package.dependencies] @@ -1480,13 +1480,13 @@ dev = ["polib"] [[package]] name = "croniter" -version = "2.0.1" +version = "2.0.2" description = "croniter provides iteration for datetime object with cron like format" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "croniter-2.0.1-py2.py3-none-any.whl", hash = "sha256:4cb064ce2d8f695b3b078be36ff50115cf8ac306c10a7e8653ee2a5b534673d7"}, - {file = "croniter-2.0.1.tar.gz", hash = "sha256:d199b2ec3ea5e82988d1f72022433c5f9302b3b3ea9e6bfd6a1518f6ea5e700a"}, + {file = "croniter-2.0.2-py2.py3-none-any.whl", hash = "sha256:78bf110a2c7dbbfdd98b926318ae6c64a731a4c637c7befe3685755110834746"}, + {file = "croniter-2.0.2.tar.gz", hash = "sha256:8bff16c9af4ef1fb6f05416973b8f7cb54997c02f2f8365251f9bf1dded91866"}, ] [package.dependencies] @@ -2322,18 +2322,18 @@ tests = ["nox (>=2020.12.31,<2022.6)"] [[package]] name = "google-analytics-admin" -version = "0.22.6" +version = "0.22.7" description = "Google Analytics Admin API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-analytics-admin-0.22.6.tar.gz", hash = "sha256:9299b30a51c1da4bd77406211efe10f30f672ef7b36f3d223a0248ebf2916d05"}, - {file = "google_analytics_admin-0.22.6-py2.py3-none-any.whl", hash = "sha256:f4122133bbd66693f641d548a6d3a8ffcd29eabca17392bf2b7e6b3d83aaee5e"}, + {file = "google-analytics-admin-0.22.7.tar.gz", hash = "sha256:9546afaddf7ee275ec4729de6da8b15f27d4d245ee8896f80800e22572fc7987"}, + {file = "google_analytics_admin-0.22.7-py2.py3-none-any.whl", hash = "sha256:09463653ecb42306c34fb07c9ff27193737aae8e63c52b8f695bf705e8589b46"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2363,13 +2363,13 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-api-python-client" -version = "2.119.0" +version = "2.121.0" description = "Google API Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-python-client-2.119.0.tar.gz", hash = "sha256:ff9ef7539eaf7e088a481b25d1af4704210b07863e1d51b5ee498b910a3a46a3"}, - {file = "google_api_python_client-2.119.0-py2.py3-none-any.whl", hash = "sha256:84e43bdb58dd8d2301669513863996378ffe9a3bf6d23b5ccd4f1e021323dbeb"}, + {file = "google-api-python-client-2.121.0.tar.gz", hash = "sha256:df863ece4db8b36ce1053ebd983e43fbc5b664209eed78e82cc84ae56ddac6c0"}, + {file = "google_api_python_client-2.121.0-py2.py3-none-any.whl", hash = "sha256:bb4da677150dd16c45818620baca8a63208c6f4180a0691ad1c1708b384c10be"}, ] [package.dependencies] @@ -2437,13 +2437,13 @@ tool = ["click (>=6.0.0)"] [[package]] name = "google-cloud-aiplatform" -version = "1.42.1" +version = "1.43.0" description = "Vertex AI API client library" optional = false python-versions = ">=3.8" files = [ - {file = "google-cloud-aiplatform-1.42.1.tar.gz", hash = "sha256:679068e068e29059d673a6410483fea762286fa07739d684fb1b4626698e0805"}, - {file = "google_cloud_aiplatform-1.42.1-py2.py3-none-any.whl", hash = "sha256:9f25ebd306807972cf05a578abc16695c4f72d4a2dd7e7b1624dbe247937ba24"}, + {file = "google-cloud-aiplatform-1.43.0.tar.gz", hash = "sha256:bd73af311a827e79bd2094a508e9343a2fa71b8ae5d8fa1178d0a96d034b421b"}, + {file = "google_cloud_aiplatform-1.43.0-py2.py3-none-any.whl", hash = "sha256:8aa1bdcde1bec85ea53db26b638744f7bad91f3af27c2ab8a3ea32079fb709e3"}, ] [package.dependencies] @@ -2462,33 +2462,33 @@ autologging = ["mlflow (>=1.27.0,<=2.1.1)"] cloud-profiler = ["tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "werkzeug (>=2.0.0,<2.1.0dev)"] datasets = ["pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)"] endpoint = ["requests (>=2.28.1)"] -full = ["cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "httpx (>=0.23.0,<0.25.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5)", "ray[default] (>=2.5,<2.5.1)", "requests (>=2.28.1)", "starlette (>=0.17.1)", "tensorflow (>=2.3.0,<2.15.0)", "tensorflow (>=2.3.0,<3.0.0dev)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)"] +full = ["cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "httpx (>=0.23.0,<0.25.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "requests (>=2.28.1)", "starlette (>=0.17.1)", "tensorflow (>=2.3.0,<2.15.0)", "tensorflow (>=2.3.0,<3.0.0dev)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)"] lit = ["explainable-ai-sdk (>=1.0.0)", "lit-nlp (==0.4.0)", "pandas (>=1.0.0)", "tensorflow (>=2.3.0,<3.0.0dev)"] metadata = ["numpy (>=1.15.0)", "pandas (>=1.0.0)"] pipelines = ["pyyaml (==5.3.1)"] prediction = ["docker (>=5.0.3)", "fastapi (>=0.71.0,<0.103.1)", "httpx (>=0.23.0,<0.25.0)", "starlette (>=0.17.1)", "uvicorn[standard] (>=0.16.0)"] preview = ["cloudpickle (<3.0)", "google-cloud-logging (<4.0)"] private-endpoints = ["requests (>=2.28.1)", "urllib3 (>=1.21.1,<1.27)"] -ray = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "pandas (>=1.0.0)", "pyarrow (>=6.0.1)", "pydantic (<2)", "ray[default] (>=2.4,<2.5)", "ray[default] (>=2.5,<2.5.1)"] +ray = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=6.0.1)", "pydantic (<2)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)"] tensorboard = ["tensorflow (>=2.3.0,<2.15.0)"] -testing = ["bigframes", "cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-api-core (>=2.11,<3.0.0)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "grpcio-testing", "httpx (>=0.23.0,<0.25.0)", "ipython", "kfp (>=2.6.0,<3.0.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyfakefs", "pytest-asyncio", "pytest-xdist", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5)", "ray[default] (>=2.5,<2.5.1)", "requests (>=2.28.1)", "requests-toolbelt (<1.0.0)", "scikit-learn", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.3.0,<2.15.0)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<=2.12.0)", "tensorflow (>=2.4.0,<3.0.0dev)", "torch (>=2.0.0,<2.1.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)", "xgboost", "xgboost-ray"] +testing = ["bigframes", "cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-api-core (>=2.11,<3.0.0)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "grpcio-testing", "httpx (>=0.23.0,<0.25.0)", "ipython", "kfp (>=2.6.0,<3.0.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyfakefs", "pytest-asyncio", "pytest-xdist", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "requests (>=2.28.1)", "requests-toolbelt (<1.0.0)", "scikit-learn", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.3.0,<2.15.0)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<=2.12.0)", "tensorflow (>=2.4.0,<3.0.0dev)", "torch (>=2.0.0,<2.1.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)", "xgboost", "xgboost-ray"] vizier = ["google-vizier (>=0.1.6)"] xai = ["tensorflow (>=2.3.0,<3.0.0dev)"] [[package]] name = "google-cloud-appengine-logging" -version = "1.4.2" +version = "1.4.3" description = "Google Cloud Appengine Logging API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-appengine-logging-1.4.2.tar.gz", hash = "sha256:134de64a84017cfe26a4b3a325bcc9b4a2dba05f9c9d3902ee24b4b1fa3e28af"}, - {file = "google_cloud_appengine_logging-1.4.2-py2.py3-none-any.whl", hash = "sha256:08d46bacf7e6bb4cb963dc5c0ab6995f2cd3fec69c7a2862405e98dce0c194bc"}, + {file = "google-cloud-appengine-logging-1.4.3.tar.gz", hash = "sha256:fb504e6199fe8de85baa9d31cecf6776877851fe58867de603317ec7cc739987"}, + {file = "google_cloud_appengine_logging-1.4.3-py2.py3-none-any.whl", hash = "sha256:8e30af51d853f219caf29e8b8b342b9ce8214b29f334dafae38d39aaaff7d372"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2509,18 +2509,18 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4 [[package]] name = "google-cloud-automl" -version = "2.13.2" +version = "2.13.3" description = "Google Cloud Automl API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-automl-2.13.2.tar.gz", hash = "sha256:d90273ab8b74a28d7c81b237cc5cf92b189d3a47d2b90dac8cd36722527ba24e"}, - {file = "google_cloud_automl-2.13.2-py2.py3-none-any.whl", hash = "sha256:bb36c140955ae14b26969054e8bcdfe9fa81e6f99e430d832579d6884647b8f7"}, + {file = "google-cloud-automl-2.13.3.tar.gz", hash = "sha256:891a9082eaedeb17bc5bb724fc150b7702c684d7420f9f22ae3f7c5fc611c71a"}, + {file = "google_cloud_automl-2.13.3-py2.py3-none-any.whl", hash = "sha256:8117943ad1534f1d11d40e0937ade7965c56a6d7fd2c2314e56942361727a6a2"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2531,30 +2531,30 @@ storage = ["google-cloud-storage (>=1.18.0,<3.0.0dev)"] [[package]] name = "google-cloud-batch" -version = "0.17.12" +version = "0.17.14" description = "Google Cloud Batch API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-batch-0.17.12.tar.gz", hash = "sha256:ff351f5a4a46283fa7e8353f71cdb1fb750d4d407f7a14eae752801a22b76fe9"}, - {file = "google_cloud_batch-0.17.12-py2.py3-none-any.whl", hash = "sha256:4d6d0f6c392c5ed2e1fe59d38f1151b1414abcf9daa50ffb25a5981984fd0b63"}, + {file = "google-cloud-batch-0.17.14.tar.gz", hash = "sha256:03c29c384f5872cf2e3aa4f2f7446f5bbecd1aea035f19cd7c595b245df96179"}, + {file = "google_cloud_batch-0.17.14-py2.py3-none-any.whl", hash = "sha256:0bebf878e3f4cb470ba788dc9d9d78a11db2c16bea7cc9da9bfde24522bc1914"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-bigquery" -version = "3.17.2" +version = "3.18.0" description = "Google BigQuery API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-bigquery-3.17.2.tar.gz", hash = "sha256:6e1cf669a40e567ab3289c7b5f2056363da9fcb85d9a4736ee90240d4a7d84ea"}, - {file = "google_cloud_bigquery-3.17.2-py2.py3-none-any.whl", hash = "sha256:cdadf5283dca55a1a350bacf8c8a7466169d3cf46c5a0a3abc5e9aa0b0a51dee"}, + {file = "google-cloud-bigquery-3.18.0.tar.gz", hash = "sha256:74f0fc6f0ba9477f808d25924dc8a052c55f7ca91064e83e16d3ee5fb7ca77ab"}, + {file = "google_cloud_bigquery-3.18.0-py2.py3-none-any.whl", hash = "sha256:3520552075502c69710d37b1e9600c84e6974ad271914677d16bfafa502857fb"}, ] [package.dependencies] @@ -2578,42 +2578,21 @@ tqdm = ["tqdm (>=4.7.4,<5.0.0dev)"] [[package]] name = "google-cloud-bigquery-datatransfer" -version = "3.15.0" +version = "3.15.1" description = "Google Cloud Bigquery Datatransfer API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-bigquery-datatransfer-3.15.0.tar.gz", hash = "sha256:fcb0613c9a2b210bf28889df372ecf25c5723af1f6d7b144aedc220b65d366f4"}, - {file = "google_cloud_bigquery_datatransfer-3.15.0-py2.py3-none-any.whl", hash = "sha256:edf78337b1e2f96ed1c582e617b2545ea176cc6e90f8ff983bf2da5164d586b1"}, + {file = "google-cloud-bigquery-datatransfer-3.15.1.tar.gz", hash = "sha256:d80d2fe940451de3f47ec53bd5edb601abbb1df4189cde1fa386d80f71bea762"}, + {file = "google_cloud_bigquery_datatransfer-3.15.1-py2.py3-none-any.whl", hash = "sha256:24da33d0296cfb3f606df3f2c387e7d73f4678c5f9d9aec82db8b93a4482e6e0"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" -[[package]] -name = "google-cloud-bigquery-storage" -version = "2.24.0" -description = "Google Cloud Bigquery Storage API client library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "google-cloud-bigquery-storage-2.24.0.tar.gz", hash = "sha256:b4af5b9aacd8396b8407d1b877601a376d8eea6d192823a8a7881bd2fdc076ce"}, - {file = "google_cloud_bigquery_storage-2.24.0-py2.py3-none-any.whl", hash = "sha256:7981eb2758cba56603058d11bb1eeeebf2e1c18097a7118a894510a16e02be52"}, -] - -[package.dependencies] -google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -proto-plus = ">=1.22.0,<2.0.0dev" -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" - -[package.extras] -fastavro = ["fastavro (>=0.21.2)"] -pandas = ["importlib-metadata (>=1.0.0)", "pandas (>=0.21.1)"] -pyarrow = ["pyarrow (>=0.15.0)"] - [[package]] name = "google-cloud-bigtable" version = "2.23.0" @@ -2637,53 +2616,53 @@ libcst = ["libcst (>=0.2.5)"] [[package]] name = "google-cloud-build" -version = "3.23.2" +version = "3.23.3" description = "Google Cloud Build API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-build-3.23.2.tar.gz", hash = "sha256:52ee4e94298401f7ba6ef32f9a7e3bdaa478867fd0ef6f93017b88a3832aa7e2"}, - {file = "google_cloud_build-3.23.2-py2.py3-none-any.whl", hash = "sha256:233580a601a266f643cdb68db844f9568ba63065e3cdcc252e48e55292dd4a78"}, + {file = "google-cloud-build-3.23.3.tar.gz", hash = "sha256:6e8dd88cb816f30bb55cec1e4d2285d570a223d34df516fb017a495ed605720e"}, + {file = "google_cloud_build-3.23.3-py2.py3-none-any.whl", hash = "sha256:b01060544bd0fd349f66c2af4c79312ec08d644237a27615e1a75eeee910189e"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-compute" -version = "1.17.0" +version = "1.18.0" description = "Google Cloud Compute API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-compute-1.17.0.tar.gz", hash = "sha256:74fb3b8527b461c0f796e36a1e417a4fc7d31c2e3fbb71cc270b30e931d62f8e"}, - {file = "google_cloud_compute-1.17.0-py2.py3-none-any.whl", hash = "sha256:f281f1960f236d3be6614002af11becfe088600f2d3fa7da92dade28fac42f0e"}, + {file = "google-cloud-compute-1.18.0.tar.gz", hash = "sha256:412237183877eb2838aa6e08cdaa6cf17f399451a166e3a9aa33ae894cc15a1d"}, + {file = "google_cloud_compute-1.18.0-py2.py3-none-any.whl", hash = "sha256:fd827495ffc3a006a70f984133cb12191572497d96a522056a75414db918f37d"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-container" -version = "2.41.0" +version = "2.43.0" description = "Google Cloud Container API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-container-2.41.0.tar.gz", hash = "sha256:e43505690ab322f37ff15a3b309341aec31a0781c034eec46f69eecf1de70c97"}, - {file = "google_cloud_container-2.41.0-py2.py3-none-any.whl", hash = "sha256:fb7f53ba8e750ee1ccefae971b0123880753b41dab27ef8e05711d62b6d38b3e"}, + {file = "google-cloud-container-2.43.0.tar.gz", hash = "sha256:45f1a142fd70af97cc30795e31a9b048a436a29bf79e9a464af51ee14745893d"}, + {file = "google_cloud_container-2.43.0-py2.py3-none-any.whl", hash = "sha256:b5c28d28df17be70fb12f5141f93b455fa261e693d65add989ae018d521a4b05"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2707,160 +2686,160 @@ grpc = ["grpcio (>=1.38.0,<2.0dev)", "grpcio-status (>=1.38.0,<2.0.dev0)"] [[package]] name = "google-cloud-datacatalog" -version = "3.18.2" +version = "3.18.3" description = "Google Cloud Datacatalog API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-datacatalog-3.18.2.tar.gz", hash = "sha256:512a3c95d51b7ec02bbe3c39f8c3ae6c50ce957915e063e8c07615b111c11eb9"}, - {file = "google_cloud_datacatalog-3.18.2-py2.py3-none-any.whl", hash = "sha256:1de2f9c214779b90f558d952daf2dd9d02cc8e6c89b0d5df338bf934abc7c524"}, + {file = "google-cloud-datacatalog-3.18.3.tar.gz", hash = "sha256:77831301982c795e6223cdc0ee54a46defd21205fd65f434a4b1df6014ad7e9e"}, + {file = "google_cloud_datacatalog-3.18.3-py2.py3-none-any.whl", hash = "sha256:8116f0bca6709b4cd984c85cd83f952bc0b1bb915244dfe478c9d425fce09057"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataflow-client" -version = "0.8.9" +version = "0.8.10" description = "Google Cloud Dataflow Client API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataflow-client-0.8.9.tar.gz", hash = "sha256:f024118695f2e5b8ca2f57e22c7e479238bd6a7bd9c24bf5f60c0893ed234fb7"}, - {file = "google_cloud_dataflow_client-0.8.9-py2.py3-none-any.whl", hash = "sha256:2dbfc4333dbaf825fd1a1baaf6899f240bde80510e73ea23e29525681d279c4e"}, + {file = "google-cloud-dataflow-client-0.8.10.tar.gz", hash = "sha256:6aa8178743bce4b6c9142b492e649db84f55db70a88ec29a3d889054c4752144"}, + {file = "google_cloud_dataflow_client-0.8.10-py2.py3-none-any.whl", hash = "sha256:4b0dce886ec65fbf3195f87e956d559f6d4bd88a03b527aa8498c303e2d4d39a"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataform" -version = "0.5.8" +version = "0.5.9" description = "Google Cloud Dataform API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataform-0.5.8.tar.gz", hash = "sha256:40009ed80dfb152f675db4395b86b45bf5ae9a032c7f37c98b464066ff6ff54e"}, - {file = "google_cloud_dataform-0.5.8-py2.py3-none-any.whl", hash = "sha256:3d1810b42e1bb533af7e891e3e478b5fa36b412542d6054d77c38f55cb71e3a4"}, + {file = "google-cloud-dataform-0.5.9.tar.gz", hash = "sha256:2733c3fbda4f0134629e2d6554db93e1840683567043906268718b1a874eb9ac"}, + {file = "google_cloud_dataform-0.5.9-py2.py3-none-any.whl", hash = "sha256:c94e61358a68de389803bb06b936f815108211b3324e1f143db9a8bd2bb6a081"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataplex" -version = "1.12.2" +version = "1.12.3" description = "Google Cloud Dataplex API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataplex-1.12.2.tar.gz", hash = "sha256:fdd89ce585954a8e75972be5a00475b1ff1d2f26dadb29ef574deaa654aa2236"}, - {file = "google_cloud_dataplex-1.12.2-py2.py3-none-any.whl", hash = "sha256:c6ae7a85276e9eaa4072e27ffd90aef52fa0bb2d1d21db6a1af8322b1278b758"}, + {file = "google-cloud-dataplex-1.12.3.tar.gz", hash = "sha256:c0692b6713fce6180df6d59bfb972d06f9fae264f33e7f2ba781d785f64ab8c3"}, + {file = "google_cloud_dataplex-1.12.3-py2.py3-none-any.whl", hash = "sha256:2ef7943b331ff254d2a8d2395c6a3b666837a73d32da1c4572a07453c0069dd3"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataproc" -version = "5.9.2" +version = "5.9.3" description = "Google Cloud Dataproc API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataproc-5.9.2.tar.gz", hash = "sha256:1352e3cc4e146db1f09fa4287559248c8b3d9c0cfecea56c25c3f4f63d58e4f8"}, - {file = "google_cloud_dataproc-5.9.2-py2.py3-none-any.whl", hash = "sha256:a728e35db70132dc5d2e6b27627825775f5a0a2cd7024fa1149669d3de4b436d"}, + {file = "google-cloud-dataproc-5.9.3.tar.gz", hash = "sha256:97d647891e7f4cd25f6b839ae57cd355809df2ca396653ed24af62b4ef02f412"}, + {file = "google_cloud_dataproc-5.9.3-py2.py3-none-any.whl", hash = "sha256:034615e8aca7f2b917a29ee1ca317fa65f8fa878018f2b80a2487e09e32b297a"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataproc-metastore" -version = "1.15.2" +version = "1.15.3" description = "Google Cloud Dataproc Metastore API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataproc-metastore-1.15.2.tar.gz", hash = "sha256:61c4832bce9ba8288c81d48a2661a853e3d852210ebec15b7e505bcf9c95d26e"}, - {file = "google_cloud_dataproc_metastore-1.15.2-py2.py3-none-any.whl", hash = "sha256:ab6bba67d94665126aff5ddff697255eab5f12d23a4d6dfe7f5c2d20e2aa0712"}, + {file = "google-cloud-dataproc-metastore-1.15.3.tar.gz", hash = "sha256:1f8a5a66e43a4d1c119e9be225ba66b041f432d046b5c4da6717fbd56fcfb4f5"}, + {file = "google_cloud_dataproc_metastore-1.15.3-py2.py3-none-any.whl", hash = "sha256:871dcea73ae2ab2ecfb6da1fe1bc82206eee817b744755f7b24aaef554b8d896"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dlp" -version = "3.15.2" +version = "3.16.0" description = "Google Cloud Dlp API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dlp-3.15.2.tar.gz", hash = "sha256:4edcdae94b950942549a81fd8455565734df5f8913312f4443e8b1a189bdc4e8"}, - {file = "google_cloud_dlp-3.15.2-py2.py3-none-any.whl", hash = "sha256:4d5e0d2b055bfabba61ee2565c3461055a82f22d44f9aec3f73275f9d6b69b27"}, + {file = "google-cloud-dlp-3.16.0.tar.gz", hash = "sha256:0d69a1f7a5ef88756c99e56b8af4c39eae40d2106883f0e2794c5cb3642696d5"}, + {file = "google_cloud_dlp-3.16.0-py2.py3-none-any.whl", hash = "sha256:0a1a008cb95a31f29e19dc7a822c4fd27b28dc941164e7bd6034170fd486e55b"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-kms" -version = "2.21.2" +version = "2.21.3" description = "Google Cloud Kms API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-kms-2.21.2.tar.gz", hash = "sha256:f06ad9dfc801544fba1183788b964f6b017483a66091aa686b51abd074806c84"}, - {file = "google_cloud_kms-2.21.2-py2.py3-none-any.whl", hash = "sha256:98a092fb7501d0c7d4a64e409a8a0510916f7f982fafaae9572835ac8080ba0f"}, + {file = "google-cloud-kms-2.21.3.tar.gz", hash = "sha256:5e87d5a7b7d8f5b5c9f0f648f352a7886951a8b4c72703eb9ce7ba8076fc2533"}, + {file = "google_cloud_kms-2.21.3-py2.py3-none-any.whl", hash = "sha256:910bd58bce0bd2b6c413f8a32b7a5a0d77e34ab7204ce18e2dcdadeec6914253"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-language" -version = "2.13.2" +version = "2.13.3" description = "Google Cloud Language API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-language-2.13.2.tar.gz", hash = "sha256:813ad3dddca97890710098e76ad48c37ea63ea3a14a0f6d7f4246c6fb15cb2a5"}, - {file = "google_cloud_language-2.13.2-py2.py3-none-any.whl", hash = "sha256:74ececa7918f183ed7652b3b6ba57adb3541e199803bd9ce8faa2f048997a2db"}, + {file = "google-cloud-language-2.13.3.tar.gz", hash = "sha256:569d35260af906de25b8e2a76b6364e05809b8453afd89da738d4a4fcb90846f"}, + {file = "google_cloud_language-2.13.3-py2.py3-none-any.whl", hash = "sha256:b060de20d8ed2b20b7b7ebd8a46ae240df36c9977db383db5155276d2b1f6b9a"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2886,35 +2865,35 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4 [[package]] name = "google-cloud-memcache" -version = "1.9.2" +version = "1.9.3" description = "Google Cloud Memcache API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-memcache-1.9.2.tar.gz", hash = "sha256:d6ab1600fad9617731666ebae780d7e4c15ea58eb3c573296d533380567c2018"}, - {file = "google_cloud_memcache-1.9.2-py2.py3-none-any.whl", hash = "sha256:4c22b5d15f8d53969a1a5bc2171bf9deda446e96b42ddee8db1f30dd6e370ca2"}, + {file = "google-cloud-memcache-1.9.3.tar.gz", hash = "sha256:ee5ff95afe47efc1a0746ba13b2f56996bc018f158f6b0cad69d835b0447d6e8"}, + {file = "google_cloud_memcache-1.9.3-py2.py3-none-any.whl", hash = "sha256:d1574670dcdb861cc772e2b797f7e5fb83b9dd7ef2ce34fbe4ff54d454a816d3"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-monitoring" -version = "2.19.2" +version = "2.19.3" description = "Google Cloud Monitoring API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-monitoring-2.19.2.tar.gz", hash = "sha256:3881b026204e0648707461a9783ef7e84c6c716bd067a3864b1cb3d4c9f5dc73"}, - {file = "google_cloud_monitoring-2.19.2-py2.py3-none-any.whl", hash = "sha256:4d60247403d36576c561ed3cc684131d32a455e9bdc188c14cc83d7cb6b28fa2"}, + {file = "google-cloud-monitoring-2.19.3.tar.gz", hash = "sha256:37641e537986fd2227f8738b879d605a8cdf4c315cdc60e86e109347ab1ca1d7"}, + {file = "google_cloud_monitoring-2.19.3-py2.py3-none-any.whl", hash = "sha256:448016170deb4f16fdb57d12f639a0b61e865f7a22ec9a85b3e12295046b62b0"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2923,47 +2902,47 @@ pandas = ["pandas (>=0.23.2)"] [[package]] name = "google-cloud-orchestration-airflow" -version = "1.12.0" +version = "1.12.1" description = "Google Cloud Orchestration Airflow API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-orchestration-airflow-1.12.0.tar.gz", hash = "sha256:2e7b6f507b3ef9796638faed6d0cdb402db134bbb60b3f46cb115b16b44e88ee"}, - {file = "google_cloud_orchestration_airflow-1.12.0-py2.py3-none-any.whl", hash = "sha256:683135931bd714027cbc984cad49ff811759b40e5e522dbb5a19c052f4640ebf"}, + {file = "google-cloud-orchestration-airflow-1.12.1.tar.gz", hash = "sha256:659a72f506a9441f1938664e98cdced9a4a852dc5d8c533a5c2f822cefe72eb1"}, + {file = "google_cloud_orchestration_airflow-1.12.1-py2.py3-none-any.whl", hash = "sha256:9dab139528860c3d10b9affe6a7e34848f10e15f5800554792c1bab37f713e3d"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-os-login" -version = "2.14.2" +version = "2.14.3" description = "Google Cloud Os Login API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-os-login-2.14.2.tar.gz", hash = "sha256:9b26fe84e8d3cd2499e3b306283909fb57d1a8f40377822416085fd174345294"}, - {file = "google_cloud_os_login-2.14.2-py2.py3-none-any.whl", hash = "sha256:24c64b06b4a2e07d35b47eb9074d26c3769dd00f4f22b352b8b9aeee3893b2a1"}, + {file = "google-cloud-os-login-2.14.3.tar.gz", hash = "sha256:b1a15ec7ee306de890750822dc4aab04c64e5bcf76447590f45551bf1afcf1e8"}, + {file = "google_cloud_os_login-2.14.3-py2.py3-none-any.whl", hash = "sha256:de19bb2ade36e982256050972b5f68be34a0f4c70365c76a7cd91de3f0e7985f"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-pubsub" -version = "2.19.7" +version = "2.20.1" description = "Google Cloud Pub/Sub API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-pubsub-2.19.7.tar.gz", hash = "sha256:da5f1eb217c0727befa7c85b9b95e6a89b32b422d548c9cf9a1e029410270b87"}, - {file = "google_cloud_pubsub-2.19.7-py2.py3-none-any.whl", hash = "sha256:443cb58e2440729876f3b0d6046c30c7a873aeb247e5e17f161fe967c91b53fb"}, + {file = "google-cloud-pubsub-2.20.1.tar.gz", hash = "sha256:b6d06f1827968273c42b57a09f642462649c9504dc0f8756f99770f4e3e755ad"}, + {file = "google_cloud_pubsub-2.20.1-py2.py3-none-any.whl", hash = "sha256:06dd62181e2f248f32b9077f4dc07b413191a84fc06d7323b208602d887207bc"}, ] [package.dependencies] @@ -2980,84 +2959,84 @@ libcst = ["libcst (>=0.3.10)"] [[package]] name = "google-cloud-redis" -version = "2.15.2" +version = "2.15.3" description = "Google Cloud Redis API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-redis-2.15.2.tar.gz", hash = "sha256:baaf93114e4acb752e6a06b5f58e7c50bf683eb0e138645fece76e0a0159c188"}, - {file = "google_cloud_redis-2.15.2-py2.py3-none-any.whl", hash = "sha256:ec239088ba8901014d716c5e763227cb9978bc442dc8e3ae23d2bfb9fb7bd8d3"}, + {file = "google-cloud-redis-2.15.3.tar.gz", hash = "sha256:e6a231e45107038cfe498dfad1f6dad2ca7bdca3a931323730be03ab7a000a8f"}, + {file = "google_cloud_redis-2.15.3-py2.py3-none-any.whl", hash = "sha256:df79f6f8a81f948d2d5343a76e7c9108ab56eab9279be0763da6968f497b2bdb"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-resource-manager" -version = "1.12.2" +version = "1.12.3" description = "Google Cloud Resource Manager API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-resource-manager-1.12.2.tar.gz", hash = "sha256:2ede446a5087b236f0e1fb39cca3791bae97eb0d9125057401454b190d5572ee"}, - {file = "google_cloud_resource_manager-1.12.2-py2.py3-none-any.whl", hash = "sha256:45abbb8911195cc831cc77c8e3be84decc271686579b332d4142af507f423ebf"}, + {file = "google-cloud-resource-manager-1.12.3.tar.gz", hash = "sha256:809851824119834e4f2310b2c4f38621c1d16b2bb14d5b9f132e69c79d355e7f"}, + {file = "google_cloud_resource_manager-1.12.3-py2.py3-none-any.whl", hash = "sha256:92be7d6959927b76d90eafc4028985c37975a46ded5466a018f02e8649e113d4"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-run" -version = "0.10.4" +version = "0.10.5" description = "Google Cloud Run API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-run-0.10.4.tar.gz", hash = "sha256:e278e91822c26a895190e4193b84950cb9aa3f437f6895c806620a1890e2cc90"}, - {file = "google_cloud_run-0.10.4-py2.py3-none-any.whl", hash = "sha256:179045cc576e3aa2446ae2a11537a1af6c032407cd28f6bb58b1f8abdee2b796"}, + {file = "google-cloud-run-0.10.5.tar.gz", hash = "sha256:d6c546693ad1232794b75c617871f2e46283c0cd0c4cc3886b85b8f0a3ba575f"}, + {file = "google_cloud_run-0.10.5-py2.py3-none-any.whl", hash = "sha256:0f68125f13d1a87f74e1e78c37fa6afb4b094d76dad2b9f951d5526648e8939c"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-secret-manager" -version = "2.18.2" +version = "2.18.3" description = "Google Cloud Secret Manager API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-secret-manager-2.18.2.tar.gz", hash = "sha256:a00d62115a70083e86b1d44ca7ebcae041b36a44cc62ea57de4005731f8d3c88"}, - {file = "google_cloud_secret_manager-2.18.2-py2.py3-none-any.whl", hash = "sha256:bb2f2b23a588f9eeae51df4a028d6198a603231a056f838e6a476b5aecadbbca"}, + {file = "google-cloud-secret-manager-2.18.3.tar.gz", hash = "sha256:1db2f409324536e34f985081d389e3974ca3a3668df7845cad0be03ab8c0fa7d"}, + {file = "google_cloud_secret_manager-2.18.3-py2.py3-none-any.whl", hash = "sha256:4d4af82bddd9099ebdbe79e0c6b68f6c6cabea8323a3c1275bcead8f56310fb7"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-spanner" -version = "3.42.0" +version = "3.43.0" description = "Google Cloud Spanner API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-spanner-3.42.0.tar.gz", hash = "sha256:13b6aba86059fd03f36c032c4143274d6883d39e2d32bf753e0ad3d2dcd08e12"}, - {file = "google_cloud_spanner-3.42.0-py2.py3-none-any.whl", hash = "sha256:53a68d3cce1df986729244e829a607cd5b97c8f1dd721d8af0cfdd12413fb09f"}, + {file = "google-cloud-spanner-3.43.0.tar.gz", hash = "sha256:0662e95fe314674a3b8b2fa3c19e81e544d94f584ca6965b98c95083a8864222"}, + {file = "google_cloud_spanner-3.43.0-py2.py3-none-any.whl", hash = "sha256:b83f286459547b551b9fec5e13becadd7c7786d94e61a6df1007966536cf35a1"}, ] [package.dependencies] @@ -3076,35 +3055,35 @@ tracing = ["opentelemetry-api (>=1.1.0)", "opentelemetry-instrumentation (>=0.20 [[package]] name = "google-cloud-speech" -version = "2.25.0" +version = "2.25.1" description = "Google Cloud Speech API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-speech-2.25.0.tar.gz", hash = "sha256:070b7a73735d871cdcf5590238e9c4ff59bb5f524172876ba55646b5c5eb86b8"}, - {file = "google_cloud_speech-2.25.0-py2.py3-none-any.whl", hash = "sha256:3741c1b0cea6e86b389572c25c6d4aee93d77579651edc79fe9e22d7a574ecc5"}, + {file = "google-cloud-speech-2.25.1.tar.gz", hash = "sha256:5b7470a949f5a77c40511c3664ac339fe0a4704482f9b6b3a2ba554b7d2b2cdc"}, + {file = "google_cloud_speech-2.25.1-py2.py3-none-any.whl", hash = "sha256:b08ab9648774949295a869a69473af9b9a65f038436a2a1a560ec5ba28d2b227"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-storage" -version = "2.14.0" +version = "2.15.0" description = "Google Cloud Storage API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-storage-2.14.0.tar.gz", hash = "sha256:2d23fcf59b55e7b45336729c148bb1c464468c69d5efbaee30f7201dd90eb97e"}, - {file = "google_cloud_storage-2.14.0-py2.py3-none-any.whl", hash = "sha256:8641243bbf2a2042c16a6399551fbb13f062cbc9a2de38d6c0bb5426962e9dbd"}, + {file = "google-cloud-storage-2.15.0.tar.gz", hash = "sha256:7560a3c48a03d66c553dc55215d35883c680fe0ab44c23aa4832800ccc855c74"}, + {file = "google_cloud_storage-2.15.0-py2.py3-none-any.whl", hash = "sha256:5d9237f88b648e1d724a0f20b5cde65996a37fe51d75d17660b1404097327dd2"}, ] [package.dependencies] -google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0dev" -google-auth = ">=2.23.3,<3.0dev" +google-api-core = ">=2.15.0,<3.0.0dev" +google-auth = ">=2.26.1,<3.0dev" google-cloud-core = ">=2.3.0,<3.0dev" google-crc32c = ">=1.0,<2.0dev" google-resumable-media = ">=2.6.0" @@ -3115,122 +3094,122 @@ protobuf = ["protobuf (<5.0.0dev)"] [[package]] name = "google-cloud-storage-transfer" -version = "1.11.2" +version = "1.11.3" description = "Google Cloud Storage Transfer API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-storage-transfer-1.11.2.tar.gz", hash = "sha256:391b31934a9bed3d46f27d2d5daca1bda40b87ce3731e86b177342092a9fe5bf"}, - {file = "google_cloud_storage_transfer-1.11.2-py2.py3-none-any.whl", hash = "sha256:fc2d3478ac998a76bd4c5eb660b65b4452aea15049e010009862df643d807e1a"}, + {file = "google-cloud-storage-transfer-1.11.3.tar.gz", hash = "sha256:c4564749492f41957f44c41b76f61f72c12b519424b841895bfe2d932c6f1490"}, + {file = "google_cloud_storage_transfer-1.11.3-py2.py3-none-any.whl", hash = "sha256:698e1b21c9dc710f543b2e6dc3c70334b872d4a80fafc0b2718fc91b6f45858e"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-tasks" -version = "2.16.2" +version = "2.16.3" description = "Google Cloud Tasks API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-tasks-2.16.2.tar.gz", hash = "sha256:2f5c15c581151d913d840fca348dc9a5fbd1cc16ec511e3f66b2fc6a01f06e38"}, - {file = "google_cloud_tasks-2.16.2-py2.py3-none-any.whl", hash = "sha256:c47355f7de04f7ebf00d352ef9995fa32533eb24ff56b3a0af613367b3073a27"}, + {file = "google-cloud-tasks-2.16.3.tar.gz", hash = "sha256:d891fe7006db4d6122838aa6de4aca6e0077bab224edcae684666ae3e303c45f"}, + {file = "google_cloud_tasks-2.16.3-py2.py3-none-any.whl", hash = "sha256:a1a8473f5c76907525b51ae4c20182a42333b5c3e1dc5782d7af6c2f58241a0c"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-texttospeech" -version = "2.16.2" +version = "2.16.3" description = "Google Cloud Texttospeech API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-texttospeech-2.16.2.tar.gz", hash = "sha256:eaac809d9a7d07c5c9eb58613916542cb2fa52c14f9f31da7ff4989f717f8e0c"}, - {file = "google_cloud_texttospeech-2.16.2-py2.py3-none-any.whl", hash = "sha256:59de4d6021d39502572e9d6acdf851c2466f9140357dce249641d137bf63f062"}, + {file = "google-cloud-texttospeech-2.16.3.tar.gz", hash = "sha256:fabc315032d137da0710bb4c268734d336212d8fa8316b23b277dd3a84ce721c"}, + {file = "google_cloud_texttospeech-2.16.3-py2.py3-none-any.whl", hash = "sha256:5d1e23f9270908a5d7ecf2af04105fbd3a7ddde60fe48506e397bd18c1ece499"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-translate" -version = "3.15.2" +version = "3.15.3" description = "Google Cloud Translate API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-translate-3.15.2.tar.gz", hash = "sha256:6d4c2447bc2f88ec5e0d3a6778c3d85fab36da214b9384b10659b29e8db9f594"}, - {file = "google_cloud_translate-3.15.2-py2.py3-none-any.whl", hash = "sha256:f20d5ea4bbe686e3bfd897f3afb6ddaf91738e86233ab0b8343f43a9cbc5e672"}, + {file = "google-cloud-translate-3.15.3.tar.gz", hash = "sha256:ed587a1e60cf847c3b1add6b28256e2d1722fa73a4285334f5ec5ca933e616f2"}, + {file = "google_cloud_translate-3.15.3-py2.py3-none-any.whl", hash = "sha256:2e92cd286fb25d5cf9fc0e8710f524fdf80656b6b64947d244e91696e69346ad"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" google-cloud-core = ">=1.4.4,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-videointelligence" -version = "2.13.2" +version = "2.13.3" description = "Google Cloud Videointelligence API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-videointelligence-2.13.2.tar.gz", hash = "sha256:c077e25599a107f18c7e057ca661f37600b1b71c65d90d6cf5c42043dadc8db1"}, - {file = "google_cloud_videointelligence-2.13.2-py2.py3-none-any.whl", hash = "sha256:11a220d00254edf5cac55515aadfee23131d9ba45fe4114f9113200f780158e7"}, + {file = "google-cloud-videointelligence-2.13.3.tar.gz", hash = "sha256:1460721d8120661c477c01af0edd3db03845857f52146a4a39f16b4acfb36f6d"}, + {file = "google_cloud_videointelligence-2.13.3-py2.py3-none-any.whl", hash = "sha256:2eddfc42c4ef60378b638a5f4dfe466fadefae5cd6b1134eee377b5937be2c9e"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-vision" -version = "3.7.1" +version = "3.7.2" description = "Google Cloud Vision API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-vision-3.7.1.tar.gz", hash = "sha256:868be6df5bb5491c6f31bedf600af23661c02776ca564c151c42c63e0b3465db"}, - {file = "google_cloud_vision-3.7.1-py2.py3-none-any.whl", hash = "sha256:55bb95304ccfe6d8b7a7de7fe6cb3f580d87dcbf971bb8225d1beb0e17a2d75c"}, + {file = "google-cloud-vision-3.7.2.tar.gz", hash = "sha256:044330ad618c810333ff2296cd27ffd145f249638d1b35b270de6b460b00e8d2"}, + {file = "google_cloud_vision-3.7.2-py2.py3-none-any.whl", hash = "sha256:a313088fcd9c016af0427c2447eea1ad01bc192ca4cc33babaace1be587bbf75"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-workflows" -version = "1.14.2" +version = "1.14.3" description = "Google Cloud Workflows API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-workflows-1.14.2.tar.gz", hash = "sha256:2f580bdebf87cf2c2fb1b7d6936f11b61c26f25ab3d12f5e913716521f0570b3"}, - {file = "google_cloud_workflows-1.14.2-py2.py3-none-any.whl", hash = "sha256:23e1e00f8ff7dd16a984c0b6c7e530565a613df97d249da1a3ee548212cfb0e6"}, + {file = "google-cloud-workflows-1.14.3.tar.gz", hash = "sha256:2140b97f78037b967d4185576886772fe17be77d2ae9996d207a334ed5a77ffe"}, + {file = "google_cloud_workflows-1.14.3-py2.py3-none-any.whl", hash = "sha256:8e700e1e6e9e9ca6375d16cad6230c52cd123beca4597c86a956940bcce996d1"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -3589,13 +3568,13 @@ test = ["objgraph", "psutil"] [[package]] name = "griffe" -version = "0.41.0" +version = "0.41.3" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." optional = false python-versions = ">=3.8" files = [ - {file = "griffe-0.41.0-py3-none-any.whl", hash = "sha256:8aa7fc6eb00cb80af9c0198178c6b7110cb59fa2c5187bb13ea25eebbe4dd928"}, - {file = "griffe-0.41.0.tar.gz", hash = "sha256:850128c3198c18713eaf0a6cc8572e590a16b1965f72a4e871e66cf84740903f"}, + {file = "griffe-0.41.3-py3-none-any.whl", hash = "sha256:27b4610f1ba6e5d039e9f0a2c97232e13463df75e53cb1833e0679f3377b9de2"}, + {file = "griffe-0.41.3.tar.gz", hash = "sha256:9edcfa9f57f4d9c5fcc6d5ce067c67a685b7101a21a7d11848ce0437368e474c"}, ] [package.dependencies] @@ -3943,18 +3922,18 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs [[package]] name = "importlib-resources" -version = "6.1.2" +version = "6.1.3" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.1.2-py3-none-any.whl", hash = "sha256:9a0a862501dc38b68adebc82970140c9e4209fc99601782925178f8386339938"}, - {file = "importlib_resources-6.1.2.tar.gz", hash = "sha256:308abf8474e2dba5f867d279237cd4076482c3de7104a40b41426370e891549b"}, + {file = "importlib_resources-6.1.3-py3-none-any.whl", hash = "sha256:4c0269e3580fe2634d364b39b38b961540a7738c02cb984e98add8b4221d793d"}, + {file = "importlib_resources-6.1.3.tar.gz", hash = "sha256:56fb4525197b78544a3354ea27793952ab93f935bb4bf746b846bb1015020f2b"}, ] [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-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] +testing = ["jaraco.collections", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] [[package]] name = "inflection" @@ -4038,13 +4017,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.22.1" +version = "8.22.2" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.22.1-py3-none-any.whl", hash = "sha256:869335e8cded62ffb6fac8928e5287a05433d6462e3ebaac25f4216474dd6bc4"}, - {file = "ipython-8.22.1.tar.gz", hash = "sha256:39c6f9efc079fb19bfb0f17eee903978fe9a290b1b82d68196c641cecb76ea22"}, + {file = "ipython-8.22.2-py3-none-any.whl", hash = "sha256:3c86f284c8f3d8f2b6c662f885c4889a91df7cd52056fd02b7d8d6195d7f56e9"}, + {file = "ipython-8.22.2.tar.gz", hash = "sha256:2dcaad9049f9056f1fef63514f176c7d41f930daa78d05b82a176202818f2c14"}, ] [package.dependencies] @@ -4629,13 +4608,13 @@ files = [ [[package]] name = "marshmallow" -version = "3.21.0" +version = "3.21.1" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.8" files = [ - {file = "marshmallow-3.21.0-py3-none-any.whl", hash = "sha256:e7997f83571c7fd476042c2c188e4ee8a78900ca5e74bd9c8097afa56624e9bd"}, - {file = "marshmallow-3.21.0.tar.gz", hash = "sha256:20f53be28c6e374a711a16165fb22a8dc6003e3f7cda1285e3ca777b9193885b"}, + {file = "marshmallow-3.21.1-py3-none-any.whl", hash = "sha256:f085493f79efb0644f270a9bf2892843142d80d7174bbbd2f3713f2a589dc633"}, + {file = "marshmallow-3.21.1.tar.gz", hash = "sha256:4e65e9e0d80fc9e609574b9983cf32579f305c718afb30d7233ab818571768c3"}, ] [package.dependencies] @@ -4797,13 +4776,13 @@ mkdocs = ">=1.2.3" [[package]] name = "mkdocs-autorefs" -version = "1.0.0" +version = "1.0.1" description = "Automatically link across pages in MkDocs." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_autorefs-1.0.0-py3-none-any.whl", hash = "sha256:2b6d288f0582589d1be7c99ce4470c8e7c5077892014051ff0d4ff574a73dbe8"}, - {file = "mkdocs_autorefs-1.0.0.tar.gz", hash = "sha256:1b20db41cade632b07b7a73dee818977b52e869c9deb438f6f20e2896ff01859"}, + {file = "mkdocs_autorefs-1.0.1-py3-none-any.whl", hash = "sha256:aacdfae1ab197780fb7a2dac92ad8a3d8f7ca8049a9cbe56a4218cd52e8da570"}, + {file = "mkdocs_autorefs-1.0.1.tar.gz", hash = "sha256:f684edf847eced40b570b57846b15f0bf57fb93ac2c510450775dcf16accb971"}, ] [package.dependencies] @@ -4875,13 +4854,13 @@ pytz = "*" [[package]] name = "mkdocs-material" -version = "9.5.11" +version = "9.5.13" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.11-py3-none-any.whl", hash = "sha256:788ee0f3e036dca2dc20298d65e480297d348a44c9d7b2ee05c5262983e66072"}, - {file = "mkdocs_material-9.5.11.tar.gz", hash = "sha256:7af7f8af0dea16175558f3fb9245d26c83a17199baa5f157755e63d7437bf971"}, + {file = "mkdocs_material-9.5.13-py3-none-any.whl", hash = "sha256:5cbe17fee4e3b4980c8420a04cc762d8dc052ef1e10532abd4fce88e5ea9ce6a"}, + {file = "mkdocs_material-9.5.13.tar.gz", hash = "sha256:d8e4caae576312a88fd2609b81cf43d233cdbe36860d67a68702b018b425bd87"}, ] [package.dependencies] @@ -4929,13 +4908,13 @@ mkdocs = ">=1.2" [[package]] name = "mkdocstrings" -version = "0.24.0" +version = "0.24.1" description = "Automatic documentation from sources, for MkDocs." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocstrings-0.24.0-py3-none-any.whl", hash = "sha256:f4908560c10f587326d8f5165d1908817b2e280bbf707607f601c996366a2264"}, - {file = "mkdocstrings-0.24.0.tar.gz", hash = "sha256:222b1165be41257b494a9d29b14135d2b7ca43f38161d5b10caae03b87bd4f7e"}, + {file = "mkdocstrings-0.24.1-py3-none-any.whl", hash = "sha256:b4206f9a2ca8a648e222d5a0ca1d36ba7dee53c88732818de183b536f9042b5d"}, + {file = "mkdocstrings-0.24.1.tar.gz", hash = "sha256:cc83f9a1c8724fc1be3c2fa071dd73d91ce902ef6a79710249ec8d0ee1064401"}, ] [package.dependencies] @@ -5538,82 +5517,77 @@ files = [ [[package]] name = "pandas" -version = "2.2.1" +version = "2.1.4" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8df8612be9cd1c7797c93e1c5df861b2ddda0b48b08f2c3eaa0702cf88fb5f88"}, - {file = "pandas-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f573ab277252ed9aaf38240f3b54cfc90fff8e5cab70411ee1d03f5d51f3944"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f02a3a6c83df4026e55b63c1f06476c9aa3ed6af3d89b4f04ea656ccdaaaa359"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38ce92cb22a4bea4e3929429aa1067a454dcc9c335799af93ba9be21b6beb51"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c2ce852e1cf2509a69e98358e8458775f89599566ac3775e70419b98615f4b06"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53680dc9b2519cbf609c62db3ed7c0b499077c7fefda564e330286e619ff0dd9"}, - {file = "pandas-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94e714a1cca63e4f5939cdce5f29ba8d415d85166be3441165edd427dc9f6bc0"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f821213d48f4ab353d20ebc24e4faf94ba40d76680642fb7ce2ea31a3ad94f9b"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70e00c2d894cb230e5c15e4b1e1e6b2b478e09cf27cc593a11ef955b9ecc81a"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97fbb5387c69209f134893abc788a6486dbf2f9e511070ca05eed4b930b1b02"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101d0eb9c5361aa0146f500773395a03839a5e6ecde4d4b6ced88b7e5a1a6403"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7d2ed41c319c9fb4fd454fe25372028dfa417aacb9790f68171b2e3f06eae8cd"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5d3c00557d657c8773ef9ee702c61dd13b9d7426794c9dfeb1dc4a0bf0ebc7"}, - {file = "pandas-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:06cf591dbaefb6da9de8472535b185cba556d0ce2e6ed28e21d919704fef1a9e"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:88ecb5c01bb9ca927ebc4098136038519aa5d66b44671861ffab754cae75102c"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04f6ec3baec203c13e3f8b139fb0f9f86cd8c0b94603ae3ae8ce9a422e9f5bee"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a935a90a76c44fe170d01e90a3594beef9e9a6220021acfb26053d01426f7dc2"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c391f594aae2fd9f679d419e9a4d5ba4bce5bb13f6a989195656e7dc4b95c8f0"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9d1265545f579edf3f8f0cb6f89f234f5e44ba725a34d86535b1a1d38decbccc"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11940e9e3056576ac3244baef2fedade891977bcc1cb7e5cc8f8cc7d603edc89"}, - {file = "pandas-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acf681325ee1c7f950d058b05a820441075b0dd9a2adf5c4835b9bc056bf4fb"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9bd8a40f47080825af4317d0340c656744f2bfdb6819f818e6ba3cd24c0e1397"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df0c37ebd19e11d089ceba66eba59a168242fc6b7155cba4ffffa6eccdfb8f16"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:739cc70eaf17d57608639e74d63387b0d8594ce02f69e7a0b046f117974b3019"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d3558d263073ed95e46f4650becff0c5e1ffe0fc3a015de3c79283dfbdb3df"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4aa1d8707812a658debf03824016bf5ea0d516afdea29b7dc14cf687bc4d4ec6"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:76f27a809cda87e07f192f001d11adc2b930e93a2b0c4a236fde5429527423be"}, - {file = "pandas-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:1ba21b1d5c0e43416218db63037dbe1a01fc101dc6e6024bcad08123e48004ab"}, - {file = "pandas-2.2.1.tar.gz", hash = "sha256:0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572"}, + {file = "pandas-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bdec823dc6ec53f7a6339a0e34c68b144a7a1fd28d80c260534c39c62c5bf8c9"}, + {file = "pandas-2.1.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:294d96cfaf28d688f30c918a765ea2ae2e0e71d3536754f4b6de0ea4a496d034"}, + {file = "pandas-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b728fb8deba8905b319f96447a27033969f3ea1fea09d07d296c9030ab2ed1d"}, + {file = "pandas-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00028e6737c594feac3c2df15636d73ace46b8314d236100b57ed7e4b9ebe8d9"}, + {file = "pandas-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:426dc0f1b187523c4db06f96fb5c8d1a845e259c99bda74f7de97bd8a3bb3139"}, + {file = "pandas-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:f237e6ca6421265643608813ce9793610ad09b40154a3344a088159590469e46"}, + {file = "pandas-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b7d852d16c270e4331f6f59b3e9aa23f935f5c4b0ed2d0bc77637a8890a5d092"}, + {file = "pandas-2.1.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bd7d5f2f54f78164b3d7a40f33bf79a74cdee72c31affec86bfcabe7e0789821"}, + {file = "pandas-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0aa6e92e639da0d6e2017d9ccff563222f4eb31e4b2c3cf32a2a392fc3103c0d"}, + {file = "pandas-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d797591b6846b9db79e65dc2d0d48e61f7db8d10b2a9480b4e3faaddc421a171"}, + {file = "pandas-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d2d3e7b00f703aea3945995ee63375c61b2e6aa5aa7871c5d622870e5e137623"}, + {file = "pandas-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:dc9bf7ade01143cddc0074aa6995edd05323974e6e40d9dbde081021ded8510e"}, + {file = "pandas-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:482d5076e1791777e1571f2e2d789e940dedd927325cc3cb6d0800c6304082f6"}, + {file = "pandas-2.1.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8a706cfe7955c4ca59af8c7a0517370eafbd98593155b48f10f9811da440248b"}, + {file = "pandas-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0513a132a15977b4a5b89aabd304647919bc2169eac4c8536afb29c07c23540"}, + {file = "pandas-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9f17f2b6fc076b2a0078862547595d66244db0f41bf79fc5f64a5c4d635bead"}, + {file = "pandas-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:45d63d2a9b1b37fa6c84a68ba2422dc9ed018bdaa668c7f47566a01188ceeec1"}, + {file = "pandas-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:f69b0c9bb174a2342818d3e2778584e18c740d56857fc5cdb944ec8bbe4082cf"}, + {file = "pandas-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3f06bda01a143020bad20f7a85dd5f4a1600112145f126bc9e3e42077c24ef34"}, + {file = "pandas-2.1.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab5796839eb1fd62a39eec2916d3e979ec3130509930fea17fe6f81e18108f6a"}, + {file = "pandas-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edbaf9e8d3a63a9276d707b4d25930a262341bca9874fcb22eff5e3da5394732"}, + {file = "pandas-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ebfd771110b50055712b3b711b51bee5d50135429364d0498e1213a7adc2be8"}, + {file = "pandas-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8ea107e0be2aba1da619cc6ba3f999b2bfc9669a83554b1904ce3dd9507f0860"}, + {file = "pandas-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:d65148b14788b3758daf57bf42725caa536575da2b64df9964c563b015230984"}, + {file = "pandas-2.1.4.tar.gz", hash = "sha256:fcb68203c833cc735321512e13861358079a96c174a61f5116a1de89c58c0ef7"}, ] [package.dependencies] numpy = {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""} python-dateutil = ">=2.8.2" pytz = ">=2020.1" -tzdata = ">=2022.7" +tzdata = ">=2022.1" [package.extras] -all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] -aws = ["s3fs (>=2022.11.0)"] -clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] -compression = ["zstandard (>=0.19.0)"] -computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +all = ["PyQt5 (>=5.15.6)", "SQLAlchemy (>=1.4.36)", "beautifulsoup4 (>=4.11.1)", "bottleneck (>=1.3.4)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=0.8.1)", "fsspec (>=2022.05.0)", "gcsfs (>=2022.05.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.8.0)", "matplotlib (>=3.6.1)", "numba (>=0.55.2)", "numexpr (>=2.8.0)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pandas-gbq (>=0.17.5)", "psycopg2 (>=2.9.3)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.5)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "pyxlsb (>=1.0.9)", "qtpy (>=2.2.0)", "s3fs (>=2022.05.0)", "scipy (>=1.8.1)", "tables (>=3.7.0)", "tabulate (>=0.8.10)", "xarray (>=2022.03.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)", "zstandard (>=0.17.0)"] +aws = ["s3fs (>=2022.05.0)"] +clipboard = ["PyQt5 (>=5.15.6)", "qtpy (>=2.2.0)"] +compression = ["zstandard (>=0.17.0)"] +computation = ["scipy (>=1.8.1)", "xarray (>=2022.03.0)"] consortium-standard = ["dataframe-api-compat (>=0.1.7)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] -feather = ["pyarrow (>=10.0.1)"] -fss = ["fsspec (>=2022.11.0)"] -gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] -hdf5 = ["tables (>=3.8.0)"] -html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] -mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] -parquet = ["pyarrow (>=10.0.1)"] -performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] -plot = ["matplotlib (>=3.6.3)"] -postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] -pyarrow = ["pyarrow (>=10.0.1)"] -spss = ["pyreadstat (>=1.2.0)"] -sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pyxlsb (>=1.0.9)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)"] +feather = ["pyarrow (>=7.0.0)"] +fss = ["fsspec (>=2022.05.0)"] +gcp = ["gcsfs (>=2022.05.0)", "pandas-gbq (>=0.17.5)"] +hdf5 = ["tables (>=3.7.0)"] +html = ["beautifulsoup4 (>=4.11.1)", "html5lib (>=1.1)", "lxml (>=4.8.0)"] +mysql = ["SQLAlchemy (>=1.4.36)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.8.10)"] +parquet = ["pyarrow (>=7.0.0)"] +performance = ["bottleneck (>=1.3.4)", "numba (>=0.55.2)", "numexpr (>=2.8.0)"] +plot = ["matplotlib (>=3.6.1)"] +postgresql = ["SQLAlchemy (>=1.4.36)", "psycopg2 (>=2.9.3)"] +spss = ["pyreadstat (>=1.1.5)"] +sql-other = ["SQLAlchemy (>=1.4.36)"] test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.9.2)"] +xml = ["lxml (>=4.8.0)"] [[package]] name = "pandas-gbq" -version = "0.21.0" +version = "0.22.0" description = "Google BigQuery connector for pandas" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pandas-gbq-0.21.0.tar.gz", hash = "sha256:f9c137430d34059f380af6c37781334d0be0a16021a8bdbf2836687e50ab63af"}, - {file = "pandas_gbq-0.21.0-py2.py3-none-any.whl", hash = "sha256:1f82db5048e86516d7bafae68a911982c1f2590ea117ad72879cc981b050bf11"}, + {file = "pandas-gbq-0.22.0.tar.gz", hash = "sha256:3fb24010c96e795c22b35d86601ef76f8aed84d5d17ceb8a4396a354c1949ece"}, + {file = "pandas_gbq-0.22.0-py2.py3-none-any.whl", hash = "sha256:e3bc1f9903928e4923dc5ff7f29fad9e9799aa406058567f1c654d934bf41323"}, ] [package.dependencies] @@ -5622,7 +5596,6 @@ google-api-core = ">=2.10.2,<3.0.0dev" google-auth = ">=2.13.0" google-auth-oauthlib = ">=0.7.0" google-cloud-bigquery = ">=3.3.5,<4.0.0dev" -google-cloud-bigquery-storage = ">=2.16.2,<3.0.0dev" numpy = ">=1.16.6" packaging = ">=20.0.0" pandas = ">=1.1.4" @@ -5631,6 +5604,7 @@ pydata-google-auth = ">=1.5.0" setuptools = "*" [package.extras] +bqstorage = ["google-cloud-bigquery-storage (>=2.16.2,<3.0.0dev)"] tqdm = ["tqdm (>=4.23.0)"] [[package]] @@ -6134,47 +6108,47 @@ files = [ [[package]] name = "pyarrow" -version = "15.0.0" +version = "15.0.1" description = "Python library for Apache Arrow" optional = false python-versions = ">=3.8" files = [ - {file = "pyarrow-15.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:0a524532fd6dd482edaa563b686d754c70417c2f72742a8c990b322d4c03a15d"}, - {file = "pyarrow-15.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:60a6bdb314affa9c2e0d5dddf3d9cbb9ef4a8dddaa68669975287d47ece67642"}, - {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66958fd1771a4d4b754cd385835e66a3ef6b12611e001d4e5edfcef5f30391e2"}, - {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f500956a49aadd907eaa21d4fff75f73954605eaa41f61cb94fb008cf2e00c6"}, - {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6f87d9c4f09e049c2cade559643424da84c43a35068f2a1c4653dc5b1408a929"}, - {file = "pyarrow-15.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85239b9f93278e130d86c0e6bb455dcb66fc3fd891398b9d45ace8799a871a1e"}, - {file = "pyarrow-15.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5b8d43e31ca16aa6e12402fcb1e14352d0d809de70edd185c7650fe80e0769e3"}, - {file = "pyarrow-15.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:fa7cd198280dbd0c988df525e50e35b5d16873e2cdae2aaaa6363cdb64e3eec5"}, - {file = "pyarrow-15.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8780b1a29d3c8b21ba6b191305a2a607de2e30dab399776ff0aa09131e266340"}, - {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0ec198ccc680f6c92723fadcb97b74f07c45ff3fdec9dd765deb04955ccf19"}, - {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036a7209c235588c2f07477fe75c07e6caced9b7b61bb897c8d4e52c4b5f9555"}, - {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2bd8a0e5296797faf9a3294e9fa2dc67aa7f10ae2207920dbebb785c77e9dbe5"}, - {file = "pyarrow-15.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e8ebed6053dbe76883a822d4e8da36860f479d55a762bd9e70d8494aed87113e"}, - {file = "pyarrow-15.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:17d53a9d1b2b5bd7d5e4cd84d018e2a45bc9baaa68f7e6e3ebed45649900ba99"}, - {file = "pyarrow-15.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:9950a9c9df24090d3d558b43b97753b8f5867fb8e521f29876aa021c52fda351"}, - {file = "pyarrow-15.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:003d680b5e422d0204e7287bb3fa775b332b3fce2996aa69e9adea23f5c8f970"}, - {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f75fce89dad10c95f4bf590b765e3ae98bcc5ba9f6ce75adb828a334e26a3d40"}, - {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca9cb0039923bec49b4fe23803807e4ef39576a2bec59c32b11296464623dc2"}, - {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9ed5a78ed29d171d0acc26a305a4b7f83c122d54ff5270810ac23c75813585e4"}, - {file = "pyarrow-15.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6eda9e117f0402dfcd3cd6ec9bfee89ac5071c48fc83a84f3075b60efa96747f"}, - {file = "pyarrow-15.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9a3a6180c0e8f2727e6f1b1c87c72d3254cac909e609f35f22532e4115461177"}, - {file = "pyarrow-15.0.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:19a8918045993349b207de72d4576af0191beef03ea655d8bdb13762f0cd6eac"}, - {file = "pyarrow-15.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0ec076b32bacb6666e8813a22e6e5a7ef1314c8069d4ff345efa6246bc38593"}, - {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5db1769e5d0a77eb92344c7382d6543bea1164cca3704f84aa44e26c67e320fb"}, - {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2617e3bf9df2a00020dd1c1c6dce5cc343d979efe10bc401c0632b0eef6ef5b"}, - {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:d31c1d45060180131caf10f0f698e3a782db333a422038bf7fe01dace18b3a31"}, - {file = "pyarrow-15.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:c8c287d1d479de8269398b34282e206844abb3208224dbdd7166d580804674b7"}, - {file = "pyarrow-15.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:07eb7f07dc9ecbb8dace0f58f009d3a29ee58682fcdc91337dfeb51ea618a75b"}, - {file = "pyarrow-15.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:47af7036f64fce990bb8a5948c04722e4e3ea3e13b1007ef52dfe0aa8f23cf7f"}, - {file = "pyarrow-15.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93768ccfff85cf044c418bfeeafce9a8bb0cee091bd8fd19011aff91e58de540"}, - {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6ee87fd6892700960d90abb7b17a72a5abb3b64ee0fe8db6c782bcc2d0dc0b4"}, - {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:001fca027738c5f6be0b7a3159cc7ba16a5c52486db18160909a0831b063c4e4"}, - {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:d1c48648f64aec09accf44140dccb92f4f94394b8d79976c426a5b79b11d4fa7"}, - {file = "pyarrow-15.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:972a0141be402bb18e3201448c8ae62958c9c7923dfaa3b3d4530c835ac81aed"}, - {file = "pyarrow-15.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:f01fc5cf49081426429127aa2d427d9d98e1cb94a32cb961d583a70b7c4504e6"}, - {file = "pyarrow-15.0.0.tar.gz", hash = "sha256:876858f549d540898f927eba4ef77cd549ad8d24baa3207cf1b72e5788b50e83"}, + {file = "pyarrow-15.0.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:c2ddb3be5ea938c329a84171694fc230b241ce1b6b0ff1a0280509af51c375fa"}, + {file = "pyarrow-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7543ea88a0ff72f8e6baaf9bfdbec2c62aeabdbede9e4a571c71cc3bc43b6302"}, + {file = "pyarrow-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1519e218a6941fc074e4501088d891afcb2adf77c236e03c34babcf3d6a0d1c7"}, + {file = "pyarrow-15.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28cafa86e1944761970d3b3fc0411b14ff9b5c2b73cd22aaf470d7a3976335f5"}, + {file = "pyarrow-15.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:be5c3d463e33d03eab496e1af7916b1d44001c08f0f458ad27dc16093a020638"}, + {file = "pyarrow-15.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:47b1eda15d3aa3f49a07b1808648e1397e5dc6a80a30bf87faa8e2d02dad7ac3"}, + {file = "pyarrow-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e524a31be7db22deebbbcf242b189063ab9a7652c62471d296b31bc6e3cae77b"}, + {file = "pyarrow-15.0.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:a476fefe8bdd56122fb0d4881b785413e025858803cc1302d0d788d3522b374d"}, + {file = "pyarrow-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:309e6191be385f2e220586bfdb643f9bb21d7e1bc6dd0a6963dc538e347b2431"}, + {file = "pyarrow-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83bc586903dbeb4365cbc72b602f99f70b96c5882e5dfac5278813c7d624ca3c"}, + {file = "pyarrow-15.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07e652daac6d8b05280cd2af31c0fb61a4490ec6a53dc01588014d9fa3fdbee9"}, + {file = "pyarrow-15.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:abad2e08652df153a72177ce20c897d083b0c4ebeec051239e2654ddf4d3c996"}, + {file = "pyarrow-15.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cde663352bc83ad75ba7b3206e049ca1a69809223942362a8649e37bd22f9e3b"}, + {file = "pyarrow-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:1b6e237dd7a08482a8b8f3f6512d258d2460f182931832a8c6ef3953203d31e1"}, + {file = "pyarrow-15.0.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7bd167536ee23192760b8c731d39b7cfd37914c27fd4582335ffd08450ff799d"}, + {file = "pyarrow-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7c08bb31eb2984ba5c3747d375bb522e7e536b8b25b149c9cb5e1c49b0ccb736"}, + {file = "pyarrow-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0f9c1d630ed2524bd1ddf28ec92780a7b599fd54704cd653519f7ff5aec177a"}, + {file = "pyarrow-15.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5186048493395220550bca7b524420471aac2d77af831f584ce132680f55c3df"}, + {file = "pyarrow-15.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:31dc30c7ec8958da3a3d9f31d6c3630429b2091ede0ecd0d989fd6bec129f0e4"}, + {file = "pyarrow-15.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:3f111a014fb8ac2297b43a74bf4495cc479a332908f7ee49cb7cbd50714cb0c1"}, + {file = "pyarrow-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:a6d1f7c15d7f68f08490d0cb34611497c74285b8a6bbeab4ef3fc20117310983"}, + {file = "pyarrow-15.0.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:9ad931b996f51c2f978ed517b55cb3c6078272fb4ec579e3da5a8c14873b698d"}, + {file = "pyarrow-15.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:738f6b53ab1c2f66b2bde8a1d77e186aeaab702d849e0dfa1158c9e2c030add3"}, + {file = "pyarrow-15.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c1c3fc16bc74e33bf8f1e5a212938ed8d88e902f372c4dac6b5bad328567d2f"}, + {file = "pyarrow-15.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1fa92512128f6c1b8dde0468c1454dd70f3bff623970e370d52efd4d24fd0be"}, + {file = "pyarrow-15.0.1-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:b4157f307c202cbbdac147d9b07447a281fa8e63494f7fc85081da351ec6ace9"}, + {file = "pyarrow-15.0.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:b75e7da26f383787f80ad76143b44844ffa28648fcc7099a83df1538c078d2f2"}, + {file = "pyarrow-15.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:3a99eac76ae14096c209850935057b9e8ce97a78397c5cde8724674774f34e5d"}, + {file = "pyarrow-15.0.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:dd532d3177e031e9b2d2df19fd003d0cc0520d1747659fcabbd4d9bb87de508c"}, + {file = "pyarrow-15.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ce8c89848fd37e5313fc2ce601483038ee5566db96ba0808d5883b2e2e55dc53"}, + {file = "pyarrow-15.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:862eac5e5f3b6477f7a92b2f27e560e1f4e5e9edfca9ea9da8a7478bb4abd5ce"}, + {file = "pyarrow-15.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f0ea3a29cd5cb99bf14c1c4533eceaa00ea8fb580950fb5a89a5c771a994a4e"}, + {file = "pyarrow-15.0.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:bb902f780cfd624b2e8fd8501fadab17618fdb548532620ef3d91312aaf0888a"}, + {file = "pyarrow-15.0.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:4f87757f02735a6bb4ad2e1b98279ac45d53b748d5baf52401516413007c6999"}, + {file = "pyarrow-15.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:efd3816c7fbfcbd406ac0f69873cebb052effd7cdc153ae5836d1b00845845d7"}, + {file = "pyarrow-15.0.1.tar.gz", hash = "sha256:21d812548d39d490e0c6928a7c663f37b96bf764034123d4b4ab4530ecc757a9"}, ] [package.dependencies] @@ -6295,13 +6269,13 @@ files = [ [[package]] name = "pydantic" -version = "2.6.2" +version = "2.6.3" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.6.2-py3-none-any.whl", hash = "sha256:37a5432e54b12fecaa1049c5195f3d860a10e01bdfd24f1840ef14bd0d3aeab3"}, - {file = "pydantic-2.6.2.tar.gz", hash = "sha256:a09be1c3d28f3abe37f8a78af58284b236a92ce520105ddc91a6d29ea1176ba7"}, + {file = "pydantic-2.6.3-py3-none-any.whl", hash = "sha256:72c6034df47f46ccdf81869fddb81aade68056003900a8724a4f160700016a2a"}, + {file = "pydantic-2.6.3.tar.gz", hash = "sha256:e07805c4c7f5c6826e33a1d4c9d47950d7eaf34868e2690f8594d2e30241f11f"}, ] [package.dependencies] @@ -6497,13 +6471,13 @@ files = [ [[package]] name = "pymdown-extensions" -version = "10.7" +version = "10.7.1" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "pymdown_extensions-10.7-py3-none-any.whl", hash = "sha256:6ca215bc57bc12bf32b414887a68b810637d039124ed9b2e5bd3325cbb2c050c"}, - {file = "pymdown_extensions-10.7.tar.gz", hash = "sha256:c0d64d5cf62566f59e6b2b690a4095c931107c250a8c8e1351c1de5f6b036deb"}, + {file = "pymdown_extensions-10.7.1-py3-none-any.whl", hash = "sha256:f5cc7000d7ff0d1ce9395d216017fa4df3dde800afb1fb72d1c7d3fd35e710f4"}, + {file = "pymdown_extensions-10.7.1.tar.gz", hash = "sha256:c70e146bdd83c744ffc766b4671999796aba18842b268510a329f7f64700d584"}, ] [package.dependencies] @@ -6533,13 +6507,13 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"] [[package]] name = "pyparsing" -version = "3.1.1" +version = "3.1.2" 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"}, + {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, + {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, ] [package.extras] @@ -6665,13 +6639,13 @@ test = ["coverage", "docutils", "testscenarios (>=0.4)", "testtools"] [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -7447,13 +7421,13 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo [[package]] name = "sentry-sdk" -version = "1.40.6" +version = "1.41.0" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.40.6.tar.gz", hash = "sha256:f143f3fb4bb57c90abef6e2ad06b5f6f02b2ca13e4060ec5c0549c7a9ccce3fa"}, - {file = "sentry_sdk-1.40.6-py2.py3-none-any.whl", hash = "sha256:becda09660df63e55f307570e9817c664392655a7328bbc414b507e9cb874c67"}, + {file = "sentry-sdk-1.41.0.tar.gz", hash = "sha256:4f2d6c43c07925d8cd10dfbd0970ea7cb784f70e79523cca9dbcd72df38e5a46"}, + {file = "sentry_sdk-1.41.0-py2.py3-none-any.whl", hash = "sha256:be4f8f4b29a80b6a3b71f0f31487beb9e296391da20af8504498a328befed53f"}, ] [package.dependencies] @@ -7479,7 +7453,7 @@ huey = ["huey (>=2)"] loguru = ["loguru (>=0.5)"] opentelemetry = ["opentelemetry-distro (>=0.35b0)"] opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"] -pure-eval = ["asttokens", "executing", "pure_eval"] +pure-eval = ["asttokens", "executing", "pure-eval"] pymongo = ["pymongo (>=3.1)"] pyspark = ["pyspark (>=2.4.4)"] quart = ["blinker (>=1.1)", "quart (>=0.16.1)"] @@ -7731,57 +7705,57 @@ files = [ [[package]] name = "sqlalchemy" -version = "1.4.51" +version = "1.4.52" 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"}, + {file = "SQLAlchemy-1.4.52-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:f68016f9a5713684c1507cc37133c28035f29925c75c0df2f9d0f7571e23720a"}, + {file = "SQLAlchemy-1.4.52-cp310-cp310-manylinux1_x86_64.manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_5_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24bb0f81fbbb13d737b7f76d1821ec0b117ce8cbb8ee5e8641ad2de41aa916d3"}, + {file = "SQLAlchemy-1.4.52-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e93983cc0d2edae253b3f2141b0a3fb07e41c76cd79c2ad743fc27eb79c3f6db"}, + {file = "SQLAlchemy-1.4.52-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:84e10772cfc333eb08d0b7ef808cd76e4a9a30a725fb62a0495877a57ee41d81"}, + {file = "SQLAlchemy-1.4.52-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:427988398d2902de042093d17f2b9619a5ebc605bf6372f7d70e29bde6736842"}, + {file = "SQLAlchemy-1.4.52-cp310-cp310-win32.whl", hash = "sha256:1296f2cdd6db09b98ceb3c93025f0da4835303b8ac46c15c2136e27ee4d18d94"}, + {file = "SQLAlchemy-1.4.52-cp310-cp310-win_amd64.whl", hash = "sha256:80e7f697bccc56ac6eac9e2df5c98b47de57e7006d2e46e1a3c17c546254f6ef"}, + {file = "SQLAlchemy-1.4.52-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2f251af4c75a675ea42766880ff430ac33291c8d0057acca79710f9e5a77383d"}, + {file = "SQLAlchemy-1.4.52-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb8f9e4c4718f111d7b530c4e6fb4d28f9f110eb82e7961412955b3875b66de0"}, + {file = "SQLAlchemy-1.4.52-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afb1672b57f58c0318ad2cff80b384e816735ffc7e848d8aa51e0b0fc2f4b7bb"}, + {file = "SQLAlchemy-1.4.52-cp311-cp311-win32.whl", hash = "sha256:6e41cb5cda641f3754568d2ed8962f772a7f2b59403b95c60c89f3e0bd25f15e"}, + {file = "SQLAlchemy-1.4.52-cp311-cp311-win_amd64.whl", hash = "sha256:5bed4f8c3b69779de9d99eb03fd9ab67a850d74ab0243d1be9d4080e77b6af12"}, + {file = "SQLAlchemy-1.4.52-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:49e3772eb3380ac88d35495843daf3c03f094b713e66c7d017e322144a5c6b7c"}, + {file = "SQLAlchemy-1.4.52-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:618827c1a1c243d2540314c6e100aee7af09a709bd005bae971686fab6723554"}, + {file = "SQLAlchemy-1.4.52-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de9acf369aaadb71a725b7e83a5ef40ca3de1cf4cdc93fa847df6b12d3cd924b"}, + {file = "SQLAlchemy-1.4.52-cp312-cp312-win32.whl", hash = "sha256:763bd97c4ebc74136ecf3526b34808c58945023a59927b416acebcd68d1fc126"}, + {file = "SQLAlchemy-1.4.52-cp312-cp312-win_amd64.whl", hash = "sha256:f12aaf94f4d9679ca475975578739e12cc5b461172e04d66f7a3c39dd14ffc64"}, + {file = "SQLAlchemy-1.4.52-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:853fcfd1f54224ea7aabcf34b227d2b64a08cbac116ecf376907968b29b8e763"}, + {file = "SQLAlchemy-1.4.52-cp36-cp36m-manylinux1_x86_64.manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_5_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f98dbb8fcc6d1c03ae8ec735d3c62110949a3b8bc6e215053aa27096857afb45"}, + {file = "SQLAlchemy-1.4.52-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e135fff2e84103bc15c07edd8569612ce317d64bdb391f49ce57124a73f45c5"}, + {file = "SQLAlchemy-1.4.52-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5b5de6af8852500d01398f5047d62ca3431d1e29a331d0b56c3e14cb03f8094c"}, + {file = "SQLAlchemy-1.4.52-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3491c85df263a5c2157c594f54a1a9c72265b75d3777e61ee13c556d9e43ffc9"}, + {file = "SQLAlchemy-1.4.52-cp36-cp36m-win32.whl", hash = "sha256:427c282dd0deba1f07bcbf499cbcc9fe9a626743f5d4989bfdfd3ed3513003dd"}, + {file = "SQLAlchemy-1.4.52-cp36-cp36m-win_amd64.whl", hash = "sha256:ca5ce82b11731492204cff8845c5e8ca1a4bd1ade85e3b8fcf86e7601bfc6a39"}, + {file = "SQLAlchemy-1.4.52-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:29d4247313abb2015f8979137fe65f4eaceead5247d39603cc4b4a610936cd2b"}, + {file = "SQLAlchemy-1.4.52-cp37-cp37m-manylinux1_x86_64.manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_5_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a752bff4796bf22803d052d4841ebc3c55c26fb65551f2c96e90ac7c62be763a"}, + {file = "SQLAlchemy-1.4.52-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7ea11727feb2861deaa293c7971a4df57ef1c90e42cb53f0da40c3468388000"}, + {file = "SQLAlchemy-1.4.52-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d913f8953e098ca931ad7f58797f91deed26b435ec3756478b75c608aa80d139"}, + {file = "SQLAlchemy-1.4.52-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a251146b921725547ea1735b060a11e1be705017b568c9f8067ca61e6ef85f20"}, + {file = "SQLAlchemy-1.4.52-cp37-cp37m-win32.whl", hash = "sha256:1f8e1c6a6b7f8e9407ad9afc0ea41c1f65225ce505b79bc0342159de9c890782"}, + {file = "SQLAlchemy-1.4.52-cp37-cp37m-win_amd64.whl", hash = "sha256:346ed50cb2c30f5d7a03d888e25744154ceac6f0e6e1ab3bc7b5b77138d37710"}, + {file = "SQLAlchemy-1.4.52-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:4dae6001457d4497736e3bc422165f107ecdd70b0d651fab7f731276e8b9e12d"}, + {file = "SQLAlchemy-1.4.52-cp38-cp38-manylinux1_x86_64.manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_5_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5d2e08d79f5bf250afb4a61426b41026e448da446b55e4770c2afdc1e200fce"}, + {file = "SQLAlchemy-1.4.52-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bbce5dd7c7735e01d24f5a60177f3e589078f83c8a29e124a6521b76d825b85"}, + {file = "SQLAlchemy-1.4.52-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bdb7b4d889631a3b2a81a3347c4c3f031812eb4adeaa3ee4e6b0d028ad1852b5"}, + {file = "SQLAlchemy-1.4.52-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c294ae4e6bbd060dd79e2bd5bba8b6274d08ffd65b58d106394cb6abbf35cf45"}, + {file = "SQLAlchemy-1.4.52-cp38-cp38-win32.whl", hash = "sha256:bcdfb4b47fe04967669874fb1ce782a006756fdbebe7263f6a000e1db969120e"}, + {file = "SQLAlchemy-1.4.52-cp38-cp38-win_amd64.whl", hash = "sha256:7d0dbc56cb6af5088f3658982d3d8c1d6a82691f31f7b0da682c7b98fa914e91"}, + {file = "SQLAlchemy-1.4.52-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:a551d5f3dc63f096ed41775ceec72fdf91462bb95abdc179010dc95a93957800"}, + {file = "SQLAlchemy-1.4.52-cp39-cp39-manylinux1_x86_64.manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_5_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ab773f9ad848118df7a9bbabca53e3f1002387cdbb6ee81693db808b82aaab0"}, + {file = "SQLAlchemy-1.4.52-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2de46f5d5396d5331127cfa71f837cca945f9a2b04f7cb5a01949cf676db7d1"}, + {file = "SQLAlchemy-1.4.52-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7027be7930a90d18a386b25ee8af30514c61f3852c7268899f23fdfbd3107181"}, + {file = "SQLAlchemy-1.4.52-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99224d621affbb3c1a4f72b631f8393045f4ce647dd3262f12fe3576918f8bf3"}, + {file = "SQLAlchemy-1.4.52-cp39-cp39-win32.whl", hash = "sha256:c124912fd4e1bb9d1e7dc193ed482a9f812769cb1e69363ab68e01801e859821"}, + {file = "SQLAlchemy-1.4.52-cp39-cp39-win_amd64.whl", hash = "sha256:2c286fab42e49db23c46ab02479f328b8bdb837d3e281cae546cc4085c83b680"}, + {file = "SQLAlchemy-1.4.52.tar.gz", hash = "sha256:80e63bbdc5217dad3485059bdf6f65a7d43f33c8bde619df5c220edf03d87296"}, ] [package.dependencies] @@ -7810,13 +7784,13 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "sqlalchemy-bigquery" -version = "1.9.0" +version = "1.10.0" description = "SQLAlchemy dialect for BigQuery" optional = false python-versions = ">=3.8, <3.13" files = [ - {file = "sqlalchemy-bigquery-1.9.0.tar.gz", hash = "sha256:549b250ad4c75fe9efaff4ee32e08deb488f1886affbb159d8c149b6b537524f"}, - {file = "sqlalchemy_bigquery-1.9.0-py2.py3-none-any.whl", hash = "sha256:b1a4c2f5b672ca7bb02e1357d6f3aeabbb19a67e986f2ccd2654fb005705e98e"}, + {file = "sqlalchemy-bigquery-1.10.0.tar.gz", hash = "sha256:f7537fa283687c31b6f8bf9d3c76d6a1fd5d1a1df8e814116a991b2339656c1e"}, + {file = "sqlalchemy_bigquery-1.10.0-py2.py3-none-any.whl", hash = "sha256:ea59c9625848c92469463956f93ea1179242f35e582bf1010dec794ab7042046"}, ] [package.dependencies] @@ -8240,13 +8214,13 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "wandb" -version = "0.16.3" +version = "0.16.4" description = "A CLI and library for interacting with the Weights & Biases API." optional = false python-versions = ">=3.7" files = [ - {file = "wandb-0.16.3-py3-none-any.whl", hash = "sha256:b8907ddd775c27dc6c12687386a86b5d6acf291060f9ae680bbc61cc8fc03237"}, - {file = "wandb-0.16.3.tar.gz", hash = "sha256:d789acda32053b18b7a160d0595837e45a3c8a79d25e1fe1f051875303f480ec"}, + {file = "wandb-0.16.4-py3-none-any.whl", hash = "sha256:bb9eb5aa2c2c85e11c76040c4271366f54d4975167aa6320ba86c3f2d97fe5fa"}, + {file = "wandb-0.16.4.tar.gz", hash = "sha256:8752c67d1347a4c29777e64dc1e1a742a66c5ecde03aebadf2b0d62183fa307c"}, ] [package.dependencies] @@ -8267,8 +8241,9 @@ async = ["httpx (>=0.23.0)"] aws = ["boto3"] azure = ["azure-identity", "azure-storage-blob"] gcp = ["google-cloud-storage"] +importers = ["filelock", "mlflow", "polars", "rich", "tenacity"] kubeflow = ["google-cloud-storage", "kubernetes", "minio", "sh"] -launch = ["PyYAML (>=6.0.0)", "awscli", "azure-containerregistry", "azure-identity", "azure-storage-blob", "boto3", "botocore", "chardet", "google-auth", "google-cloud-aiplatform", "google-cloud-artifact-registry", "google-cloud-compute", "google-cloud-storage", "iso8601", "kubernetes", "kubernetes-asyncio", "nbconvert", "nbformat", "optuna", "pydantic", "typing-extensions"] +launch = ["PyYAML (>=6.0.0)", "awscli", "azure-containerregistry", "azure-identity", "azure-storage-blob", "boto3", "botocore", "chardet", "google-auth", "google-cloud-aiplatform", "google-cloud-artifact-registry", "google-cloud-compute", "google-cloud-storage", "iso8601", "kubernetes", "kubernetes-asyncio", "nbconvert", "nbformat", "optuna", "pydantic", "tomli", "typing-extensions"] media = ["bokeh", "moviepy", "numpy", "pillow", "plotly (>=5.18.0)", "rdkit-pypi", "soundfile"] models = ["cloudpickle"] perf = ["orjson"] From 8f91f3a2f8d8ed291038260a95302104f4ec66c0 Mon Sep 17 00:00:00 2001 From: David Ochoa Date: Thu, 7 Mar 2024 09:51:54 +0000 Subject: [PATCH 11/86] revert: make setup dev not to update pre-commits (#524) --- utils/install_dependencies.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/install_dependencies.sh b/utils/install_dependencies.sh index e17290f1f..33c5cf8b1 100644 --- a/utils/install_dependencies.sh +++ b/utils/install_dependencies.sh @@ -30,7 +30,6 @@ poetry install --sync echo "Setting up pre-commit..." poetry run pre-commit install -poetry run pre-commit autoupdate poetry run pre-commit install --hook-type commit-msg echo "Activating the Poetry environment..." From af16331ab5acaf721c6e0272f4c910c158b4e518 Mon Sep 17 00:00:00 2001 From: David Ochoa Date: Thu, 7 Mar 2024 09:57:55 +0000 Subject: [PATCH 12/86] chore: update ruff pre-commit and rules (#522) * chore: update ruff pre-commit and rules * refactor: to address None type and remove typeignore --------- Co-authored-by: Daniel Suveges --- .pre-commit-config.yaml | 2 +- pyproject.toml | 5 ++--- tests/airflow/test_dag.py | 1 + tests/gentropy/common/test_session.py | 1 + tests/gentropy/conftest.py | 1 + tests/gentropy/dataset/test_colocalisation.py | 1 + tests/gentropy/dataset/test_dataset.py | 1 + tests/gentropy/dataset/test_gene_index.py | 1 + tests/gentropy/dataset/test_intervals.py | 1 + tests/gentropy/dataset/test_l2g.py | 5 +++-- tests/gentropy/dataset/test_ld_index.py | 1 + tests/gentropy/dataset/test_study_index.py | 1 + tests/gentropy/dataset/test_study_locus.py | 1 + tests/gentropy/dataset/test_study_locus_overlap.py | 1 + tests/gentropy/dataset/test_study_locus_overlaps.py | 1 + tests/gentropy/dataset/test_summary_statistics.py | 1 + tests/gentropy/dataset/test_v2g.py | 1 + tests/gentropy/dataset/test_variant_annotation.py | 1 + tests/gentropy/dataset/test_variant_index.py | 1 + .../gwas_catalog/test_gwas_catalog_study_splitter.py | 1 + tests/gentropy/datasource/intervals/test_andersson.py | 1 + tests/gentropy/datasource/intervals/test_javierre.py | 1 + tests/gentropy/datasource/intervals/test_jung.py | 1 + tests/gentropy/datasource/intervals/test_thurman.py | 1 + .../datasource/open_targets/test_l2g_gold_standard.py | 1 + tests/gentropy/datasource/open_targets/test_target.py | 1 + tests/gentropy/docs/test_applying_methods.py | 1 + tests/gentropy/docs/test_create_dataset.py | 1 + tests/gentropy/docs/test_creating_spark_session.py | 1 + tests/gentropy/docs/test_inspect_dataset.py | 1 + tests/gentropy/method/test_window_based_clumping.py | 1 + tests/gentropy/step/test_clump_step.py | 1 + tests/gentropy/test_cli.py | 1 + tests/gentropy/test_schemas.py | 1 + tests/gentropy/test_spark_helpers.py | 1 + 35 files changed, 38 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 45736c8af..104a97062 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ ci: autofix_commit_msg: "chore: pre-commit auto fixes [...]" repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.2.2 + rev: v0.3.0 hooks: - id: ruff args: diff --git a/pyproject.toml b/pyproject.toml index 2b4150996..4ede53f24 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -159,13 +159,14 @@ module = [ ignore_missing_imports = true -[tool.ruff] +[tool.ruff.lint] select = [ "B002", # Python does not support the unary prefix increment "B007", # Loop control variable {name} not used within loop body "B014", # Exception handler with duplicate exception "B023", # Function definition does not bind loop variable {name} "B026", # Star-arg unpacking after a keyword argument is strongly discouraged + "B904", # Checks for raise statements in exception handlers that lack a from clause "C", # complexity "COM818", # Trailing comma on bare tuple prohibited "D", # docstrings @@ -180,7 +181,6 @@ select = [ "N804", # First argument of a class method should be named cls "N805", # First argument of a method should be named self "N815", # Variable {name} in class scope should not be mixedCase - "PGH001", # No builtin eval() allowed "PGH004", # Use specific rule codes when using noqa "PLC0414", # Useless import alias. Import alias does not rename original package. "PLC", # pylint @@ -219,7 +219,6 @@ select = [ "T20", # flake8-print "TID251", # Banned imports "TRY004", # Prefer TypeError exception for invalid type - "TRY200", # Use raise from to specify exception cause "TRY302", # Remove exception handler; error is immediately re-raised "UP", # pyupgrade "W", # pycodestyle diff --git a/tests/airflow/test_dag.py b/tests/airflow/test_dag.py index 8676d70f4..49edc76ee 100644 --- a/tests/airflow/test_dag.py +++ b/tests/airflow/test_dag.py @@ -1,4 +1,5 @@ """Check for airflow import errors. Inspiration from https://garystafford.medium.com/devops-for-dataops-building-a-ci-cd-pipeline-for-apache-airflow-dags-975e4a622f83.""" + from __future__ import annotations import pytest diff --git a/tests/gentropy/common/test_session.py b/tests/gentropy/common/test_session.py index b7d0156d2..2ea7ccc1b 100644 --- a/tests/gentropy/common/test_session.py +++ b/tests/gentropy/common/test_session.py @@ -1,4 +1,5 @@ """Tests GWAS Catalog study splitter.""" + from __future__ import annotations from typing import TYPE_CHECKING diff --git a/tests/gentropy/conftest.py b/tests/gentropy/conftest.py index c7af5a589..13409ac16 100644 --- a/tests/gentropy/conftest.py +++ b/tests/gentropy/conftest.py @@ -1,4 +1,5 @@ """Unit test configuration.""" + from __future__ import annotations from pathlib import Path diff --git a/tests/gentropy/dataset/test_colocalisation.py b/tests/gentropy/dataset/test_colocalisation.py index 2937efbca..1651aa2d4 100644 --- a/tests/gentropy/dataset/test_colocalisation.py +++ b/tests/gentropy/dataset/test_colocalisation.py @@ -1,4 +1,5 @@ """Test colocalisation dataset.""" + from __future__ import annotations from gentropy.dataset.colocalisation import Colocalisation diff --git a/tests/gentropy/dataset/test_dataset.py b/tests/gentropy/dataset/test_dataset.py index 340906322..88f44ed5b 100644 --- a/tests/gentropy/dataset/test_dataset.py +++ b/tests/gentropy/dataset/test_dataset.py @@ -1,4 +1,5 @@ """Test Dataset class.""" + from __future__ import annotations import pyspark.sql.functions as f diff --git a/tests/gentropy/dataset/test_gene_index.py b/tests/gentropy/dataset/test_gene_index.py index 68c279cab..999f089b3 100644 --- a/tests/gentropy/dataset/test_gene_index.py +++ b/tests/gentropy/dataset/test_gene_index.py @@ -1,4 +1,5 @@ """Tests on LD index.""" + from __future__ import annotations from gentropy.dataset.gene_index import GeneIndex diff --git a/tests/gentropy/dataset/test_intervals.py b/tests/gentropy/dataset/test_intervals.py index bfa12ad69..26d79acd1 100644 --- a/tests/gentropy/dataset/test_intervals.py +++ b/tests/gentropy/dataset/test_intervals.py @@ -1,4 +1,5 @@ """Tests on LD index.""" + from __future__ import annotations from typing import TYPE_CHECKING diff --git a/tests/gentropy/dataset/test_l2g.py b/tests/gentropy/dataset/test_l2g.py index 045b98d62..a6a14c346 100644 --- a/tests/gentropy/dataset/test_l2g.py +++ b/tests/gentropy/dataset/test_l2g.py @@ -1,4 +1,5 @@ """Tests on L2G datasets.""" + from __future__ import annotations from typing import TYPE_CHECKING @@ -167,8 +168,8 @@ def test_calculate_feature_missingness_rate(spark: SparkSession) -> None: expected_missingness = {"distanceTssMean": 0.0, "distanceTssMinimum": 1.0} observed_missingness = fm.calculate_feature_missingness_rate() assert isinstance(observed_missingness, dict) - assert len(observed_missingness) == len( - fm.features_list # type: ignore + assert fm.features_list is not None and len(observed_missingness) == len( + fm.features_list ), "Missing features in the missingness rate dictionary." assert ( observed_missingness == expected_missingness diff --git a/tests/gentropy/dataset/test_ld_index.py b/tests/gentropy/dataset/test_ld_index.py index c3eff6a4d..dc2b49c09 100644 --- a/tests/gentropy/dataset/test_ld_index.py +++ b/tests/gentropy/dataset/test_ld_index.py @@ -1,4 +1,5 @@ """Tests on LD index.""" + from __future__ import annotations from gentropy.dataset.ld_index import LDIndex diff --git a/tests/gentropy/dataset/test_study_index.py b/tests/gentropy/dataset/test_study_index.py index 1d43b3b07..6e327c086 100644 --- a/tests/gentropy/dataset/test_study_index.py +++ b/tests/gentropy/dataset/test_study_index.py @@ -1,4 +1,5 @@ """Test study index dataset.""" + from __future__ import annotations from gentropy.dataset.study_index import StudyIndex diff --git a/tests/gentropy/dataset/test_study_locus.py b/tests/gentropy/dataset/test_study_locus.py index 037ede068..c12597d54 100644 --- a/tests/gentropy/dataset/test_study_locus.py +++ b/tests/gentropy/dataset/test_study_locus.py @@ -1,4 +1,5 @@ """Test study locus dataset.""" + from __future__ import annotations from typing import Any diff --git a/tests/gentropy/dataset/test_study_locus_overlap.py b/tests/gentropy/dataset/test_study_locus_overlap.py index ca49fc067..53d87226c 100644 --- a/tests/gentropy/dataset/test_study_locus_overlap.py +++ b/tests/gentropy/dataset/test_study_locus_overlap.py @@ -1,4 +1,5 @@ """Test study locus overlap dataset.""" + from __future__ import annotations from gentropy.dataset.study_locus_overlap import StudyLocusOverlap diff --git a/tests/gentropy/dataset/test_study_locus_overlaps.py b/tests/gentropy/dataset/test_study_locus_overlaps.py index 6a812fb39..ee89eec84 100644 --- a/tests/gentropy/dataset/test_study_locus_overlaps.py +++ b/tests/gentropy/dataset/test_study_locus_overlaps.py @@ -1,4 +1,5 @@ """Test colocalisation dataset.""" + from __future__ import annotations from typing import TYPE_CHECKING, Any diff --git a/tests/gentropy/dataset/test_summary_statistics.py b/tests/gentropy/dataset/test_summary_statistics.py index b148994b6..9885181a8 100644 --- a/tests/gentropy/dataset/test_summary_statistics.py +++ b/tests/gentropy/dataset/test_summary_statistics.py @@ -1,4 +1,5 @@ """Test study index dataset.""" + from __future__ import annotations from typing import TYPE_CHECKING diff --git a/tests/gentropy/dataset/test_v2g.py b/tests/gentropy/dataset/test_v2g.py index e53395fe4..24a917508 100644 --- a/tests/gentropy/dataset/test_v2g.py +++ b/tests/gentropy/dataset/test_v2g.py @@ -1,4 +1,5 @@ """Tests V2G dataset.""" + from __future__ import annotations from typing import TYPE_CHECKING diff --git a/tests/gentropy/dataset/test_variant_annotation.py b/tests/gentropy/dataset/test_variant_annotation.py index 563d3c05c..05fa0cd60 100644 --- a/tests/gentropy/dataset/test_variant_annotation.py +++ b/tests/gentropy/dataset/test_variant_annotation.py @@ -1,4 +1,5 @@ """Tests variant annotation dataset.""" + from __future__ import annotations from typing import TYPE_CHECKING diff --git a/tests/gentropy/dataset/test_variant_index.py b/tests/gentropy/dataset/test_variant_index.py index c79a04092..a41db3031 100644 --- a/tests/gentropy/dataset/test_variant_index.py +++ b/tests/gentropy/dataset/test_variant_index.py @@ -1,4 +1,5 @@ """Tests on variant index generation.""" + from __future__ import annotations from typing import TYPE_CHECKING diff --git a/tests/gentropy/datasource/gwas_catalog/test_gwas_catalog_study_splitter.py b/tests/gentropy/datasource/gwas_catalog/test_gwas_catalog_study_splitter.py index 2955cee91..58bcb53c8 100644 --- a/tests/gentropy/datasource/gwas_catalog/test_gwas_catalog_study_splitter.py +++ b/tests/gentropy/datasource/gwas_catalog/test_gwas_catalog_study_splitter.py @@ -1,4 +1,5 @@ """Tests GWAS Catalog study splitter.""" + from __future__ import annotations from typing import TYPE_CHECKING, Any diff --git a/tests/gentropy/datasource/intervals/test_andersson.py b/tests/gentropy/datasource/intervals/test_andersson.py index b7283597b..09204967d 100644 --- a/tests/gentropy/datasource/intervals/test_andersson.py +++ b/tests/gentropy/datasource/intervals/test_andersson.py @@ -1,4 +1,5 @@ """Test Andersson Intervals.""" + from __future__ import annotations import pytest diff --git a/tests/gentropy/datasource/intervals/test_javierre.py b/tests/gentropy/datasource/intervals/test_javierre.py index be8c528e2..a6a74e94e 100644 --- a/tests/gentropy/datasource/intervals/test_javierre.py +++ b/tests/gentropy/datasource/intervals/test_javierre.py @@ -1,4 +1,5 @@ """Test JavierreIntervals.""" + from __future__ import annotations import pytest diff --git a/tests/gentropy/datasource/intervals/test_jung.py b/tests/gentropy/datasource/intervals/test_jung.py index 81506ae55..44062f680 100644 --- a/tests/gentropy/datasource/intervals/test_jung.py +++ b/tests/gentropy/datasource/intervals/test_jung.py @@ -1,4 +1,5 @@ """Test Jung Intervals.""" + from __future__ import annotations import pytest diff --git a/tests/gentropy/datasource/intervals/test_thurman.py b/tests/gentropy/datasource/intervals/test_thurman.py index f89c9d3da..853adb380 100644 --- a/tests/gentropy/datasource/intervals/test_thurman.py +++ b/tests/gentropy/datasource/intervals/test_thurman.py @@ -1,4 +1,5 @@ """Test Thurman.""" + from __future__ import annotations import pytest diff --git a/tests/gentropy/datasource/open_targets/test_l2g_gold_standard.py b/tests/gentropy/datasource/open_targets/test_l2g_gold_standard.py index 448e2a50c..0690781f5 100644 --- a/tests/gentropy/datasource/open_targets/test_l2g_gold_standard.py +++ b/tests/gentropy/datasource/open_targets/test_l2g_gold_standard.py @@ -1,4 +1,5 @@ """Test Open Targets L2G gold standards data source.""" + from __future__ import annotations from typing import TYPE_CHECKING diff --git a/tests/gentropy/datasource/open_targets/test_target.py b/tests/gentropy/datasource/open_targets/test_target.py index 33bb6ddc9..c0a92fcd7 100644 --- a/tests/gentropy/datasource/open_targets/test_target.py +++ b/tests/gentropy/datasource/open_targets/test_target.py @@ -1,4 +1,5 @@ """Test Open Targets target data source.""" + from __future__ import annotations from gentropy.dataset.gene_index import GeneIndex diff --git a/tests/gentropy/docs/test_applying_methods.py b/tests/gentropy/docs/test_applying_methods.py index 255752f46..cbfdb9155 100644 --- a/tests/gentropy/docs/test_applying_methods.py +++ b/tests/gentropy/docs/test_applying_methods.py @@ -1,4 +1,5 @@ """Testing applying methods docs.""" + from typing import Any import pytest diff --git a/tests/gentropy/docs/test_create_dataset.py b/tests/gentropy/docs/test_create_dataset.py index 663254753..2daae0c6a 100644 --- a/tests/gentropy/docs/test_create_dataset.py +++ b/tests/gentropy/docs/test_create_dataset.py @@ -1,4 +1,5 @@ """Testing creating dataset docs.""" + from typing import Any import pytest diff --git a/tests/gentropy/docs/test_creating_spark_session.py b/tests/gentropy/docs/test_creating_spark_session.py index 6e1cf1ca5..197d22d56 100644 --- a/tests/gentropy/docs/test_creating_spark_session.py +++ b/tests/gentropy/docs/test_creating_spark_session.py @@ -1,4 +1,5 @@ """Testing creating spark session docs.""" + from gentropy.common.session import Session from docs.src_snippets.howto.python_api.a_creating_spark_session import ( diff --git a/tests/gentropy/docs/test_inspect_dataset.py b/tests/gentropy/docs/test_inspect_dataset.py index daefa9793..38e258158 100644 --- a/tests/gentropy/docs/test_inspect_dataset.py +++ b/tests/gentropy/docs/test_inspect_dataset.py @@ -1,4 +1,5 @@ """Testing inspecting dataset docs.""" + from gentropy.dataset.summary_statistics import SummaryStatistics from pyspark.sql.types import StructType diff --git a/tests/gentropy/method/test_window_based_clumping.py b/tests/gentropy/method/test_window_based_clumping.py index 59bf0277a..03546df9d 100644 --- a/tests/gentropy/method/test_window_based_clumping.py +++ b/tests/gentropy/method/test_window_based_clumping.py @@ -1,4 +1,5 @@ """Test window-based clumping.""" + from __future__ import annotations from typing import TYPE_CHECKING diff --git a/tests/gentropy/step/test_clump_step.py b/tests/gentropy/step/test_clump_step.py index 701afc950..ab40de901 100644 --- a/tests/gentropy/step/test_clump_step.py +++ b/tests/gentropy/step/test_clump_step.py @@ -1,4 +1,5 @@ """Test clump step.""" + from __future__ import annotations import tempfile diff --git a/tests/gentropy/test_cli.py b/tests/gentropy/test_cli.py index 92effa840..5675713ce 100644 --- a/tests/gentropy/test_cli.py +++ b/tests/gentropy/test_cli.py @@ -1,4 +1,5 @@ """Test the command-line interface (CLI).""" + from unittest.mock import patch import pytest diff --git a/tests/gentropy/test_schemas.py b/tests/gentropy/test_schemas.py index 768a3d4df..417eb4657 100644 --- a/tests/gentropy/test_schemas.py +++ b/tests/gentropy/test_schemas.py @@ -1,4 +1,5 @@ """Tests on spark schemas.""" + from __future__ import annotations import json diff --git a/tests/gentropy/test_spark_helpers.py b/tests/gentropy/test_spark_helpers.py index 76abcbe56..a3790c62e 100644 --- a/tests/gentropy/test_spark_helpers.py +++ b/tests/gentropy/test_spark_helpers.py @@ -1,4 +1,5 @@ """Tests on helper spark functions.""" + from __future__ import annotations from typing import TYPE_CHECKING, Any From f6e0ad0d0196a727e6ffc17936b95bb2154e455b Mon Sep 17 00:00:00 2001 From: David Ochoa Date: Thu, 7 Mar 2024 11:39:22 +0000 Subject: [PATCH 13/86] fix: pr labeller patterns (#523) * fix: pr labeler patterns * fix: change bug for fix * revert: as per reviewers will --- .github/labeler.yml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index 197d1f923..060922825 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,4 +1,4 @@ -version: 1 +version: "1" labels: - label: "size-XS" size: @@ -25,39 +25,39 @@ labels: above: 999 - label: "airflow" files: - - "src/airflow/.*" + - "^src/airflow/.*" - label: "Documentation" files: - - "docs/.*" + - "^docs/.*" - label: "Dataset" files: - - "src/gentropy/dataset/.*" + - "^src/gentropy/dataset/.*" - label: "Method" files: - - "src/gentropy/method/.*" + - "^src/gentropy/method/.*" - label: "Datasource" files: - - "src/gentropy/datasource/.*" + - "^src/gentropy/datasource/.*" - label: "Step" files: - - "src/gentropy/[a-zA-Z]\\w+\\.py" + - "^src/gentropy/[a-zA-Z]\\w+\\.py" - label: "Feature" - title: "feat.*" + title: "^feat.*" - label: "Bug" - title: "fix.*" + title: "^fix.*" - label: "Refactor" - title: "refactor.*" + title: "^refactor.*" - label: "Chore" - title: "chore.*" + title: "^chore.*" - label: "CI" - title: "ci.*" + title: "^ci.*" - label: "Test" - title: "test.*" + title: "^test.*" - label: "Documentation" - title: "docs.*" + title: "^docs.*" - label: "Performance" - title: "perf.*" + title: "^perf.*" - label: "Build" - title: "build.*" + title: "^build.*" - label: "Revert" - title: "revert.*" + title: "^revert.*" From 8257ea3fe4c55a765cd288e6cc5b9c06ebedd136 Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Fri, 8 Mar 2024 15:10:46 +0000 Subject: [PATCH 14/86] fix: fixing merge conflict --- .pre-commit-config.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 104a97062..51d4e05a8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,9 @@ +default_language_version: + python: python3.10 ci: autoupdate_commit_msg: "chore: pre-commit autoupdate" autofix_commit_msg: "chore: pre-commit auto fixes [...]" + skip: [poetry-lock] repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.3.0 @@ -99,3 +102,10 @@ repos: rev: 0.4.1 hooks: - id: pydoclint + + - repo: https://github.com/python-poetry/poetry + rev: "1.8.2" + hooks: + - id: poetry-check + - id: poetry-lock + args: ["--no-update"] From d70a8efc3ae0621a4877d907eb1fe36aa1f313fd Mon Sep 17 00:00:00 2001 From: xyg123 <33658607+xyg123@users.noreply.github.com> Date: Thu, 7 Mar 2024 12:36:57 +0000 Subject: [PATCH 15/86] feat(coloc): single SNP case (#511) * feat: include single snp overlaps in coloc calcs * chore: added unit test for coloc * feat: include single snp overlaps in coloc calcs * chore: added unit test for coloc * fix: check for differences in test results * fix: revert changes to single snp coloc tests for other pr * fix: revert single snp change * chore: restructure test folder * fix: compare differences in results rather than exact match * chore: test description * fix: allow for coloc when only one snp is overlapping * chore: include tests for h0 and h1/2 * fix: added pseudocount variable to coloc * fix: pseudocount as a Coloc attribute --------- Co-authored-by: David Ochoa --- src/gentropy/method/colocalisation.py | 11 +- .../method/test_colocalisation_method.py | 134 ++++++++++++++++++ 2 files changed, 142 insertions(+), 3 deletions(-) diff --git a/src/gentropy/method/colocalisation.py b/src/gentropy/method/colocalisation.py index 899343998..3e4e91c74 100644 --- a/src/gentropy/method/colocalisation.py +++ b/src/gentropy/method/colocalisation.py @@ -104,8 +104,12 @@ class Coloc: Coloc requires the availability of Bayes factors (BF) for each variant in the credible set (`logBF` column). + Attributes: + PSEUDOCOUNT (float): Pseudocount to avoid log(0). Defaults to 1e-10. """ + PSEUDOCOUNT: float = 1e-10 + @staticmethod def _get_posteriors(all_bfs: NDArray[np.float64]) -> DenseVector: """Calculate posterior probabilities for each hypothesis. @@ -137,6 +141,7 @@ def colocalise( Args: overlapping_signals (StudyLocusOverlap): overlapping peaks + priorc1 (float): Prior on variant being causal for trait 1. Defaults to 1e-4. priorc2 (float): Prior on variant being causal for trait 2. Defaults to 1e-4. priorc12 (float): Prior on variant being causal for traits 1 and 2. Defaults to 1e-5. @@ -188,12 +193,12 @@ def colocalise( .withColumn("lH2bf", f.log(f.col("priorc2")) + f.col("logsum2")) # h3 .withColumn("sumlogsum", f.col("logsum1") + f.col("logsum2")) - # exclude null H3/H4s: due to sumlogsum == logsum12 - .filter(f.col("sumlogsum") != f.col("logsum12")) .withColumn("max", f.greatest("sumlogsum", "logsum12")) .withColumn( "logdiff", - ( + f.when( + f.col("sumlogsum") == f.col("logsum12"), Coloc.PSEUDOCOUNT + ).otherwise( f.col("max") + f.log( f.exp(f.col("sumlogsum") - f.col("max")) diff --git a/tests/gentropy/method/test_colocalisation_method.py b/tests/gentropy/method/test_colocalisation_method.py index a4fe07646..f90d54b3f 100644 --- a/tests/gentropy/method/test_colocalisation_method.py +++ b/tests/gentropy/method/test_colocalisation_method.py @@ -41,6 +41,140 @@ def test_coloc_colocalise( assert difference.filter(f.abs(f.col(col)) > threshold).count() == 0 +def test_single_snp_coloc( + spark: SparkSession, + threshold: float = 1e-5, +) -> None: + """Test edge case of coloc where only one causal SNP is present in the StudyLocusOverlap.""" + test_overlap_df = spark.createDataFrame( + [ + { + "leftStudyLocusId": 1, + "rightStudyLocusId": 2, + "chromosome": "1", + "tagVariantId": "snp", + "left_logBF": 10.3, + "right_logBF": 10.5, + } + ] + ) + test_overlap = StudyLocusOverlap( + test_overlap_df.select( + "leftStudyLocusId", + "rightStudyLocusId", + "chromosome", + "tagVariantId", + f.struct(f.col("left_logBF"), f.col("right_logBF")).alias("statistics"), + ), + StudyLocusOverlap.get_schema(), + ) + test_result = Coloc.colocalise(test_overlap) + + expected = spark.createDataFrame( + [ + { + "h0": 9.254841951638903e-5, + "h1": 2.7517068829182966e-4, + "h2": 3.3609423764447284e-4, + "h3": 9.254841952564387e-13, + "h4": 0.9992961866536217, + } + ] + ) + difference = test_result.df.select("h0", "h1", "h2", "h3", "h4").subtract(expected) + for col in difference.columns: + assert difference.filter(f.abs(f.col(col)) > threshold).count() == 0 + + +def test_single_snp_coloc_one_negative( + spark: SparkSession, + threshold: float = 1e-5, +) -> None: + """Test edge case of coloc where only one causal SNP is present (On one side!) in the StudyLocusOverlap.""" + test_overlap_df = spark.createDataFrame( + [ + { + "leftStudyLocusId": 1, + "rightStudyLocusId": 2, + "chromosome": "1", + "tagVariantId": "snp", + "left_logBF": 18.3, + "right_logBF": 0.01, + } + ] + ) + test_overlap = StudyLocusOverlap( + test_overlap_df.select( + "leftStudyLocusId", + "rightStudyLocusId", + "chromosome", + "tagVariantId", + f.struct(f.col("left_logBF"), f.col("right_logBF")).alias("statistics"), + ), + StudyLocusOverlap.get_schema(), + ) + test_result = Coloc.colocalise(test_overlap) + test_result.df.show(1, False) + expected = spark.createDataFrame( + [ + { + "h0": 1.0246538505087709e-4, + "h1": 0.9081680002273896, + "h2": 1.0349517929098209e-8, + "h3": 1.0246538506112363e-12, + "h4": 0.09172952403701702, + } + ] + ) + difference = test_result.df.select("h0", "h1", "h2", "h3", "h4").subtract(expected) + for col in difference.columns: + assert difference.filter(f.abs(f.col(col)) > threshold).count() == 0 + + +def test_single_snp_coloc_both_negative( + spark: SparkSession, + threshold: float = 1e-5, +) -> None: + """Test edge case of coloc where only one non-causal SNP overlaps in the StudyLocusOverlap.""" + test_overlap_df = spark.createDataFrame( + [ + { + "leftStudyLocusId": 1, + "rightStudyLocusId": 2, + "chromosome": "1", + "tagVariantId": "snp", + "left_logBF": 0.03, + "right_logBF": 0.01, + } + ] + ) + test_overlap = StudyLocusOverlap( + test_overlap_df.select( + "leftStudyLocusId", + "rightStudyLocusId", + "chromosome", + "tagVariantId", + f.struct(f.col("left_logBF"), f.col("right_logBF")).alias("statistics"), + ), + StudyLocusOverlap.get_schema(), + ) + test_result = Coloc.colocalise(test_overlap) + expected = spark.createDataFrame( + [ + { + "h0": 0.9997855774090624, + "h1": 1.0302335812225042e-4, + "h2": 1.0098335895103664e-4, + "h3": 9.9978557750904e-9, + "h4": 1.0405876008495098e-5, + } + ] + ) + difference = test_result.df.select("h0", "h1", "h2", "h3", "h4").subtract(expected) + for col in difference.columns: + assert difference.filter(f.abs(f.col(col)) > threshold).count() == 0 + + def test_ecaviar(mock_study_locus_overlap: StudyLocusOverlap) -> None: """Test eCAVIAR.""" assert isinstance(ECaviar.colocalise(mock_study_locus_overlap), Colocalisation) From 4d7294628c731b680d98694bfa7c799de72c3544 Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Fri, 8 Mar 2024 14:57:35 +0000 Subject: [PATCH 16/86] fix: sorting out merge conflicts --- poetry.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 320208a14..918f8e47f 100644 --- a/poetry.lock +++ b/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.8.2 and should not be changed by hand. [[package]] name = "aiodns" From 45750c51ade294b51a5bdb9f102e312d2d69a216 Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Fri, 8 Mar 2024 15:02:47 +0000 Subject: [PATCH 17/86] fix: removing fsspec from dependencies --- poetry.lock | 4 ++-- pyproject.toml | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 918f8e47f..a894ef843 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 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 = "aiodns" @@ -8606,4 +8606,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10, <3.11" -content-hash = "6f20e245eeac06bbf87c036df5db1198b74d90609a907d5b781eb023a1d7dd81" +content-hash = "8d85933db4bf8f4ca92ef227e9a767d26f4f7d2b360083449cfafc54878885fc" diff --git a/pyproject.toml b/pyproject.toml index 4ede53f24..d94d8412b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,6 @@ omegaconf = "^2.3.0" typing-extensions = "^4.9.0" scikit-learn = "^1.3.2" pandas = "^2.1.4" -fsspec = ">=2022.11.0" [tool.poetry.dev-dependencies] pre-commit = "^3.6.0" From 50af4d2343c2763e8f2bf51c1468012eb903e90a Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Fri, 8 Mar 2024 15:32:52 +0000 Subject: [PATCH 18/86] fix: fixing lock file --- poetry.lock | 5099 +++++++++++++++++++++++++-------------------------- 1 file changed, 2497 insertions(+), 2602 deletions(-) diff --git a/poetry.lock b/poetry.lock index db10c1be1..f1b435867 100644 --- a/poetry.lock +++ b/poetry.lock @@ -27,87 +27,87 @@ files = [ [[package]] name = "aiohttp" -version = "3.9.3" +version = "3.9.1" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {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"}, + {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"}, ] [package.dependencies] @@ -137,13 +137,13 @@ frozenlist = ">=1.1.0" [[package]] name = "alembic" -version = "1.13.1" +version = "1.12.1" description = "A database migration tool for SQLAlchemy." optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "alembic-1.13.1-py3-none-any.whl", hash = "sha256:2edcc97bed0bd3272611ce3a98d98279e9c209e7186e43e75bbb1b2bdfdbcc43"}, - {file = "alembic-1.13.1.tar.gz", hash = "sha256:4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595"}, + {file = "alembic-1.12.1-py3-none-any.whl", hash = "sha256:47d52e3dfb03666ed945becb723d6482e52190917fdb47071440cfdba05d92cb"}, + {file = "alembic-1.12.1.tar.gz", hash = "sha256:bca5877e9678b454706347bc10b97cb7d67f300320fa5c3a94423e8266e2823f"}, ] [package.dependencies] @@ -152,7 +152,7 @@ SQLAlchemy = ">=1.3.0" typing-extensions = ">=4" [package.extras] -tz = ["backports.zoneinfo"] +tz = ["python-dateutil"] [[package]] name = "annotated-types" @@ -177,40 +177,38 @@ files = [ [[package]] name = "anyio" -version = "4.3.0" +version = "4.0.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, - {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, + {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, + {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, ] [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)"] +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)"] [[package]] name = "apache-airflow" -version = "2.8.2" +version = "2.8.0" description = "Programmatically author, schedule and monitor data pipelines" optional = false python-versions = "<3.12,~=3.8" files = [ - {file = "apache_airflow-2.8.2-py3-none-any.whl", hash = "sha256:41ccb84bb4a42dfd7e138850b90e376751a54312750a920ebf978096cad18af0"}, - {file = "apache_airflow-2.8.2.tar.gz", hash = "sha256:a993e272d254ec80852553042dca5641e24a416a49ac7341c947295dee0c4b20"}, + {file = "apache-airflow-2.8.0.tar.gz", hash = "sha256:5917ee148125892764f4306ec76a62c66a5801218a99edfd3fe46e968cb1a344"}, + {file = "apache_airflow-2.8.0-py3-none-any.whl", hash = "sha256:4ee532b97ef6520ad8e1ffda325aabe265f007a14166570d5f710d4999c9ad1c"}, ] [package.dependencies] -alembic = ">=1.13.1,<2.0" -apache-airflow-providers-common-io = "*" +alembic = ">=1.6.3,<2.0" apache-airflow-providers-common-sql = "*" apache-airflow-providers-ftp = "*" apache-airflow-providers-http = "*" @@ -229,13 +227,14 @@ cryptography = ">=0.9.3" deprecated = ">=1.2.13" dill = ">=0.2.2" flask = ">=2.2,<2.3" -flask-appbuilder = "4.3.11" +flask-appbuilder = "4.3.10" flask-caching = ">=1.5.0" flask-login = ">=0.6.2" -flask-session = ">=0.4.0,<0.6" +flask-session = ">=0.4.0" flask-wtf = ">=0.15" fsspec = ">=2023.10.0" google-re2 = ">=1.0" +graphviz = ">=0.12" gunicorn = ">=20.1.0" httpx = "*" itsdangerous = ">=2.0" @@ -244,6 +243,7 @@ jsonschema = ">=4.18.0" lazy-object-proxy = "*" linkify-it-py = ">=2.0.0" lockfile = ">=0.12.2" +markdown = ">=3.0" markdown-it-py = ">=2.1.0" markupsafe = ">=1.1.1" marshmallow-oneofschema = ">=2.0.1" @@ -252,16 +252,16 @@ opentelemetry-api = ">=1.15.0" opentelemetry-exporter-otlp = "*" packaging = ">=14.0" pathspec = ">=0.9.0" -pendulum = ">=2.1.2,<4.0" +pendulum = ">=2.0,<3.0" pluggy = ">=1.0" psutil = ">=4.2.0" +pydantic = ">=2.3.0" pygments = ">=2.0.1" pyjwt = ">=2.0.0" python-daemon = ">=3.0.0" python-dateutil = ">=2.3" python-nvd3 = ">=0.15.0" python-slugify = ">=5.0" -requests = ">=2.27.0,<3" rfc3339-validator = ">=0.1.4" rich = ">=12.4.4" rich-argparse = ">=1.0.0" @@ -271,17 +271,17 @@ sqlalchemy-jsonfield = ">=1.0" tabulate = ">=0.7.5" tenacity = ">=6.2.0,<8.2.0 || >8.2.0" termcolor = ">=1.1.0" +typing-extensions = ">=4.0.0" unicodecsv = ">=0.14.1" -universal-pathlib = ">=0.1.4,<0.2.0" +universal-pathlib = ">=0.1.4" werkzeug = ">=2.0,<3" [package.extras] -aiobotocore = ["aiobotocore (>=2.7.0)"] +aiobotocore = ["aiobotocore (>=2.1.1)"] airbyte = ["apache-airflow-providers-airbyte"] alibaba = ["apache-airflow-providers-alibaba"] -all = ["apache-airflow[aiobotocore]", "apache-airflow[airbyte]", "apache-airflow[alibaba]", "apache-airflow[all-core]", "apache-airflow[amazon]", "apache-airflow[apache-atlas]", "apache-airflow[apache-beam]", "apache-airflow[apache-cassandra]", "apache-airflow[apache-drill]", "apache-airflow[apache-druid]", "apache-airflow[apache-flink]", "apache-airflow[apache-hdfs]", "apache-airflow[apache-hive]", "apache-airflow[apache-impala]", "apache-airflow[apache-kafka]", "apache-airflow[apache-kylin]", "apache-airflow[apache-livy]", "apache-airflow[apache-pig]", "apache-airflow[apache-pinot]", "apache-airflow[apache-spark]", "apache-airflow[apache-sqoop]", "apache-airflow[apache-webhdfs]", "apache-airflow[apprise]", "apache-airflow[arangodb]", "apache-airflow[asana]", "apache-airflow[async]", "apache-airflow[atlassian-jira]", "apache-airflow[celery]", "apache-airflow[cgroups]", "apache-airflow[cloudant]", "apache-airflow[cncf-kubernetes]", "apache-airflow[cohere]", "apache-airflow[common-io]", "apache-airflow[common-sql]", "apache-airflow[daskexecutor]", "apache-airflow[databricks]", "apache-airflow[datadog]", "apache-airflow[dbt-cloud]", "apache-airflow[deprecated-api]", "apache-airflow[dingding]", "apache-airflow[discord]", "apache-airflow[docker]", "apache-airflow[elasticsearch]", "apache-airflow[exasol]", "apache-airflow[facebook]", "apache-airflow[ftp]", "apache-airflow[github-enterprise]", "apache-airflow[github]", "apache-airflow[google-auth]", "apache-airflow[google]", "apache-airflow[graphviz]", "apache-airflow[grpc]", "apache-airflow[hashicorp]", "apache-airflow[http]", "apache-airflow[imap]", "apache-airflow[influxdb]", "apache-airflow[jdbc]", "apache-airflow[jenkins]", "apache-airflow[kerberos]", "apache-airflow[ldap]", "apache-airflow[leveldb]", "apache-airflow[microsoft-azure]", "apache-airflow[microsoft-mssql]", "apache-airflow[microsoft-psrp]", "apache-airflow[microsoft-winrm]", "apache-airflow[mongo]", "apache-airflow[mysql]", "apache-airflow[neo4j]", "apache-airflow[odbc]", "apache-airflow[openai]", "apache-airflow[openfaas]", "apache-airflow[openlineage]", "apache-airflow[opensearch]", "apache-airflow[opsgenie]", "apache-airflow[oracle]", "apache-airflow[otel]", "apache-airflow[pagerduty]", "apache-airflow[pandas]", "apache-airflow[papermill]", "apache-airflow[password]", "apache-airflow[pgvector]", "apache-airflow[pinecone]", "apache-airflow[plexus]", "apache-airflow[postgres]", "apache-airflow[presto]", "apache-airflow[pydantic]", "apache-airflow[rabbitmq]", "apache-airflow[redis]", "apache-airflow[s3fs]", "apache-airflow[salesforce]", "apache-airflow[samba]", "apache-airflow[saml]", "apache-airflow[segment]", "apache-airflow[sendgrid]", "apache-airflow[sentry]", "apache-airflow[sftp]", "apache-airflow[singularity]", "apache-airflow[slack]", "apache-airflow[smtp]", "apache-airflow[snowflake]", "apache-airflow[sqlite]", "apache-airflow[ssh]", "apache-airflow[statsd]", "apache-airflow[tableau]", "apache-airflow[tabular]", "apache-airflow[telegram]", "apache-airflow[trino]", "apache-airflow[vertica]", "apache-airflow[virtualenv]", "apache-airflow[weaviate]", "apache-airflow[yandex]", "apache-airflow[zendesk]"] -all-core = ["apache-airflow[aiobotocore]", "apache-airflow[apache-atlas]", "apache-airflow[apache-webhdfs]", "apache-airflow[async]", "apache-airflow[cgroups]", "apache-airflow[deprecated-api]", "apache-airflow[github-enterprise]", "apache-airflow[google-auth]", "apache-airflow[graphviz]", "apache-airflow[kerberos]", "apache-airflow[ldap]", "apache-airflow[leveldb]", "apache-airflow[otel]", "apache-airflow[pandas]", "apache-airflow[password]", "apache-airflow[pydantic]", "apache-airflow[rabbitmq]", "apache-airflow[s3fs]", "apache-airflow[saml]", "apache-airflow[sentry]", "apache-airflow[statsd]", "apache-airflow[virtualenv]"] -all-dbs = ["apache-airflow[apache-cassandra]", "apache-airflow[apache-drill]", "apache-airflow[apache-druid]", "apache-airflow[apache-hdfs]", "apache-airflow[apache-hive]", "apache-airflow[apache-impala]", "apache-airflow[apache-pinot]", "apache-airflow[arangodb]", "apache-airflow[cloudant]", "apache-airflow[databricks]", "apache-airflow[exasol]", "apache-airflow[influxdb]", "apache-airflow[microsoft-mssql]", "apache-airflow[mongo]", "apache-airflow[mysql]", "apache-airflow[neo4j]", "apache-airflow[postgres]", "apache-airflow[presto]", "apache-airflow[trino]", "apache-airflow[vertica]"] +all = ["PyGithub (!=1.58)", "PyOpenSSL", "adal (>=1.2.7)", "adlfs (>=2023.10.0)", "aiobotocore (>=2.1.1)", "aiofiles (>=23.2.0)", "aiohttp", "aiohttp (>=3.6.3,<4)", "alibabacloud-adb20211201 (>=1.0.0)", "alibabacloud-tea-openapi (>=0.3.7)", "amqp", "analytics-python (>=1.2.9)", "apache-airflow (>=2.6.0)", "apache-airflow (>=2.7.0)", "apache-airflow (>=2.8.0)", "apache-airflow-providers-airbyte", "apache-airflow-providers-alibaba", "apache-airflow-providers-amazon", "apache-airflow-providers-apache-beam", "apache-airflow-providers-apache-cassandra", "apache-airflow-providers-apache-drill", "apache-airflow-providers-apache-druid", "apache-airflow-providers-apache-flink", "apache-airflow-providers-apache-hdfs", "apache-airflow-providers-apache-hive", "apache-airflow-providers-apache-impala", "apache-airflow-providers-apache-kafka", "apache-airflow-providers-apache-kylin", "apache-airflow-providers-apache-livy", "apache-airflow-providers-apache-pig", "apache-airflow-providers-apache-pinot", "apache-airflow-providers-apache-spark", "apache-airflow-providers-apprise", "apache-airflow-providers-arangodb", "apache-airflow-providers-asana", "apache-airflow-providers-atlassian-jira", "apache-airflow-providers-celery", "apache-airflow-providers-cloudant", "apache-airflow-providers-cncf-kubernetes", "apache-airflow-providers-cohere", "apache-airflow-providers-common-io", "apache-airflow-providers-common-sql", "apache-airflow-providers-databricks", "apache-airflow-providers-datadog", "apache-airflow-providers-dbt-cloud", "apache-airflow-providers-dingding", "apache-airflow-providers-discord", "apache-airflow-providers-docker", "apache-airflow-providers-elasticsearch", "apache-airflow-providers-exasol", "apache-airflow-providers-facebook", "apache-airflow-providers-ftp", "apache-airflow-providers-github", "apache-airflow-providers-google", "apache-airflow-providers-grpc", "apache-airflow-providers-hashicorp", "apache-airflow-providers-http", "apache-airflow-providers-imap", "apache-airflow-providers-influxdb", "apache-airflow-providers-jdbc", "apache-airflow-providers-jenkins", "apache-airflow-providers-microsoft-azure", "apache-airflow-providers-microsoft-mssql", "apache-airflow-providers-microsoft-psrp", "apache-airflow-providers-microsoft-winrm", "apache-airflow-providers-mongo", "apache-airflow-providers-mysql", "apache-airflow-providers-neo4j", "apache-airflow-providers-odbc", "apache-airflow-providers-openai", "apache-airflow-providers-openfaas", "apache-airflow-providers-openlineage", "apache-airflow-providers-opensearch", "apache-airflow-providers-opsgenie", "apache-airflow-providers-oracle", "apache-airflow-providers-pagerduty", "apache-airflow-providers-papermill", "apache-airflow-providers-pgvector", "apache-airflow-providers-pinecone", "apache-airflow-providers-postgres", "apache-airflow-providers-presto", "apache-airflow-providers-redis", "apache-airflow-providers-salesforce", "apache-airflow-providers-samba", "apache-airflow-providers-segment", "apache-airflow-providers-sendgrid", "apache-airflow-providers-sftp", "apache-airflow-providers-singularity", "apache-airflow-providers-slack", "apache-airflow-providers-smtp", "apache-airflow-providers-snowflake", "apache-airflow-providers-sqlite", "apache-airflow-providers-ssh", "apache-airflow-providers-tableau", "apache-airflow-providers-tabular", "apache-airflow-providers-telegram", "apache-airflow-providers-trino", "apache-airflow-providers-vertica", "apache-airflow-providers-weaviate", "apache-airflow-providers-yandex", "apache-airflow-providers-zendesk", "apache-beam (>=2.47.0)", "apprise", "asana (>=0.10,<4.0.0)", "asgiref", "asgiref (>=3.5.2)", "atlasclient (>=0.1.2)", "atlassian-python-api (>=1.14.2)", "attrs (>=22.2)", "authlib (>=1.0.0)", "azure-batch (>=8.0.0)", "azure-cosmos (>=4.0.0)", "azure-datalake-store (>=0.0.45)", "azure-identity (>=1.3.1)", "azure-keyvault-secrets (>=4.1.0)", "azure-kusto-data (>=4.1.0)", "azure-mgmt-containerinstance (>=9.0.0)", "azure-mgmt-containerregistry (>=8.0.0)", "azure-mgmt-cosmosdb", "azure-mgmt-datafactory (>=2.0.0)", "azure-mgmt-datalake-store (>=0.5.0)", "azure-mgmt-resource (>=2.2.0)", "azure-mgmt-storage (>=16.0.0)", "azure-servicebus (>=7.6.1)", "azure-storage-blob (>=12.14.0)", "azure-storage-file-datalake (>=12.9.1)", "azure-storage-file-share", "azure-synapse-artifacts (>=0.17.0)", "azure-synapse-spark", "bcrypt (>=2.0.0)", "blinker (>=1.1)", "boto3 (>=1.28.0)", "botocore (>=1.31.0)", "cassandra-driver (>=3.13.0)", "celery (>=5.3.0,!=5.3.2,!=5.3.3,<6)", "cgroupspy (>=0.2.2)", "cloudant (>=2.0)", "cohere (>=4.27)", "confluent-kafka (>=1.8.2)", "cryptography (>=2.0.0)", "databricks-sql-connector (>=2.0.0,!=2.9.0,<3.0.0)", "datadog (>=0.14.0)", "dnspython (>=1.13.0)", "docker (>=5.0.3)", "elasticsearch (>=8.10,<9)", "eventlet (>=0.33.3)", "facebook-business (>=6.0.2)", "flask-appbuilder[oauth] (==4.3.10)", "flask-bcrypt (>=0.7.1)", "flower (>=1.0.0)", "gcloud-aio-auth (>=4.0.0,<5.0.0)", "gcloud-aio-bigquery (>=6.1.2)", "gcloud-aio-storage", "gcsfs (>=2023.10.0)", "gevent (>=0.13)", "google-ads (>=22.1.0)", "google-api-core (>=2.11.0)", "google-api-python-client (>=1.6.0)", "google-auth (>=1.0.0)", "google-auth (>=1.0.0,<3.0.0)", "google-auth-httplib2 (>=0.0.1)", "google-cloud-aiplatform (>=1.22.1)", "google-cloud-automl (>=2.12.0)", "google-cloud-batch (>=0.13.0)", "google-cloud-bigquery-datatransfer (>=3.13.0)", "google-cloud-bigtable (>=2.17.0)", "google-cloud-build (>=3.22.0)", "google-cloud-compute (>=1.10.0)", "google-cloud-container (>=2.17.4)", "google-cloud-datacatalog (>=3.11.1)", "google-cloud-dataflow-client (>=0.8.6)", "google-cloud-dataform (>=0.5.0)", "google-cloud-dataplex (>=1.10.0)", "google-cloud-dataproc (>=5.8.0)", "google-cloud-dataproc-metastore (>=1.12.0)", "google-cloud-dlp (>=3.12.0)", "google-cloud-kms (>=2.15.0)", "google-cloud-language (>=2.9.0)", "google-cloud-logging (>=3.5.0)", "google-cloud-memcache (>=1.7.0)", "google-cloud-monitoring (>=2.18.0)", "google-cloud-orchestration-airflow (>=1.10.0)", "google-cloud-os-login (>=2.9.1)", "google-cloud-pubsub (>=2.19.0)", "google-cloud-redis (>=2.12.0)", "google-cloud-run (>=0.9.0)", "google-cloud-secret-manager (>=2.16.0)", "google-cloud-spanner (>=3.11.1)", "google-cloud-speech (>=2.18.0)", "google-cloud-storage (>=2.7.0)", "google-cloud-storage-transfer (>=1.4.1)", "google-cloud-tasks (>=2.13.0)", "google-cloud-texttospeech (>=2.14.1)", "google-cloud-translate (>=3.11.0)", "google-cloud-videointelligence (>=2.11.0)", "google-cloud-vision (>=3.4.0)", "google-cloud-workflows (>=1.10.0)", "google-re2 (>=1.0)", "greenlet (>=0.4.9)", "grpcio (>=1.15.0)", "grpcio-gcp (>=0.2.2)", "grpcio-status", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "httpx", "hvac (>=0.10)", "impyla (>=0.18.0,<1.0)", "inflection (>=0.5.1)", "influxdb-client (>=1.19.0)", "ipykernel", "jaydebeapi (>=1.1.1)", "json-merge-patch (>=0.2)", "jsonpath-ng (>=1.5.3)", "kubernetes (>=21.7.0,<24)", "kubernetes-asyncio (>=18.20.1,<25)", "kylinpy (>=2.6)", "ldap3 (>=2.5.1)", "looker-sdk (>=22.2.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "neo4j (>=4.2.1)", "openai[datalib] (>=1.0)", "openlineage-integration-common (>=0.28.0)", "openlineage-python (>=0.28.0)", "opensearch-py (>=2.2.0)", "opentelemetry-exporter-prometheus", "opsgenie-sdk (>=2.1.5)", "oracledb (>=1.0.0)", "oss2 (>=2.14.0)", "pandas (>=0.17.1)", "pandas-gbq", "papermill[all] (>=1.2.1)", "paramiko (>=2.6.0)", "paramiko (>=2.8.0)", "pdpyras (>=4.1.2)", "pgvector (>=0.2.3)", "pinecone-client (>=2.2.4)", "pinotdb (>0.4.7)", "plyvel", "presto-python-client (>=0.8.4)", "proto-plus (>=1.19.6)", "psycopg2-binary (>=2.8.0)", "pyarrow (>=9.0.0)", "pyarrow-hotfix", "pydruid (>=0.4.1)", "pyexasol (>=0.5.1)", "pyhive[hive-pure-sasl] (>=0.7.0)", "pykerberos (>=1.1.13)", "pymongo (>=3.6.0)", "pymssql (>=2.1.8)", "pyodbc", "pypsrp (>=0.8.0)", "pyspark", "python-arango (>=7.3.2)", "python-dotenv (>=0.21.0)", "python-jenkins (>=1.0.0)", "python-ldap", "python-telegram-bot (>=20.0.0)", "python3-saml (>=1.16.0)", "pywinrm (>=0.4)", "redis (>=4.5.2,!=4.5.5,<5.0.0)", "redshift-connector (>=2.0.888)", "requests (>=2.26.0)", "requests (>=2.27,<3)", "requests-kerberos (>=0.10.0)", "requests-toolbelt", "s3fs (>=2023.10.0)", "scrapbook[all]", "sendgrid (>=6.0.0)", "sentry-sdk (>=1.32.0,!=1.33.0)", "simple-salesforce (>=1.0.0)", "slack-sdk (>=3.0.0)", "smbprotocol (>=1.5.0)", "snowflake-connector-python (>=2.7.8)", "snowflake-sqlalchemy (>=1.1.0)", "spython (>=0.0.56)", "sqlalchemy-bigquery (>=1.2.1)", "sqlalchemy-drill (>=1.1.0)", "sqlalchemy-redshift (>=0.8.6)", "sqlalchemy-spanner (>=1.6.2)", "sqlparse (>=0.4.2)", "sshtunnel (>=0.3.2)", "statsd (>=3.3.0)", "tableauserverclient", "thrift (>=0.9.2)", "thrift-sasl (>=0.2.0)", "trino (>=0.318.0)", "vertica-python (>=0.5.1)", "virtualenv", "watchtower (>=2.0.1,<4)", "weaviate-client (>=3.24.2)", "yandexcloud (>=0.228.0)", "zenpy (>=2.0.24)"] +all-dbs = ["aiohttp (>=3.6.3,<4)", "apache-airflow (>=2.6.0)", "apache-airflow-providers-apache-cassandra", "apache-airflow-providers-apache-drill", "apache-airflow-providers-apache-druid", "apache-airflow-providers-apache-hdfs", "apache-airflow-providers-apache-hive", "apache-airflow-providers-apache-impala", "apache-airflow-providers-apache-pinot", "apache-airflow-providers-arangodb", "apache-airflow-providers-cloudant", "apache-airflow-providers-common-sql (>=1.3.1)", "apache-airflow-providers-common-sql (>=1.8.1)", "apache-airflow-providers-databricks", "apache-airflow-providers-exasol", "apache-airflow-providers-influxdb", "apache-airflow-providers-microsoft-mssql", "apache-airflow-providers-mongo", "apache-airflow-providers-mysql", "apache-airflow-providers-neo4j", "apache-airflow-providers-postgres", "apache-airflow-providers-presto", "apache-airflow-providers-trino", "apache-airflow-providers-vertica", "cassandra-driver (>=3.13.0)", "cloudant (>=2.0)", "databricks-sql-connector (>=2.0.0,!=2.9.0,<3.0.0)", "dnspython (>=1.13.0)", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "impyla (>=0.18.0,<1.0)", "influxdb-client (>=1.19.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "neo4j (>=4.2.1)", "pandas (>=0.17.1)", "pinotdb (>0.4.7)", "presto-python-client (>=0.8.4)", "psycopg2-binary (>=2.8.0)", "pydruid (>=0.4.1)", "pyexasol (>=0.5.1)", "pyhive[hive-pure-sasl] (>=0.7.0)", "pymongo (>=3.6.0)", "pymssql (>=2.1.8)", "python-arango (>=7.3.2)", "requests (>=2.26.0)", "requests (>=2.27,<3)", "sqlalchemy-drill (>=1.1.0)", "thrift (>=0.9.2)", "trino (>=0.318.0)", "vertica-python (>=0.5.1)"] amazon = ["apache-airflow-providers-amazon"] apache-atlas = ["atlasclient (>=0.1.2)"] apache-beam = ["apache-airflow-providers-apache-beam"] @@ -290,7 +290,7 @@ apache-drill = ["apache-airflow-providers-apache-drill"] apache-druid = ["apache-airflow-providers-apache-druid"] apache-flink = ["apache-airflow-providers-apache-flink"] apache-hdfs = ["apache-airflow-providers-apache-hdfs"] -apache-hive = ["apache-airflow-providers-apache-hive"] +apache-hive = ["apache-airflow-providers-apache-hive (>=5.1.0)"] apache-impala = ["apache-airflow-providers-apache-impala"] apache-kafka = ["apache-airflow-providers-apache-kafka"] apache-kylin = ["apache-airflow-providers-apache-kylin"] @@ -303,49 +303,53 @@ apprise = ["apache-airflow-providers-apprise"] arangodb = ["apache-airflow-providers-arangodb"] asana = ["apache-airflow-providers-asana"] async = ["eventlet (>=0.33.3)", "gevent (>=0.13)", "greenlet (>=0.4.9)"] -atlas = ["apache-airflow[apache-atlas]"] +atlas = ["apache-airflow-providers-apache-atlas"] atlassian-jira = ["apache-airflow-providers-atlassian-jira"] -aws = ["apache-airflow[amazon]"] -azure = ["apache-airflow[microsoft-azure]"] -cassandra = ["apache-airflow[apache-cassandra]"] -celery = ["apache-airflow-providers-celery"] +aws = ["apache-airflow-providers-amazon"] +azure = ["apache-airflow-providers-microsoft-azure"] +cassandra = ["apache-airflow-providers-apache-cassandra"] +celery = ["apache-airflow (>=2.6.0)", "apache-airflow-providers-celery", "celery (>=5.3.0,!=5.3.2,!=5.3.3,<6)", "flower (>=1.0.0)", "google-re2 (>=1.0)"] cgroups = ["cgroupspy (>=0.2.2)"] cloudant = ["apache-airflow-providers-cloudant"] -cncf-kubernetes = ["apache-airflow-providers-cncf-kubernetes"] +cncf-kubernetes = ["aiofiles (>=23.2.0)", "apache-airflow (>=2.6.0)", "apache-airflow-providers-cncf-kubernetes", "asgiref (>=3.5.2)", "cryptography (>=2.0.0)", "google-re2 (>=1.0)", "kubernetes (>=21.7.0,<24)", "kubernetes-asyncio (>=18.20.1,<25)"] cohere = ["apache-airflow-providers-cohere"] common-io = ["apache-airflow-providers-common-io"] common-sql = ["apache-airflow-providers-common-sql"] databricks = ["apache-airflow-providers-databricks"] datadog = ["apache-airflow-providers-datadog"] dbt-cloud = ["apache-airflow-providers-dbt-cloud"] -deprecated-api = ["requests (>=2.27.0,<3)"] -devel-ci = ["adal (>=1.2.7)", "adlfs (>=2023.10.0)", "aiobotocore (>=2.7.0)", "aiobotocore (>=2.7.0)", "aiofiles (>=23.2.0)", "aiohttp (>=3.9.2)", "aiohttp (>=3.9.2)", "aiohttp (>=3.9.2)", "aiohttp (>=3.9.2,<4)", "aioresponses (>=0.7.6)", "alibabacloud-adb20211201 (>=1.0.0)", "alibabacloud-tea-openapi (>=0.3.7)", "amqp", "analytics-python (>=1.2.9)", "apache-beam (>=2.53.0)", "apprise", "asana (>=0.10,<4.0.0)", "asgiref", "asgiref", "asgiref", "asgiref", "asgiref", "asgiref (>=3.5.2)", "asgiref (>=3.5.2)", "astroid (>=2.12.3,<3.0)", "asyncssh (>=2.12.0)", "atlasclient (>=0.1.2)", "atlassian-python-api (>=1.14.2,!=3.41.6)", "attrs (>=22.2)", "authlib (>=1.0.0)", "authlib (>=1.0.0)", "aws-xray-sdk (>=2.12.0)", "azure-batch (>=8.0.0)", "azure-cosmos (>=4.0.0)", "azure-datalake-store (>=0.0.45)", "azure-identity (>=1.3.1)", "azure-keyvault-secrets (>=4.1.0)", "azure-kusto-data (>=4.1.0)", "azure-mgmt-containerinstance (>=9.0.0)", "azure-mgmt-containerregistry (>=8.0.0)", "azure-mgmt-cosmosdb", "azure-mgmt-datafactory (>=2.0.0)", "azure-mgmt-datalake-store (>=0.5.0)", "azure-mgmt-resource (>=2.2.0)", "azure-mgmt-storage (>=16.0.0)", "azure-servicebus (>=7.6.1)", "azure-storage-blob (>=12.14.0)", "azure-storage-file-datalake (>=12.9.1)", "azure-storage-file-share", "azure-synapse-artifacts (>=0.17.0)", "azure-synapse-spark", "backports-zoneinfo (>=0.2.1)", "bcrypt (>=2.0.0)", "beautifulsoup4", "beautifulsoup4 (>=4.7.1)", "black (>=23.12.0)", "blinker (>=1.1)", "blinker (>=1.7.0)", "boto3 (>=1.33.0)", "botocore (>=1.33.0)", "cassandra-driver (>=3.13.0)", "celery (>=5.3.0,!=5.3.2,!=5.3.3,<6)", "cgroupspy (>=0.2.2)", "checksumdir (>=1.2.0)", "click (>=8.0)", "click (>=8.0,!=8.1.4,!=8.1.5)", "cloudant (>=2.0)", "cohere (>=4.37)", "confluent-kafka (>=1.8.2)", "coverage (>=7.2)", "cryptography (>=2.0.0)", "cryptography (>=2.0.0)", "databricks-sql-connector (>=2.0.0,!=2.9.0,<3.0.0)", "datadog (>=0.14.0)", "deltalake (>=0.12.0)", "dnspython (>=1.13.0)", "docker (>=5.0.3)", "docutils (>=0.16,<0.17)", "duckdb (>=0.9.0)", "elasticsearch (>=8.10,<9)", "eralchemy2 (>=1.3.8)", "eventlet (>=0.33.3)", "facebook-business (>=6.0.2)", "flask-bcrypt (>=0.7.1)", "flower (>=1.0.0)", "gcloud-aio-auth (>=4.0.0,<5.0.0)", "gcloud-aio-bigquery (>=6.1.2)", "gcloud-aio-storage (>=9.0.0)", "gcsfs (>=2023.10.0)", "gevent (>=0.13)", "gitpython (>=3.1.40)", "google-ads (>=22.1.0)", "google-analytics-admin", "google-api-core (>=2.11.0,!=2.16.0)", "google-api-python-client (>=1.6.0)", "google-auth (>=1.0.0)", "google-auth (>=1.0.0,<3.0.0)", "google-auth-httplib2 (>=0.0.1)", "google-auth-httplib2 (>=0.0.1)", "google-cloud-aiplatform (>=1.22.1)", "google-cloud-automl (>=2.12.0)", "google-cloud-batch (>=0.13.0)", "google-cloud-bigquery-datatransfer (>=3.13.0)", "google-cloud-bigtable (>=2.17.0)", "google-cloud-build (>=3.22.0)", "google-cloud-compute (>=1.10.0)", "google-cloud-container (>=2.17.4)", "google-cloud-datacatalog (>=3.11.1)", "google-cloud-dataflow-client (>=0.8.6)", "google-cloud-dataform (>=0.5.0)", "google-cloud-dataplex (>=1.10.0)", "google-cloud-dataproc (>=5.8.0)", "google-cloud-dataproc-metastore (>=1.12.0)", "google-cloud-dlp (>=3.12.0)", "google-cloud-kms (>=2.15.0)", "google-cloud-language (>=2.9.0)", "google-cloud-logging (>=3.5.0)", "google-cloud-memcache (>=1.7.0)", "google-cloud-monitoring (>=2.18.0)", "google-cloud-orchestration-airflow (>=1.10.0)", "google-cloud-os-login (>=2.9.1)", "google-cloud-pubsub (>=2.19.0)", "google-cloud-redis (>=2.12.0)", "google-cloud-run (>=0.9.0)", "google-cloud-secret-manager (>=2.16.0)", "google-cloud-spanner (>=3.11.1)", "google-cloud-speech (>=2.18.0)", "google-cloud-storage (>=2.7.0)", "google-cloud-storage-transfer (>=1.4.1)", "google-cloud-tasks (>=2.13.0)", "google-cloud-texttospeech (>=2.14.1)", "google-cloud-translate (>=3.11.0)", "google-cloud-videointelligence (>=2.11.0)", "google-cloud-vision (>=3.4.0)", "google-cloud-workflows (>=1.10.0)", "google-re2 (>=1.0)", "google-re2 (>=1.0)", "graphviz (>=0.12)", "greenlet (>=0.4.9)", "grpcio (>=1.15.0)", "grpcio-gcp (>=0.2.2)", "grpcio-status (>=1.59.0)", "hatch (>=1.9.1)", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "httpx", "hvac (>=1.1.0)", "impyla (>=0.18.0,<1.0)", "inflection (>=0.5.1)", "influxdb-client (>=1.19.0)", "ipdb (>=0.13.13)", "ipykernel", "jaydebeapi (>=1.1.1)", "json-merge-patch (>=0.2)", "jsonpath-ng (>=1.5.3)", "kubernetes (>=28.1.0,<=29.0.0)", "kubernetes-asyncio (>=28.1.0,<=29.0.0)", "kylinpy (>=2.6)", "ldap3 (>=2.5.1)", "looker-sdk (>=22.2.0)", "mongomock", "more-itertools (>=9.0.0)", "moto[cloudformation,glue] (>=5.0.0)", "mypy (==1.8.0)", "mypy-boto3-appflow (>=1.33.0)", "mypy-boto3-rds (>=1.33.0)", "mypy-boto3-redshift-data (>=1.33.0)", "mypy-boto3-s3 (>=1.33.0)", "mysql-connector-python (>=8.0.29)", "mysqlclient (>=1.3.6)", "neo4j (>=4.2.1)", "openai[datalib] (>=1.0)", "openlineage-integration-common (>=0.28.0)", "openlineage-python (>=0.28.0)", "opensearch-py (>=2.2.0)", "opentelemetry-exporter-prometheus", "opsgenie-sdk (>=2.1.5)", "oracledb (>=1.0.0)", "oss2 (>=2.14.0)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas (>=1.2.5)", "pandas-gbq", "papermill[all] (>=2.4.0)", "paramiko (>=2.6.0)", "paramiko (>=2.8.0)", "pdpyras (>=4.1.2)", "pgvector (>=0.2.3)", "pinecone-client (>=2.2.4,<3.0)", "pinotdb (>0.4.7)", "pipdeptree (>=2.13.1)", "plyvel", "pre-commit (>=3.5.0)", "presto-python-client (>=0.8.4)", "proto-plus (>=1.19.6)", "psycopg2-binary (>=2.8.0)", "pyarrow (>=14.0.1)", "pyathena (>=3.0.10)", "pydantic (>=2.3.0)", "pydruid (>=0.4.1)", "pyexasol (>=0.5.1)", "pygithub (!=1.58)", "pygithub (>=2.1.1)", "pyhive[hive-pure-sasl] (>=0.7.0)", "pyiceberg (>=0.5.0)", "pykerberos (>=1.1.13)", "pymongo (>=3.6.0)", "pymssql (>=2.1.8)", "pyodbc", "pyopenssl", "pypsrp (>=0.8.0)", "pyspark", "pytest (>=7.4.4,<8.0)", "pytest-asyncio (>=0.23.3)", "pytest-cov (>=4.1.0)", "pytest-icdiff (>=0.9)", "pytest-instafail (>=0.5.0)", "pytest-mock (>=3.12.0)", "pytest-rerunfailures (>=13.0)", "pytest-timeouts (>=1.2.1)", "pytest-xdist (>=3.5.0)", "python-arango (>=7.3.2)", "python-dotenv (>=0.21.0)", "python-jenkins (>=1.0.0)", "python-ldap", "python-telegram-bot (>=20.2)", "python3-saml (>=1.16.0)", "pywinrm", "pywinrm (>=0.4)", "redis (>=4.5.2,!=4.5.5,<5.0.0)", "redshift-connector (>=2.0.918)", "requests (>=2.27.0,<3)", "requests (>=2.27.0,<3)", "requests (>=2.27.0,<3)", "requests (>=2.27.0,<3)", "requests-kerberos (>=0.10.0)", "requests-mock (>=1.11.0)", "requests-toolbelt", "restructuredtext-lint (>=1.4.0)", "rich-click (>=1.7.0)", "ruff (==0.2.1)", "s3fs (>=2023.10.0)", "s3fs (>=2023.10.0)", "scrapbook[all]", "semver (>=3.0.2)", "sendgrid (>=6.0.0)", "sentry-sdk (>=1.32.0,!=1.33.0)", "simple-salesforce (>=1.0.0)", "slack-sdk (>=3.19.0)", "smbprotocol (>=1.5.0)", "snowflake-connector-python (>=2.7.8)", "snowflake-sqlalchemy (>=1.1.0)", "sphinx (>=5.3.0,<6.0.0)", "sphinx-airflow-theme (>=0.0.12)", "sphinx-argparse (>=0.4.0)", "sphinx-autoapi (>=2.1.1)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0.2)", "sphinx-rtd-theme (>=2.0.0)", "sphinxcontrib-applehelp (>=1.0.4)", "sphinxcontrib-devhelp (>=1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.1)", "sphinxcontrib-httpdomain (>=1.8.1)", "sphinxcontrib-jquery (>=4.1)", "sphinxcontrib-jsmath (>=1.0.1)", "sphinxcontrib-qthelp (>=1.0.3)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-serializinghtml (==1.1.5)", "sphinxcontrib-spelling (>=8.0.0)", "spython (>=0.0.56)", "sqlalchemy-bigquery (>=1.2.1)", "sqlalchemy-drill (>=1.1.0)", "sqlalchemy-redshift (>=0.8.6)", "sqlalchemy-spanner (>=1.6.2)", "sqlparse (>=0.4.2)", "sshtunnel (>=0.3.2)", "statsd (>=3.3.0)", "tableauserverclient", "thrift (>=0.9.2)", "thrift-sasl (>=0.2.0)", "time-machine (>=2.13.0)", "towncrier (>=23.11.0)", "trino (>=0.318.0)", "twine (>=4.0.2)", "types-aiofiles", "types-certifi", "types-croniter", "types-deprecated", "types-docutils", "types-markdown", "types-paramiko", "types-protobuf", "types-pymysql", "types-python-dateutil", "types-python-slugify", "types-pytz", "types-pyyaml", "types-redis", "types-requests", "types-setuptools", "types-tabulate", "types-termcolor", "types-toml", "vertica-python (>=0.5.1)", "virtualenv", "watchtower (>=2.0.1,<4)", "weaviate-client (>=3.24.2)", "yamllint (>=1.33.0)", "yandexcloud (>=0.228.0)", "zenpy (>=2.0.24)"] +deprecated-api = ["requests (>=2.26.0)"] +devel = ["aiobotocore (>=2.1.1)", "aioresponses", "apache-airflow (>=2.6.0)", "apache-airflow-providers-common-sql", "astroid (>=2.12.3,<3.0)", "aws-xray-sdk", "backports.zoneinfo (>=0.2.1)", "bcrypt (>=2.0.0)", "beautifulsoup4 (>=4.7.1)", "black", "blinker", "cgroupspy (>=0.2.2)", "checksumdir", "click (>=8.0)", "click (>=8.0,!=8.1.4,!=8.1.5)", "coverage (>=7.2)", "cryptography (>=2.0.0)", "deltalake (>=0.12.0)", "docutils (<0.17.0)", "duckdb (>=0.9.0)", "eralchemy2", "filelock", "flask-bcrypt (>=0.7.1)", "gitpython", "ipdb", "kubernetes (>=21.7.0,<24)", "mongomock", "moto[cloudformation,glue] (>=4.2.9)", "mypy (==1.2.0)", "mypy-boto3-appflow (>=1.28.0)", "mypy-boto3-rds (>=1.28.0)", "mypy-boto3-redshift-data (>=1.28.0)", "mypy-boto3-s3 (>=1.28.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "pandas (>=0.17.1)", "pipdeptree", "pre-commit", "pyarrow (>=9.0.0)", "pyarrow-hotfix", "pygithub", "pyiceberg (>=0.5.0)", "pytest (>=7.1)", "pytest-asyncio (!=0.23.0,!=0.23.1)", "pytest-cov", "pytest-httpx", "pytest-icdiff", "pytest-instafail", "pytest-mock", "pytest-rerunfailures", "pytest-timeouts", "pytest-xdist", "python3-saml (>=1.16.0)", "pywinrm", "requests-mock", "restructuredtext-lint", "rich-click (>=1.7.0)", "ruff (>=0.0.219)", "s3fs (>=2023.10.0)", "semver", "sphinx (>=5.2.0)", "sphinx-airflow-theme", "sphinx-argparse (>=0.1.13)", "sphinx-autoapi (>=2.0.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0)", "sphinx-rtd-theme (>=0.1.6)", "sphinxcontrib-httpdomain (>=1.7.0)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-spelling (>=7.3)", "time-machine", "towncrier", "twine", "types-Deprecated", "types-Markdown", "types-PyMySQL", "types-PyYAML", "types-aiofiles", "types-certifi", "types-croniter", "types-docutils", "types-paramiko", "types-protobuf", "types-python-dateutil", "types-python-slugify", "types-pytz", "types-redis", "types-requests", "types-setuptools", "types-tabulate", "types-termcolor", "types-toml", "wheel", "yamllint"] +devel-all = ["PyGithub (!=1.58)", "PyOpenSSL", "adal (>=1.2.7)", "adlfs (>=2023.10.0)", "aiobotocore (>=2.1.1)", "aiofiles (>=23.2.0)", "aiohttp", "aiohttp (>=3.6.3,<4)", "aioresponses", "alibabacloud-adb20211201 (>=1.0.0)", "alibabacloud-tea-openapi (>=0.3.7)", "amqp", "analytics-python (>=1.2.9)", "apache-airflow (>=2.6.0)", "apache-airflow (>=2.7.0)", "apache-airflow (>=2.8.0)", "apache-airflow-providers-airbyte", "apache-airflow-providers-alibaba", "apache-airflow-providers-amazon", "apache-airflow-providers-apache-beam", "apache-airflow-providers-apache-cassandra", "apache-airflow-providers-apache-drill", "apache-airflow-providers-apache-druid", "apache-airflow-providers-apache-flink", "apache-airflow-providers-apache-hdfs", "apache-airflow-providers-apache-hive", "apache-airflow-providers-apache-impala", "apache-airflow-providers-apache-kafka", "apache-airflow-providers-apache-kylin", "apache-airflow-providers-apache-livy", "apache-airflow-providers-apache-pig", "apache-airflow-providers-apache-pinot", "apache-airflow-providers-apache-spark", "apache-airflow-providers-apprise", "apache-airflow-providers-arangodb", "apache-airflow-providers-asana", "apache-airflow-providers-atlassian-jira", "apache-airflow-providers-celery", "apache-airflow-providers-cloudant", "apache-airflow-providers-cncf-kubernetes", "apache-airflow-providers-cohere", "apache-airflow-providers-common-io", "apache-airflow-providers-common-sql", "apache-airflow-providers-databricks", "apache-airflow-providers-datadog", "apache-airflow-providers-dbt-cloud", "apache-airflow-providers-dingding", "apache-airflow-providers-discord", "apache-airflow-providers-docker", "apache-airflow-providers-elasticsearch", "apache-airflow-providers-exasol", "apache-airflow-providers-facebook", "apache-airflow-providers-ftp", "apache-airflow-providers-github", "apache-airflow-providers-google", "apache-airflow-providers-grpc", "apache-airflow-providers-hashicorp", "apache-airflow-providers-http", "apache-airflow-providers-imap", "apache-airflow-providers-influxdb", "apache-airflow-providers-jdbc", "apache-airflow-providers-jenkins", "apache-airflow-providers-microsoft-azure", "apache-airflow-providers-microsoft-mssql", "apache-airflow-providers-microsoft-psrp", "apache-airflow-providers-microsoft-winrm", "apache-airflow-providers-mongo", "apache-airflow-providers-mysql", "apache-airflow-providers-neo4j", "apache-airflow-providers-odbc", "apache-airflow-providers-openai", "apache-airflow-providers-openfaas", "apache-airflow-providers-openlineage", "apache-airflow-providers-opensearch", "apache-airflow-providers-opsgenie", "apache-airflow-providers-oracle", "apache-airflow-providers-pagerduty", "apache-airflow-providers-papermill", "apache-airflow-providers-pgvector", "apache-airflow-providers-pinecone", "apache-airflow-providers-postgres", "apache-airflow-providers-presto", "apache-airflow-providers-redis", "apache-airflow-providers-salesforce", "apache-airflow-providers-samba", "apache-airflow-providers-segment", "apache-airflow-providers-sendgrid", "apache-airflow-providers-sftp", "apache-airflow-providers-singularity", "apache-airflow-providers-slack", "apache-airflow-providers-smtp", "apache-airflow-providers-snowflake", "apache-airflow-providers-sqlite", "apache-airflow-providers-ssh", "apache-airflow-providers-tableau", "apache-airflow-providers-tabular", "apache-airflow-providers-telegram", "apache-airflow-providers-trino", "apache-airflow-providers-vertica", "apache-airflow-providers-weaviate", "apache-airflow-providers-yandex", "apache-airflow-providers-zendesk", "apache-beam (>=2.47.0)", "apprise", "asana (>=0.10,<4.0.0)", "asgiref", "asgiref (>=3.5.2)", "astroid (>=2.12.3,<3.0)", "atlasclient (>=0.1.2)", "atlassian-python-api (>=1.14.2)", "attrs (>=22.2)", "authlib (>=1.0.0)", "aws-xray-sdk", "azure-batch (>=8.0.0)", "azure-cosmos (>=4.0.0)", "azure-datalake-store (>=0.0.45)", "azure-identity (>=1.3.1)", "azure-keyvault-secrets (>=4.1.0)", "azure-kusto-data (>=4.1.0)", "azure-mgmt-containerinstance (>=9.0.0)", "azure-mgmt-containerregistry (>=8.0.0)", "azure-mgmt-cosmosdb", "azure-mgmt-datafactory (>=2.0.0)", "azure-mgmt-datalake-store (>=0.5.0)", "azure-mgmt-resource (>=2.2.0)", "azure-mgmt-storage (>=16.0.0)", "azure-servicebus (>=7.6.1)", "azure-storage-blob (>=12.14.0)", "azure-storage-file-datalake (>=12.9.1)", "azure-storage-file-share", "azure-synapse-artifacts (>=0.17.0)", "azure-synapse-spark", "backports.zoneinfo (>=0.2.1)", "bcrypt (>=2.0.0)", "beautifulsoup4 (>=4.7.1)", "black", "blinker", "blinker (>=1.1)", "boto3 (>=1.28.0)", "botocore (>=1.31.0)", "cassandra-driver (>=3.13.0)", "celery (>=5.3.0,!=5.3.2,!=5.3.3,<6)", "cgroupspy (>=0.2.2)", "checksumdir", "click (>=8.0)", "click (>=8.0,!=8.1.4,!=8.1.5)", "cloudant (>=2.0)", "cohere (>=4.27)", "confluent-kafka (>=1.8.2)", "coverage (>=7.2)", "cryptography (>=2.0.0)", "databricks-sql-connector (>=2.0.0,!=2.9.0,<3.0.0)", "datadog (>=0.14.0)", "deltalake (>=0.12.0)", "dnspython (>=1.13.0)", "docker (>=5.0.3)", "docutils (<0.17.0)", "duckdb (>=0.9.0)", "elasticsearch (>=8.10,<9)", "eralchemy2", "eventlet (>=0.33.3)", "facebook-business (>=6.0.2)", "filelock", "flask-appbuilder[oauth] (==4.3.10)", "flask-bcrypt (>=0.7.1)", "flower (>=1.0.0)", "gcloud-aio-auth (>=4.0.0,<5.0.0)", "gcloud-aio-bigquery (>=6.1.2)", "gcloud-aio-storage", "gcsfs (>=2023.10.0)", "gevent (>=0.13)", "gitpython", "google-ads (>=22.1.0)", "google-api-core (>=2.11.0)", "google-api-python-client (>=1.6.0)", "google-auth (>=1.0.0)", "google-auth (>=1.0.0,<3.0.0)", "google-auth-httplib2 (>=0.0.1)", "google-cloud-aiplatform (>=1.22.1)", "google-cloud-automl (>=2.12.0)", "google-cloud-batch (>=0.13.0)", "google-cloud-bigquery-datatransfer (>=3.13.0)", "google-cloud-bigtable (>=2.17.0)", "google-cloud-build (>=3.22.0)", "google-cloud-compute (>=1.10.0)", "google-cloud-container (>=2.17.4)", "google-cloud-datacatalog (>=3.11.1)", "google-cloud-dataflow-client (>=0.8.6)", "google-cloud-dataform (>=0.5.0)", "google-cloud-dataplex (>=1.10.0)", "google-cloud-dataproc (>=5.8.0)", "google-cloud-dataproc-metastore (>=1.12.0)", "google-cloud-dlp (>=3.12.0)", "google-cloud-kms (>=2.15.0)", "google-cloud-language (>=2.9.0)", "google-cloud-logging (>=3.5.0)", "google-cloud-memcache (>=1.7.0)", "google-cloud-monitoring (>=2.18.0)", "google-cloud-orchestration-airflow (>=1.10.0)", "google-cloud-os-login (>=2.9.1)", "google-cloud-pubsub (>=2.19.0)", "google-cloud-redis (>=2.12.0)", "google-cloud-run (>=0.9.0)", "google-cloud-secret-manager (>=2.16.0)", "google-cloud-spanner (>=3.11.1)", "google-cloud-speech (>=2.18.0)", "google-cloud-storage (>=2.7.0)", "google-cloud-storage-transfer (>=1.4.1)", "google-cloud-tasks (>=2.13.0)", "google-cloud-texttospeech (>=2.14.1)", "google-cloud-translate (>=3.11.0)", "google-cloud-videointelligence (>=2.11.0)", "google-cloud-vision (>=3.4.0)", "google-cloud-workflows (>=1.10.0)", "google-re2 (>=1.0)", "greenlet (>=0.4.9)", "grpcio (>=1.15.0)", "grpcio-gcp (>=0.2.2)", "grpcio-status", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "httpx", "hvac (>=0.10)", "impyla (>=0.18.0,<1.0)", "inflection (>=0.5.1)", "influxdb-client (>=1.19.0)", "ipdb", "ipykernel", "jaydebeapi (>=1.1.1)", "json-merge-patch (>=0.2)", "jsonpath-ng (>=1.5.3)", "kubernetes (>=21.7.0,<24)", "kubernetes-asyncio (>=18.20.1,<25)", "kylinpy (>=2.6)", "ldap3 (>=2.5.1)", "looker-sdk (>=22.2.0)", "mongomock", "moto[cloudformation,glue] (>=4.2.9)", "mypy (==1.2.0)", "mypy-boto3-appflow (>=1.28.0)", "mypy-boto3-rds (>=1.28.0)", "mypy-boto3-redshift-data (>=1.28.0)", "mypy-boto3-s3 (>=1.28.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "neo4j (>=4.2.1)", "openai[datalib] (>=1.0)", "openlineage-integration-common (>=0.28.0)", "openlineage-python (>=0.28.0)", "opensearch-py (>=2.2.0)", "opentelemetry-exporter-prometheus", "opsgenie-sdk (>=2.1.5)", "oracledb (>=1.0.0)", "oss2 (>=2.14.0)", "pandas (>=0.17.1)", "pandas-gbq", "papermill[all] (>=1.2.1)", "paramiko (>=2.6.0)", "paramiko (>=2.8.0)", "pdpyras (>=4.1.2)", "pgvector (>=0.2.3)", "pinecone-client (>=2.2.4)", "pinotdb (>0.4.7)", "pipdeptree", "plyvel", "pre-commit", "presto-python-client (>=0.8.4)", "proto-plus (>=1.19.6)", "psycopg2-binary (>=2.8.0)", "pyarrow (>=9.0.0)", "pyarrow-hotfix", "pydruid (>=0.4.1)", "pyexasol (>=0.5.1)", "pygithub", "pyhive[hive-pure-sasl] (>=0.7.0)", "pyiceberg (>=0.5.0)", "pykerberos (>=1.1.13)", "pymongo (>=3.6.0)", "pymssql (>=2.1.8)", "pyodbc", "pypsrp (>=0.8.0)", "pyspark", "pytest (>=7.1)", "pytest-asyncio (!=0.23.0,!=0.23.1)", "pytest-cov", "pytest-httpx", "pytest-icdiff", "pytest-instafail", "pytest-mock", "pytest-rerunfailures", "pytest-timeouts", "pytest-xdist", "python-arango (>=7.3.2)", "python-dotenv (>=0.21.0)", "python-jenkins (>=1.0.0)", "python-ldap", "python-telegram-bot (>=20.0.0)", "python3-saml (>=1.16.0)", "pywinrm", "pywinrm (>=0.4)", "redis (>=4.5.2,!=4.5.5,<5.0.0)", "redshift-connector (>=2.0.888)", "requests (>=2.26.0)", "requests (>=2.27,<3)", "requests-kerberos (>=0.10.0)", "requests-mock", "requests-toolbelt", "restructuredtext-lint", "rich-click (>=1.7.0)", "ruff (>=0.0.219)", "s3fs (>=2023.10.0)", "scrapbook[all]", "semver", "sendgrid (>=6.0.0)", "sentry-sdk (>=1.32.0,!=1.33.0)", "simple-salesforce (>=1.0.0)", "slack-sdk (>=3.0.0)", "smbprotocol (>=1.5.0)", "snowflake-connector-python (>=2.7.8)", "snowflake-sqlalchemy (>=1.1.0)", "sphinx (>=5.2.0)", "sphinx-airflow-theme", "sphinx-argparse (>=0.1.13)", "sphinx-autoapi (>=2.0.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0)", "sphinx-rtd-theme (>=0.1.6)", "sphinxcontrib-httpdomain (>=1.7.0)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-spelling (>=7.3)", "spython (>=0.0.56)", "sqlalchemy-bigquery (>=1.2.1)", "sqlalchemy-drill (>=1.1.0)", "sqlalchemy-redshift (>=0.8.6)", "sqlalchemy-spanner (>=1.6.2)", "sqlparse (>=0.4.2)", "sshtunnel (>=0.3.2)", "statsd (>=3.3.0)", "tableauserverclient", "thrift (>=0.9.2)", "thrift-sasl (>=0.2.0)", "time-machine", "towncrier", "trino (>=0.318.0)", "twine", "types-Deprecated", "types-Markdown", "types-PyMySQL", "types-PyYAML", "types-aiofiles", "types-certifi", "types-croniter", "types-docutils", "types-paramiko", "types-protobuf", "types-python-dateutil", "types-python-slugify", "types-pytz", "types-redis", "types-requests", "types-setuptools", "types-tabulate", "types-termcolor", "types-toml", "vertica-python (>=0.5.1)", "virtualenv", "watchtower (>=2.0.1,<4)", "weaviate-client (>=3.24.2)", "wheel", "yamllint", "yandexcloud (>=0.228.0)", "zenpy (>=2.0.24)"] +devel-ci = ["PyGithub (!=1.58)", "PyOpenSSL", "adal (>=1.2.7)", "adlfs (>=2023.10.0)", "aiobotocore (>=2.1.1)", "aiofiles (>=23.2.0)", "aiohttp", "aiohttp (>=3.6.3,<4)", "aioresponses", "alibabacloud-adb20211201 (>=1.0.0)", "alibabacloud-tea-openapi (>=0.3.7)", "amqp", "analytics-python (>=1.2.9)", "apache-airflow (>=2.6.0)", "apache-airflow (>=2.7.0)", "apache-airflow (>=2.8.0)", "apache-airflow-providers-airbyte", "apache-airflow-providers-alibaba", "apache-airflow-providers-amazon", "apache-airflow-providers-apache-beam", "apache-airflow-providers-apache-cassandra", "apache-airflow-providers-apache-drill", "apache-airflow-providers-apache-druid", "apache-airflow-providers-apache-flink", "apache-airflow-providers-apache-hdfs", "apache-airflow-providers-apache-hive", "apache-airflow-providers-apache-impala", "apache-airflow-providers-apache-kafka", "apache-airflow-providers-apache-kylin", "apache-airflow-providers-apache-livy", "apache-airflow-providers-apache-pig", "apache-airflow-providers-apache-pinot", "apache-airflow-providers-apache-spark", "apache-airflow-providers-apprise", "apache-airflow-providers-arangodb", "apache-airflow-providers-asana", "apache-airflow-providers-atlassian-jira", "apache-airflow-providers-celery", "apache-airflow-providers-cloudant", "apache-airflow-providers-cncf-kubernetes", "apache-airflow-providers-cohere", "apache-airflow-providers-common-io", "apache-airflow-providers-common-sql", "apache-airflow-providers-databricks", "apache-airflow-providers-datadog", "apache-airflow-providers-dbt-cloud", "apache-airflow-providers-dingding", "apache-airflow-providers-discord", "apache-airflow-providers-docker", "apache-airflow-providers-elasticsearch", "apache-airflow-providers-exasol", "apache-airflow-providers-facebook", "apache-airflow-providers-ftp", "apache-airflow-providers-github", "apache-airflow-providers-google", "apache-airflow-providers-grpc", "apache-airflow-providers-hashicorp", "apache-airflow-providers-http", "apache-airflow-providers-imap", "apache-airflow-providers-influxdb", "apache-airflow-providers-jdbc", "apache-airflow-providers-jenkins", "apache-airflow-providers-microsoft-azure", "apache-airflow-providers-microsoft-mssql", "apache-airflow-providers-microsoft-psrp", "apache-airflow-providers-microsoft-winrm", "apache-airflow-providers-mongo", "apache-airflow-providers-mysql", "apache-airflow-providers-neo4j", "apache-airflow-providers-odbc", "apache-airflow-providers-openai", "apache-airflow-providers-openfaas", "apache-airflow-providers-openlineage", "apache-airflow-providers-opensearch", "apache-airflow-providers-opsgenie", "apache-airflow-providers-oracle", "apache-airflow-providers-pagerduty", "apache-airflow-providers-papermill", "apache-airflow-providers-pgvector", "apache-airflow-providers-pinecone", "apache-airflow-providers-postgres", "apache-airflow-providers-presto", "apache-airflow-providers-redis", "apache-airflow-providers-salesforce", "apache-airflow-providers-samba", "apache-airflow-providers-segment", "apache-airflow-providers-sendgrid", "apache-airflow-providers-sftp", "apache-airflow-providers-singularity", "apache-airflow-providers-slack", "apache-airflow-providers-smtp", "apache-airflow-providers-snowflake", "apache-airflow-providers-sqlite", "apache-airflow-providers-ssh", "apache-airflow-providers-tableau", "apache-airflow-providers-tabular", "apache-airflow-providers-telegram", "apache-airflow-providers-trino", "apache-airflow-providers-vertica", "apache-airflow-providers-weaviate", "apache-airflow-providers-yandex", "apache-airflow-providers-zendesk", "apache-beam (>=2.47.0)", "apprise", "asana (>=0.10,<4.0.0)", "asgiref", "asgiref (>=3.5.2)", "astroid (>=2.12.3,<3.0)", "atlasclient (>=0.1.2)", "atlassian-python-api (>=1.14.2)", "attrs (>=22.2)", "authlib (>=1.0.0)", "aws-xray-sdk", "azure-batch (>=8.0.0)", "azure-cosmos (>=4.0.0)", "azure-datalake-store (>=0.0.45)", "azure-identity (>=1.3.1)", "azure-keyvault-secrets (>=4.1.0)", "azure-kusto-data (>=4.1.0)", "azure-mgmt-containerinstance (>=9.0.0)", "azure-mgmt-containerregistry (>=8.0.0)", "azure-mgmt-cosmosdb", "azure-mgmt-datafactory (>=2.0.0)", "azure-mgmt-datalake-store (>=0.5.0)", "azure-mgmt-resource (>=2.2.0)", "azure-mgmt-storage (>=16.0.0)", "azure-servicebus (>=7.6.1)", "azure-storage-blob (>=12.14.0)", "azure-storage-file-datalake (>=12.9.1)", "azure-storage-file-share", "azure-synapse-artifacts (>=0.17.0)", "azure-synapse-spark", "backports.zoneinfo (>=0.2.1)", "bcrypt (>=2.0.0)", "beautifulsoup4 (>=4.7.1)", "black", "blinker", "blinker (>=1.1)", "boto3 (>=1.28.0)", "botocore (>=1.31.0)", "cassandra-driver (>=3.13.0)", "celery (>=5.3.0,!=5.3.2,!=5.3.3,<6)", "cgroupspy (>=0.2.2)", "checksumdir", "click (>=8.0)", "click (>=8.0,!=8.1.4,!=8.1.5)", "cloudant (>=2.0)", "cohere (>=4.27)", "confluent-kafka (>=1.8.2)", "coverage (>=7.2)", "cryptography (>=2.0.0)", "databricks-sql-connector (>=2.0.0,!=2.9.0,<3.0.0)", "datadog (>=0.14.0)", "deltalake (>=0.12.0)", "dnspython (>=1.13.0)", "docker (>=5.0.3)", "docutils (<0.17.0)", "duckdb (>=0.9.0)", "elasticsearch (>=8.10,<9)", "eralchemy2", "eventlet (>=0.33.3)", "facebook-business (>=6.0.2)", "filelock", "flask-appbuilder[oauth] (==4.3.10)", "flask-bcrypt (>=0.7.1)", "flower (>=1.0.0)", "gcloud-aio-auth (>=4.0.0,<5.0.0)", "gcloud-aio-bigquery (>=6.1.2)", "gcloud-aio-storage", "gcsfs (>=2023.10.0)", "gevent (>=0.13)", "gitpython", "google-ads (>=22.1.0)", "google-api-core (>=2.11.0)", "google-api-python-client (>=1.6.0)", "google-auth (>=1.0.0)", "google-auth (>=1.0.0,<3.0.0)", "google-auth-httplib2 (>=0.0.1)", "google-cloud-aiplatform (>=1.22.1)", "google-cloud-automl (>=2.12.0)", "google-cloud-batch (>=0.13.0)", "google-cloud-bigquery-datatransfer (>=3.13.0)", "google-cloud-bigtable (>=2.17.0)", "google-cloud-build (>=3.22.0)", "google-cloud-compute (>=1.10.0)", "google-cloud-container (>=2.17.4)", "google-cloud-datacatalog (>=3.11.1)", "google-cloud-dataflow-client (>=0.8.6)", "google-cloud-dataform (>=0.5.0)", "google-cloud-dataplex (>=1.10.0)", "google-cloud-dataproc (>=5.8.0)", "google-cloud-dataproc-metastore (>=1.12.0)", "google-cloud-dlp (>=3.12.0)", "google-cloud-kms (>=2.15.0)", "google-cloud-language (>=2.9.0)", "google-cloud-logging (>=3.5.0)", "google-cloud-memcache (>=1.7.0)", "google-cloud-monitoring (>=2.18.0)", "google-cloud-orchestration-airflow (>=1.10.0)", "google-cloud-os-login (>=2.9.1)", "google-cloud-pubsub (>=2.19.0)", "google-cloud-redis (>=2.12.0)", "google-cloud-run (>=0.9.0)", "google-cloud-secret-manager (>=2.16.0)", "google-cloud-spanner (>=3.11.1)", "google-cloud-speech (>=2.18.0)", "google-cloud-storage (>=2.7.0)", "google-cloud-storage-transfer (>=1.4.1)", "google-cloud-tasks (>=2.13.0)", "google-cloud-texttospeech (>=2.14.1)", "google-cloud-translate (>=3.11.0)", "google-cloud-videointelligence (>=2.11.0)", "google-cloud-vision (>=3.4.0)", "google-cloud-workflows (>=1.10.0)", "google-re2 (>=1.0)", "greenlet (>=0.4.9)", "grpcio (>=1.15.0)", "grpcio-gcp (>=0.2.2)", "grpcio-status", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "httpx", "hvac (>=0.10)", "impyla (>=0.18.0,<1.0)", "inflection (>=0.5.1)", "influxdb-client (>=1.19.0)", "ipdb", "ipykernel", "jaydebeapi (>=1.1.1)", "json-merge-patch (>=0.2)", "jsonpath-ng (>=1.5.3)", "kubernetes (>=21.7.0,<24)", "kubernetes-asyncio (>=18.20.1,<25)", "kylinpy (>=2.6)", "ldap3 (>=2.5.1)", "looker-sdk (>=22.2.0)", "mongomock", "moto[cloudformation,glue] (>=4.2.9)", "mypy (==1.2.0)", "mypy-boto3-appflow (>=1.28.0)", "mypy-boto3-rds (>=1.28.0)", "mypy-boto3-redshift-data (>=1.28.0)", "mypy-boto3-s3 (>=1.28.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "neo4j (>=4.2.1)", "openai[datalib] (>=1.0)", "openlineage-integration-common (>=0.28.0)", "openlineage-python (>=0.28.0)", "opensearch-py (>=2.2.0)", "opentelemetry-exporter-prometheus", "opsgenie-sdk (>=2.1.5)", "oracledb (>=1.0.0)", "oss2 (>=2.14.0)", "pandas (>=0.17.1)", "pandas-gbq", "papermill[all] (>=1.2.1)", "paramiko (>=2.6.0)", "paramiko (>=2.8.0)", "pdpyras (>=4.1.2)", "pgvector (>=0.2.3)", "pinecone-client (>=2.2.4)", "pinotdb (>0.4.7)", "pipdeptree", "plyvel", "pre-commit", "presto-python-client (>=0.8.4)", "proto-plus (>=1.19.6)", "psycopg2-binary (>=2.8.0)", "pyarrow (>=9.0.0)", "pyarrow-hotfix", "pydruid (>=0.4.1)", "pyexasol (>=0.5.1)", "pygithub", "pyhive[hive-pure-sasl] (>=0.7.0)", "pyiceberg (>=0.5.0)", "pykerberos (>=1.1.13)", "pymongo (>=3.6.0)", "pymssql (>=2.1.8)", "pyodbc", "pypsrp (>=0.8.0)", "pyspark", "pytest (>=7.1)", "pytest-asyncio (!=0.23.0,!=0.23.1)", "pytest-cov", "pytest-httpx", "pytest-icdiff", "pytest-instafail", "pytest-mock", "pytest-rerunfailures", "pytest-timeouts", "pytest-xdist", "python-arango (>=7.3.2)", "python-dotenv (>=0.21.0)", "python-jenkins (>=1.0.0)", "python-ldap", "python-telegram-bot (>=20.0.0)", "python3-saml (>=1.16.0)", "pywinrm", "pywinrm (>=0.4)", "redis (>=4.5.2,!=4.5.5,<5.0.0)", "redshift-connector (>=2.0.888)", "requests (>=2.26.0)", "requests (>=2.27,<3)", "requests-kerberos (>=0.10.0)", "requests-mock", "requests-toolbelt", "restructuredtext-lint", "rich-click (>=1.7.0)", "ruff (>=0.0.219)", "s3fs (>=2023.10.0)", "scrapbook[all]", "semver", "sendgrid (>=6.0.0)", "sentry-sdk (>=1.32.0,!=1.33.0)", "simple-salesforce (>=1.0.0)", "slack-sdk (>=3.0.0)", "smbprotocol (>=1.5.0)", "snowflake-connector-python (>=2.7.8)", "snowflake-sqlalchemy (>=1.1.0)", "sphinx (>=5.2.0)", "sphinx-airflow-theme", "sphinx-argparse (>=0.1.13)", "sphinx-autoapi (>=2.0.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0)", "sphinx-rtd-theme (>=0.1.6)", "sphinxcontrib-httpdomain (>=1.7.0)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-spelling (>=7.3)", "spython (>=0.0.56)", "sqlalchemy-bigquery (>=1.2.1)", "sqlalchemy-drill (>=1.1.0)", "sqlalchemy-redshift (>=0.8.6)", "sqlalchemy-spanner (>=1.6.2)", "sqlparse (>=0.4.2)", "sshtunnel (>=0.3.2)", "statsd (>=3.3.0)", "tableauserverclient", "thrift (>=0.9.2)", "thrift-sasl (>=0.2.0)", "time-machine", "towncrier", "trino (>=0.318.0)", "twine", "types-Deprecated", "types-Markdown", "types-PyMySQL", "types-PyYAML", "types-aiofiles", "types-certifi", "types-croniter", "types-docutils", "types-paramiko", "types-protobuf", "types-python-dateutil", "types-python-slugify", "types-pytz", "types-redis", "types-requests", "types-setuptools", "types-tabulate", "types-termcolor", "types-toml", "vertica-python (>=0.5.1)", "virtualenv", "watchtower (>=2.0.1,<4)", "weaviate-client (>=3.24.2)", "wheel", "yamllint", "yandexcloud (>=0.228.0)", "zenpy (>=2.0.24)"] +devel-hadoop = ["aiobotocore (>=2.1.1)", "aioresponses", "apache-airflow (>=2.6.0)", "apache-airflow-providers-apache-hdfs", "apache-airflow-providers-apache-hive", "apache-airflow-providers-common-sql", "apache-airflow-providers-presto", "apache-airflow-providers-trino", "astroid (>=2.12.3,<3.0)", "aws-xray-sdk", "backports.zoneinfo (>=0.2.1)", "bcrypt (>=2.0.0)", "beautifulsoup4 (>=4.7.1)", "black", "blinker", "cgroupspy (>=0.2.2)", "checksumdir", "click (>=8.0)", "click (>=8.0,!=8.1.4,!=8.1.5)", "coverage (>=7.2)", "cryptography (>=2.0.0)", "deltalake (>=0.12.0)", "docutils (<0.17.0)", "duckdb (>=0.9.0)", "eralchemy2", "filelock", "flask-bcrypt (>=0.7.1)", "gitpython", "hdfs[avro,dataframe,kerberos] (>=2.0.4)", "hmsclient (>=0.1.0)", "impyla (>=0.18.0,<1.0)", "ipdb", "kubernetes (>=21.7.0,<24)", "mongomock", "moto[cloudformation,glue] (>=4.2.9)", "mypy (==1.2.0)", "mypy-boto3-appflow (>=1.28.0)", "mypy-boto3-rds (>=1.28.0)", "mypy-boto3-redshift-data (>=1.28.0)", "mypy-boto3-s3 (>=1.28.0)", "mysql-connector-python (>=8.0.11)", "mysqlclient (>=1.3.6)", "pandas (>=0.17.1)", "pipdeptree", "pre-commit", "presto-python-client (>=0.8.4)", "pyarrow (>=9.0.0)", "pyarrow-hotfix", "pygithub", "pyhive[hive-pure-sasl] (>=0.7.0)", "pyiceberg (>=0.5.0)", "pykerberos (>=1.1.13)", "pytest (>=7.1)", "pytest-asyncio (!=0.23.0,!=0.23.1)", "pytest-cov", "pytest-httpx", "pytest-icdiff", "pytest-instafail", "pytest-mock", "pytest-rerunfailures", "pytest-timeouts", "pytest-xdist", "python3-saml (>=1.16.0)", "pywinrm", "requests-kerberos (>=0.10.0)", "requests-mock", "restructuredtext-lint", "rich-click (>=1.7.0)", "ruff (>=0.0.219)", "s3fs (>=2023.10.0)", "semver", "sphinx (>=5.2.0)", "sphinx-airflow-theme", "sphinx-argparse (>=0.1.13)", "sphinx-autoapi (>=2.0.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0)", "sphinx-rtd-theme (>=0.1.6)", "sphinxcontrib-httpdomain (>=1.7.0)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-spelling (>=7.3)", "thrift (>=0.9.2)", "thrift-sasl (>=0.2.0)", "time-machine", "towncrier", "twine", "types-Deprecated", "types-Markdown", "types-PyMySQL", "types-PyYAML", "types-aiofiles", "types-certifi", "types-croniter", "types-docutils", "types-paramiko", "types-protobuf", "types-python-dateutil", "types-python-slugify", "types-pytz", "types-redis", "types-requests", "types-setuptools", "types-tabulate", "types-termcolor", "types-toml", "wheel", "yamllint"] dingding = ["apache-airflow-providers-dingding"] discord = ["apache-airflow-providers-discord"] +doc = ["astroid (>=2.12.3,<3.0)", "checksumdir", "click (>=8.0,!=8.1.4,!=8.1.5)", "docutils (<0.17.0)", "eralchemy2", "sphinx (>=5.2.0)", "sphinx-airflow-theme", "sphinx-argparse (>=0.1.13)", "sphinx-autoapi (>=2.0.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-jinja (>=2.0)", "sphinx-rtd-theme (>=0.1.6)", "sphinxcontrib-httpdomain (>=1.7.0)", "sphinxcontrib-redoc (>=1.6.0)", "sphinxcontrib-spelling (>=7.3)"] +doc-gen = ["eralchemy2"] docker = ["apache-airflow-providers-docker"] -druid = ["apache-airflow[apache-druid]"] +druid = ["apache-airflow-providers-apache-druid"] elasticsearch = ["apache-airflow-providers-elasticsearch"] exasol = ["apache-airflow-providers-exasol"] facebook = ["apache-airflow-providers-facebook"] ftp = ["apache-airflow-providers-ftp"] -gcp = ["apache-airflow[google]"] -gcp-api = ["apache-airflow[google]"] +gcp = ["apache-airflow-providers-google"] +gcp-api = ["apache-airflow-providers-google"] github = ["apache-airflow-providers-github"] -github-enterprise = ["apache-airflow[fab]", "authlib (>=1.0.0)"] +github-enterprise = ["authlib (>=1.0.0)", "flask-appbuilder[oauth] (==4.3.10)"] google = ["apache-airflow-providers-google"] -google-auth = ["apache-airflow[fab]", "authlib (>=1.0.0)"] -graphviz = ["graphviz (>=0.12)"] +google-auth = ["authlib (>=1.0.0)", "flask-appbuilder[oauth] (==4.3.10)"] grpc = ["apache-airflow-providers-grpc"] hashicorp = ["apache-airflow-providers-hashicorp"] -hdfs = ["apache-airflow[apache-hdfs]"] -hive = ["apache-airflow[apache-hive]"] +hdfs = ["apache-airflow-providers-apache-hdfs"] +hive = ["apache-airflow-providers-apache-hive"] http = ["apache-airflow-providers-http"] imap = ["apache-airflow-providers-imap"] influxdb = ["apache-airflow-providers-influxdb"] jdbc = ["apache-airflow-providers-jdbc"] jenkins = ["apache-airflow-providers-jenkins"] kerberos = ["pykerberos (>=1.1.13)", "requests-kerberos (>=0.10.0)", "thrift-sasl (>=0.2.0)"] -kubernetes = ["apache-airflow[cncf-kubernetes]"] +kubernetes = ["aiofiles (>=23.2.0)", "apache-airflow (>=2.6.0)", "apache-airflow-providers-cncf-kubernetes", "asgiref (>=3.5.2)", "cryptography (>=2.0.0)", "google-re2 (>=1.0)", "kubernetes (>=21.7.0,<24)", "kubernetes-asyncio (>=18.20.1,<25)"] ldap = ["ldap3 (>=2.5.1)", "python-ldap"] leveldb = ["plyvel"] microsoft-azure = ["apache-airflow-providers-microsoft-azure"] @@ -353,7 +357,7 @@ microsoft-mssql = ["apache-airflow-providers-microsoft-mssql"] microsoft-psrp = ["apache-airflow-providers-microsoft-psrp"] microsoft-winrm = ["apache-airflow-providers-microsoft-winrm"] mongo = ["apache-airflow-providers-mongo"] -mssql = ["apache-airflow[microsoft-mssql]"] +mssql = ["apache-airflow-providers-microsoft-mssql"] mysql = ["apache-airflow-providers-mysql"] neo4j = ["apache-airflow-providers-neo4j"] odbc = ["apache-airflow-providers-odbc"] @@ -365,18 +369,17 @@ opsgenie = ["apache-airflow-providers-opsgenie"] oracle = ["apache-airflow-providers-oracle"] otel = ["opentelemetry-exporter-prometheus"] pagerduty = ["apache-airflow-providers-pagerduty"] -pandas = ["pandas (>=1.2.5)"] +pandas = ["pandas (>=0.17.1)", "pyarrow (>=9.0.0)", "pyarrow-hotfix"] papermill = ["apache-airflow-providers-papermill"] password = ["bcrypt (>=2.0.0)", "flask-bcrypt (>=0.7.1)"] pgvector = ["apache-airflow-providers-pgvector"] pinecone = ["apache-airflow-providers-pinecone"] -pinot = ["apache-airflow[apache-pinot]"] +pinot = ["apache-airflow-providers-apache-pinot"] postgres = ["apache-airflow-providers-postgres"] presto = ["apache-airflow-providers-presto"] -pydantic = ["pydantic (>=2.3.0)"] rabbitmq = ["amqp"] redis = ["apache-airflow-providers-redis"] -s3 = ["apache-airflow[amazon]"] +s3 = ["apache-airflow-providers-amazon"] s3fs = ["s3fs (>=2023.10.0)"] salesforce = ["apache-airflow-providers-salesforce"] samba = ["apache-airflow-providers-samba"] @@ -389,7 +392,7 @@ singularity = ["apache-airflow-providers-singularity"] slack = ["apache-airflow-providers-slack"] smtp = ["apache-airflow-providers-smtp"] snowflake = ["apache-airflow-providers-snowflake"] -spark = ["apache-airflow[apache-spark]"] +spark = ["apache-airflow-providers-apache-spark"] sqlite = ["apache-airflow-providers-sqlite"] ssh = ["apache-airflow-providers-ssh"] statsd = ["statsd (>=3.3.0)"] @@ -400,74 +403,56 @@ trino = ["apache-airflow-providers-trino"] vertica = ["apache-airflow-providers-vertica"] virtualenv = ["virtualenv"] weaviate = ["apache-airflow-providers-weaviate"] -webhdfs = ["apache-airflow[apache-webhdfs]"] -winrm = ["apache-airflow[microsoft-winrm]"] +webhdfs = ["hdfs[avro,dataframe,kerberos] (>=2.0.4)"] +winrm = ["apache-airflow-providers-microsoft-winrm"] yandex = ["apache-airflow-providers-yandex"] zendesk = ["apache-airflow-providers-zendesk"] -[[package]] -name = "apache-airflow-providers-common-io" -version = "1.3.0" -description = "Provider package apache-airflow-providers-common-io for Apache Airflow" -optional = false -python-versions = "~=3.8" -files = [ - {file = "apache_airflow_providers_common_io-1.3.0-py3-none-any.whl", hash = "sha256:a67c6dd3cb419c68fc1a9ed62f0f434426852e15a46c3159f367b3961332955d"}, - {file = "apache_airflow_providers_common_io-1.3.0.tar.gz", hash = "sha256:7172620a2370031970df2212a9f694a5ff82240f7e498b8b7dfdbae7e6c882d6"}, -] - -[package.dependencies] -apache-airflow = ">=2.8.0" - -[package.extras] -openlineage = ["apache-airflow-providers-openlineage"] - [[package]] name = "apache-airflow-providers-common-sql" -version = "1.11.1" -description = "Provider package apache-airflow-providers-common-sql for Apache Airflow" +version = "1.8.0" +description = "Provider for Apache Airflow. Implements apache-airflow-providers-common-sql package" optional = false python-versions = "~=3.8" files = [ - {file = "apache_airflow_providers_common_sql-1.11.1-py3-none-any.whl", hash = "sha256:eb8531b9eedcfdcdd972f12a0bffadc289ade9c3587a5bb5bd146f3240d5eb02"}, - {file = "apache_airflow_providers_common_sql-1.11.1.tar.gz", hash = "sha256:5b8c4d267677758dcb28b1a8976f10f30e50a4b568abda93a667ad6ff938060b"}, + {file = "apache-airflow-providers-common-sql-1.8.0.tar.gz", hash = "sha256:4d8d99f33f7b5a3e313ef12c5a2f10d1612477ed2e784d0ffb721447e076e3f7"}, + {file = "apache_airflow_providers_common_sql-1.8.0-py3-none-any.whl", hash = "sha256:45117fa38f5a2e83cdb9a8d3bdfdbd602bfdc7a894d087b26e6ebb94df79ec32"}, ] [package.dependencies] -apache-airflow = ">=2.6.0" -more-itertools = ">=9.0.0" +apache-airflow = ">=2.5.0" sqlparse = ">=0.4.2" [package.extras] openlineage = ["apache-airflow-providers-openlineage"] -pandas = ["pandas (>=1.2.5,<2.2)"] +pandas = ["pandas (>=0.17.1)"] [[package]] name = "apache-airflow-providers-ftp" -version = "3.7.0" -description = "Provider package apache-airflow-providers-ftp for Apache Airflow" +version = "3.6.0" +description = "Provider for Apache Airflow. Implements apache-airflow-providers-ftp package" optional = false python-versions = "~=3.8" files = [ - {file = "apache_airflow_providers_ftp-3.7.0-py3-none-any.whl", hash = "sha256:817936fa2f9f5d7f00f50bfe0dfdf83a3ffbcd863cb92b862a2ab5a40da1b8c4"}, - {file = "apache_airflow_providers_ftp-3.7.0.tar.gz", hash = "sha256:cc6e7602fb9b92255b83343673923339c8fe7d22c8c738ba372ce38a70cce1cc"}, + {file = "apache-airflow-providers-ftp-3.6.0.tar.gz", hash = "sha256:160f12e9f78ffbcdca4bdffbac93c1f04641fd3f1f7d236c7bfe79cd0a68d14b"}, + {file = "apache_airflow_providers_ftp-3.6.0-py3-none-any.whl", hash = "sha256:03264207293710c3821f5ccd548c5e89a3c5ca7562bc4ff629e6f73d112a71a4"}, ] [package.dependencies] -apache-airflow = ">=2.6.0" +apache-airflow = ">=2.5.0" [package.extras] openlineage = ["apache-airflow-providers-openlineage"] [[package]] name = "apache-airflow-providers-google" -version = "10.16.0" +version = "10.15.0" description = "Provider package apache-airflow-providers-google for Apache Airflow" optional = false python-versions = "~=3.8" files = [ - {file = "apache_airflow_providers_google-10.16.0-py3-none-any.whl", hash = "sha256:d9e3f04cc9c41ba077f8607e062a975ff3e18a583c51ac56d808455a2074e6ae"}, - {file = "apache_airflow_providers_google-10.16.0.tar.gz", hash = "sha256:dde9ce5b6873558c92438fad3832a63345072736c69222de3246a1d7e6f109f1"}, + {file = "apache_airflow_providers_google-10.15.0-py3-none-any.whl", hash = "sha256:70d2d4feb66f06cd750ea673344f3be20d2d575c9645f7e2b030c73551a297fc"}, + {file = "apache_airflow_providers_google-10.15.0.tar.gz", hash = "sha256:ff48fa0a29abec2645a8008c47d0a84a759b7203412707a5e2fc01558c4052a3"}, ] [package.dependencies] @@ -524,7 +509,7 @@ grpcio-gcp = ">=0.2.2" httpx = "*" json-merge-patch = ">=0.2" looker-sdk = ">=22.2.0" -pandas = ">=1.2.5,<2.2" +pandas = ">=1.2.5" pandas-gbq = "*" proto-plus = ">=1.19.6" PyOpenSSL = "*" @@ -553,49 +538,49 @@ trino = ["apache-airflow-providers-trino"] [[package]] name = "apache-airflow-providers-http" -version = "4.10.0" -description = "Provider package apache-airflow-providers-http for Apache Airflow" +version = "4.6.0" +description = "Provider for Apache Airflow. Implements apache-airflow-providers-http package" optional = false python-versions = "~=3.8" files = [ - {file = "apache_airflow_providers_http-4.10.0-py3-none-any.whl", hash = "sha256:3c9af9a64954973a3bc31d33adf145b9b4273e5194603bee86c4fad6c51d872f"}, - {file = "apache_airflow_providers_http-4.10.0.tar.gz", hash = "sha256:f8280633053f25d7d11ef33f26aa7225fb081400a0dd97c6af9e0a9f59b26566"}, + {file = "apache-airflow-providers-http-4.6.0.tar.gz", hash = "sha256:c9b08782031daa8c18ba62c2c8ae687659968d636fbf6b9fbed488d1fe4f0162"}, + {file = "apache_airflow_providers_http-4.6.0-py3-none-any.whl", hash = "sha256:ca3cf6c209cb27144fd4d676ee5feef96a1ed67002f13bf4a8b74d859ef8b56c"}, ] [package.dependencies] -aiohttp = ">=3.9.2" -apache-airflow = ">=2.6.0" +aiohttp = "*" +apache-airflow = ">=2.5.0" asgiref = "*" -requests = ">=2.27.0,<3" -requests_toolbelt = "*" +requests = ">=2.26.0" +requests-toolbelt = "*" [[package]] name = "apache-airflow-providers-imap" -version = "3.5.0" -description = "Provider package apache-airflow-providers-imap for Apache Airflow" +version = "3.4.0" +description = "Provider for Apache Airflow. Implements apache-airflow-providers-imap package" optional = false python-versions = "~=3.8" files = [ - {file = "apache_airflow_providers_imap-3.5.0-py3-none-any.whl", hash = "sha256:f5f26c662cff27a532c6a7c3ed0a8bc9c7fcae14634424e82e85150e631a2adb"}, - {file = "apache_airflow_providers_imap-3.5.0.tar.gz", hash = "sha256:d50929801cb9b7abcea33799e8b3cd64b756bd42530a44281febaffcdb30998f"}, + {file = "apache-airflow-providers-imap-3.4.0.tar.gz", hash = "sha256:347f78efa0e1353f90be78244fad0136d7c0cb1af25b9a3ba296d4e31fb53f6c"}, + {file = "apache_airflow_providers_imap-3.4.0-py3-none-any.whl", hash = "sha256:4972793b0dbb25d5372fe1bf174329958075985c0beca013459ec89fcbbca620"}, ] [package.dependencies] -apache-airflow = ">=2.6.0" +apache-airflow = ">=2.5.0" [[package]] name = "apache-airflow-providers-sqlite" -version = "3.7.1" -description = "Provider package apache-airflow-providers-sqlite for Apache Airflow" +version = "3.5.0" +description = "Provider for Apache Airflow. Implements apache-airflow-providers-sqlite package" optional = false python-versions = "~=3.8" files = [ - {file = "apache_airflow_providers_sqlite-3.7.1-py3-none-any.whl", hash = "sha256:49af9ce1012e2d52ef89dc5d5832ff9bc245330635aa4f011590dc19113a380f"}, - {file = "apache_airflow_providers_sqlite-3.7.1.tar.gz", hash = "sha256:0dd8967ac1f3fb518cef278611a2f8bbae19421e215e0bf4ede01542d4af86cf"}, + {file = "apache-airflow-providers-sqlite-3.5.0.tar.gz", hash = "sha256:6f47c25d7fb026fa8b8b4dc8edfee1491998255048255625716fceaae2c67024"}, + {file = "apache_airflow_providers_sqlite-3.5.0-py3-none-any.whl", hash = "sha256:7baba67c9ddf75b31d8197e22ca491c2e1cf9e4c6306c1788c150b5457c3a182"}, ] [package.dependencies] -apache-airflow = ">=2.6.0" +apache-airflow = ">=2.5.0" apache-airflow-providers-common-sql = ">=1.3.1" [package.extras] @@ -603,13 +588,13 @@ common-sql = ["apache-airflow-providers-common-sql"] [[package]] name = "apispec" -version = "6.5.0" +version = "6.3.0" description = "A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)." optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "apispec-6.5.0-py3-none-any.whl", hash = "sha256:708a9a6e6ccd5e69cd73bf75b41e7ed5ea8866f8a4539f419db3df642789bb1e"}, - {file = "apispec-6.5.0.tar.gz", hash = "sha256:c03a4d848ae70e9bb2269dd4e4d30d8ec7ec069d24ef9e9b422e3cbd1a9fe794"}, + {file = "apispec-6.3.0-py3-none-any.whl", hash = "sha256:95a0b9355785df998bb0e9b939237a30ee4c7428fd6ef97305eae3da06b9b339"}, + {file = "apispec-6.3.0.tar.gz", hash = "sha256:6cb08d92ce73ff0b3bf46cb2ea5c00d57289b0f279fb0256a3df468182ba5344"}, ] [package.dependencies] @@ -617,10 +602,12 @@ packaging = ">=21.3" PyYAML = {version = ">=3.10", optional = true, markers = "extra == \"yaml\""} [package.extras] -dev = ["apispec[tests]", "pre-commit (>=3.5,<4.0)", "tox"] -docs = ["apispec[marshmallow]", "pyyaml (==6.0.1)", "sphinx (==7.2.6)", "sphinx-issues (==4.0.0)", "sphinx-rtd-theme (==2.0.0)"] +dev = ["PyYAML (>=3.10)", "flake8 (==5.0.4)", "flake8-bugbear (==22.9.23)", "marshmallow (>=3.13.0)", "mypy (==0.982)", "openapi-spec-validator (<0.5)", "prance[osv] (>=0.11)", "pre-commit (>=2.4,<3.0)", "pytest", "tox", "types-PyYAML"] +docs = ["marshmallow (>=3.13.0)", "pyyaml (==6.0)", "sphinx (==5.2.3)", "sphinx-issues (==3.0.1)", "sphinx-rtd-theme (==1.0.0)"] +lint = ["flake8 (==5.0.4)", "flake8-bugbear (==22.9.23)", "mypy (==0.982)", "pre-commit (>=2.4,<3.0)", "types-PyYAML"] marshmallow = ["marshmallow (>=3.18.0)"] -tests = ["apispec[marshmallow,yaml]", "openapi-spec-validator (==0.7.1)", "pytest"] +tests = ["PyYAML (>=3.10)", "marshmallow (>=3.13.0)", "openapi-spec-validator (<0.5)", "prance[osv] (>=0.11)", "pytest"] +validation = ["openapi-spec-validator (<0.5)", "prance[osv] (>=0.11)"] yaml = ["PyYAML (>=3.10)"] [[package]] @@ -636,24 +623,24 @@ files = [ [[package]] name = "appnope" -version = "0.1.4" +version = "0.1.3" description = "Disable App Nap on macOS >= 10.9" optional = false -python-versions = ">=3.6" +python-versions = "*" files = [ - {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, - {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, + {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, + {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, ] [[package]] name = "argcomplete" -version = "3.2.3" +version = "3.1.2" description = "Bash tab completion for argparse" optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" files = [ - {file = "argcomplete-3.2.3-py3-none-any.whl", hash = "sha256:c12355e0494c76a2a7b73e3a59b09024ca0ba1e279fb9ed6c1b82d5b74b6a70c"}, - {file = "argcomplete-3.2.3.tar.gz", hash = "sha256:bf7900329262e481be5a15f56f19736b376df6f82ed27576fa893652c5de6c23"}, + {file = "argcomplete-3.1.2-py3-none-any.whl", hash = "sha256:d97c036d12a752d1079f190bc1521c545b941fda89ad85d15afa909b4d1b9a99"}, + {file = "argcomplete-3.1.2.tar.gz", hash = "sha256:d5d1e5efd41435260b8f85673b74ea2e883affcbec9f4230c582689e8e78251b"}, ] [package.extras] @@ -707,22 +694,21 @@ files = [ [[package]] name = "attrs" -version = "23.2.0" +version = "23.1.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"}, + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] +dev = ["attrs[docs,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]"] +tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] [[package]] name = "avro" @@ -751,17 +737,17 @@ files = [ [[package]] name = "azure-core" -version = "1.30.1" +version = "1.29.5" description = "Microsoft Azure Core Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-core-1.30.1.tar.gz", hash = "sha256:26273a254131f84269e8ea4464f3560c731f29c0c1f69ac99010845f239c1a8f"}, - {file = "azure_core-1.30.1-py3-none-any.whl", hash = "sha256:7c5ee397e48f281ec4dd773d67a0a47a0962ed6fa833036057f9ea067f688e74"}, + {file = "azure-core-1.29.5.tar.gz", hash = "sha256:52983c89d394c6f881a121e5101c5fa67278ca3b1f339c8fb2ef39230c70e9ac"}, + {file = "azure_core-1.29.5-py3-none-any.whl", hash = "sha256:0fa04b7b1f7d44a4fb8468c4093deb2ea01fdf4faddbf802ed9205615f99d68c"}, ] [package.dependencies] -requests = ">=2.21.0" +requests = ">=2.18.4" six = ">=1.11.0" typing-extensions = ">=4.6.0" @@ -817,13 +803,13 @@ msrest = ">=0.6.21" [[package]] name = "azure-storage-blob" -version = "12.19.1" +version = "12.18.3" description = "Microsoft Azure Blob Storage Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-storage-blob-12.19.1.tar.gz", hash = "sha256:13e16ba42fc54ac2c7e8f976062173a5c82b9ec0594728e134aac372965a11b0"}, - {file = "azure_storage_blob-12.19.1-py3-none-any.whl", hash = "sha256:c5530dc51c21c9564e4eb706cd499befca8819b10dd89716d3fc90d747556243"}, + {file = "azure-storage-blob-12.18.3.tar.gz", hash = "sha256:d8ced0deee3367fa3d4f3d1a03cd9edadf4440c0a371f503d623fa6c807554ee"}, + {file = "azure_storage_blob-12.18.3-py3-none-any.whl", hash = "sha256:c278dde2ac41857a68d615c9f2b36d894ba877a7e84d62795603c7e79d0bb5e9"}, ] [package.dependencies] @@ -837,13 +823,13 @@ aio = ["azure-core[aio] (>=1.28.0,<2.0.0)"] [[package]] name = "babel" -version = "2.14.0" +version = "2.13.1" description = "Internationalization utilities" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, - {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, + {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, + {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, ] [package.extras] @@ -862,45 +848,42 @@ files = [ [[package]] name = "beautifulsoup4" -version = "4.12.3" +version = "4.12.2" description = "Screen-scraping library" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, - {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, + {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, + {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, ] [package.dependencies] soupsieve = ">1.2" [package.extras] -cchardet = ["cchardet"] -chardet = ["chardet"] -charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] [[package]] name = "blinker" -version = "1.7.0" +version = "1.6.3" description = "Fast, simple object-to-object and broadcast signaling" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "blinker-1.7.0-py3-none-any.whl", hash = "sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9"}, - {file = "blinker-1.7.0.tar.gz", hash = "sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182"}, + {file = "blinker-1.6.3-py3-none-any.whl", hash = "sha256:296320d6c28b006eb5e32d4712202dbcdcbf5dc482da298c2f44881c43884aaa"}, + {file = "blinker-1.6.3.tar.gz", hash = "sha256:152090d27c1c5c722ee7e48504b02d76502811ce02e1523553b4cf8c8b3d3a8d"}, ] [[package]] name = "bokeh" -version = "3.3.4" +version = "3.3.0" description = "Interactive plots and applications in the browser from Python" optional = false python-versions = ">=3.9" files = [ - {file = "bokeh-3.3.4-py3-none-any.whl", hash = "sha256:ad7b6f89d0a7c2be01eff1db0ca24e2755ac41de14539db919a62e791809c309"}, - {file = "bokeh-3.3.4.tar.gz", hash = "sha256:73b7982dc2b8df15bf660cdddc8d3825e829195c438015a5d09824f1a7028368"}, + {file = "bokeh-3.3.0-py3-none-any.whl", hash = "sha256:65e36824c99fd46530c559263c6d14eabed6945370cd3beffc2eeedb62d6db6d"}, + {file = "bokeh-3.3.0.tar.gz", hash = "sha256:cdbe268f842c139ba8fa0fb43c0c55c172c8215ec5a69a2629482c63c9d4039c"}, ] [package.dependencies] @@ -916,32 +899,32 @@ xyzservices = ">=2021.09.1" [[package]] name = "boto3" -version = "1.34.58" +version = "1.28.75" description = "The AWS SDK for Python" optional = false -python-versions = ">= 3.8" +python-versions = ">= 3.7" files = [ - {file = "boto3-1.34.58-py3-none-any.whl", hash = "sha256:d213a6fea9db6d537b1e65924133d8279ada79a40bc840d4930e1b64be869d4c"}, - {file = "boto3-1.34.58.tar.gz", hash = "sha256:09e3d17c718bc938a76774f31bc557b20733c0f5f9135a3e7782b55f3459cbdd"}, + {file = "boto3-1.28.75-py3-none-any.whl", hash = "sha256:b959decd588982bc919bfcbebc7916926b05003a0093e7f2845362da4f5dd9fc"}, + {file = "boto3-1.28.75.tar.gz", hash = "sha256:63d772a784e8e35ee51974eb1c20dff5faa51b007d22c5647783f18966bf4042"}, ] [package.dependencies] -botocore = ">=1.34.58,<1.35.0" +botocore = ">=1.31.75,<1.32.0" jmespath = ">=0.7.1,<2.0.0" -s3transfer = ">=0.10.0,<0.11.0" +s3transfer = ">=0.7.0,<0.8.0" [package.extras] crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.58" +version = "1.31.75" description = "Low-level, data-driven core of boto 3." optional = false -python-versions = ">= 3.8" +python-versions = ">= 3.7" files = [ - {file = "botocore-1.34.58-py3-none-any.whl", hash = "sha256:8086a6ea27d0f658505ac81e6d7314e013561469c40db9b5a4692127eb5c97cf"}, - {file = "botocore-1.34.58.tar.gz", hash = "sha256:d75216952886dc513ea1b5e2979a6af08feed2f537e3fc102e4a0a2ead563a35"}, + {file = "botocore-1.31.75-py3-none-any.whl", hash = "sha256:fa078c4aa9a5777b3ede756540e62fec551e13d39cf7abf9a37bb81981496d68"}, + {file = "botocore-1.31.75.tar.gz", hash = "sha256:d704ea9867b2227de0350bc2a5ca2543349e164ecb5d15edbfacbb05f2056482"}, ] [package.dependencies] @@ -950,7 +933,7 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = {version = ">=1.25.4,<2.1", markers = "python_version >= \"3.10\""} [package.extras] -crt = ["awscrt (==0.19.19)"] +crt = ["awscrt (==0.16.26)"] [[package]] name = "bracex" @@ -976,49 +959,49 @@ files = [ [[package]] name = "cachetools" -version = "5.3.3" +version = "5.3.2" description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.3-py3-none-any.whl", hash = "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945"}, - {file = "cachetools-5.3.3.tar.gz", hash = "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"}, + {file = "cachetools-5.3.2-py3-none-any.whl", hash = "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1"}, + {file = "cachetools-5.3.2.tar.gz", hash = "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"}, ] [[package]] name = "cattrs" -version = "23.2.3" +version = "23.1.2" description = "Composable complex class support for attrs and dataclasses." optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "cattrs-23.2.3-py3-none-any.whl", hash = "sha256:0341994d94971052e9ee70662542699a3162ea1e0c62f7ce1b4a57f563685108"}, - {file = "cattrs-23.2.3.tar.gz", hash = "sha256:a934090d95abaa9e911dac357e3a8699e0b4b14f8529bcc7d2b1ad9d51672b9f"}, + {file = "cattrs-23.1.2-py3-none-any.whl", hash = "sha256:b2bb14311ac17bed0d58785e5a60f022e5431aca3932e3fc5cc8ed8639de50a4"}, + {file = "cattrs-23.1.2.tar.gz", hash = "sha256:db1c821b8c537382b2c7c66678c3790091ca0275ac486c76f3c8f3920e83c657"}, ] [package.dependencies] -attrs = ">=23.1.0" -exceptiongroup = {version = ">=1.1.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.1.0,<4.6.3 || >4.6.3", markers = "python_version < \"3.11\""} +attrs = ">=20" +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +typing_extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} [package.extras] -bson = ["pymongo (>=4.4.0)"] -cbor2 = ["cbor2 (>=5.4.6)"] -msgpack = ["msgpack (>=1.0.5)"] -orjson = ["orjson (>=3.9.2)"] -pyyaml = ["pyyaml (>=6.0)"] -tomlkit = ["tomlkit (>=0.11.8)"] -ujson = ["ujson (>=5.7.0)"] +bson = ["pymongo (>=4.2.0,<5.0.0)"] +cbor2 = ["cbor2 (>=5.4.6,<6.0.0)"] +msgpack = ["msgpack (>=1.0.2,<2.0.0)"] +orjson = ["orjson (>=3.5.2,<4.0.0)"] +pyyaml = ["PyYAML (>=6.0,<7.0)"] +tomlkit = ["tomlkit (>=0.11.4,<0.12.0)"] +ujson = ["ujson (>=5.4.0,<6.0.0)"] [[package]] name = "certifi" -version = "2024.2.2" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] [[package]] @@ -1098,112 +1081,112 @@ files = [ [[package]] name = "chardet" -version = "5.2.0" -description = "Universal encoding detector for Python 3" +version = "4.0.0" +description = "Universal encoding detector for Python 2 and 3" optional = false -python-versions = ">=3.7" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, - {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, + {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, + {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, ] [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.3.1" 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.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"}, + {file = "charset-normalizer-3.3.1.tar.gz", hash = "sha256:d9137a876020661972ca6eec0766d81aef8a5627df628b664b234b73396e727e"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8aee051c89e13565c6bd366813c386939f8e928af93c29fda4af86d25b73d8f8"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:352a88c3df0d1fa886562384b86f9a9e27563d4704ee0e9d56ec6fcd270ea690"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:223b4d54561c01048f657fa6ce41461d5ad8ff128b9678cfe8b2ecd951e3f8a2"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f861d94c2a450b974b86093c6c027888627b8082f1299dfd5a4bae8e2292821"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1171ef1fc5ab4693c5d151ae0fdad7f7349920eabbaca6271f95969fa0756c2d"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28f512b9a33235545fbbdac6a330a510b63be278a50071a336afc1b78781b147"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0e842112fe3f1a4ffcf64b06dc4c61a88441c2f02f373367f7b4c1aa9be2ad5"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f9bc2ce123637a60ebe819f9fccc614da1bcc05798bbbaf2dd4ec91f3e08846"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f194cce575e59ffe442c10a360182a986535fd90b57f7debfaa5c845c409ecc3"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9a74041ba0bfa9bc9b9bb2cd3238a6ab3b7618e759b41bd15b5f6ad958d17605"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b578cbe580e3b41ad17b1c428f382c814b32a6ce90f2d8e39e2e635d49e498d1"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6db3cfb9b4fcecb4390db154e75b49578c87a3b9979b40cdf90d7e4b945656e1"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:debb633f3f7856f95ad957d9b9c781f8e2c6303ef21724ec94bea2ce2fcbd056"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-win32.whl", hash = "sha256:87071618d3d8ec8b186d53cb6e66955ef2a0e4fa63ccd3709c0c90ac5a43520f"}, + {file = "charset_normalizer-3.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:e372d7dfd154009142631de2d316adad3cc1c36c32a38b16a4751ba78da2a397"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae4070f741f8d809075ef697877fd350ecf0b7c5837ed68738607ee0a2c572cf"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:58e875eb7016fd014c0eea46c6fa92b87b62c0cb31b9feae25cbbe62c919f54d"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dbd95e300367aa0827496fe75a1766d198d34385a58f97683fe6e07f89ca3e3c"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de0b4caa1c8a21394e8ce971997614a17648f94e1cd0640fbd6b4d14cab13a72"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:985c7965f62f6f32bf432e2681173db41336a9c2611693247069288bcb0c7f8b"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a15c1fe6d26e83fd2e5972425a772cca158eae58b05d4a25a4e474c221053e2d"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae55d592b02c4349525b6ed8f74c692509e5adffa842e582c0f861751701a673"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be4d9c2770044a59715eb57c1144dedea7c5d5ae80c68fb9959515037cde2008"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:851cf693fb3aaef71031237cd68699dded198657ec1e76a76eb8be58c03a5d1f"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:31bbaba7218904d2eabecf4feec0d07469284e952a27400f23b6628439439fa7"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:871d045d6ccc181fd863a3cd66ee8e395523ebfbc57f85f91f035f50cee8e3d4"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:501adc5eb6cd5f40a6f77fbd90e5ab915c8fd6e8c614af2db5561e16c600d6f3"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f5fb672c396d826ca16a022ac04c9dce74e00a1c344f6ad1a0fdc1ba1f332213"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-win32.whl", hash = "sha256:bb06098d019766ca16fc915ecaa455c1f1cd594204e7f840cd6258237b5079a8"}, + {file = "charset_normalizer-3.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:8af5a8917b8af42295e86b64903156b4f110a30dca5f3b5aedea123fbd638bff"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7ae8e5142dcc7a49168f4055255dbcced01dc1714a90a21f87448dc8d90617d1"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5b70bab78accbc672f50e878a5b73ca692f45f5b5e25c8066d748c09405e6a55"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ceca5876032362ae73b83347be8b5dbd2d1faf3358deb38c9c88776779b2e2f"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34d95638ff3613849f473afc33f65c401a89f3b9528d0d213c7037c398a51296"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9edbe6a5bf8b56a4a84533ba2b2f489d0046e755c29616ef8830f9e7d9cf5728"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6a02a3c7950cafaadcd46a226ad9e12fc9744652cc69f9e5534f98b47f3bbcf"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10b8dd31e10f32410751b3430996f9807fc4d1587ca69772e2aa940a82ab571a"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edc0202099ea1d82844316604e17d2b175044f9bcb6b398aab781eba957224bd"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b891a2f68e09c5ef989007fac11476ed33c5c9994449a4e2c3386529d703dc8b"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:71ef3b9be10070360f289aea4838c784f8b851be3ba58cf796262b57775c2f14"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:55602981b2dbf8184c098bc10287e8c245e351cd4fdcad050bd7199d5a8bf514"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:46fb9970aa5eeca547d7aa0de5d4b124a288b42eaefac677bde805013c95725c"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:520b7a142d2524f999447b3a0cf95115df81c4f33003c51a6ab637cbda9d0bf4"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-win32.whl", hash = "sha256:8ec8ef42c6cd5856a7613dcd1eaf21e5573b2185263d87d27c8edcae33b62a61"}, + {file = "charset_normalizer-3.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:baec8148d6b8bd5cee1ae138ba658c71f5b03e0d69d5907703e3e1df96db5e41"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63a6f59e2d01310f754c270e4a257426fe5a591dc487f1983b3bbe793cf6bac6"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d6bfc32a68bc0933819cfdfe45f9abc3cae3877e1d90aac7259d57e6e0f85b1"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f3100d86dcd03c03f7e9c3fdb23d92e32abbca07e7c13ebd7ddfbcb06f5991f"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39b70a6f88eebe239fa775190796d55a33cfb6d36b9ffdd37843f7c4c1b5dc67"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e12f8ee80aa35e746230a2af83e81bd6b52daa92a8afaef4fea4a2ce9b9f4fa"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b6cefa579e1237ce198619b76eaa148b71894fb0d6bcf9024460f9bf30fd228"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:61f1e3fb621f5420523abb71f5771a204b33c21d31e7d9d86881b2cffe92c47c"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4f6e2a839f83a6a76854d12dbebde50e4b1afa63e27761549d006fa53e9aa80e"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:1ec937546cad86d0dce5396748bf392bb7b62a9eeb8c66efac60e947697f0e58"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:82ca51ff0fc5b641a2d4e1cc8c5ff108699b7a56d7f3ad6f6da9dbb6f0145b48"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:633968254f8d421e70f91c6ebe71ed0ab140220469cf87a9857e21c16687c034"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-win32.whl", hash = "sha256:c0c72d34e7de5604df0fde3644cc079feee5e55464967d10b24b1de268deceb9"}, + {file = "charset_normalizer-3.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:63accd11149c0f9a99e3bc095bbdb5a464862d77a7e309ad5938fbc8721235ae"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5a3580a4fdc4ac05f9e53c57f965e3594b2f99796231380adb2baaab96e22761"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2465aa50c9299d615d757c1c888bc6fef384b7c4aec81c05a0172b4400f98557"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cb7cd68814308aade9d0c93c5bd2ade9f9441666f8ba5aa9c2d4b389cb5e2a45"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91e43805ccafa0a91831f9cd5443aa34528c0c3f2cc48c4cb3d9a7721053874b"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:854cc74367180beb327ab9d00f964f6d91da06450b0855cbbb09187bcdb02de5"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c15070ebf11b8b7fd1bfff7217e9324963c82dbdf6182ff7050519e350e7ad9f"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c4c99f98fc3a1835af8179dcc9013f93594d0670e2fa80c83aa36346ee763d2"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fb765362688821404ad6cf86772fc54993ec11577cd5a92ac44b4c2ba52155b"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dced27917823df984fe0c80a5c4ad75cf58df0fbfae890bc08004cd3888922a2"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a66bcdf19c1a523e41b8e9d53d0cedbfbac2e93c649a2e9502cb26c014d0980c"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ecd26be9f112c4f96718290c10f4caea6cc798459a3a76636b817a0ed7874e42"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f70fd716855cd3b855316b226a1ac8bdb3caf4f7ea96edcccc6f484217c9597"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:17a866d61259c7de1bdadef418a37755050ddb4b922df8b356503234fff7932c"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-win32.whl", hash = "sha256:548eefad783ed787b38cb6f9a574bd8664468cc76d1538215d510a3cd41406cb"}, + {file = "charset_normalizer-3.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:45f053a0ece92c734d874861ffe6e3cc92150e32136dd59ab1fb070575189c97"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bc791ec3fd0c4309a753f95bb6c749ef0d8ea3aea91f07ee1cf06b7b02118f2f"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0c8c61fb505c7dad1d251c284e712d4e0372cef3b067f7ddf82a7fa82e1e9a93"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2c092be3885a1b7899cd85ce24acedc1034199d6fca1483fa2c3a35c86e43041"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c2000c54c395d9e5e44c99dc7c20a64dc371f777faf8bae4919ad3e99ce5253e"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4cb50a0335382aac15c31b61d8531bc9bb657cfd848b1d7158009472189f3d62"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c30187840d36d0ba2893bc3271a36a517a717f9fd383a98e2697ee890a37c273"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe81b35c33772e56f4b6cf62cf4aedc1762ef7162a31e6ac7fe5e40d0149eb67"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0bf89afcbcf4d1bb2652f6580e5e55a840fdf87384f6063c4a4f0c95e378656"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:06cf46bdff72f58645434d467bf5228080801298fbba19fe268a01b4534467f5"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3c66df3f41abee950d6638adc7eac4730a306b022570f71dd0bd6ba53503ab57"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd805513198304026bd379d1d516afbf6c3c13f4382134a2c526b8b854da1c2e"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:9505dc359edb6a330efcd2be825fdb73ee3e628d9010597aa1aee5aa63442e97"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:31445f38053476a0c4e6d12b047b08ced81e2c7c712e5a1ad97bc913256f91b2"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-win32.whl", hash = "sha256:bd28b31730f0e982ace8663d108e01199098432a30a4c410d06fe08fdb9e93f4"}, + {file = "charset_normalizer-3.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:555fe186da0068d3354cdf4bbcbc609b0ecae4d04c921cc13e209eece7720727"}, + {file = "charset_normalizer-3.3.1-py3-none-any.whl", hash = "sha256:800561453acdecedaac137bf09cd719c7a440b6800ec182f077bb8e7025fb708"}, ] [[package]] @@ -1262,20 +1245,22 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} [[package]] name = "comm" -version = "0.2.1" +version = "0.1.4" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" files = [ - {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"}, - {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"}, + {file = "comm-0.1.4-py3-none-any.whl", hash = "sha256:6d52794cba11b36ed9860999cd10fd02d6b2eac177068fdd585e1e2f8a96e67a"}, + {file = "comm-0.1.4.tar.gz", hash = "sha256:354e40a59c9dd6db50c5cc6b4acc887d82e9603787f83b68c01a80a923984d15"}, ] [package.dependencies] traitlets = ">=4" [package.extras] +lint = ["black (>=22.6.0)", "mdformat (>0.7)", "mdformat-gfm (>=0.3.5)", "ruff (>=0.0.156)"] test = ["pytest"] +typing = ["mypy (>=0.990)"] [[package]] name = "commonmark" @@ -1293,17 +1278,17 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] [[package]] name = "configupdater" -version = "3.2" +version = "3.1.1" description = "Parser like ConfigParser but for updating configuration files" optional = false python-versions = ">=3.6" files = [ - {file = "ConfigUpdater-3.2-py2.py3-none-any.whl", hash = "sha256:0f65a041627d7693840b4dd743581db4c441c97195298a29d075f91b79539df2"}, - {file = "ConfigUpdater-3.2.tar.gz", hash = "sha256:9fdac53831c1b062929bf398b649b87ca30e7f1a735f3fbf482072804106306b"}, + {file = "ConfigUpdater-3.1.1-py2.py3-none-any.whl", hash = "sha256:805986dbeba317886c7a8d348b2e34986dc9e3128cd3761ecc35decbd372b286"}, + {file = "ConfigUpdater-3.1.1.tar.gz", hash = "sha256:46f0c74d73efa723776764b43c9739f68052495dd3d734319c1d0eb58511f15b"}, ] [package.extras] -testing = ["flake8", "pytest", "pytest-cov", "pytest-randomly", "pytest-xdist", "sphinx"] +testing = ["flake8", "pytest", "pytest-cov", "pytest-virtualenv", "pytest-xdist", "sphinx"] [[package]] name = "connexion" @@ -1336,126 +1321,134 @@ tests = ["MarkupSafe (>=0.23)", "aiohttp (>=2.3.10,<4)", "aiohttp-jinja2 (>=0.14 [[package]] name = "contourpy" -version = "1.2.0" +version = "1.1.1" description = "Python library for calculating contours of 2D quadrilateral grids" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" files = [ - {file = "contourpy-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8"}, - {file = "contourpy-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa"}, - {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9"}, - {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab"}, - {file = "contourpy-1.2.0-cp310-cp310-win32.whl", hash = "sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488"}, - {file = "contourpy-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41"}, - {file = "contourpy-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727"}, - {file = "contourpy-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686"}, - {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286"}, - {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95"}, - {file = "contourpy-1.2.0-cp311-cp311-win32.whl", hash = "sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6"}, - {file = "contourpy-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de"}, - {file = "contourpy-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0"}, - {file = "contourpy-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0"}, - {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0"}, - {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431"}, - {file = "contourpy-1.2.0-cp312-cp312-win32.whl", hash = "sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f"}, - {file = "contourpy-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9"}, - {file = "contourpy-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5fd1810973a375ca0e097dee059c407913ba35723b111df75671a1976efa04bc"}, - {file = "contourpy-1.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:999c71939aad2780f003979b25ac5b8f2df651dac7b38fb8ce6c46ba5abe6ae9"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7caf9b241464c404613512d5594a6e2ff0cc9cb5615c9475cc1d9b514218ae8"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:266270c6f6608340f6c9836a0fb9b367be61dde0c9a9a18d5ece97774105ff3e"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbd50d0a0539ae2e96e537553aff6d02c10ed165ef40c65b0e27e744a0f10af8"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11f8d2554e52f459918f7b8e6aa20ec2a3bce35ce95c1f0ef4ba36fbda306df5"}, - {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ce96dd400486e80ac7d195b2d800b03e3e6a787e2a522bfb83755938465a819e"}, - {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d3364b999c62f539cd403f8123ae426da946e142312a514162adb2addd8d808"}, - {file = "contourpy-1.2.0-cp39-cp39-win32.whl", hash = "sha256:1c88dfb9e0c77612febebb6ac69d44a8d81e3dc60f993215425b62c1161353f4"}, - {file = "contourpy-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:78e6ad33cf2e2e80c5dfaaa0beec3d61face0fb650557100ee36db808bfa6843"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be16975d94c320432657ad2402f6760990cb640c161ae6da1363051805fa8108"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b95a225d4948b26a28c08307a60ac00fb8671b14f2047fc5476613252a129776"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956"}, - {file = "contourpy-1.2.0.tar.gz", hash = "sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a"}, -] - -[package.dependencies] -numpy = ">=1.20,<2.0" + {file = "contourpy-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:46e24f5412c948d81736509377e255f6040e94216bf1a9b5ea1eaa9d29f6ec1b"}, + {file = "contourpy-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e48694d6a9c5a26ee85b10130c77a011a4fedf50a7279fa0bdaf44bafb4299d"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a66045af6cf00e19d02191ab578a50cb93b2028c3eefed999793698e9ea768ae"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ebf42695f75ee1a952f98ce9775c873e4971732a87334b099dde90b6af6a916"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6aec19457617ef468ff091669cca01fa7ea557b12b59a7908b9474bb9674cf0"}, + {file = "contourpy-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:462c59914dc6d81e0b11f37e560b8a7c2dbab6aca4f38be31519d442d6cde1a1"}, + {file = "contourpy-1.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6d0a8efc258659edc5299f9ef32d8d81de8b53b45d67bf4bfa3067f31366764d"}, + {file = "contourpy-1.1.1-cp310-cp310-win32.whl", hash = "sha256:d6ab42f223e58b7dac1bb0af32194a7b9311065583cc75ff59dcf301afd8a431"}, + {file = "contourpy-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:549174b0713d49871c6dee90a4b499d3f12f5e5f69641cd23c50a4542e2ca1eb"}, + {file = "contourpy-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:407d864db716a067cc696d61fa1ef6637fedf03606e8417fe2aeed20a061e6b2"}, + {file = "contourpy-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe80c017973e6a4c367e037cb31601044dd55e6bfacd57370674867d15a899b"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e30aaf2b8a2bac57eb7e1650df1b3a4130e8d0c66fc2f861039d507a11760e1b"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3de23ca4f381c3770dee6d10ead6fff524d540c0f662e763ad1530bde5112532"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:566f0e41df06dfef2431defcfaa155f0acfa1ca4acbf8fd80895b1e7e2ada40e"}, + {file = "contourpy-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b04c2f0adaf255bf756cf08ebef1be132d3c7a06fe6f9877d55640c5e60c72c5"}, + {file = "contourpy-1.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d0c188ae66b772d9d61d43c6030500344c13e3f73a00d1dc241da896f379bb62"}, + {file = "contourpy-1.1.1-cp311-cp311-win32.whl", hash = "sha256:0683e1ae20dc038075d92e0e0148f09ffcefab120e57f6b4c9c0f477ec171f33"}, + {file = "contourpy-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:8636cd2fc5da0fb102a2504fa2c4bea3cbc149533b345d72cdf0e7a924decc45"}, + {file = "contourpy-1.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:560f1d68a33e89c62da5da4077ba98137a5e4d3a271b29f2f195d0fba2adcb6a"}, + {file = "contourpy-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24216552104ae8f3b34120ef84825400b16eb6133af2e27a190fdc13529f023e"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56de98a2fb23025882a18b60c7f0ea2d2d70bbbcfcf878f9067234b1c4818442"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:07d6f11dfaf80a84c97f1a5ba50d129d9303c5b4206f776e94037332e298dda8"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1eaac5257a8f8a047248d60e8f9315c6cff58f7803971170d952555ef6344a7"}, + {file = "contourpy-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19557fa407e70f20bfaba7d55b4d97b14f9480856c4fb65812e8a05fe1c6f9bf"}, + {file = "contourpy-1.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:081f3c0880712e40effc5f4c3b08feca6d064cb8cfbb372ca548105b86fd6c3d"}, + {file = "contourpy-1.1.1-cp312-cp312-win32.whl", hash = "sha256:059c3d2a94b930f4dafe8105bcdc1b21de99b30b51b5bce74c753686de858cb6"}, + {file = "contourpy-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:f44d78b61740e4e8c71db1cf1fd56d9050a4747681c59ec1094750a658ceb970"}, + {file = "contourpy-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:70e5a10f8093d228bb2b552beeb318b8928b8a94763ef03b858ef3612b29395d"}, + {file = "contourpy-1.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8394e652925a18ef0091115e3cc191fef350ab6dc3cc417f06da66bf98071ae9"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5bd5680f844c3ff0008523a71949a3ff5e4953eb7701b28760805bc9bcff217"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66544f853bfa85c0d07a68f6c648b2ec81dafd30f272565c37ab47a33b220684"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0c02b75acfea5cab07585d25069207e478d12309557f90a61b5a3b4f77f46ce"}, + {file = "contourpy-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41339b24471c58dc1499e56783fedc1afa4bb018bcd035cfb0ee2ad2a7501ef8"}, + {file = "contourpy-1.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f29fb0b3f1217dfe9362ec55440d0743fe868497359f2cf93293f4b2701b8251"}, + {file = "contourpy-1.1.1-cp38-cp38-win32.whl", hash = "sha256:f9dc7f933975367251c1b34da882c4f0e0b2e24bb35dc906d2f598a40b72bfc7"}, + {file = "contourpy-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:498e53573e8b94b1caeb9e62d7c2d053c263ebb6aa259c81050766beb50ff8d9"}, + {file = "contourpy-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ba42e3810999a0ddd0439e6e5dbf6d034055cdc72b7c5c839f37a7c274cb4eba"}, + {file = "contourpy-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c06e4c6e234fcc65435223c7b2a90f286b7f1b2733058bdf1345d218cc59e34"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca6fab080484e419528e98624fb5c4282148b847e3602dc8dbe0cb0669469887"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93df44ab351119d14cd1e6b52a5063d3336f0754b72736cc63db59307dabb718"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eafbef886566dc1047d7b3d4b14db0d5b7deb99638d8e1be4e23a7c7ac59ff0f"}, + {file = "contourpy-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efe0fab26d598e1ec07d72cf03eaeeba8e42b4ecf6b9ccb5a356fde60ff08b85"}, + {file = "contourpy-1.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f08e469821a5e4751c97fcd34bcb586bc243c39c2e39321822060ba902eac49e"}, + {file = "contourpy-1.1.1-cp39-cp39-win32.whl", hash = "sha256:bfc8a5e9238232a45ebc5cb3bfee71f1167064c8d382cadd6076f0d51cff1da0"}, + {file = "contourpy-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:c84fdf3da00c2827d634de4fcf17e3e067490c4aea82833625c4c8e6cdea0887"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:229a25f68046c5cf8067d6d6351c8b99e40da11b04d8416bf8d2b1d75922521e"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10dab5ea1bd4401c9483450b5b0ba5416be799bbd50fc7a6cc5e2a15e03e8a3"}, + {file = "contourpy-1.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4f9147051cb8fdb29a51dc2482d792b3b23e50f8f57e3720ca2e3d438b7adf23"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a75cc163a5f4531a256f2c523bd80db509a49fc23721b36dd1ef2f60ff41c3cb"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b53d5769aa1f2d4ea407c65f2d1d08002952fac1d9e9d307aa2e1023554a163"}, + {file = "contourpy-1.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11b836b7dbfb74e049c302bbf74b4b8f6cb9d0b6ca1bf86cfa8ba144aedadd9c"}, + {file = "contourpy-1.1.1.tar.gz", hash = "sha256:96ba37c2e24b7212a77da85004c38e7c4d155d3e72a45eeaf22c1f03f607e8ab"}, +] + +[package.dependencies] +numpy = {version = ">=1.16,<2.0", markers = "python_version <= \"3.11\""} [package.extras] bokeh = ["bokeh", "selenium"] docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] -mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.6.1)", "types-Pillow"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.4.1)", "types-Pillow"] test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] -test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] +test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "coverage" -version = "7.4.3" +version = "7.3.2" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8580b827d4746d47294c0e0b92854c85a92c2227927433998f0d3320ae8a71b6"}, - {file = "coverage-7.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:718187eeb9849fc6cc23e0d9b092bc2348821c5e1a901c9f8975df0bc785bfd4"}, - {file = "coverage-7.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:767b35c3a246bcb55b8044fd3a43b8cd553dd1f9f2c1eeb87a302b1f8daa0524"}, - {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae7f19afe0cce50039e2c782bff379c7e347cba335429678450b8fe81c4ef96d"}, - {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba3a8aaed13770e970b3df46980cb068d1c24af1a1968b7818b69af8c4347efb"}, - {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ee866acc0861caebb4f2ab79f0b94dbfbdbfadc19f82e6e9c93930f74e11d7a0"}, - {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:506edb1dd49e13a2d4cac6a5173317b82a23c9d6e8df63efb4f0380de0fbccbc"}, - {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd6545d97c98a192c5ac995d21c894b581f1fd14cf389be90724d21808b657e2"}, - {file = "coverage-7.4.3-cp310-cp310-win32.whl", hash = "sha256:f6a09b360d67e589236a44f0c39218a8efba2593b6abdccc300a8862cffc2f94"}, - {file = "coverage-7.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:18d90523ce7553dd0b7e23cbb28865db23cddfd683a38fb224115f7826de78d0"}, - {file = "coverage-7.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cbbe5e739d45a52f3200a771c6d2c7acf89eb2524890a4a3aa1a7fa0695d2a47"}, - {file = "coverage-7.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:489763b2d037b164846ebac0cbd368b8a4ca56385c4090807ff9fad817de4113"}, - {file = "coverage-7.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:451f433ad901b3bb00184d83fd83d135fb682d780b38af7944c9faeecb1e0bfe"}, - {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcc66e222cf4c719fe7722a403888b1f5e1682d1679bd780e2b26c18bb648cdc"}, - {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ec74cfef2d985e145baae90d9b1b32f85e1741b04cd967aaf9cfa84c1334f3"}, - {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:abbbd8093c5229c72d4c2926afaee0e6e3140de69d5dcd918b2921f2f0c8baba"}, - {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:35eb581efdacf7b7422af677b92170da4ef34500467381e805944a3201df2079"}, - {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8249b1c7334be8f8c3abcaaa996e1e4927b0e5a23b65f5bf6cfe3180d8ca7840"}, - {file = "coverage-7.4.3-cp311-cp311-win32.whl", hash = "sha256:cf30900aa1ba595312ae41978b95e256e419d8a823af79ce670835409fc02ad3"}, - {file = "coverage-7.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:18c7320695c949de11a351742ee001849912fd57e62a706d83dfc1581897fa2e"}, - {file = "coverage-7.4.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b51bfc348925e92a9bd9b2e48dad13431b57011fd1038f08316e6bf1df107d10"}, - {file = "coverage-7.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d6cdecaedea1ea9e033d8adf6a0ab11107b49571bbb9737175444cea6eb72328"}, - {file = "coverage-7.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b2eccb883368f9e972e216c7b4c7c06cabda925b5f06dde0650281cb7666a30"}, - {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c00cdc8fa4e50e1cc1f941a7f2e3e0f26cb2a1233c9696f26963ff58445bac7"}, - {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4a8dd3dcf4cbd3165737358e4d7dfbd9d59902ad11e3b15eebb6393b0446e"}, - {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:062b0a75d9261e2f9c6d071753f7eef0fc9caf3a2c82d36d76667ba7b6470003"}, - {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ebe7c9e67a2d15fa97b77ea6571ce5e1e1f6b0db71d1d5e96f8d2bf134303c1d"}, - {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c0a120238dd71c68484f02562f6d446d736adcc6ca0993712289b102705a9a3a"}, - {file = "coverage-7.4.3-cp312-cp312-win32.whl", hash = "sha256:37389611ba54fd6d278fde86eb2c013c8e50232e38f5c68235d09d0a3f8aa352"}, - {file = "coverage-7.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:d25b937a5d9ffa857d41be042b4238dd61db888533b53bc76dc082cb5a15e914"}, - {file = "coverage-7.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28ca2098939eabab044ad68850aac8f8db6bf0b29bc7f2887d05889b17346454"}, - {file = "coverage-7.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:280459f0a03cecbe8800786cdc23067a8fc64c0bd51dc614008d9c36e1659d7e"}, - {file = "coverage-7.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c0cdedd3500e0511eac1517bf560149764b7d8e65cb800d8bf1c63ebf39edd2"}, - {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a9babb9466fe1da12417a4aed923e90124a534736de6201794a3aea9d98484e"}, - {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dec9de46a33cf2dd87a5254af095a409ea3bf952d85ad339751e7de6d962cde6"}, - {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:16bae383a9cc5abab9bb05c10a3e5a52e0a788325dc9ba8499e821885928968c"}, - {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2c854ce44e1ee31bda4e318af1dbcfc929026d12c5ed030095ad98197eeeaed0"}, - {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ce8c50520f57ec57aa21a63ea4f325c7b657386b3f02ccaedeccf9ebe27686e1"}, - {file = "coverage-7.4.3-cp38-cp38-win32.whl", hash = "sha256:708a3369dcf055c00ddeeaa2b20f0dd1ce664eeabde6623e516c5228b753654f"}, - {file = "coverage-7.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:1bf25fbca0c8d121a3e92a2a0555c7e5bc981aee5c3fdaf4bb7809f410f696b9"}, - {file = "coverage-7.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b253094dbe1b431d3a4ac2f053b6d7ede2664ac559705a704f621742e034f1f"}, - {file = "coverage-7.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77fbfc5720cceac9c200054b9fab50cb2a7d79660609200ab83f5db96162d20c"}, - {file = "coverage-7.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6679060424faa9c11808598504c3ab472de4531c571ab2befa32f4971835788e"}, - {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af154d617c875b52651dd8dd17a31270c495082f3d55f6128e7629658d63765"}, - {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8640f1fde5e1b8e3439fe482cdc2b0bb6c329f4bb161927c28d2e8879c6029ee"}, - {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:69b9f6f66c0af29642e73a520b6fed25ff9fd69a25975ebe6acb297234eda501"}, - {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0842571634f39016a6c03e9d4aba502be652a6e4455fadb73cd3a3a49173e38f"}, - {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a78ed23b08e8ab524551f52953a8a05d61c3a760781762aac49f8de6eede8c45"}, - {file = "coverage-7.4.3-cp39-cp39-win32.whl", hash = "sha256:c0524de3ff096e15fcbfe8f056fdb4ea0bf497d584454f344d59fce069d3e6e9"}, - {file = "coverage-7.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:0209a6369ccce576b43bb227dc8322d8ef9e323d089c6f3f26a597b09cb4d2aa"}, - {file = "coverage-7.4.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:7cbde573904625509a3f37b6fecea974e363460b556a627c60dc2f47e2fffa51"}, - {file = "coverage-7.4.3.tar.gz", hash = "sha256:276f6077a5c61447a48d133ed13e759c09e62aff0dc84274a68dc18660104d52"}, + {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, + {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, + {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, + {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, + {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, + {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, + {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, + {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, + {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, + {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, + {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, + {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, + {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, + {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, + {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, + {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, + {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, + {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, + {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, + {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, + {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, + {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, + {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, + {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, + {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, + {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, + {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, + {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, + {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, + {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, + {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, + {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, ] [package.dependencies] @@ -1466,13 +1459,12 @@ toml = ["tomli"] [[package]] name = "cron-descriptor" -version = "1.4.3" +version = "1.4.0" description = "A Python library that converts cron expressions into human readable strings." optional = false python-versions = "*" files = [ - {file = "cron_descriptor-1.4.3-py3-none-any.whl", hash = "sha256:a67ba21804983b1427ed7f3e1ec27ee77bf24c652b0430239c268c5ddfbf9dc0"}, - {file = "cron_descriptor-1.4.3.tar.gz", hash = "sha256:7b1a00d7d25d6ae6896c0da4457e790b98cba778398a3d48e341e5e0d33f0488"}, + {file = "cron_descriptor-1.4.0.tar.gz", hash = "sha256:b6ff4e3a988d7ca04a4ab150248e9f166fb7a5c828a85090e75bcc25aa93b4dd"}, ] [package.extras] @@ -1480,13 +1472,13 @@ dev = ["polib"] [[package]] name = "croniter" -version = "2.0.2" +version = "2.0.1" description = "croniter provides iteration for datetime object with cron like format" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "croniter-2.0.2-py2.py3-none-any.whl", hash = "sha256:78bf110a2c7dbbfdd98b926318ae6c64a731a4c637c7befe3685755110834746"}, - {file = "croniter-2.0.2.tar.gz", hash = "sha256:8bff16c9af4ef1fb6f05416973b8f7cb54997c02f2f8365251f9bf1dded91866"}, + {file = "croniter-2.0.1-py2.py3-none-any.whl", hash = "sha256:4cb064ce2d8f695b3b078be36ff50115cf8ac306c10a7e8653ee2a5b534673d7"}, + {file = "croniter-2.0.1.tar.gz", hash = "sha256:d199b2ec3ea5e82988d1f72022433c5f9302b3b3ea9e6bfd6a1518f6ea5e700a"}, ] [package.dependencies] @@ -1495,48 +1487,49 @@ pytz = ">2021.1" [[package]] name = "cryptography" -version = "41.0.7" +version = "38.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" 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-38.0.4-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:2fa36a7b2cc0998a3a4d5af26ccb6273f3df133d61da2ba13b3286261e7efb70"}, + {file = "cryptography-38.0.4-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:1f13ddda26a04c06eb57119caf27a524ccae20533729f4b1e4a69b54e07035eb"}, + {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:2ec2a8714dd005949d4019195d72abed84198d877112abb5a27740e217e0ea8d"}, + {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50a1494ed0c3f5b4d07650a68cd6ca62efe8b596ce743a5c94403e6f11bf06c1"}, + {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a10498349d4c8eab7357a8f9aa3463791292845b79597ad1b98a543686fb1ec8"}, + {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:10652dd7282de17990b88679cb82f832752c4e8237f0c714be518044269415db"}, + {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:bfe6472507986613dc6cc00b3d492b2f7564b02b3b3682d25ca7f40fa3fd321b"}, + {file = "cryptography-38.0.4-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ce127dd0a6a0811c251a6cddd014d292728484e530d80e872ad9806cfb1c5b3c"}, + {file = "cryptography-38.0.4-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:53049f3379ef05182864d13bb9686657659407148f901f3f1eee57a733fb4b00"}, + {file = "cryptography-38.0.4-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8a4b2bdb68a447fadebfd7d24855758fe2d6fecc7fed0b78d190b1af39a8e3b0"}, + {file = "cryptography-38.0.4-cp36-abi3-win32.whl", hash = "sha256:1d7e632804a248103b60b16fb145e8df0bc60eed790ece0d12efe8cd3f3e7744"}, + {file = "cryptography-38.0.4-cp36-abi3-win_amd64.whl", hash = "sha256:8e45653fb97eb2f20b8c96f9cd2b3a0654d742b47d638cf2897afbd97f80fa6d"}, + {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca57eb3ddaccd1112c18fc80abe41db443cc2e9dcb1917078e02dfa010a4f353"}, + {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:c9e0d79ee4c56d841bd4ac6e7697c8ff3c8d6da67379057f29e66acffcd1e9a7"}, + {file = "cryptography-38.0.4-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0e70da4bdff7601b0ef48e6348339e490ebfb0cbe638e083c9c41fb49f00c8bd"}, + {file = "cryptography-38.0.4-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:998cd19189d8a747b226d24c0207fdaa1e6658a1d3f2494541cb9dfbf7dcb6d2"}, + {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67461b5ebca2e4c2ab991733f8ab637a7265bb582f07c7c88914b5afb88cb95b"}, + {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:4eb85075437f0b1fd8cd66c688469a0c4119e0ba855e3fef86691971b887caf6"}, + {file = "cryptography-38.0.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3178d46f363d4549b9a76264f41c6948752183b3f587666aff0555ac50fd7876"}, + {file = "cryptography-38.0.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6391e59ebe7c62d9902c24a4d8bcbc79a68e7c4ab65863536127c8a9cd94043b"}, + {file = "cryptography-38.0.4-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:78e47e28ddc4ace41dd38c42e6feecfdadf9c3be2af389abbfeef1ff06822285"}, + {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fb481682873035600b5502f0015b664abc26466153fab5c6bc92c1ea69d478b"}, + {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:4367da5705922cf7070462e964f66e4ac24162e22ab0a2e9d31f1b270dd78083"}, + {file = "cryptography-38.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b4cad0cea995af760f82820ab4ca54e5471fc782f70a007f31531957f43e9dee"}, + {file = "cryptography-38.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:80ca53981ceeb3241998443c4964a387771588c4e4a5d92735a493af868294f9"}, + {file = "cryptography-38.0.4.tar.gz", hash = "sha256:175c1a818b87c9ac80bb7377f5520b7f31b3ef2a0004e2420319beadedb67290"}, ] [package.dependencies] cffi = ">=1.12" [package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] +docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] -nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] -sdist = ["build"] +pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] +sdist = ["setuptools-rust (>=0.11.4)"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] +test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] [[package]] name = "darglint" @@ -1551,13 +1544,13 @@ files = [ [[package]] name = "db-dtypes" -version = "1.2.0" +version = "1.1.1" description = "Pandas Data Types for SQL systems (BigQuery, Spanner)" optional = false python-versions = ">=3.7" files = [ - {file = "db-dtypes-1.2.0.tar.gz", hash = "sha256:3531bb1fb8b5fbab33121fe243ccc2ade16ab2524f4c113b05cc702a1908e6ea"}, - {file = "db_dtypes-1.2.0-py2.py3-none-any.whl", hash = "sha256:6320bddd31d096447ef749224d64aab00972ed20e4392d86f7d8b81ad79f7ff0"}, + {file = "db-dtypes-1.1.1.tar.gz", hash = "sha256:ab485c85fef2454f3182427def0b0a3ab179b2871542787d33ba519d62078883"}, + {file = "db_dtypes-1.1.1-py2.py3-none-any.whl", hash = "sha256:23be34ea2bc91065447ecea4d5f107e46d1de223d152e69fa73673a62d5bd27d"}, ] [package.dependencies] @@ -1568,44 +1561,40 @@ pyarrow = ">=3.0.0" [[package]] name = "dbldatagen" -version = "0.3.6" +version = "0.3.5" description = "Databricks Labs - PySpark Synthetic Data Generator" optional = false python-versions = ">=3.8.10" files = [ - {file = "dbldatagen-0.3.6-py3-none-any.whl", hash = "sha256:610c8568197d20c27835b92f0db86ee2bc5f339568cfc5637d4280ba30dd10fa"}, - {file = "dbldatagen-0.3.6.tar.gz", hash = "sha256:e360fba8cc4393b53214daf708444c9d4843903d05858a25b830fb37886f5345"}, + {file = "dbldatagen-0.3.5-py3-none-any.whl", hash = "sha256:75db379c68adda518fbe5d09184ca0756255f2086d8466fbdeaba29863b98349"}, + {file = "dbldatagen-0.3.5.tar.gz", hash = "sha256:d50dd7f2180d6f3e21a107b8759d62f9a9dd093b64833f73940d99f58723c4b4"}, ] [[package]] name = "debugpy" -version = "1.8.1" +version = "1.8.0" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"}, - {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"}, - {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"}, - {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"}, - {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"}, - {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"}, - {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"}, - {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"}, - {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"}, - {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"}, - {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"}, - {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"}, - {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"}, - {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"}, - {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"}, - {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"}, - {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"}, - {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"}, - {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"}, - {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"}, - {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"}, - {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"}, + {file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"}, + {file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"}, + {file = "debugpy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f"}, + {file = "debugpy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637"}, + {file = "debugpy-1.8.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e"}, + {file = "debugpy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6"}, + {file = "debugpy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b"}, + {file = "debugpy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153"}, + {file = "debugpy-1.8.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd"}, + {file = "debugpy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f"}, + {file = "debugpy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa"}, + {file = "debugpy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595"}, + {file = "debugpy-1.8.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8"}, + {file = "debugpy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332"}, + {file = "debugpy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6"}, + {file = "debugpy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926"}, + {file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"}, + {file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"}, ] [[package]] @@ -1656,49 +1645,47 @@ tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} [[package]] name = "dill" -version = "0.3.8" +version = "0.3.7" description = "serialize all of Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, - {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, + {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"}, + {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"}, ] [package.extras] graph = ["objgraph (>=1.7.2)"] -profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "distlib" -version = "0.3.8" +version = "0.3.7" description = "Distribution utilities" optional = false python-versions = "*" files = [ - {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, - {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, + {file = "distlib-0.3.7-py2.py3-none-any.whl", hash = "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057"}, + {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, ] [[package]] name = "dnspython" -version = "2.6.1" +version = "2.4.2" description = "DNS toolkit" optional = false -python-versions = ">=3.8" +python-versions = ">=3.8,<4.0" files = [ - {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, - {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, + {file = "dnspython-2.4.2-py3-none-any.whl", hash = "sha256:57c6fbaaeaaf39c891292012060beb141791735dbb4004798328fc2c467402d8"}, + {file = "dnspython-2.4.2.tar.gz", hash = "sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984"}, ] [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)"] +dnssec = ["cryptography (>=2.6,<42.0)"] +doh = ["h2 (>=4.1.0)", "httpcore (>=0.17.3)", "httpx (>=0.24.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)"] [[package]] name = "docker-pycreds" @@ -1764,13 +1751,13 @@ idna = ">=2.0.0" [[package]] name = "exceptiongroup" -version = "1.2.0" +version = "1.1.3" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, - {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, + {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, + {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, ] [package.extras] @@ -1822,19 +1809,19 @@ typing = ["typing-extensions (>=4.8)"] [[package]] name = "flake8" -version = "7.0.0" +version = "6.1.0" description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" files = [ - {file = "flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"}, - {file = "flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132"}, + {file = "flake8-6.1.0-py2.py3-none-any.whl", hash = "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"}, + {file = "flake8-6.1.0.tar.gz", hash = "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" pycodestyle = ">=2.11.0,<2.12.0" -pyflakes = ">=3.2.0,<3.3.0" +pyflakes = ">=3.1.0,<3.2.0" [[package]] name = "flask" @@ -1859,13 +1846,13 @@ dotenv = ["python-dotenv"] [[package]] name = "flask-appbuilder" -version = "4.3.11" +version = "4.3.10" description = "Simple and rapid application development framework, built on top of Flask. includes detailed security, auto CRUD generation for your models, google charts and much more." optional = false python-versions = "~=3.7" files = [ - {file = "Flask-AppBuilder-4.3.11.tar.gz", hash = "sha256:193d72e953b5100809df89ec4c8b62c7617c24998a3b501ad85c49ed2aa73fc5"}, - {file = "Flask_AppBuilder-4.3.11-py3-none-any.whl", hash = "sha256:9630b19e7fee1bfd03982ff9d48309e5eaf0302594542072385dc5d7073fd700"}, + {file = "Flask-AppBuilder-4.3.10.tar.gz", hash = "sha256:4173c878e56b81c6acac5e3c80c133f4183f43442fd944552bd9f4023f5baceb"}, + {file = "Flask_AppBuilder-4.3.10-py3-none-any.whl", hash = "sha256:c0af506e1a68e7ee14f26a16fda829f1a14f8343654c30bdbb1351d23c545df9"}, ] [package.dependencies] @@ -1934,13 +1921,13 @@ Flask = "*" [[package]] name = "flask-jwt-extended" -version = "4.6.0" +version = "4.5.3" description = "Extended JWT integration with Flask" optional = false python-versions = ">=3.7,<4" files = [ - {file = "Flask-JWT-Extended-4.6.0.tar.gz", hash = "sha256:9215d05a9413d3855764bcd67035e75819d23af2fafb6b55197eb5a3313fdfb2"}, - {file = "Flask_JWT_Extended-4.6.0-py2.py3-none-any.whl", hash = "sha256:63a28fc9731bcc6c4b8815b6f954b5904caa534fc2ae9b93b1d3ef12930dca95"}, + {file = "Flask-JWT-Extended-4.5.3.tar.gz", hash = "sha256:061ef3d25ed5743babe4964ab38f36d870e6d2fd8a126bab5d77ddef8a01932b"}, + {file = "Flask_JWT_Extended-4.5.3-py2.py3-none-any.whl", hash = "sha256:eaec42af107dcb919785a4b3766c09ffba9f286b92a8d58603933f28fd4db6a3"}, ] [package.dependencies] @@ -1953,13 +1940,13 @@ asymmetric-crypto = ["cryptography (>=3.3.1)"] [[package]] name = "flask-limiter" -version = "3.5.1" +version = "3.5.0" description = "Rate limiting for flask applications" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "Flask-Limiter-3.5.1.tar.gz", hash = "sha256:8117e1040e5d5c31bf667d3b649fcba325f979d814a3d76a3a2331c3eab63c5e"}, - {file = "Flask_Limiter-3.5.1-py3-none-any.whl", hash = "sha256:d40526719994197da180caa870ba01e722ed6a70a75790021638dbf29aae82ee"}, + {file = "Flask-Limiter-3.5.0.tar.gz", hash = "sha256:13a3491b994c49f7cb4706587a38ca47e8162b576530472df38be68104f299c0"}, + {file = "Flask_Limiter-3.5.0-py3-none-any.whl", hash = "sha256:dbda4174f44e6cb858c6eb75e7488186f2977dd5d33d7028ba1aabf179de1bee"}, ] [package.dependencies] @@ -2040,99 +2027,83 @@ email = ["email-validator"] [[package]] name = "frozenlist" -version = "1.4.1" +version = "1.4.0" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" files = [ - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, - {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, - {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, - {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, - {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, - {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, - {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, - {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, - {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, - {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, - {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, - {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, - {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, + {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab"}, + {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559"}, + {file = "frozenlist-1.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963"}, + {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9"}, + {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62"}, + {file = "frozenlist-1.4.0-cp310-cp310-win32.whl", hash = "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0"}, + {file = "frozenlist-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956"}, + {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95"}, + {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3"}, + {file = "frozenlist-1.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b"}, + {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467"}, + {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb"}, + {file = "frozenlist-1.4.0-cp311-cp311-win32.whl", hash = "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431"}, + {file = "frozenlist-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1"}, + {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3"}, + {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503"}, + {file = "frozenlist-1.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672"}, + {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781"}, + {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8"}, + {file = "frozenlist-1.4.0-cp38-cp38-win32.whl", hash = "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc"}, + {file = "frozenlist-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7"}, + {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf"}, + {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963"}, + {file = "frozenlist-1.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6"}, + {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a"}, + {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3"}, + {file = "frozenlist-1.4.0-cp39-cp39-win32.whl", hash = "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f"}, + {file = "frozenlist-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167"}, + {file = "frozenlist-1.4.0.tar.gz", hash = "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251"}, ] [[package]] name = "fsspec" -version = "2024.2.0" +version = "2023.10.0" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2024.2.0-py3-none-any.whl", hash = "sha256:817f969556fa5916bc682e02ca2045f96ff7f586d45110fcb76022063ad2c7d8"}, - {file = "fsspec-2024.2.0.tar.gz", hash = "sha256:b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84"}, + {file = "fsspec-2023.10.0-py3-none-any.whl", hash = "sha256:346a8f024efeb749d2a5fca7ba8854474b1ff9af7c3faaf636a4548781136529"}, + {file = "fsspec-2023.10.0.tar.gz", hash = "sha256:330c66757591df346ad3091a53bd907e15348c2ba17d63fd54f5c39c4457d2a5"}, ] [package.extras] @@ -2150,7 +2121,7 @@ github = ["requests"] gs = ["gcsfs"] gui = ["panel"] hdfs = ["pyarrow (>=1)"] -http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "requests"] libarchive = ["libarchive-c"] oci = ["ocifs"] s3 = ["s3fs"] @@ -2159,34 +2130,45 @@ smb = ["smbprotocol"] ssh = ["paramiko"] tqdm = ["tqdm"] +[[package]] +name = "future" +version = "0.18.3" +description = "Clean single-source support for Python 3 and 2" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "future-0.18.3.tar.gz", hash = "sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307"}, +] + [[package]] name = "gcloud-aio-auth" -version = "4.2.3" +version = "4.1.5" description = "Python Client for Google Cloud Auth" optional = false python-versions = ">=3.7,<4.0" files = [ - {file = "gcloud_aio_auth-4.2.3-py3-none-any.whl", hash = "sha256:e4adadd36e35eeeb8537b926840372c3080c2f5a6909d44aa1bacbced2260bb1"}, - {file = "gcloud_aio_auth-4.2.3.tar.gz", hash = "sha256:8e12297c5b45cfc20d629b83e1233f83a1c7d5f830f24f31bc5bb8816c0cda1b"}, + {file = "gcloud_aio_auth-4.1.5-py3-none-any.whl", hash = "sha256:606431bd670effc4b67456877747d400c4dd0d8d20bbca98c72f09041359985f"}, + {file = "gcloud_aio_auth-4.1.5.tar.gz", hash = "sha256:12b8308f32a83b76ae04129800df8eb09e8803219c2ebabccad2364f39744f79"}, ] [package.dependencies] aiohttp = ">=3.3.0,<4.0.0" backoff = ">=1.0.0,<3.0.0" -chardet = ">=2.0,<6.0" -cryptography = ">=2.0.0,<42.0.0" +chardet = {version = ">=2.0,<4.1", markers = "python_version >= \"3.7\""} +cryptography = ">=2.0.0,<39.0.0" +future = ">=0.17.0,<0.19.0" pyjwt = ">=1.5.3,<3.0.0" -setuptools = ">=66.0.0,<67.0.0" +six = ">=1.11.0,<2.0.0" [[package]] name = "gcloud-aio-bigquery" -version = "7.1.0" +version = "7.0.0" description = "Python Client for Google Cloud BigQuery" optional = false python-versions = ">=3.8,<4.0" files = [ - {file = "gcloud_aio_bigquery-7.1.0-py3-none-any.whl", hash = "sha256:524ae3cc14c1af6977a358829cc673b4471159caa7d62bba7f2d9334262bcd4a"}, - {file = "gcloud_aio_bigquery-7.1.0.tar.gz", hash = "sha256:4a3c775c2677c0588e9caeb2df40d81a54b31c174e562a527cb08e023c4408a3"}, + {file = "gcloud_aio_bigquery-7.0.0-py3-none-any.whl", hash = "sha256:188b96b16b0fdbef2a0bc15ffce3f5a930ecc36de537fcfa5794fc397506fdd8"}, + {file = "gcloud_aio_bigquery-7.0.0.tar.gz", hash = "sha256:2cd1c7c9dcb68122ff6187f2b533941c86d954e5312d942c8107aac4d20ea2ec"}, ] [package.dependencies] @@ -2194,13 +2176,13 @@ gcloud-aio-auth = ">=3.1.0,<6.0.0" [[package]] name = "gcloud-aio-storage" -version = "9.2.0" +version = "9.0.0" description = "Python Client for Google Cloud Storage" optional = false python-versions = ">=3.8,<4.0" files = [ - {file = "gcloud_aio_storage-9.2.0-py3-none-any.whl", hash = "sha256:0a8cc27223cea05ad27117fa574ce8697ec32a252382cbfdfe54df0678e92d03"}, - {file = "gcloud_aio_storage-9.2.0.tar.gz", hash = "sha256:47be865222d22fdf873cd5a4af9a285d7b64b176d4d92f1773ecacd52a6a8c6f"}, + {file = "gcloud_aio_storage-9.0.0-py3-none-any.whl", hash = "sha256:223583018b0ad68f22201593970c638e00fb86f40d9bb9187b17910a02ab118c"}, + {file = "gcloud_aio_storage-9.0.0.tar.gz", hash = "sha256:99e6d30c65809ceafe059d496dbf10a4186edb1850fe9634988e096966503046"}, ] [package.dependencies] @@ -2211,19 +2193,19 @@ rsa = ">=3.1.4,<5.0.0" [[package]] name = "gcsfs" -version = "2024.2.0" +version = "2023.10.0" description = "Convenient Filesystem interface over GCS" optional = false python-versions = ">=3.8" files = [ - {file = "gcsfs-2024.2.0-py2.py3-none-any.whl", hash = "sha256:20bf70cc81d580474dd299d55e1ffcf8b3e81721aeb562e148ca0a3c900d0421"}, - {file = "gcsfs-2024.2.0.tar.gz", hash = "sha256:f7cffd7cae2fb50c56ef883f8aef9792be045b5059f06c1902c3a6151509f506"}, + {file = "gcsfs-2023.10.0-py2.py3-none-any.whl", hash = "sha256:f3ad41652a596ca56e44778e041f428d022add3eff62b97a47302014affd270f"}, + {file = "gcsfs-2023.10.0.tar.gz", hash = "sha256:1915e6d766faad9a295e815b13c59966b925a274108b8a56f673623bf4aef83f"}, ] [package.dependencies] aiohttp = "<4.0.0a0 || >4.0.0a0,<4.0.0a1 || >4.0.0a1" decorator = ">4.1.2" -fsspec = "2024.2.0" +fsspec = "2023.10.0" google-auth = ">=1.2" google-auth-oauthlib = "*" google-cloud-storage = "*" @@ -2266,20 +2248,20 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.42" +version = "3.1.40" description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.42-py3-none-any.whl", hash = "sha256:1bf9cd7c9e7255f77778ea54359e54ac22a72a5b51288c457c881057b7bb9ecd"}, - {file = "GitPython-3.1.42.tar.gz", hash = "sha256:2d99869e0fef71a73cbd242528105af1d6c1b108c60dfabd994bf292f76c3ceb"}, + {file = "GitPython-3.1.40-py3-none-any.whl", hash = "sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"}, + {file = "GitPython-3.1.40.tar.gz", hash = "sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4"}, ] [package.dependencies] gitdb = ">=4.0.1,<5" [package.extras] -test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar"] +test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-sugar"] [[package]] name = "google" @@ -2322,30 +2304,30 @@ tests = ["nox (>=2020.12.31,<2022.6)"] [[package]] name = "google-analytics-admin" -version = "0.22.7" +version = "0.22.5" description = "Google Analytics Admin API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-analytics-admin-0.22.7.tar.gz", hash = "sha256:9546afaddf7ee275ec4729de6da8b15f27d4d245ee8896f80800e22572fc7987"}, - {file = "google_analytics_admin-0.22.7-py2.py3-none-any.whl", hash = "sha256:09463653ecb42306c34fb07c9ff27193737aae8e63c52b8f695bf705e8589b46"}, + {file = "google-analytics-admin-0.22.5.tar.gz", hash = "sha256:2de1671ea945c23b3587323ed1dc6e6c78d02a7507b562d425de1dc7fb27b08f"}, + {file = "google_analytics_admin-0.22.5-py2.py3-none-any.whl", hash = "sha256:54c6e00baeb9be61492b4efcd4859ca1b94b181ce454ba70ff5d73a630dd5661"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-auth = ">=2.14.1,<3.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-api-core" -version = "2.17.1" +version = "2.12.0" description = "Google API client core library" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-core-2.17.1.tar.gz", hash = "sha256:9df18a1f87ee0df0bc4eea2770ebc4228392d8cc4066655b320e2cfccb15db95"}, - {file = "google_api_core-2.17.1-py3-none-any.whl", hash = "sha256:610c5b90092c360736baccf17bd3efbcb30dd380e7a6dc28a71059edb8bd0d8e"}, + {file = "google-api-core-2.12.0.tar.gz", hash = "sha256:c22e01b1e3c4dcd90998494879612c38d0a3411d1f7b679eb89e2abe3ce1f553"}, + {file = "google_api_core-2.12.0-py3-none-any.whl", hash = "sha256:ec6054f7d64ad13b41e43d96f735acbd763b0f3b695dabaa2d579673f6a6e160"}, ] [package.dependencies] @@ -2363,13 +2345,13 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-api-python-client" -version = "2.121.0" +version = "2.106.0" description = "Google API Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-python-client-2.121.0.tar.gz", hash = "sha256:df863ece4db8b36ce1053ebd983e43fbc5b664209eed78e82cc84ae56ddac6c0"}, - {file = "google_api_python_client-2.121.0-py2.py3-none-any.whl", hash = "sha256:bb4da677150dd16c45818620baca8a63208c6f4180a0691ad1c1708b384c10be"}, + {file = "google-api-python-client-2.106.0.tar.gz", hash = "sha256:f6a3862be2f6e5e0536d7bd47b5af3f24ac0b9147c76c830cafb3329d71d5724"}, + {file = "google_api_python_client-2.106.0-py2.py3-none-any.whl", hash = "sha256:c47c0dae5dd20aa43e4ea184566fe59d0c8fd0b86dd223b29040d8ea4f7ed6ea"}, ] [package.dependencies] @@ -2381,13 +2363,13 @@ uritemplate = ">=3.0.1,<5" [[package]] name = "google-auth" -version = "2.28.1" +version = "2.23.4" description = "Google Authentication Library" optional = false python-versions = ">=3.7" files = [ - {file = "google-auth-2.28.1.tar.gz", hash = "sha256:34fc3046c257cedcf1622fc4b31fc2be7923d9b4d44973d481125ecc50d83885"}, - {file = "google_auth-2.28.1-py2.py3-none-any.whl", hash = "sha256:25141e2d7a14bfcba945f5e9827f98092716e99482562f15306e5b026e21aa72"}, + {file = "google-auth-2.23.4.tar.gz", hash = "sha256:79905d6b1652187def79d491d6e23d0cbb3a21d3c7ba0dbaa9c8a01906b13ff3"}, + {file = "google_auth-2.23.4-py2.py3-none-any.whl", hash = "sha256:d4bbc92fe4b8bfd2f3e8d88e5ba7085935da208ee38a134fc280e7ce682a05f2"}, ] [package.dependencies] @@ -2404,13 +2386,13 @@ requests = ["requests (>=2.20.0,<3.0.0.dev0)"] [[package]] name = "google-auth-httplib2" -version = "0.2.0" +version = "0.1.1" description = "Google Authentication Library: httplib2 transport" optional = false python-versions = "*" files = [ - {file = "google-auth-httplib2-0.2.0.tar.gz", hash = "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05"}, - {file = "google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d"}, + {file = "google-auth-httplib2-0.1.1.tar.gz", hash = "sha256:c64bc555fdc6dd788ea62ecf7bccffcf497bf77244887a3f3d7a5a02f8e3fc29"}, + {file = "google_auth_httplib2-0.1.1-py2.py3-none-any.whl", hash = "sha256:42c50900b8e4dcdf8222364d1f0efe32b8421fb6ed72f2613f12f75cc933478c"}, ] [package.dependencies] @@ -2437,18 +2419,17 @@ tool = ["click (>=6.0.0)"] [[package]] name = "google-cloud-aiplatform" -version = "1.43.0" +version = "1.36.0" description = "Vertex AI API client library" optional = false python-versions = ">=3.8" files = [ - {file = "google-cloud-aiplatform-1.43.0.tar.gz", hash = "sha256:bd73af311a827e79bd2094a508e9343a2fa71b8ae5d8fa1178d0a96d034b421b"}, - {file = "google_cloud_aiplatform-1.43.0-py2.py3-none-any.whl", hash = "sha256:8aa1bdcde1bec85ea53db26b638744f7bad91f3af27c2ab8a3ea32079fb709e3"}, + {file = "google-cloud-aiplatform-1.36.0.tar.gz", hash = "sha256:c35eb179fa3107c262024a63bb4a3dc1887678424a0b9f49f0da3f5179896186"}, + {file = "google_cloud_aiplatform-1.36.0-py2.py3-none-any.whl", hash = "sha256:06adb1605208a9bdbadd8c4deeaeb6511a7f59220ef606e2d95ccc1da705ebda"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.8.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" +google-api-core = {version = ">=1.32.0,<2.0.dev0 || >=2.8.dev0,<3.0.0dev", extras = ["grpc"]} google-cloud-bigquery = ">=1.15.0,<4.0.0dev" google-cloud-resource-manager = ">=1.3.3,<3.0.0dev" google-cloud-storage = ">=1.32.0,<3.0.0dev" @@ -2462,34 +2443,33 @@ autologging = ["mlflow (>=1.27.0,<=2.1.1)"] cloud-profiler = ["tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.4.0,<3.0.0dev)", "werkzeug (>=2.0.0,<2.1.0dev)"] datasets = ["pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)"] endpoint = ["requests (>=2.28.1)"] -full = ["cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "httpx (>=0.23.0,<0.25.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "requests (>=2.28.1)", "starlette (>=0.17.1)", "tensorflow (>=2.3.0,<2.15.0)", "tensorflow (>=2.3.0,<3.0.0dev)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)"] +full = ["cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (==0.0.11)", "google-vizier (==0.0.4)", "google-vizier (>=0.0.14)", "google-vizier (>=0.1.6)", "httpx (>=0.23.0,<0.25.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5)", "ray[default] (>=2.5,<2.5.1)", "requests (>=2.28.1)", "starlette (>=0.17.1)", "tensorflow (>=2.3.0,<3.0.0dev)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)"] lit = ["explainable-ai-sdk (>=1.0.0)", "lit-nlp (==0.4.0)", "pandas (>=1.0.0)", "tensorflow (>=2.3.0,<3.0.0dev)"] metadata = ["numpy (>=1.15.0)", "pandas (>=1.0.0)"] pipelines = ["pyyaml (==5.3.1)"] prediction = ["docker (>=5.0.3)", "fastapi (>=0.71.0,<0.103.1)", "httpx (>=0.23.0,<0.25.0)", "starlette (>=0.17.1)", "uvicorn[standard] (>=0.16.0)"] preview = ["cloudpickle (<3.0)", "google-cloud-logging (<4.0)"] private-endpoints = ["requests (>=2.28.1)", "urllib3 (>=1.21.1,<1.27)"] -ray = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=6.0.1)", "pydantic (<2)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)"] -tensorboard = ["tensorflow (>=2.3.0,<2.15.0)"] -testing = ["bigframes", "cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-api-core (>=2.11,<3.0.0)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (>=0.1.6)", "grpcio-testing", "httpx (>=0.23.0,<0.25.0)", "ipython", "kfp (>=2.6.0,<3.0.0)", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pandas (>=1.0.0,<2.2.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyfakefs", "pytest-asyncio", "pytest-xdist", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5.dev0 || >2.9.0,!=2.9.1,!=2.9.2,<=2.9.3)", "ray[default] (>=2.5,<=2.9.3)", "requests (>=2.28.1)", "requests-toolbelt (<1.0.0)", "scikit-learn", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.3.0,<2.15.0)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<=2.12.0)", "tensorflow (>=2.4.0,<3.0.0dev)", "torch (>=2.0.0,<2.1.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)", "xgboost", "xgboost-ray"] -vizier = ["google-vizier (>=0.1.6)"] +ray = ["google-cloud-bigquery", "google-cloud-bigquery-storage", "pandas (>=1.0.0)", "pyarrow (>=6.0.1)", "pydantic (<2)", "ray[default] (>=2.4,<2.5)", "ray[default] (>=2.5,<2.5.1)"] +tensorboard = ["tensorflow (>=2.3.0,<3.0.0dev)"] +testing = ["bigframes", "cloudpickle (<3.0)", "docker (>=5.0.3)", "explainable-ai-sdk (>=1.0.0)", "fastapi (>=0.71.0,<0.103.1)", "google-cloud-bigquery", "google-cloud-bigquery-storage", "google-cloud-logging (<4.0)", "google-vizier (==0.0.11)", "google-vizier (==0.0.4)", "google-vizier (>=0.0.14)", "google-vizier (>=0.1.6)", "grpcio-testing", "httpx (>=0.23.0,<0.25.0)", "ipython", "kfp", "lit-nlp (==0.4.0)", "mlflow (>=1.27.0,<=2.1.1)", "numpy (>=1.15.0)", "pandas (>=1.0.0)", "pyarrow (>=10.0.1)", "pyarrow (>=3.0.0,<8.0dev)", "pyarrow (>=6.0.1)", "pydantic (<2)", "pyfakefs", "pytest-asyncio", "pytest-xdist", "pyyaml (==5.3.1)", "ray[default] (>=2.4,<2.5)", "ray[default] (>=2.5,<2.5.1)", "requests (>=2.28.1)", "requests-toolbelt (<1.0.0)", "scikit-learn", "starlette (>=0.17.1)", "tensorboard-plugin-profile (>=2.4.0,<3.0.0dev)", "tensorflow (>=2.3.0,<3.0.0dev)", "tensorflow (>=2.3.0,<=2.12.0)", "tensorflow (>=2.4.0,<3.0.0dev)", "torch (>=2.0.0,<2.1.0)", "urllib3 (>=1.21.1,<1.27)", "uvicorn[standard] (>=0.16.0)", "werkzeug (>=2.0.0,<2.1.0dev)", "xgboost", "xgboost-ray"] +vizier = ["google-vizier (==0.0.11)", "google-vizier (==0.0.4)", "google-vizier (>=0.0.14)", "google-vizier (>=0.1.6)"] xai = ["tensorflow (>=2.3.0,<3.0.0dev)"] [[package]] name = "google-cloud-appengine-logging" -version = "1.4.3" +version = "1.3.2" description = "Google Cloud Appengine Logging API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-appengine-logging-1.4.3.tar.gz", hash = "sha256:fb504e6199fe8de85baa9d31cecf6776877851fe58867de603317ec7cc739987"}, - {file = "google_cloud_appengine_logging-1.4.3-py2.py3-none-any.whl", hash = "sha256:8e30af51d853f219caf29e8b8b342b9ce8214b29f334dafae38d39aaaff7d372"}, + {file = "google-cloud-appengine-logging-1.3.2.tar.gz", hash = "sha256:a2989fca0e88463b56432aa821e64b81c3d171ee37b84771189b48e8b97cd496"}, + {file = "google_cloud_appengine_logging-1.3.2-py2.py3-none-any.whl", hash = "sha256:6ac6261567b56611f6891fa650f76db8a48d528762e5c2a09230b41d82ee2be0"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] @@ -2509,18 +2489,17 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4 [[package]] name = "google-cloud-automl" -version = "2.13.3" +version = "2.12.0" description = "Google Cloud Automl API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-automl-2.13.3.tar.gz", hash = "sha256:891a9082eaedeb17bc5bb724fc150b7702c684d7420f9f22ae3f7c5fc611c71a"}, - {file = "google_cloud_automl-2.13.3-py2.py3-none-any.whl", hash = "sha256:8117943ad1534f1d11d40e0937ade7965c56a6d7fd2c2314e56942361727a6a2"}, + {file = "google-cloud-automl-2.12.0.tar.gz", hash = "sha256:22f7a61e04b4a9b03d504ef2db6683df462a032da53fe3fbb2c36f525074abb5"}, + {file = "google_cloud_automl-2.12.0-py2.py3-none-any.whl", hash = "sha256:e20e9aec2f368bda29b039d8109384379a6cd9410ac5ee81acdab3afbf89ad8e"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2531,82 +2510,103 @@ storage = ["google-cloud-storage (>=1.18.0,<3.0.0dev)"] [[package]] name = "google-cloud-batch" -version = "0.17.14" +version = "0.17.2" description = "Google Cloud Batch API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-batch-0.17.14.tar.gz", hash = "sha256:03c29c384f5872cf2e3aa4f2f7446f5bbecd1aea035f19cd7c595b245df96179"}, - {file = "google_cloud_batch-0.17.14-py2.py3-none-any.whl", hash = "sha256:0bebf878e3f4cb470ba788dc9d9d78a11db2c16bea7cc9da9bfde24522bc1914"}, + {file = "google-cloud-batch-0.17.2.tar.gz", hash = "sha256:381ac83d18b46354cb5c51d33dbfcede62b039f3f13960ac9691cb4178f3c5b7"}, + {file = "google_cloud_batch-0.17.2-py2.py3-none-any.whl", hash = "sha256:c614f17d47095fd0b41e3f7de2e66f6ec5f1168d682b8338dfa3c18803234be0"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-bigquery" -version = "3.18.0" +version = "3.13.0" description = "Google BigQuery API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-bigquery-3.18.0.tar.gz", hash = "sha256:74f0fc6f0ba9477f808d25924dc8a052c55f7ca91064e83e16d3ee5fb7ca77ab"}, - {file = "google_cloud_bigquery-3.18.0-py2.py3-none-any.whl", hash = "sha256:3520552075502c69710d37b1e9600c84e6974ad271914677d16bfafa502857fb"}, + {file = "google-cloud-bigquery-3.13.0.tar.gz", hash = "sha256:794ccfc93ccb0e0ad689442f896f9c82de56da0fe18a195531bb37096c2657d6"}, + {file = "google_cloud_bigquery-3.13.0-py2.py3-none-any.whl", hash = "sha256:eda3dbcff676e17962c54e5224e415b55e4f6833a5c896c6c8902b69e7dba4b4"}, ] [package.dependencies] -google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0dev" +google-api-core = {version = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0dev", extras = ["grpc"]} google-cloud-core = ">=1.6.0,<3.0.0dev" google-resumable-media = ">=0.6.0,<3.0dev" +grpcio = ">=1.47.0,<2.0dev" packaging = ">=20.0.0" +proto-plus = ">=1.15.0,<2.0.0dev" +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" python-dateutil = ">=2.7.2,<3.0dev" requests = ">=2.21.0,<3.0.0dev" [package.extras] -all = ["Shapely (>=1.8.4,<3.0.0dev)", "db-dtypes (>=0.3.0,<2.0.0dev)", "geopandas (>=0.9.0,<1.0dev)", "google-cloud-bigquery-storage (>=2.6.0,<3.0.0dev)", "grpcio (>=1.47.0,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "importlib-metadata (>=1.0.0)", "ipykernel (>=6.0.0)", "ipython (>=7.23.1,!=8.1.0)", "ipywidgets (>=7.7.0)", "opentelemetry-api (>=1.1.0)", "opentelemetry-instrumentation (>=0.20b0)", "opentelemetry-sdk (>=1.1.0)", "pandas (>=1.1.0)", "proto-plus (>=1.15.0,<2.0.0dev)", "protobuf (>=3.19.5,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev)", "pyarrow (>=3.0.0)", "tqdm (>=4.7.4,<5.0.0dev)"] -bigquery-v2 = ["proto-plus (>=1.15.0,<2.0.0dev)", "protobuf (>=3.19.5,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev)"] +all = ["Shapely (>=1.8.4,<3.0.0dev)", "db-dtypes (>=0.3.0,<2.0.0dev)", "geopandas (>=0.9.0,<1.0dev)", "google-cloud-bigquery-storage (>=2.6.0,<3.0.0dev)", "grpcio (>=1.47.0,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "ipykernel (>=6.0.0)", "ipython (>=7.23.1,!=8.1.0)", "ipywidgets (>=7.7.0)", "opentelemetry-api (>=1.1.0)", "opentelemetry-instrumentation (>=0.20b0)", "opentelemetry-sdk (>=1.1.0)", "pandas (>=1.1.0)", "pyarrow (>=3.0.0)", "tqdm (>=4.7.4,<5.0.0dev)"] bqstorage = ["google-cloud-bigquery-storage (>=2.6.0,<3.0.0dev)", "grpcio (>=1.47.0,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "pyarrow (>=3.0.0)"] geopandas = ["Shapely (>=1.8.4,<3.0.0dev)", "geopandas (>=0.9.0,<1.0dev)"] ipython = ["ipykernel (>=6.0.0)", "ipython (>=7.23.1,!=8.1.0)"] ipywidgets = ["ipykernel (>=6.0.0)", "ipywidgets (>=7.7.0)"] opentelemetry = ["opentelemetry-api (>=1.1.0)", "opentelemetry-instrumentation (>=0.20b0)", "opentelemetry-sdk (>=1.1.0)"] -pandas = ["db-dtypes (>=0.3.0,<2.0.0dev)", "importlib-metadata (>=1.0.0)", "pandas (>=1.1.0)", "pyarrow (>=3.0.0)"] +pandas = ["db-dtypes (>=0.3.0,<2.0.0dev)", "pandas (>=1.1.0)", "pyarrow (>=3.0.0)"] tqdm = ["tqdm (>=4.7.4,<5.0.0dev)"] [[package]] name = "google-cloud-bigquery-datatransfer" -version = "3.15.1" +version = "3.13.0" description = "Google Cloud Bigquery Datatransfer API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-bigquery-datatransfer-3.15.1.tar.gz", hash = "sha256:d80d2fe940451de3f47ec53bd5edb601abbb1df4189cde1fa386d80f71bea762"}, - {file = "google_cloud_bigquery_datatransfer-3.15.1-py2.py3-none-any.whl", hash = "sha256:24da33d0296cfb3f606df3f2c387e7d73f4678c5f9d9aec82db8b93a4482e6e0"}, + {file = "google-cloud-bigquery-datatransfer-3.13.0.tar.gz", hash = "sha256:27a845cb22605a512c05ce28c2890d2ef97ad4edfc9817af555a73d8024ec3ba"}, + {file = "google_cloud_bigquery_datatransfer-3.13.0-py2.py3-none-any.whl", hash = "sha256:f8a73ba135fc6f6df4516187b5d88c7d1fcd68ecb1b0ed259ff55b89c5a0974a"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" +[[package]] +name = "google-cloud-bigquery-storage" +version = "2.22.0" +description = "Google Cloud Bigquery Storage API client library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "google-cloud-bigquery-storage-2.22.0.tar.gz", hash = "sha256:f6d8c7b3ab9b574c66977fcee9d336e334ad1a3843a722be19123640e7808ea3"}, + {file = "google_cloud_bigquery_storage-2.22.0-py2.py3-none-any.whl", hash = "sha256:7f11b2ae590a5b3874fb6ddf705a66a070340db238f971cf7b53349eee9ca317"}, +] + +[package.dependencies] +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" + +[package.extras] +fastavro = ["fastavro (>=0.21.2)"] +pandas = ["pandas (>=0.21.1)"] +pyarrow = ["pyarrow (>=0.15.0)"] + [[package]] name = "google-cloud-bigtable" -version = "2.23.0" +version = "2.21.0" description = "Google Cloud Bigtable API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-bigtable-2.23.0.tar.gz", hash = "sha256:c3cabb6619f5f2eea11b3db72731e84d28b168055c9cc17c2d2daff15cb82379"}, - {file = "google_cloud_bigtable-2.23.0-py2.py3-none-any.whl", hash = "sha256:d89ed580733865007ae89639b7d961024a2385aa8c2828cf3aff3f5889782402"}, + {file = "google-cloud-bigtable-2.21.0.tar.gz", hash = "sha256:d9f0efbf940ca392f07d13787fc2da76d1e168dedafae0f8f1b4208e0c1132dc"}, + {file = "google_cloud_bigtable-2.21.0-py2.py3-none-any.whl", hash = "sha256:219d39f2787b76394b045603bbd0b13dfc37645ca855022e646b8ecbfbe9ad1f"}, ] [package.dependencies] -google-api-core = {version = ">=2.16.0,<3.0.0dev", extras = ["grpc"]} -google-cloud-core = ">=1.4.4,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +google-cloud-core = ">=1.4.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2616,65 +2616,62 @@ libcst = ["libcst (>=0.2.5)"] [[package]] name = "google-cloud-build" -version = "3.23.3" +version = "3.22.0" description = "Google Cloud Build API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-build-3.23.3.tar.gz", hash = "sha256:6e8dd88cb816f30bb55cec1e4d2285d570a223d34df516fb017a495ed605720e"}, - {file = "google_cloud_build-3.23.3-py2.py3-none-any.whl", hash = "sha256:b01060544bd0fd349f66c2af4c79312ec08d644237a27615e1a75eeee910189e"}, + {file = "google-cloud-build-3.22.0.tar.gz", hash = "sha256:72a8330c31108cc47ce510956196a98c158eeecd796004928bf239a2e1ea300e"}, + {file = "google_cloud_build-3.22.0-py2.py3-none-any.whl", hash = "sha256:b2906d59d02066f859a5e3a0ef9437dffc08f11a1f0f9381c92c986c73ab7ae0"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-compute" -version = "1.18.0" +version = "1.14.1" description = "Google Cloud Compute API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-compute-1.18.0.tar.gz", hash = "sha256:412237183877eb2838aa6e08cdaa6cf17f399451a166e3a9aa33ae894cc15a1d"}, - {file = "google_cloud_compute-1.18.0-py2.py3-none-any.whl", hash = "sha256:fd827495ffc3a006a70f984133cb12191572497d96a522056a75414db918f37d"}, + {file = "google-cloud-compute-1.14.1.tar.gz", hash = "sha256:acd987647d7c826aa97b4418141c740ead5e8811d3349315f2f89a30c01c7f4b"}, + {file = "google_cloud_compute-1.14.1-py2.py3-none-any.whl", hash = "sha256:b40d6aeeb2c5ce373675c869f1404a1bc19b9763b746ad8f2d91ed1148893d6f"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-container" -version = "2.43.0" +version = "2.32.0" description = "Google Cloud Container API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-container-2.43.0.tar.gz", hash = "sha256:45f1a142fd70af97cc30795e31a9b048a436a29bf79e9a464af51ee14745893d"}, - {file = "google_cloud_container-2.43.0-py2.py3-none-any.whl", hash = "sha256:b5c28d28df17be70fb12f5141f93b455fa261e693d65add989ae018d521a4b05"}, + {file = "google-cloud-container-2.32.0.tar.gz", hash = "sha256:694fb8da77963653e1c70fa60928b4a11faf8e1f1580a39025053a3e1bcce6de"}, + {file = "google_cloud_container-2.32.0-py2.py3-none-any.whl", hash = "sha256:a5555c6c19679332086859838fbaee468cb206e5e76365bb5027d5305a2c5bf4"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-core" -version = "2.4.1" +version = "2.3.3" description = "Google Cloud API client core library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-core-2.4.1.tar.gz", hash = "sha256:9b7749272a812bde58fff28868d0c5e2f585b82f37e09a1f6ed2d4d10f134073"}, - {file = "google_cloud_core-2.4.1-py2.py3-none-any.whl", hash = "sha256:a9e6a4422b9ac5c29f79a0ede9485473338e2ce78d91f2370c01e730eab22e61"}, + {file = "google-cloud-core-2.3.3.tar.gz", hash = "sha256:37b80273c8d7eee1ae816b3a20ae43585ea50506cb0e60f3cf5be5f87f1373cb"}, + {file = "google_cloud_core-2.3.3-py2.py3-none-any.whl", hash = "sha256:fbd11cad3e98a7e5b0343dc07cb1039a5ffd7a5bb96e1f1e27cee4bda4a90863"}, ] [package.dependencies] @@ -2682,176 +2679,167 @@ google-api-core = ">=1.31.6,<2.0.dev0 || >2.3.0,<3.0.0dev" google-auth = ">=1.25.0,<3.0dev" [package.extras] -grpc = ["grpcio (>=1.38.0,<2.0dev)", "grpcio-status (>=1.38.0,<2.0.dev0)"] +grpc = ["grpcio (>=1.38.0,<2.0dev)"] [[package]] name = "google-cloud-datacatalog" -version = "3.18.3" +version = "3.16.0" description = "Google Cloud Datacatalog API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-datacatalog-3.18.3.tar.gz", hash = "sha256:77831301982c795e6223cdc0ee54a46defd21205fd65f434a4b1df6014ad7e9e"}, - {file = "google_cloud_datacatalog-3.18.3-py2.py3-none-any.whl", hash = "sha256:8116f0bca6709b4cd984c85cd83f952bc0b1bb915244dfe478c9d425fce09057"}, + {file = "google-cloud-datacatalog-3.16.0.tar.gz", hash = "sha256:703e414396248fa98474bbab9ea962f4c96a3caf1184c903bfc9453d274b0ea2"}, + {file = "google_cloud_datacatalog-3.16.0-py2.py3-none-any.whl", hash = "sha256:06f43501ce57742f394508bca6b0eb14e6dd5aa7e0d51cc0fd9d259295d46c9f"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataflow-client" -version = "0.8.10" +version = "0.8.6" description = "Google Cloud Dataflow Client API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataflow-client-0.8.10.tar.gz", hash = "sha256:6aa8178743bce4b6c9142b492e649db84f55db70a88ec29a3d889054c4752144"}, - {file = "google_cloud_dataflow_client-0.8.10-py2.py3-none-any.whl", hash = "sha256:4b0dce886ec65fbf3195f87e956d559f6d4bd88a03b527aa8498c303e2d4d39a"}, + {file = "google-cloud-dataflow-client-0.8.6.tar.gz", hash = "sha256:8753fff57edf640a984015dbd6b3a0f427a779244f9b0ad8981f77d82272798a"}, + {file = "google_cloud_dataflow_client-0.8.6-py2.py3-none-any.whl", hash = "sha256:2d7a6e0586f50421567252283c330dd81cecafa139a12c6021e9da0ca2bf619c"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataform" -version = "0.5.9" +version = "0.5.3" description = "Google Cloud Dataform API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataform-0.5.9.tar.gz", hash = "sha256:2733c3fbda4f0134629e2d6554db93e1840683567043906268718b1a874eb9ac"}, - {file = "google_cloud_dataform-0.5.9-py2.py3-none-any.whl", hash = "sha256:c94e61358a68de389803bb06b936f815108211b3324e1f143db9a8bd2bb6a081"}, + {file = "google-cloud-dataform-0.5.3.tar.gz", hash = "sha256:89ed0dce20ce34f74cb038d614dd71191451fb70ea60888b6dbfc4265cea7a48"}, + {file = "google_cloud_dataform-0.5.3-py2.py3-none-any.whl", hash = "sha256:aa265043272b0b925fe5e40ea928a4793e1e30f37fff4169a38dfde9d7e32dc9"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataplex" -version = "1.12.3" +version = "1.11.0" description = "Google Cloud Dataplex API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataplex-1.12.3.tar.gz", hash = "sha256:c0692b6713fce6180df6d59bfb972d06f9fae264f33e7f2ba781d785f64ab8c3"}, - {file = "google_cloud_dataplex-1.12.3-py2.py3-none-any.whl", hash = "sha256:2ef7943b331ff254d2a8d2395c6a3b666837a73d32da1c4572a07453c0069dd3"}, + {file = "google-cloud-dataplex-1.11.0.tar.gz", hash = "sha256:c71b16166e03a04386d2379754912d2ea081ad8fb9dd7547a65d91ee2f2cd4b4"}, + {file = "google_cloud_dataplex-1.11.0-py2.py3-none-any.whl", hash = "sha256:92f616319fbd1fe03b1e9a401930c927edc22795002dd600d42cbe8a3c7cc1dd"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataproc" -version = "5.9.3" +version = "5.9.0" description = "Google Cloud Dataproc API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataproc-5.9.3.tar.gz", hash = "sha256:97d647891e7f4cd25f6b839ae57cd355809df2ca396653ed24af62b4ef02f412"}, - {file = "google_cloud_dataproc-5.9.3-py2.py3-none-any.whl", hash = "sha256:034615e8aca7f2b917a29ee1ca317fa65f8fa878018f2b80a2487e09e32b297a"}, + {file = "google-cloud-dataproc-5.9.0.tar.gz", hash = "sha256:7e51f9c9005bc5f1bcb23627171de9cd6246a44775118a48cc632861280a76df"}, + {file = "google_cloud_dataproc-5.9.0-py2.py3-none-any.whl", hash = "sha256:be7bdf2efe9af2a54632dd476dc3c13a1bb848bcebc337c1e83d2f961bffc106"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dataproc-metastore" -version = "1.15.3" +version = "1.13.0" description = "Google Cloud Dataproc Metastore API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dataproc-metastore-1.15.3.tar.gz", hash = "sha256:1f8a5a66e43a4d1c119e9be225ba66b041f432d046b5c4da6717fbd56fcfb4f5"}, - {file = "google_cloud_dataproc_metastore-1.15.3-py2.py3-none-any.whl", hash = "sha256:871dcea73ae2ab2ecfb6da1fe1bc82206eee817b744755f7b24aaef554b8d896"}, + {file = "google-cloud-dataproc-metastore-1.13.0.tar.gz", hash = "sha256:58066b89d782bcf6985afb29822fb2a1d9a67c20210c87e3a990f69e6354e52c"}, + {file = "google_cloud_dataproc_metastore-1.13.0-py2.py3-none-any.whl", hash = "sha256:76e462a42537077ba4f9b1c4c8ec5d91d4fc4bac6d3f31a81446f50d39ef850f"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-dlp" -version = "3.16.0" +version = "3.12.3" description = "Google Cloud Dlp API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-dlp-3.16.0.tar.gz", hash = "sha256:0d69a1f7a5ef88756c99e56b8af4c39eae40d2106883f0e2794c5cb3642696d5"}, - {file = "google_cloud_dlp-3.16.0-py2.py3-none-any.whl", hash = "sha256:0a1a008cb95a31f29e19dc7a822c4fd27b28dc941164e7bd6034170fd486e55b"}, + {file = "google-cloud-dlp-3.12.3.tar.gz", hash = "sha256:73880f2a8bfa60049576fb94d85698aa2367d32ac901b76278fe50b75663440b"}, + {file = "google_cloud_dlp-3.12.3-py2.py3-none-any.whl", hash = "sha256:db263305466d0fb22b756043c8a7e1cc2842e3ed6b59fb800b9e9af63a8b0ec8"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-kms" -version = "2.21.3" +version = "2.19.2" description = "Google Cloud Kms API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-kms-2.21.3.tar.gz", hash = "sha256:5e87d5a7b7d8f5b5c9f0f648f352a7886951a8b4c72703eb9ce7ba8076fc2533"}, - {file = "google_cloud_kms-2.21.3-py2.py3-none-any.whl", hash = "sha256:910bd58bce0bd2b6c413f8a32b7a5a0d77e34ab7204ce18e2dcdadeec6914253"}, + {file = "google-cloud-kms-2.19.2.tar.gz", hash = "sha256:17a5034592e85ef0031d25bbe5894bdb2d719460855980bfeb68aa4e8ffc12bd"}, + {file = "google_cloud_kms-2.19.2-py2.py3-none-any.whl", hash = "sha256:0cc0b9d16338a46b7fc5beba7e96a88df0f836586eb8650e9acd36eb249b52d9"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-language" -version = "2.13.3" +version = "2.11.1" description = "Google Cloud Language API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-language-2.13.3.tar.gz", hash = "sha256:569d35260af906de25b8e2a76b6364e05809b8453afd89da738d4a4fcb90846f"}, - {file = "google_cloud_language-2.13.3-py2.py3-none-any.whl", hash = "sha256:b060de20d8ed2b20b7b7ebd8a46ae240df36c9977db383db5155276d2b1f6b9a"}, + {file = "google-cloud-language-2.11.1.tar.gz", hash = "sha256:5f184409f040c0c73057c2616e6bd2e86e45aeb646180d19c189df4aa3d02dba"}, + {file = "google_cloud_language-2.11.1-py2.py3-none-any.whl", hash = "sha256:beb5dd1344a6ed00dd04b1eb05a967e7f83fc1b51471f9bd51f238f63f46f9d4"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-logging" -version = "3.9.0" +version = "3.8.0" description = "Stackdriver Logging API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-logging-3.9.0.tar.gz", hash = "sha256:4decb1b0bed4a0e3c0e58a376646e6002d6be7cad039e3466822e8665072ea33"}, - {file = "google_cloud_logging-3.9.0-py2.py3-none-any.whl", hash = "sha256:094a2db068ff7f38c9e0c1017673fa49c0768fbae02769e03e06baa30f138b87"}, + {file = "google-cloud-logging-3.8.0.tar.gz", hash = "sha256:fdd916e59a84aa8c02e8148d7fdd3b3b623c57b0c1ff71f43297ce8e50fc1eab"}, + {file = "google_cloud_logging-3.8.0-py2.py3-none-any.whl", hash = "sha256:c868b276b021cf5f32b6e8356b6cb3666357d149ad0fd798076043a5ec7ed988"}, ] [package.dependencies] @@ -2865,35 +2853,33 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4 [[package]] name = "google-cloud-memcache" -version = "1.9.3" +version = "1.7.3" description = "Google Cloud Memcache API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-memcache-1.9.3.tar.gz", hash = "sha256:ee5ff95afe47efc1a0746ba13b2f56996bc018f158f6b0cad69d835b0447d6e8"}, - {file = "google_cloud_memcache-1.9.3-py2.py3-none-any.whl", hash = "sha256:d1574670dcdb861cc772e2b797f7e5fb83b9dd7ef2ce34fbe4ff54d454a816d3"}, + {file = "google-cloud-memcache-1.7.3.tar.gz", hash = "sha256:a73f44ec5bfc398b4c9d94d5e77621c54795bcade19960242dec2cd91b854bcb"}, + {file = "google_cloud_memcache-1.7.3-py2.py3-none-any.whl", hash = "sha256:054e2adde4e99fca6a2e3f9ef733a2159083923c0a41af51b7d5e9d38ca9de12"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-monitoring" -version = "2.19.3" +version = "2.18.0" description = "Google Cloud Monitoring API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-monitoring-2.19.3.tar.gz", hash = "sha256:37641e537986fd2227f8738b879d605a8cdf4c315cdc60e86e109347ab1ca1d7"}, - {file = "google_cloud_monitoring-2.19.3-py2.py3-none-any.whl", hash = "sha256:448016170deb4f16fdb57d12f639a0b61e865f7a22ec9a85b3e12295046b62b0"}, + {file = "google-cloud-monitoring-2.18.0.tar.gz", hash = "sha256:06cc1d7fb75c5e50b54bcc004941ea4b20a7a9f09ed7e6e753514fd8c436096a"}, + {file = "google_cloud_monitoring-2.18.0-py2.py3-none-any.whl", hash = "sha256:548a1ac0b88c38694e14e1359e89c7eb19b27423906f456bb590f3f0962bb562"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" @@ -2902,52 +2888,49 @@ pandas = ["pandas (>=0.23.2)"] [[package]] name = "google-cloud-orchestration-airflow" -version = "1.12.1" +version = "1.10.0" description = "Google Cloud Orchestration Airflow API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-orchestration-airflow-1.12.1.tar.gz", hash = "sha256:659a72f506a9441f1938664e98cdced9a4a852dc5d8c533a5c2f822cefe72eb1"}, - {file = "google_cloud_orchestration_airflow-1.12.1-py2.py3-none-any.whl", hash = "sha256:9dab139528860c3d10b9affe6a7e34848f10e15f5800554792c1bab37f713e3d"}, + {file = "google-cloud-orchestration-airflow-1.10.0.tar.gz", hash = "sha256:2aa88b4882d3c5dd0f7ecc572d37972d51f2cf69530783c524344d018de0b1bf"}, + {file = "google_cloud_orchestration_airflow-1.10.0-py2.py3-none-any.whl", hash = "sha256:363e22e3b52316eb556899ffb3b1d2122bb4fce3937e4f7cef42202ec1a15e20"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} proto-plus = ">=1.22.3,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-os-login" -version = "2.14.3" +version = "2.11.0" description = "Google Cloud Os Login API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-os-login-2.14.3.tar.gz", hash = "sha256:b1a15ec7ee306de890750822dc4aab04c64e5bcf76447590f45551bf1afcf1e8"}, - {file = "google_cloud_os_login-2.14.3-py2.py3-none-any.whl", hash = "sha256:de19bb2ade36e982256050972b5f68be34a0f4c70365c76a7cd91de3f0e7985f"}, + {file = "google-cloud-os-login-2.11.0.tar.gz", hash = "sha256:e3219d00b75ea44182871681985e9db3f1e38641bb84519dd85d3dbb62b97656"}, + {file = "google_cloud_os_login-2.11.0-py2.py3-none-any.whl", hash = "sha256:1b0679d772fbef486230208a65b3a96d513b599000beca1dc8ff5bde4838607f"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-pubsub" -version = "2.20.1" +version = "2.19.0" description = "Google Cloud Pub/Sub API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-pubsub-2.20.1.tar.gz", hash = "sha256:b6d06f1827968273c42b57a09f642462649c9504dc0f8756f99770f4e3e755ad"}, - {file = "google_cloud_pubsub-2.20.1-py2.py3-none-any.whl", hash = "sha256:06dd62181e2f248f32b9077f4dc07b413191a84fc06d7323b208602d887207bc"}, + {file = "google-cloud-pubsub-2.19.0.tar.gz", hash = "sha256:6a98c33f7eb5f7de2ae52efa059b2b5f75b2ccd9f0f11f2edcefdda8d14e425c"}, + {file = "google_cloud_pubsub-2.19.0-py2.py3-none-any.whl", hash = "sha256:0cc444e5b2220a703106668829315a724cfb4304d6772725035993bb2fc81388"}, ] [package.dependencies] google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" grpcio = ">=1.51.3,<2.0dev" grpcio-status = ">=1.33.2" @@ -2959,92 +2942,86 @@ libcst = ["libcst (>=0.3.10)"] [[package]] name = "google-cloud-redis" -version = "2.15.3" +version = "2.13.2" description = "Google Cloud Redis API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-redis-2.15.3.tar.gz", hash = "sha256:e6a231e45107038cfe498dfad1f6dad2ca7bdca3a931323730be03ab7a000a8f"}, - {file = "google_cloud_redis-2.15.3-py2.py3-none-any.whl", hash = "sha256:df79f6f8a81f948d2d5343a76e7c9108ab56eab9279be0763da6968f497b2bdb"}, + {file = "google-cloud-redis-2.13.2.tar.gz", hash = "sha256:5c485730355d96723d64ae637f1b2264f35b57c301ec0ef2c6d30b2f06dca14e"}, + {file = "google_cloud_redis-2.13.2-py2.py3-none-any.whl", hash = "sha256:86378e8ed1c5a1c621eb2731d734436f443dffdbbafc6cd5d24511c94d6c38bc"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-resource-manager" -version = "1.12.3" +version = "1.10.4" description = "Google Cloud Resource Manager API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-resource-manager-1.12.3.tar.gz", hash = "sha256:809851824119834e4f2310b2c4f38621c1d16b2bb14d5b9f132e69c79d355e7f"}, - {file = "google_cloud_resource_manager-1.12.3-py2.py3-none-any.whl", hash = "sha256:92be7d6959927b76d90eafc4028985c37975a46ded5466a018f02e8649e113d4"}, + {file = "google-cloud-resource-manager-1.10.4.tar.gz", hash = "sha256:456b25ddda3d4cd27488a72736bbc3af04d713ae2fe3655c01b66a339d28d679"}, + {file = "google_cloud_resource_manager-1.10.4-py2.py3-none-any.whl", hash = "sha256:2ba56ba8e5280cd425bd63620da48b78da2cd299ece58a71f0f2ce3a32d56f99"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-run" -version = "0.10.5" +version = "0.10.0" description = "Google Cloud Run API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-run-0.10.5.tar.gz", hash = "sha256:d6c546693ad1232794b75c617871f2e46283c0cd0c4cc3886b85b8f0a3ba575f"}, - {file = "google_cloud_run-0.10.5-py2.py3-none-any.whl", hash = "sha256:0f68125f13d1a87f74e1e78c37fa6afb4b094d76dad2b9f951d5526648e8939c"}, + {file = "google-cloud-run-0.10.0.tar.gz", hash = "sha256:e597dff8da3d6e0f43bdaaa38c80933d8e81e8eac8c1b5e119812af99539d734"}, + {file = "google_cloud_run-0.10.0-py2.py3-none-any.whl", hash = "sha256:3f3d317200e890c20e744e692d69b241ca4a25ec161f02babbc77c1df68c7a4d"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-secret-manager" -version = "2.18.3" +version = "2.16.4" description = "Google Cloud Secret Manager API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-secret-manager-2.18.3.tar.gz", hash = "sha256:1db2f409324536e34f985081d389e3974ca3a3668df7845cad0be03ab8c0fa7d"}, - {file = "google_cloud_secret_manager-2.18.3-py2.py3-none-any.whl", hash = "sha256:4d4af82bddd9099ebdbe79e0c6b68f6c6cabea8323a3c1275bcead8f56310fb7"}, + {file = "google-cloud-secret-manager-2.16.4.tar.gz", hash = "sha256:371dc72f9145af323e8a813c8e50380e6ac4bd6a5dbcd42dcf3162d8f37e5080"}, + {file = "google_cloud_secret_manager-2.16.4-py2.py3-none-any.whl", hash = "sha256:5031c45dd84dc584d91ee0baae2bbd5df6710efe0c42719ee370a3ab62aaf618"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-spanner" -version = "3.43.0" +version = "3.40.1" description = "Google Cloud Spanner API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-spanner-3.43.0.tar.gz", hash = "sha256:0662e95fe314674a3b8b2fa3c19e81e544d94f584ca6965b98c95083a8864222"}, - {file = "google_cloud_spanner-3.43.0-py2.py3-none-any.whl", hash = "sha256:b83f286459547b551b9fec5e13becadd7c7786d94e61a6df1007966536cf35a1"}, + {file = "google-cloud-spanner-3.40.1.tar.gz", hash = "sha256:616b07c86cdae6c78bad27b8ab39d8ce7a273511f2b91fe260f170d926653c2e"}, + {file = "google_cloud_spanner-3.40.1-py2.py3-none-any.whl", hash = "sha256:0c5825bb5956df83ee1d732e1851467be97bbc4502ccd91ed0c5e7fb4b3f4ccb"}, ] [package.dependencies] -deprecated = ">=1.2.14" google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-cloud-core = ">=1.4.4,<3.0dev" +google-cloud-core = ">=1.4.1,<3.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -grpc-interceptor = ">=0.15.4" proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" sqlparse = ">=0.4.4" @@ -3055,35 +3032,34 @@ tracing = ["opentelemetry-api (>=1.1.0)", "opentelemetry-instrumentation (>=0.20 [[package]] name = "google-cloud-speech" -version = "2.25.1" +version = "2.21.1" description = "Google Cloud Speech API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-speech-2.25.1.tar.gz", hash = "sha256:5b7470a949f5a77c40511c3664ac339fe0a4704482f9b6b3a2ba554b7d2b2cdc"}, - {file = "google_cloud_speech-2.25.1-py2.py3-none-any.whl", hash = "sha256:b08ab9648774949295a869a69473af9b9a65f038436a2a1a560ec5ba28d2b227"}, + {file = "google-cloud-speech-2.21.1.tar.gz", hash = "sha256:4935375eaaf18656e53e2631770b9d579e80cb4ec1b3d46dd23346f789aa016a"}, + {file = "google_cloud_speech-2.21.1-py2.py3-none-any.whl", hash = "sha256:36089039640c5ab79cefd32af7a482043a67144d393ec752c6b57c1fdc02a95d"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-storage" -version = "2.15.0" +version = "2.13.0" description = "Google Cloud Storage API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-storage-2.15.0.tar.gz", hash = "sha256:7560a3c48a03d66c553dc55215d35883c680fe0ab44c23aa4832800ccc855c74"}, - {file = "google_cloud_storage-2.15.0-py2.py3-none-any.whl", hash = "sha256:5d9237f88b648e1d724a0f20b5cde65996a37fe51d75d17660b1404097327dd2"}, + {file = "google-cloud-storage-2.13.0.tar.gz", hash = "sha256:f62dc4c7b6cd4360d072e3deb28035fbdad491ac3d9b0b1815a12daea10f37c7"}, + {file = "google_cloud_storage-2.13.0-py2.py3-none-any.whl", hash = "sha256:ab0bf2e1780a1b74cf17fccb13788070b729f50c252f0c94ada2aae0ca95437d"}, ] [package.dependencies] -google-api-core = ">=2.15.0,<3.0.0dev" -google-auth = ">=2.26.1,<3.0dev" +google-api-core = ">=1.31.5,<2.0.dev0 || >2.3.0,<3.0.0dev" +google-auth = ">=2.23.3,<3.0dev" google-cloud-core = ">=2.3.0,<3.0dev" google-crc32c = ">=1.0,<2.0dev" google-resumable-media = ">=2.6.0" @@ -3094,123 +3070,116 @@ protobuf = ["protobuf (<5.0.0dev)"] [[package]] name = "google-cloud-storage-transfer" -version = "1.11.3" +version = "1.9.2" description = "Google Cloud Storage Transfer API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-storage-transfer-1.11.3.tar.gz", hash = "sha256:c4564749492f41957f44c41b76f61f72c12b519424b841895bfe2d932c6f1490"}, - {file = "google_cloud_storage_transfer-1.11.3-py2.py3-none-any.whl", hash = "sha256:698e1b21c9dc710f543b2e6dc3c70334b872d4a80fafc0b2718fc91b6f45858e"}, + {file = "google-cloud-storage-transfer-1.9.2.tar.gz", hash = "sha256:c36800cf425e23cca5bed51320dce6eec313b68db8dd4677be6e3b49c891207d"}, + {file = "google_cloud_storage_transfer-1.9.2-py2.py3-none-any.whl", hash = "sha256:d30b519b57eee0d337da6d9051442337625128e950e6b487b4fd63f4942f7cb7"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-tasks" -version = "2.16.3" +version = "2.14.2" description = "Google Cloud Tasks API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-tasks-2.16.3.tar.gz", hash = "sha256:d891fe7006db4d6122838aa6de4aca6e0077bab224edcae684666ae3e303c45f"}, - {file = "google_cloud_tasks-2.16.3-py2.py3-none-any.whl", hash = "sha256:a1a8473f5c76907525b51ae4c20182a42333b5c3e1dc5782d7af6c2f58241a0c"}, + {file = "google-cloud-tasks-2.14.2.tar.gz", hash = "sha256:3efb280e7a635f57860a06a346131c117042e820ad483afd256800fae1b4d701"}, + {file = "google_cloud_tasks-2.14.2-py2.py3-none-any.whl", hash = "sha256:801a671c6dbd2269179037e93490f87e2df59ddfcb59551128bab27e7dd09f94"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-texttospeech" -version = "2.16.3" +version = "2.14.2" description = "Google Cloud Texttospeech API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-texttospeech-2.16.3.tar.gz", hash = "sha256:fabc315032d137da0710bb4c268734d336212d8fa8316b23b277dd3a84ce721c"}, - {file = "google_cloud_texttospeech-2.16.3-py2.py3-none-any.whl", hash = "sha256:5d1e23f9270908a5d7ecf2af04105fbd3a7ddde60fe48506e397bd18c1ece499"}, + {file = "google-cloud-texttospeech-2.14.2.tar.gz", hash = "sha256:a23738366988faf4d265200f57c5de4312efa3d14bb434b92a6e541713f5d906"}, + {file = "google_cloud_texttospeech-2.14.2-py2.py3-none-any.whl", hash = "sha256:3a4e7ca71a1d3f90de77170a013b37f18775858dac01c80793752b8c160d6555"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-translate" -version = "3.15.3" +version = "3.12.1" description = "Google Cloud Translate API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-translate-3.15.3.tar.gz", hash = "sha256:ed587a1e60cf847c3b1add6b28256e2d1722fa73a4285334f5ec5ca933e616f2"}, - {file = "google_cloud_translate-3.15.3-py2.py3-none-any.whl", hash = "sha256:2e92cd286fb25d5cf9fc0e8710f524fdf80656b6b64947d244e91696e69346ad"}, + {file = "google-cloud-translate-3.12.1.tar.gz", hash = "sha256:661cb8879aa3c63a2f725a3ea68f90199bd354c95ca169cc2e83a5105987d29e"}, + {file = "google_cloud_translate-3.12.1-py2.py3-none-any.whl", hash = "sha256:2a0f6aa398a64d7836d0f2880dfd023be0de05f8b688ac537825391014fc114a"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} google-cloud-core = ">=1.4.4,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-videointelligence" -version = "2.13.3" +version = "2.11.4" description = "Google Cloud Videointelligence API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-videointelligence-2.13.3.tar.gz", hash = "sha256:1460721d8120661c477c01af0edd3db03845857f52146a4a39f16b4acfb36f6d"}, - {file = "google_cloud_videointelligence-2.13.3-py2.py3-none-any.whl", hash = "sha256:2eddfc42c4ef60378b638a5f4dfe466fadefae5cd6b1134eee377b5937be2c9e"}, + {file = "google-cloud-videointelligence-2.11.4.tar.gz", hash = "sha256:07ace299a63f5b3d4441375634853b55ce8f90c62c6a24f8a47eb054149f6f99"}, + {file = "google_cloud_videointelligence-2.11.4-py2.py3-none-any.whl", hash = "sha256:4d62f7b074f6f1eae4efd8697b5a93fb59b3b22f9934e383b4f6fbed69f49eb6"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-vision" -version = "3.7.2" +version = "3.4.5" description = "Google Cloud Vision API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-vision-3.7.2.tar.gz", hash = "sha256:044330ad618c810333ff2296cd27ffd145f249638d1b35b270de6b460b00e8d2"}, - {file = "google_cloud_vision-3.7.2-py2.py3-none-any.whl", hash = "sha256:a313088fcd9c016af0427c2447eea1ad01bc192ca4cc33babaace1be587bbf75"}, + {file = "google-cloud-vision-3.4.5.tar.gz", hash = "sha256:0df8241ab277199b919ca3837a7de85059363fea0e3d660060870be7ceffc047"}, + {file = "google_cloud_vision-3.4.5-py2.py3-none-any.whl", hash = "sha256:4e67f5985ecbb8f7252fe47b8e26f1ac083af4c45626bae23869cf097ba9292e"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] name = "google-cloud-workflows" -version = "1.14.3" +version = "1.12.1" description = "Google Cloud Workflows API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-workflows-1.14.3.tar.gz", hash = "sha256:2140b97f78037b967d4185576886772fe17be77d2ae9996d207a334ed5a77ffe"}, - {file = "google_cloud_workflows-1.14.3-py2.py3-none-any.whl", hash = "sha256:8e700e1e6e9e9ca6375d16cad6230c52cd123beca4597c86a956940bcce996d1"}, + {file = "google-cloud-workflows-1.12.1.tar.gz", hash = "sha256:fad66cece6279f7be4fd919c1cc50f2a4a7ebf8bba97feaba75b9addece0b64b"}, + {file = "google_cloud_workflows-1.12.1-py2.py3-none-any.whl", hash = "sha256:1c24dc2b7eb4d953677407a0826e2680fc03fe6dc81b75a15d38d5a452aa467f"}, ] [package.dependencies] -google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} -google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +google-api-core = {version = ">=1.34.0,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} +proto-plus = ">=1.22.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" [[package]] @@ -3461,13 +3430,13 @@ files = [ [[package]] name = "google-resumable-media" -version = "2.7.0" +version = "2.6.0" description = "Utilities for Google Media Downloads and Resumable Uploads" optional = false python-versions = ">= 3.7" files = [ - {file = "google-resumable-media-2.7.0.tar.gz", hash = "sha256:5f18f5fa9836f4b083162064a1c2c98c17239bfda9ca50ad970ccf905f3e625b"}, - {file = "google_resumable_media-2.7.0-py2.py3-none-any.whl", hash = "sha256:79543cfe433b63fd81c0844b7803aba1bb8950b47bedf7d980c38fa123937e08"}, + {file = "google-resumable-media-2.6.0.tar.gz", hash = "sha256:972852f6c65f933e15a4a210c2b96930763b47197cdf4aa5f5bea435efb626e7"}, + {file = "google_resumable_media-2.6.0-py2.py3-none-any.whl", hash = "sha256:fc03d344381970f79eebb632a3c18bb1828593a2dc5572b5f90115ef7d11e81b"}, ] [package.dependencies] @@ -3479,13 +3448,13 @@ requests = ["requests (>=2.18.0,<3.0.0dev)"] [[package]] name = "googleapis-common-protos" -version = "1.62.0" +version = "1.61.0" description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" files = [ - {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"}, + {file = "googleapis-common-protos-1.61.0.tar.gz", hash = "sha256:8a64866a97f6304a7179873a465d6eee97b7a24ec6cfd78e0f575e96b821240b"}, + {file = "googleapis_common_protos-1.61.0-py2.py3-none-any.whl", hash = "sha256:22f1915393bb3245343f6efe87f6fe868532efc12aa26b391b15132e1279f1c0"}, ] [package.dependencies] @@ -3495,86 +3464,101 @@ protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4 [package.extras] grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] +[[package]] +name = "graphviz" +version = "0.20.1" +description = "Simple Python interface for Graphviz" +optional = false +python-versions = ">=3.7" +files = [ + {file = "graphviz-0.20.1-py3-none-any.whl", hash = "sha256:587c58a223b51611c0cf461132da386edd896a029524ca61a1462b880bf97977"}, + {file = "graphviz-0.20.1.zip", hash = "sha256:8c58f14adaa3b947daf26c19bc1e98c4e0702cdc31cf99153e6f06904d492bf8"}, +] + +[package.extras] +dev = ["flake8", "pep8-naming", "tox (>=3)", "twine", "wheel"] +docs = ["sphinx (>=5)", "sphinx-autodoc-typehints", "sphinx-rtd-theme"] +test = ["coverage", "mock (>=4)", "pytest (>=7)", "pytest-cov", "pytest-mock (>=3)"] + [[package]] name = "greenlet" -version = "3.0.3" +version = "3.0.1" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, - {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, - {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, - {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, - {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, - {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, - {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, - {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, - {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, - {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, - {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, - {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, - {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, - {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, - {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, - {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, -] - -[package.extras] -docs = ["Sphinx", "furo"] + {file = "greenlet-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2"}, + {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63"}, + {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e"}, + {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846"}, + {file = "greenlet-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9"}, + {file = "greenlet-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72"}, + {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234"}, + {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884"}, + {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94"}, + {file = "greenlet-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c"}, + {file = "greenlet-3.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0"}, + {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5"}, + {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d"}, + {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445"}, + {file = "greenlet-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a"}, + {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de"}, + {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166"}, + {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36"}, + {file = "greenlet-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1"}, + {file = "greenlet-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8"}, + {file = "greenlet-3.0.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd"}, + {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9"}, + {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e"}, + {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a"}, + {file = "greenlet-3.0.1-cp38-cp38-win32.whl", hash = "sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd"}, + {file = "greenlet-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6"}, + {file = "greenlet-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1"}, + {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d"}, + {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8"}, + {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546"}, + {file = "greenlet-3.0.1-cp39-cp39-win32.whl", hash = "sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57"}, + {file = "greenlet-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619"}, + {file = "greenlet-3.0.1.tar.gz", hash = "sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b"}, +] + +[package.extras] +docs = ["Sphinx"] test = ["objgraph", "psutil"] [[package]] name = "griffe" -version = "0.41.3" +version = "0.38.0" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." optional = false python-versions = ">=3.8" files = [ - {file = "griffe-0.41.3-py3-none-any.whl", hash = "sha256:27b4610f1ba6e5d039e9f0a2c97232e13463df75e53cb1833e0679f3377b9de2"}, - {file = "griffe-0.41.3.tar.gz", hash = "sha256:9edcfa9f57f4d9c5fcc6d5ce067c67a685b7101a21a7d11848ce0437368e474c"}, + {file = "griffe-0.38.0-py3-none-any.whl", hash = "sha256:6a5bc457320e8e199006aa5fbb03e162f5e21abe31aa6221f7a5c37ea0724c71"}, + {file = "griffe-0.38.0.tar.gz", hash = "sha256:9b97487b583042b543d1e28196caee638ecd766c8c4c98135071806cb5333ac2"}, ] [package.dependencies] @@ -3582,13 +3566,13 @@ colorama = ">=0.4" [[package]] name = "grpc-google-iam-v1" -version = "0.13.0" +version = "0.12.6" description = "IAM API client library" optional = false python-versions = ">=3.7" files = [ - {file = "grpc-google-iam-v1-0.13.0.tar.gz", hash = "sha256:fad318608b9e093258fbf12529180f400d1c44453698a33509cc6ecf005b294e"}, - {file = "grpc_google_iam_v1-0.13.0-py2.py3-none-any.whl", hash = "sha256:53902e2af7de8df8c1bd91373d9be55b0743ec267a7428ea638db3775becae89"}, + {file = "grpc-google-iam-v1-0.12.6.tar.gz", hash = "sha256:2bc4b8fdf22115a65d751c9317329322602c39b7c86a289c9b72d228d960ef5f"}, + {file = "grpc_google_iam_v1-0.12.6-py2.py3-none-any.whl", hash = "sha256:5c10f3d8dc2d88678ab1a9b0cb5482735c5efee71e6c0cd59f872eef22913f5c"}, ] [package.dependencies] @@ -3596,88 +3580,71 @@ googleapis-common-protos = {version = ">=1.56.0,<2.0.0dev", extras = ["grpc"]} grpcio = ">=1.44.0,<2.0.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" -[[package]] -name = "grpc-interceptor" -version = "0.15.4" -description = "Simplifies gRPC interceptors" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "grpc-interceptor-0.15.4.tar.gz", hash = "sha256:1f45c0bcb58b6f332f37c637632247c9b02bc6af0fdceb7ba7ce8d2ebbfb0926"}, - {file = "grpc_interceptor-0.15.4-py3-none-any.whl", hash = "sha256:0035f33228693ed3767ee49d937bac424318db173fef4d2d0170b3215f254d9d"}, -] - -[package.dependencies] -grpcio = ">=1.49.1,<2.0.0" - -[package.extras] -testing = ["protobuf (>=4.21.9)"] - [[package]] name = "grpcio" -version = "1.62.0" +version = "1.59.2" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {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.62.0)"] + {file = "grpcio-1.59.2-cp310-cp310-linux_armv7l.whl", hash = "sha256:d2fa68a96a30dd240be80bbad838a0ac81a61770611ff7952b889485970c4c71"}, + {file = "grpcio-1.59.2-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:cf0dead5a2c5a3347af2cfec7131d4f2a2e03c934af28989c9078f8241a491fa"}, + {file = "grpcio-1.59.2-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:e420ced29b5904cdf9ee5545e23f9406189d8acb6750916c2db4793dada065c6"}, + {file = "grpcio-1.59.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b230028a008ae1d0f430acb227d323ff8a619017415cf334c38b457f814119f"}, + {file = "grpcio-1.59.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a4a3833c0e067f3558538727235cd8a49709bff1003200bbdefa2f09334e4b1"}, + {file = "grpcio-1.59.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6b25ed37c27e652db01be341af93fbcea03d296c024d8a0e680017a268eb85dd"}, + {file = "grpcio-1.59.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73abb8584b0cf74d37f5ef61c10722adc7275502ab71789a8fe3cb7ef04cf6e2"}, + {file = "grpcio-1.59.2-cp310-cp310-win32.whl", hash = "sha256:d6f70406695e3220f09cd7a2f879333279d91aa4a8a1d34303b56d61a8180137"}, + {file = "grpcio-1.59.2-cp310-cp310-win_amd64.whl", hash = "sha256:3c61d641d4f409c5ae46bfdd89ea42ce5ea233dcf69e74ce9ba32b503c727e29"}, + {file = "grpcio-1.59.2-cp311-cp311-linux_armv7l.whl", hash = "sha256:3059668df17627f0e0fa680e9ef8c995c946c792612e9518f5cc1503be14e90b"}, + {file = "grpcio-1.59.2-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:72ca2399097c0b758198f2ff30f7178d680de8a5cfcf3d9b73a63cf87455532e"}, + {file = "grpcio-1.59.2-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:c978f864b35f2261e0819f5cd88b9830b04dc51bcf055aac3c601e525a10d2ba"}, + {file = "grpcio-1.59.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9411e24328a2302e279e70cae6e479f1fddde79629fcb14e03e6d94b3956eabf"}, + {file = "grpcio-1.59.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb7e0fe6ad73b7f06d7e2b689c19a71cf5cc48f0c2bf8608469e51ffe0bd2867"}, + {file = "grpcio-1.59.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c2504eed520958a5b77cc99458297cb7906308cb92327f35fb7fbbad4e9b2188"}, + {file = "grpcio-1.59.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2171c39f355ba5b551c5d5928d65aa6c69807fae195b86ef4a7d125bcdb860a9"}, + {file = "grpcio-1.59.2-cp311-cp311-win32.whl", hash = "sha256:d2794f0e68b3085d99b4f6ff9c089f6fdd02b32b9d3efdfbb55beac1bf22d516"}, + {file = "grpcio-1.59.2-cp311-cp311-win_amd64.whl", hash = "sha256:2067274c88bc6de89c278a672a652b4247d088811ece781a4858b09bdf8448e3"}, + {file = "grpcio-1.59.2-cp312-cp312-linux_armv7l.whl", hash = "sha256:535561990e075fa6bd4b16c4c3c1096b9581b7bb35d96fac4650f1181e428268"}, + {file = "grpcio-1.59.2-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a213acfbf186b9f35803b52e4ca9addb153fc0b67f82a48f961be7000ecf6721"}, + {file = "grpcio-1.59.2-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:6959fb07e8351e20501ffb8cc4074c39a0b7ef123e1c850a7f8f3afdc3a3da01"}, + {file = "grpcio-1.59.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e82c5cf1495244adf5252f925ac5932e5fd288b3e5ab6b70bec5593074b7236c"}, + {file = "grpcio-1.59.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:023088764012411affe7db183d1ada3ad9daf2e23ddc719ff46d7061de661340"}, + {file = "grpcio-1.59.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:da2d94c15f88cd40d7e67f7919d4f60110d2b9d5b1e08cf354c2be773ab13479"}, + {file = "grpcio-1.59.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6009386a2df66159f64ac9f20425ae25229b29b9dd0e1d3dd60043f037e2ad7e"}, + {file = "grpcio-1.59.2-cp312-cp312-win32.whl", hash = "sha256:75c6ecb70e809cf1504465174343113f51f24bc61e22a80ae1c859f3f7034c6d"}, + {file = "grpcio-1.59.2-cp312-cp312-win_amd64.whl", hash = "sha256:cbe946b3e6e60a7b4618f091e62a029cb082b109a9d6b53962dd305087c6e4fd"}, + {file = "grpcio-1.59.2-cp37-cp37m-linux_armv7l.whl", hash = "sha256:f8753a6c88d1d0ba64302309eecf20f70d2770f65ca02d83c2452279085bfcd3"}, + {file = "grpcio-1.59.2-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:f1ef0d39bc1feb420caf549b3c657c871cad4ebbcf0580c4d03816b0590de0cf"}, + {file = "grpcio-1.59.2-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:4c93f4abbb54321ee6471e04a00139c80c754eda51064187963ddf98f5cf36a4"}, + {file = "grpcio-1.59.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08d77e682f2bf730a4961eea330e56d2f423c6a9b91ca222e5b1eb24a357b19f"}, + {file = "grpcio-1.59.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ff16d68bf453275466a9a46739061a63584d92f18a0f5b33d19fc97eb69867c"}, + {file = "grpcio-1.59.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4abb717e320e74959517dc8e84a9f48fbe90e9abe19c248541e9418b1ce60acd"}, + {file = "grpcio-1.59.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:36f53c2b3449c015880e7d55a89c992c357f176327b0d2873cdaaf9628a37c69"}, + {file = "grpcio-1.59.2-cp37-cp37m-win_amd64.whl", hash = "sha256:cc3e4cd087f07758b16bef8f31d88dbb1b5da5671d2f03685ab52dece3d7a16e"}, + {file = "grpcio-1.59.2-cp38-cp38-linux_armv7l.whl", hash = "sha256:27f879ae604a7fcf371e59fba6f3ff4635a4c2a64768bd83ff0cac503142fef4"}, + {file = "grpcio-1.59.2-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:7cf05053242f61ba94014dd3a986e11a083400a32664058f80bf4cf817c0b3a1"}, + {file = "grpcio-1.59.2-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:e1727c1c0e394096bb9af185c6923e8ea55a5095b8af44f06903bcc0e06800a2"}, + {file = "grpcio-1.59.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5d573e70a6fe77555fb6143c12d3a7d3fa306632a3034b4e7c59ca09721546f8"}, + {file = "grpcio-1.59.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31176aa88f36020055ace9adff2405a33c8bdbfa72a9c4980e25d91b2f196873"}, + {file = "grpcio-1.59.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:11168ef43e4a43ff1b1a65859f3e0ef1a173e277349e7fb16923ff108160a8cd"}, + {file = "grpcio-1.59.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:53c9aa5ddd6857c0a1cd0287225a2a25873a8e09727c2e95c4aebb1be83a766a"}, + {file = "grpcio-1.59.2-cp38-cp38-win32.whl", hash = "sha256:3b4368b33908f683a363f376dfb747d40af3463a6e5044afee07cf9436addf96"}, + {file = "grpcio-1.59.2-cp38-cp38-win_amd64.whl", hash = "sha256:0a754aff9e3af63bdc4c75c234b86b9d14e14a28a30c4e324aed1a9b873d755f"}, + {file = "grpcio-1.59.2-cp39-cp39-linux_armv7l.whl", hash = "sha256:1f9524d1d701e399462d2c90ba7c193e49d1711cf429c0d3d97c966856e03d00"}, + {file = "grpcio-1.59.2-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:f93dbf58f03146164048be5426ffde298b237a5e059144847e4940f5b80172c3"}, + {file = "grpcio-1.59.2-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:6da6dea3a1bacf99b3c2187e296db9a83029ed9c38fd4c52b7c9b7326d13c828"}, + {file = "grpcio-1.59.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5f09cffa619adfb44799fa4a81c2a1ad77c887187613fb0a8f201ab38d89ba1"}, + {file = "grpcio-1.59.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c35aa9657f5d5116d23b934568e0956bd50c615127810fffe3ac356a914c176a"}, + {file = "grpcio-1.59.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:74100fecaec8a535e380cf5f2fb556ff84957d481c13e54051c52e5baac70541"}, + {file = "grpcio-1.59.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:128e20f57c5f27cb0157e73756d1586b83c1b513ebecc83ea0ac37e4b0e4e758"}, + {file = "grpcio-1.59.2-cp39-cp39-win32.whl", hash = "sha256:686e975a5d16602dc0982c7c703948d17184bd1397e16c8ee03511ecb8c4cdda"}, + {file = "grpcio-1.59.2-cp39-cp39-win_amd64.whl", hash = "sha256:242adc47725b9a499ee77c6a2e36688fa6c96484611f33b1be4c57ab075a92dd"}, + {file = "grpcio-1.59.2.tar.gz", hash = "sha256:d8f9cd4ad1be90b0cf350a2f04a38a36e44a026cac1e036ac593dc48efe91d52"}, +] + +[package.extras] +protobuf = ["grpcio-tools (>=1.59.2)"] [[package]] name = "grpcio-gcp" @@ -3789,24 +3756,24 @@ uvloop = {version = ">=0.19.0,<1", markers = "sys_platform != \"win32\""} [[package]] name = "httpcore" -version = "1.0.4" +version = "0.18.0" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"}, - {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"}, + {file = "httpcore-0.18.0-py3-none-any.whl", hash = "sha256:adc5398ee0a476567bf87467063ee63584a8bce86078bf748e48754f60202ced"}, + {file = "httpcore-0.18.0.tar.gz", hash = "sha256:13b5e5cd1dca1a6636a6aaea212b19f4f85cd88c366a2b82304181b769aab3c9"}, ] [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.25.0)"] [[package]] name = "httplib2" @@ -3824,19 +3791,18 @@ pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0 [[package]] name = "httpx" -version = "0.27.0" +version = "0.25.0" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, - {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, + {file = "httpx-0.25.0-py3-none-any.whl", hash = "sha256:181ea7f8ba3a82578be86ef4171554dd45fec26a02556a744db029a0a27b7100"}, + {file = "httpx-0.25.0.tar.gz", hash = "sha256:47ecda285389cb32bb2691cc6e069e3ab0205956f681c5b2ad2325719751d875"}, ] [package.dependencies] -anyio = "*" certifi = "*" -httpcore = "==1.*" +httpcore = ">=0.18.0,<0.19.0" idna = "*" sniffio = "*" @@ -3878,13 +3844,13 @@ packaging = "*" [[package]] name = "identify" -version = "2.5.35" +version = "2.5.31" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.35-py2.py3-none-any.whl", hash = "sha256:c4de0081837b211594f8e877a6b4fad7ca32bbfc1a9307fdd61c28bfe923f13e"}, - {file = "identify-2.5.35.tar.gz", hash = "sha256:10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791"}, + {file = "identify-2.5.31-py2.py3-none-any.whl", hash = "sha256:90199cb9e7bd3c5407a9b7e81b4abec4bb9d249991c79439ec8af740afc6293d"}, + {file = "identify-2.5.31.tar.gz", hash = "sha256:7736b3c7a28233637e3c36550646fc6389bedd74ae84cb788200cc8e2dd60b75"}, ] [package.extras] @@ -3892,48 +3858,48 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.6" +version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] [[package]] name = "importlib-metadata" -version = "6.11.0" +version = "6.8.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, - {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, ] [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"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "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.1.3" +version = "6.1.0" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.1.3-py3-none-any.whl", hash = "sha256:4c0269e3580fe2634d364b39b38b961540a7738c02cb984e98add8b4221d793d"}, - {file = "importlib_resources-6.1.3.tar.gz", hash = "sha256:56fb4525197b78544a3354ea27793952ab93f935bb4bf746b846bb1015020f2b"}, + {file = "importlib_resources-6.1.0-py3-none-any.whl", hash = "sha256:aa50258bbfa56d4e33fbd8aa3ef48ded10d1735f11532b8df95388cc6bdb7e83"}, + {file = "importlib_resources-6.1.0.tar.gz", hash = "sha256:9d48dcccc213325e810fd723e7fbb45ccb39f6cf5c31f00cf2b965f5f10f3cb9"}, ] [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 = ["jaraco.collections", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] +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" @@ -3984,13 +3950,13 @@ tests = ["pytest", "pytest-cov", "pytest-mock"] [[package]] name = "ipykernel" -version = "6.29.3" +version = "6.29.0" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.29.3-py3-none-any.whl", hash = "sha256:5aa086a4175b0229d4eca211e181fb473ea78ffd9869af36ba7694c947302a21"}, - {file = "ipykernel-6.29.3.tar.gz", hash = "sha256:e14c250d1f9ea3989490225cc1a542781b095a18a19447fcf2b5eaf7d0ac5bd2"}, + {file = "ipykernel-6.29.0-py3-none-any.whl", hash = "sha256:076663ca68492576f051e4af7720d33f34383e655f2be0d544c8b1c9de915b2f"}, + {file = "ipykernel-6.29.0.tar.gz", hash = "sha256:b5dd3013cab7b330df712891c96cd1ab868c27a7159e606f762015e9bf8ceb3f"}, ] [package.dependencies] @@ -4013,17 +3979,17 @@ cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] pyqt5 = ["pyqt5"] pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.2)", "pytest-cov", "pytest-timeout"] [[package]] name = "ipython" -version = "8.22.2" +version = "8.22.1" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.22.2-py3-none-any.whl", hash = "sha256:3c86f284c8f3d8f2b6c662f885c4889a91df7cd52056fd02b7d8d6195d7f56e9"}, - {file = "ipython-8.22.2.tar.gz", hash = "sha256:2dcaad9049f9056f1fef63514f176c7d41f930daa78d05b82a176202818f2c14"}, + {file = "ipython-8.22.1-py3-none-any.whl", hash = "sha256:869335e8cded62ffb6fac8928e5287a05433d6462e3ebaac25f4216474dd6bc4"}, + {file = "ipython-8.22.1.tar.gz", hash = "sha256:39c6f9efc079fb19bfb0f17eee903978fe9a290b1b82d68196c641cecb76ea22"}, ] [package.dependencies] @@ -4125,13 +4091,13 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.2" 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"}, + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] [package.dependencies] @@ -4188,13 +4154,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.21.1" +version = "4.19.2" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, - {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, + {file = "jsonschema-4.19.2-py3-none-any.whl", hash = "sha256:eee9e502c788e89cb166d4d37f43084e3b64ab405c795c03d343a4dbc2c810fc"}, + {file = "jsonschema-4.19.2.tar.gz", hash = "sha256:c9ff4d7447eed9592c23a12ccee508baf0dd0d59650615e847feb6cdca74f392"}, ] [package.dependencies] @@ -4209,27 +4175,27 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.12.1" +version = "2023.7.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, - {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, + {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"}, + {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"}, ] [package.dependencies] -referencing = ">=0.31.0" +referencing = ">=0.28.0" [[package]] name = "jupyter-client" -version = "8.6.0" +version = "8.5.0" description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"}, - {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"}, + {file = "jupyter_client-8.5.0-py3-none-any.whl", hash = "sha256:c3877aac7257ec68d79b5c622ce986bd2a992ca42f6ddc9b4dd1da50e89f7028"}, + {file = "jupyter_client-8.5.0.tar.gz", hash = "sha256:e8754066510ce456358df363f97eae64b50860f30dc1fe8c6771440db3be9a63"}, ] [package.dependencies] @@ -4245,13 +4211,13 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt [[package]] name = "jupyter-core" -version = "5.7.1" +version = "5.5.0" description = "Jupyter core package. A base package on which Jupyter projects rely." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"}, - {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"}, + {file = "jupyter_core-5.5.0-py3-none-any.whl", hash = "sha256:e11e02cd8ae0a9de5c6c44abf5727df9f2581055afe00b22183f621ba3585805"}, + {file = "jupyter_core-5.5.0.tar.gz", hash = "sha256:880b86053bf298a8724994f95e99b99130659022a4f7f45f563084b6223861d3"}, ] [package.dependencies] @@ -4265,59 +4231,58 @@ test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "lazy-object-proxy" -version = "1.10.0" +version = "1.9.0" description = "A fast and thorough lazy object proxy." optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" 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"}, + {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"}, ] [[package]] name = "limits" -version = "3.9.0" +version = "3.6.0" description = "Rate limiting utilities" optional = false python-versions = ">=3.7" files = [ - {file = "limits-3.9.0-py3-none-any.whl", hash = "sha256:6dce07d1a4d7bd3361d36f59f3f43c4f39675001daeeae2617c3be42d718daa8"}, - {file = "limits-3.9.0.tar.gz", hash = "sha256:7b44aa4d05c539276928372681190136914958cccbb99c30ecc5df72a179661a"}, + {file = "limits-3.6.0-py3-none-any.whl", hash = "sha256:32fe29a398352c71bc43d53773117d47e22c5ea4200aef28d3f5fdee10334cd7"}, + {file = "limits-3.6.0.tar.gz", hash = "sha256:57a9c69fd37ad1e4fa3886dff8d035227e1f6af87f47e9118627e72cf1ced3bf"}, ] [package.dependencies] @@ -4340,13 +4305,13 @@ rediscluster = ["redis (>=4.2.0,!=4.5.2,!=4.5.3)"] [[package]] name = "linkify-it-py" -version = "2.0.3" +version = "2.0.2" description = "Links recognition library with FULL unicode support." optional = false python-versions = ">=3.7" files = [ - {file = "linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048"}, - {file = "linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79"}, + {file = "linkify-it-py-2.0.2.tar.gz", hash = "sha256:19f3060727842c254c808e99d465c80c49d2c7306788140987a1a7a29b0d6ad2"}, + {file = "linkify_it_py-2.0.2-py3-none-any.whl", hash = "sha256:a3a24428f6c96f27370d7fe61d2ac0be09017be5190d68d8658233171f1b6541"}, ] [package.dependencies] @@ -4371,13 +4336,13 @@ files = [ [[package]] name = "looker-sdk" -version = "24.2.0" +version = "23.16.0" description = "Looker REST API" optional = false python-versions = ">=3.6" files = [ - {file = "looker_sdk-24.2.0-py3-none-any.whl", hash = "sha256:714a550a42e6b8d8b3f42e6119a8559445b415d3837bac692fbfd9c400d9203f"}, - {file = "looker_sdk-24.2.0.tar.gz", hash = "sha256:51022762eae9df7c3e64458c4f1945f6030378aa75ed4a2ef6b965007466ec91"}, + {file = "looker_sdk-23.16.0-py3-none-any.whl", hash = "sha256:c5a680d4641a7725be6920630aa7ece0430e2a92abe1f396e8c63ed74dcd43d5"}, + {file = "looker_sdk-23.16.0.tar.gz", hash = "sha256:4daa7a9812a92fdd1e0094cb0afb0db2e7bb54e10492b1345b67705dbe5089d5"}, ] [package.dependencies] @@ -4481,13 +4446,13 @@ source = ["Cython (>=3.0.7)"] [[package]] name = "mako" -version = "1.3.2" +version = "1.2.4" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "Mako-1.3.2-py3-none-any.whl", hash = "sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c"}, - {file = "Mako-1.3.2.tar.gz", hash = "sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e"}, + {file = "Mako-1.2.4-py3-none-any.whl", hash = "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818"}, + {file = "Mako-1.2.4.tar.gz", hash = "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34"}, ] [package.dependencies] @@ -4500,13 +4465,13 @@ testing = ["pytest"] [[package]] name = "markdown" -version = "3.5.2" +version = "3.5.1" description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, - {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, + {file = "Markdown-3.5.1-py3-none-any.whl", hash = "sha256:5874b47d4ee3f0b14d764324d2c94c03ea66bee56f2d929da9f2508d65e722dc"}, + {file = "Markdown-3.5.1.tar.gz", hash = "sha256:b65d7beb248dc22f2e8a31fb706d93798093c308dc1aba295aedeb9d41a813bd"}, ] [package.extras] @@ -4539,109 +4504,111 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.5" +version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {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"}, + {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"}, ] [[package]] name = "marshmallow" -version = "3.21.1" +version = "3.20.1" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.8" files = [ - {file = "marshmallow-3.21.1-py3-none-any.whl", hash = "sha256:f085493f79efb0644f270a9bf2892843142d80d7174bbbd2f3713f2a589dc633"}, - {file = "marshmallow-3.21.1.tar.gz", hash = "sha256:4e65e9e0d80fc9e609574b9983cf32579f305c718afb30d7233ab818571768c3"}, + {file = "marshmallow-3.20.1-py3-none-any.whl", hash = "sha256:684939db93e80ad3561392f47be0230743131560a41c5110684c16e21ade0a5c"}, + {file = "marshmallow-3.20.1.tar.gz", hash = "sha256:5d2371bbe42000f2b3fb5eaa065224df7d8f8597bc19a1bbfa5bfe7fba8da889"}, ] [package.dependencies] packaging = ">=17.0" [package.extras] -dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"] -docs = ["alabaster (==0.7.16)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==4.0.0)", "sphinx-version-warning (==1.1.2)"] +dev = ["flake8 (==6.0.0)", "flake8-bugbear (==23.7.10)", "mypy (==1.4.1)", "pre-commit (>=2.4,<4.0)", "pytest", "pytz", "simplejson", "tox"] +docs = ["alabaster (==0.7.13)", "autodocsumm (==0.2.11)", "sphinx (==7.0.1)", "sphinx-issues (==3.0.1)", "sphinx-version-warning (==1.1.2)"] +lint = ["flake8 (==6.0.0)", "flake8-bugbear (==23.7.10)", "mypy (==1.4.1)", "pre-commit (>=2.4,<4.0)"] tests = ["pytest", "pytz", "simplejson"] [[package]] name = "marshmallow-oneofschema" -version = "3.1.1" +version = "3.0.1" description = "marshmallow multiplexing schema" optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" files = [ - {file = "marshmallow_oneofschema-3.1.1-py3-none-any.whl", hash = "sha256:ff4cb2a488785ee8edd521a765682c2c80c78b9dc48894124531bdfa1ec9303b"}, - {file = "marshmallow_oneofschema-3.1.1.tar.gz", hash = "sha256:68b4a57d0281a04ac25d4eb7a4c5865a57090a0a8fd30fd6362c8e833ac6a6d9"}, + {file = "marshmallow-oneofschema-3.0.1.tar.gz", hash = "sha256:62cd2099b29188c92493c2940ee79d1bf2f2619a71721664e5a98ec2faa58237"}, + {file = "marshmallow_oneofschema-3.0.1-py2.py3-none-any.whl", hash = "sha256:bd29410a9f2f7457a2b428286e2a80ef76b8ddc3701527dc1f935a88914b02f2"}, ] [package.dependencies] marshmallow = ">=3.0.0,<4.0.0" [package.extras] -dev = ["marshmallow-oneofschema[tests]", "pre-commit (>=3.5,<4.0)", "tox"] -tests = ["pytest"] +dev = ["flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "mock", "pre-commit (>=2.7,<3.0)", "pytest", "tox"] +lint = ["flake8 (==3.9.2)", "flake8-bugbear (==21.4.3)", "pre-commit (>=2.7,<3.0)"] +tests = ["mock", "pytest"] [[package]] name = "marshmallow-sqlalchemy" @@ -4776,18 +4743,17 @@ mkdocs = ">=1.2.3" [[package]] name = "mkdocs-autorefs" -version = "1.0.1" +version = "0.5.0" description = "Automatically link across pages in MkDocs." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_autorefs-1.0.1-py3-none-any.whl", hash = "sha256:aacdfae1ab197780fb7a2dac92ad8a3d8f7ca8049a9cbe56a4218cd52e8da570"}, - {file = "mkdocs_autorefs-1.0.1.tar.gz", hash = "sha256:f684edf847eced40b570b57846b15f0bf57fb93ac2c510450775dcf16accb971"}, + {file = "mkdocs_autorefs-0.5.0-py3-none-any.whl", hash = "sha256:7930fcb8ac1249f10e683967aeaddc0af49d90702af111a5e390e8b20b3d97ff"}, + {file = "mkdocs_autorefs-0.5.0.tar.gz", hash = "sha256:9a5054a94c08d28855cfab967ada10ed5be76e2bfad642302a610b252c3274c0"}, ] [package.dependencies] Markdown = ">=3.3" -markupsafe = ">=2.0.1" mkdocs = ">=1.1" [[package]] @@ -4837,13 +4803,13 @@ requests = "*" [[package]] name = "mkdocs-git-revision-date-localized-plugin" -version = "1.2.4" +version = "1.2.2" description = "Mkdocs plugin that enables displaying the localized date of the last git modification of a markdown file." optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" files = [ - {file = "mkdocs-git-revision-date-localized-plugin-1.2.4.tar.gz", hash = "sha256:08fd0c6f33c8da9e00daf40f7865943113b3879a1c621b2bbf0fa794ffe997d3"}, - {file = "mkdocs_git_revision_date_localized_plugin-1.2.4-py3-none-any.whl", hash = "sha256:1f94eb510862ef94e982a2910404fa17a1657ecf29f45a07b0f438c00767fc85"}, + {file = "mkdocs-git-revision-date-localized-plugin-1.2.2.tar.gz", hash = "sha256:0c43a9aac1fa69df99a823f833cc223bac9967b60d5261a857761c7c6e3b30de"}, + {file = "mkdocs_git_revision_date_localized_plugin-1.2.2-py3-none-any.whl", hash = "sha256:85c7fe9ab06e7a63c4e522c26fee8b51d357cb8cbe605064501ad80f4f31cb94"}, ] [package.dependencies] @@ -4854,13 +4820,13 @@ pytz = "*" [[package]] name = "mkdocs-material" -version = "9.5.13" +version = "9.5.3" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.13-py3-none-any.whl", hash = "sha256:5cbe17fee4e3b4980c8420a04cc762d8dc052ef1e10532abd4fce88e5ea9ce6a"}, - {file = "mkdocs_material-9.5.13.tar.gz", hash = "sha256:d8e4caae576312a88fd2609b81cf43d233cdbe36860d67a68702b018b425bd87"}, + {file = "mkdocs_material-9.5.3-py3-none-any.whl", hash = "sha256:76c93a8525cceb0b395b9cedab3428bf518cf6439adef2b940f1c1574b775d89"}, + {file = "mkdocs_material-9.5.3.tar.gz", hash = "sha256:5899219f422f0a6de784232d9d40374416302ffae3c160cacc72969fcc1ee372"}, ] [package.dependencies] @@ -4877,19 +4843,19 @@ regex = ">=2022.4" requests = ">=2.26,<3.0" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=9.4,<10.0)"] recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] [[package]] name = "mkdocs-material-extensions" -version = "1.3.1" +version = "1.3" description = "Extension pack for Python Markdown and MkDocs Material." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, - {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, + {file = "mkdocs_material_extensions-1.3-py3-none-any.whl", hash = "sha256:0297cc48ba68a9fdd1ef3780a3b41b534b0d0df1d1181a44676fda5f464eeadc"}, + {file = "mkdocs_material_extensions-1.3.tar.gz", hash = "sha256:f0446091503acb110a7cab9349cbc90eeac51b58d1caa92a704a81ca1e24ddbd"}, ] [[package]] @@ -4908,23 +4874,21 @@ mkdocs = ">=1.2" [[package]] name = "mkdocstrings" -version = "0.24.1" +version = "0.23.0" description = "Automatic documentation from sources, for MkDocs." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocstrings-0.24.1-py3-none-any.whl", hash = "sha256:b4206f9a2ca8a648e222d5a0ca1d36ba7dee53c88732818de183b536f9042b5d"}, - {file = "mkdocstrings-0.24.1.tar.gz", hash = "sha256:cc83f9a1c8724fc1be3c2fa071dd73d91ce902ef6a79710249ec8d0ee1064401"}, + {file = "mkdocstrings-0.23.0-py3-none-any.whl", hash = "sha256:051fa4014dfcd9ed90254ae91de2dbb4f24e166347dae7be9a997fe16316c65e"}, + {file = "mkdocstrings-0.23.0.tar.gz", hash = "sha256:d9c6a37ffbe7c14a7a54ef1258c70b8d394e6a33a1c80832bce40b9567138d1c"}, ] [package.dependencies] -click = ">=7.0" Jinja2 = ">=2.11.1" Markdown = ">=3.3" MarkupSafe = ">=1.1" -mkdocs = ">=1.4" +mkdocs = ">=1.2" mkdocs-autorefs = ">=0.3.1" -platformdirs = ">=2.2.0" pymdown-extensions = ">=6.3" [package.extras] @@ -4947,53 +4911,41 @@ files = [ griffe = ">=0.37" mkdocstrings = ">=0.20" -[[package]] -name = "more-itertools" -version = "10.2.0" -description = "More routines for operating on iterables, beyond itertools" -optional = false -python-versions = ">=3.8" -files = [ - {file = "more-itertools-10.2.0.tar.gz", hash = "sha256:8fccb480c43d3e99a00087634c06dd02b0d50fbf088b380de5a41a015ec239e1"}, - {file = "more_itertools-10.2.0-py3-none-any.whl", hash = "sha256:686b06abe565edfab151cb8fd385a05651e1fdf8f0a14191e4439283421f8684"}, -] - [[package]] name = "msal" -version = "1.27.0" -description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." +version = "1.24.1" +description = "The Microsoft Authentication Library (MSAL) for Python library" optional = false python-versions = ">=2.7" files = [ - {file = "msal-1.27.0-py2.py3-none-any.whl", hash = "sha256:572d07149b83e7343a85a3bcef8e581167b4ac76befcbbb6eef0c0e19643cdc0"}, - {file = "msal-1.27.0.tar.gz", hash = "sha256:3109503c038ba6b307152b0e8d34f98113f2e7a78986e28d0baf5b5303afda52"}, + {file = "msal-1.24.1-py2.py3-none-any.whl", hash = "sha256:ce4320688f95c301ee74a4d0e9dbcfe029a63663a8cc61756f40d0d0d36574ad"}, + {file = "msal-1.24.1.tar.gz", hash = "sha256:aa0972884b3c6fdec53d9a0bd15c12e5bd7b71ac1b66d746f54d128709f3f8f8"}, ] [package.dependencies] -cryptography = ">=0.6,<45" +cryptography = ">=0.6,<44" PyJWT = {version = ">=1.0.0,<3", extras = ["crypto"]} requests = ">=2.0.0,<3" [package.extras] -broker = ["pymsalruntime (>=0.13.2,<0.15)"] +broker = ["pymsalruntime (>=0.13.2,<0.14)"] [[package]] name = "msal-extensions" -version = "1.1.0" +version = "1.0.0" description = "Microsoft Authentication Library extensions (MSAL EX) provides a persistence API that can save your data on disk, encrypted on Windows, macOS and Linux. Concurrent data access will be coordinated by a file lock mechanism." optional = false -python-versions = ">=3.7" +python-versions = "*" files = [ - {file = "msal-extensions-1.1.0.tar.gz", hash = "sha256:6ab357867062db7b253d0bd2df6d411c7891a0ee7308d54d1e4317c1d1c54252"}, - {file = "msal_extensions-1.1.0-py3-none-any.whl", hash = "sha256:01be9711b4c0b1a151450068eeb2c4f0997df3bba085ac299de3a66f585e382f"}, + {file = "msal-extensions-1.0.0.tar.gz", hash = "sha256:c676aba56b0cce3783de1b5c5ecfe828db998167875126ca4b47dc6436451354"}, + {file = "msal_extensions-1.0.0-py2.py3-none-any.whl", hash = "sha256:91e3db9620b822d0ed2b4d1850056a0f133cba04455e62f11612e40f5502f2ee"}, ] [package.dependencies] msal = ">=0.4.1,<2.0.0" -packaging = "*" portalocker = [ - {version = ">=1.0,<3", markers = "platform_system != \"Windows\""}, - {version = ">=1.6,<3", markers = "platform_system == \"Windows\""}, + {version = ">=1.0,<3", markers = "python_version >= \"3.5\" and platform_system != \"Windows\""}, + {version = ">=1.6,<3", markers = "python_version >= \"3.5\" and platform_system == \"Windows\""}, ] [[package]] @@ -5019,101 +4971,85 @@ async = ["aiodns", "aiohttp (>=3.0)"] [[package]] name = "multidict" -version = "6.0.5" +version = "6.0.4" description = "multidict implementation" optional = false python-versions = ">=3.7" files = [ - {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"}, + {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"}, ] [[package]] @@ -5191,13 +5127,13 @@ icu = ["PyICU (>=1.0.0)"] [[package]] name = "nest-asyncio" -version = "1.6.0" +version = "1.5.8" description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" files = [ - {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, - {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, + {file = "nest_asyncio-1.5.8-py3-none-any.whl", hash = "sha256:accda7a339a70599cb08f9dd09a67e0c2ef8d8d6f4c07f96ab203f2ae254e48d"}, + {file = "nest_asyncio-1.5.8.tar.gz", hash = "sha256:25aa2ca0d2a5b5531956b9e273b45cf664cae2b145101d73b86b199978d48fdb"}, ] [[package]] @@ -5216,47 +5152,47 @@ setuptools = "*" [[package]] name = "numpy" -version = "1.26.4" +version = "1.26.3" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, + {file = "numpy-1.26.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:806dd64230dbbfaca8a27faa64e2f414bf1c6622ab78cc4264f7f5f028fee3bf"}, + {file = "numpy-1.26.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02f98011ba4ab17f46f80f7f8f1c291ee7d855fcef0a5a98db80767a468c85cd"}, + {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d45b3ec2faed4baca41c76617fcdcfa4f684ff7a151ce6fc78ad3b6e85af0a6"}, + {file = "numpy-1.26.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdd2b45bf079d9ad90377048e2747a0c82351989a2165821f0c96831b4a2a54b"}, + {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:211ddd1e94817ed2d175b60b6374120244a4dd2287f4ece45d49228b4d529178"}, + {file = "numpy-1.26.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1240f767f69d7c4c8a29adde2310b871153df9b26b5cb2b54a561ac85146485"}, + {file = "numpy-1.26.3-cp310-cp310-win32.whl", hash = "sha256:21a9484e75ad018974a2fdaa216524d64ed4212e418e0a551a2d83403b0531d3"}, + {file = "numpy-1.26.3-cp310-cp310-win_amd64.whl", hash = "sha256:9e1591f6ae98bcfac2a4bbf9221c0b92ab49762228f38287f6eeb5f3f55905ce"}, + {file = "numpy-1.26.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b831295e5472954104ecb46cd98c08b98b49c69fdb7040483aff799a755a7374"}, + {file = "numpy-1.26.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e87562b91f68dd8b1c39149d0323b42e0082db7ddb8e934ab4c292094d575d6"}, + {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c66d6fec467e8c0f975818c1796d25c53521124b7cfb760114be0abad53a0a2"}, + {file = "numpy-1.26.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25e2811a9c932e43943a2615e65fc487a0b6b49218899e62e426e7f0a57eeda"}, + {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:af36e0aa45e25c9f57bf684b1175e59ea05d9a7d3e8e87b7ae1a1da246f2767e"}, + {file = "numpy-1.26.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:51c7f1b344f302067b02e0f5b5d2daa9ed4a721cf49f070280ac202738ea7f00"}, + {file = "numpy-1.26.3-cp311-cp311-win32.whl", hash = "sha256:7ca4f24341df071877849eb2034948459ce3a07915c2734f1abb4018d9c49d7b"}, + {file = "numpy-1.26.3-cp311-cp311-win_amd64.whl", hash = "sha256:39763aee6dfdd4878032361b30b2b12593fb445ddb66bbac802e2113eb8a6ac4"}, + {file = "numpy-1.26.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a7081fd19a6d573e1a05e600c82a1c421011db7935ed0d5c483e9dd96b99cf13"}, + {file = "numpy-1.26.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12c70ac274b32bc00c7f61b515126c9205323703abb99cd41836e8125ea0043e"}, + {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f784e13e598e9594750b2ef6729bcd5a47f6cfe4a12cca13def35e06d8163e3"}, + {file = "numpy-1.26.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f24750ef94d56ce6e33e4019a8a4d68cfdb1ef661a52cdaee628a56d2437419"}, + {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:77810ef29e0fb1d289d225cabb9ee6cf4d11978a00bb99f7f8ec2132a84e0166"}, + {file = "numpy-1.26.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8ed07a90f5450d99dad60d3799f9c03c6566709bd53b497eb9ccad9a55867f36"}, + {file = "numpy-1.26.3-cp312-cp312-win32.whl", hash = "sha256:f73497e8c38295aaa4741bdfa4fda1a5aedda5473074369eca10626835445511"}, + {file = "numpy-1.26.3-cp312-cp312-win_amd64.whl", hash = "sha256:da4b0c6c699a0ad73c810736303f7fbae483bcb012e38d7eb06a5e3b432c981b"}, + {file = "numpy-1.26.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1666f634cb3c80ccbd77ec97bc17337718f56d6658acf5d3b906ca03e90ce87f"}, + {file = "numpy-1.26.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18c3319a7d39b2c6a9e3bb75aab2304ab79a811ac0168a671a62e6346c29b03f"}, + {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b7e807d6888da0db6e7e75838444d62495e2b588b99e90dd80c3459594e857b"}, + {file = "numpy-1.26.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4d362e17bcb0011738c2d83e0a65ea8ce627057b2fdda37678f4374a382a137"}, + {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b8c275f0ae90069496068c714387b4a0eba5d531aace269559ff2b43655edd58"}, + {file = "numpy-1.26.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cc0743f0302b94f397a4a65a660d4cd24267439eb16493fb3caad2e4389bccbb"}, + {file = "numpy-1.26.3-cp39-cp39-win32.whl", hash = "sha256:9bc6d1a7f8cedd519c4b7b1156d98e051b726bf160715b769106661d567b3f03"}, + {file = "numpy-1.26.3-cp39-cp39-win_amd64.whl", hash = "sha256:867e3644e208c8922a3be26fc6bbf112a035f50f0a86497f98f228c50c607bb2"}, + {file = "numpy-1.26.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3c67423b3703f8fbd90f5adaa37f85b5794d3366948efe9a5190a5f3a83fc34e"}, + {file = "numpy-1.26.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46f47ee566d98849323f01b349d58f2557f02167ee301e5e28809a8c0e27a2d0"}, + {file = "numpy-1.26.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8474703bffc65ca15853d5fd4d06b18138ae90c17c8d12169968e998e448bb5"}, + {file = "numpy-1.26.3.tar.gz", hash = "sha256:697df43e2b6310ecc9d95f05d5ef20eacc09c7c4ecc9da3f235d39e71b7da1e4"}, ] [[package]] @@ -5292,13 +5228,13 @@ PyYAML = ">=5.1.0" [[package]] name = "opentelemetry-api" -version = "1.23.0" +version = "1.20.0" description = "OpenTelemetry Python API" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "opentelemetry_api-1.23.0-py3-none-any.whl", hash = "sha256:cc03ea4025353048aadb9c64919099663664672ea1c6be6ddd8fee8e4cd5e774"}, - {file = "opentelemetry_api-1.23.0.tar.gz", hash = "sha256:14a766548c8dd2eb4dfc349739eb4c3893712a0daa996e5dbf945f9da665da9d"}, + {file = "opentelemetry_api-1.20.0-py3-none-any.whl", hash = "sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5"}, + {file = "opentelemetry_api-1.20.0.tar.gz", hash = "sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983"}, ] [package.dependencies] @@ -5307,88 +5243,91 @@ importlib-metadata = ">=6.0,<7.0" [[package]] name = "opentelemetry-exporter-otlp" -version = "1.23.0" +version = "1.20.0" description = "OpenTelemetry Collector Exporters" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "opentelemetry_exporter_otlp-1.23.0-py3-none-any.whl", hash = "sha256:92371fdc8d7803465a45801fe30cd8c522ef355a385b0a1d5346d32f77511ea2"}, - {file = "opentelemetry_exporter_otlp-1.23.0.tar.gz", hash = "sha256:4af8798f9bc3bddb92fcbb5b4aa9d0e955d962aa1d9bceaab08891c355a9f907"}, + {file = "opentelemetry_exporter_otlp-1.20.0-py3-none-any.whl", hash = "sha256:3b4d47726da83fef84467bdf96da4f8f3d1a61b35db3c16354c391ce8e9decf6"}, + {file = "opentelemetry_exporter_otlp-1.20.0.tar.gz", hash = "sha256:f8cb69f80c333166e5cfaa030f9e28f7faaf343aff24caaa2cb4202ea4849b6b"}, ] [package.dependencies] -opentelemetry-exporter-otlp-proto-grpc = "1.23.0" -opentelemetry-exporter-otlp-proto-http = "1.23.0" +opentelemetry-exporter-otlp-proto-grpc = "1.20.0" +opentelemetry-exporter-otlp-proto-http = "1.20.0" [[package]] name = "opentelemetry-exporter-otlp-proto-common" -version = "1.23.0" +version = "1.20.0" description = "OpenTelemetry Protobuf encoding" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "opentelemetry_exporter_otlp_proto_common-1.23.0-py3-none-any.whl", hash = "sha256:2a9e7e9d5a8b026b572684b6b24dcdefcaa58613d5ce3d644130b0c373c056c1"}, - {file = "opentelemetry_exporter_otlp_proto_common-1.23.0.tar.gz", hash = "sha256:35e4ea909e7a0b24235bd0aaf17fba49676527feb1823b46565ff246d5a1ab18"}, + {file = "opentelemetry_exporter_otlp_proto_common-1.20.0-py3-none-any.whl", hash = "sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef"}, + {file = "opentelemetry_exporter_otlp_proto_common-1.20.0.tar.gz", hash = "sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49"}, ] [package.dependencies] -opentelemetry-proto = "1.23.0" +backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""} +opentelemetry-proto = "1.20.0" [[package]] name = "opentelemetry-exporter-otlp-proto-grpc" -version = "1.23.0" +version = "1.20.0" description = "OpenTelemetry Collector Protobuf over gRPC Exporter" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "opentelemetry_exporter_otlp_proto_grpc-1.23.0-py3-none-any.whl", hash = "sha256:40f9e3e7761eb34f2a1001f4543028783ac26e2db27e420d5374f2cca0182dad"}, - {file = "opentelemetry_exporter_otlp_proto_grpc-1.23.0.tar.gz", hash = "sha256:aa1a012eea5342bfef51fcf3f7f22601dcb0f0984a07ffe6025b2fbb6d91a2a9"}, + {file = "opentelemetry_exporter_otlp_proto_grpc-1.20.0-py3-none-any.whl", hash = "sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec"}, + {file = "opentelemetry_exporter_otlp_proto_grpc-1.20.0.tar.gz", hash = "sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52"}, ] [package.dependencies] +backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""} deprecated = ">=1.2.6" googleapis-common-protos = ">=1.52,<2.0" grpcio = ">=1.0.0,<2.0.0" opentelemetry-api = ">=1.15,<2.0" -opentelemetry-exporter-otlp-proto-common = "1.23.0" -opentelemetry-proto = "1.23.0" -opentelemetry-sdk = ">=1.23.0,<1.24.0" +opentelemetry-exporter-otlp-proto-common = "1.20.0" +opentelemetry-proto = "1.20.0" +opentelemetry-sdk = ">=1.20.0,<1.21.0" [package.extras] test = ["pytest-grpc"] [[package]] name = "opentelemetry-exporter-otlp-proto-http" -version = "1.23.0" +version = "1.20.0" description = "OpenTelemetry Collector Protobuf over HTTP Exporter" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "opentelemetry_exporter_otlp_proto_http-1.23.0-py3-none-any.whl", hash = "sha256:ad853b58681df8efcb2cfc93be2b5fd86351c99ff4ab47dc917da384b8650d91"}, - {file = "opentelemetry_exporter_otlp_proto_http-1.23.0.tar.gz", hash = "sha256:088eac2320f4a604e2d9ff71aced71fdae601ac6457005fb0303d6bbbf44e6ca"}, + {file = "opentelemetry_exporter_otlp_proto_http-1.20.0-py3-none-any.whl", hash = "sha256:03f6e768ad25f1c3a9586e8c695db4a4adf978f8546a1285fa962e16bfbb0bd6"}, + {file = "opentelemetry_exporter_otlp_proto_http-1.20.0.tar.gz", hash = "sha256:500f42821420fdf0759193d6438edc0f4e984a83e14c08a23023c06a188861b4"}, ] [package.dependencies] +backoff = {version = ">=1.10.0,<3.0.0", markers = "python_version >= \"3.7\""} deprecated = ">=1.2.6" googleapis-common-protos = ">=1.52,<2.0" opentelemetry-api = ">=1.15,<2.0" -opentelemetry-exporter-otlp-proto-common = "1.23.0" -opentelemetry-proto = "1.23.0" -opentelemetry-sdk = ">=1.23.0,<1.24.0" +opentelemetry-exporter-otlp-proto-common = "1.20.0" +opentelemetry-proto = "1.20.0" +opentelemetry-sdk = ">=1.20.0,<1.21.0" requests = ">=2.7,<3.0" [package.extras] -test = ["responses (>=0.22.0,<0.25)"] +test = ["responses (==0.22.0)"] [[package]] name = "opentelemetry-proto" -version = "1.23.0" +version = "1.20.0" description = "OpenTelemetry Python Proto" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "opentelemetry_proto-1.23.0-py3-none-any.whl", hash = "sha256:4c017deca052cb287a6003b7c989ed8b47af65baeb5d57ebf93dde0793f78509"}, - {file = "opentelemetry_proto-1.23.0.tar.gz", hash = "sha256:e6aaf8b7ace8d021942d546161401b83eed90f9f2cc6f13275008cea730e4651"}, + {file = "opentelemetry_proto-1.20.0-py3-none-any.whl", hash = "sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b"}, + {file = "opentelemetry_proto-1.20.0.tar.gz", hash = "sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2"}, ] [package.dependencies] @@ -5396,29 +5335,29 @@ protobuf = ">=3.19,<5.0" [[package]] name = "opentelemetry-sdk" -version = "1.23.0" +version = "1.20.0" description = "OpenTelemetry Python SDK" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "opentelemetry_sdk-1.23.0-py3-none-any.whl", hash = "sha256:a93c96990ac0f07c6d679e2f1015864ff7a4f5587122dd5af968034436efb1fd"}, - {file = "opentelemetry_sdk-1.23.0.tar.gz", hash = "sha256:9ddf60195837b59e72fd2033d6a47e2b59a0f74f0ec37d89387d89e3da8cab7f"}, + {file = "opentelemetry_sdk-1.20.0-py3-none-any.whl", hash = "sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804"}, + {file = "opentelemetry_sdk-1.20.0.tar.gz", hash = "sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8"}, ] [package.dependencies] -opentelemetry-api = "1.23.0" -opentelemetry-semantic-conventions = "0.44b0" +opentelemetry-api = "1.20.0" +opentelemetry-semantic-conventions = "0.41b0" typing-extensions = ">=3.7.4" [[package]] name = "opentelemetry-semantic-conventions" -version = "0.44b0" +version = "0.41b0" description = "OpenTelemetry Semantic Conventions" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "opentelemetry_semantic_conventions-0.44b0-py3-none-any.whl", hash = "sha256:7c434546c9cbd797ab980cc88bf9ff3f4a5a28f941117cad21694e43d5d92019"}, - {file = "opentelemetry_semantic_conventions-0.44b0.tar.gz", hash = "sha256:2e997cb28cd4ca81a25a9a43365f593d0c2b76be0685015349a89abdf1aa4ffa"}, + {file = "opentelemetry_semantic_conventions-0.41b0-py3-none-any.whl", hash = "sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2"}, + {file = "opentelemetry_semantic_conventions-0.41b0.tar.gz", hash = "sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7"}, ] [[package]] @@ -5437,61 +5376,61 @@ dev = ["black", "mypy", "pytest"] [[package]] name = "orjson" -version = "3.9.15" +version = "3.9.10" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.9.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d61f7ce4727a9fa7680cd6f3986b0e2c732639f46a5e0156e550e35258aa313a"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4feeb41882e8aa17634b589533baafdceb387e01e117b1ec65534ec724023d04"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fbbeb3c9b2edb5fd044b2a070f127a0ac456ffd079cb82746fc84af01ef021a4"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b66bcc5670e8a6b78f0313bcb74774c8291f6f8aeef10fe70e910b8040f3ab75"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2973474811db7b35c30248d1129c64fd2bdf40d57d84beed2a9a379a6f57d0ab"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fe41b6f72f52d3da4db524c8653e46243c8c92df826ab5ffaece2dba9cccd58"}, - {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4228aace81781cc9d05a3ec3a6d2673a1ad0d8725b4e915f1089803e9efd2b99"}, - {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6f7b65bfaf69493c73423ce9db66cfe9138b2f9ef62897486417a8fcb0a92bfe"}, - {file = "orjson-3.9.15-cp310-none-win32.whl", hash = "sha256:2d99e3c4c13a7b0fb3792cc04c2829c9db07838fb6973e578b85c1745e7d0ce7"}, - {file = "orjson-3.9.15-cp310-none-win_amd64.whl", hash = "sha256:b725da33e6e58e4a5d27958568484aa766e825e93aa20c26c91168be58e08cbb"}, - {file = "orjson-3.9.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c8e8fe01e435005d4421f183038fc70ca85d2c1e490f51fb972db92af6e047c2"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87f1097acb569dde17f246faa268759a71a2cb8c96dd392cd25c668b104cad2f"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff0f9913d82e1d1fadbd976424c316fbc4d9c525c81d047bbdd16bd27dd98cfc"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8055ec598605b0077e29652ccfe9372247474375e0e3f5775c91d9434e12d6b1"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6768a327ea1ba44c9114dba5fdda4a214bdb70129065cd0807eb5f010bfcbb5"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12365576039b1a5a47df01aadb353b68223da413e2e7f98c02403061aad34bde"}, - {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:71c6b009d431b3839d7c14c3af86788b3cfac41e969e3e1c22f8a6ea13139404"}, - {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e18668f1bd39e69b7fed19fa7cd1cd110a121ec25439328b5c89934e6d30d357"}, - {file = "orjson-3.9.15-cp311-none-win32.whl", hash = "sha256:62482873e0289cf7313461009bf62ac8b2e54bc6f00c6fabcde785709231a5d7"}, - {file = "orjson-3.9.15-cp311-none-win_amd64.whl", hash = "sha256:b3d336ed75d17c7b1af233a6561cf421dee41d9204aa3cfcc6c9c65cd5bb69a8"}, - {file = "orjson-3.9.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:82425dd5c7bd3adfe4e94c78e27e2fa02971750c2b7ffba648b0f5d5cc016a73"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c51378d4a8255b2e7c1e5cc430644f0939539deddfa77f6fac7b56a9784160a"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6ae4e06be04dc00618247c4ae3f7c3e561d5bc19ab6941427f6d3722a0875ef7"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcef128f970bb63ecf9a65f7beafd9b55e3aaf0efc271a4154050fc15cdb386e"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b72758f3ffc36ca566ba98a8e7f4f373b6c17c646ff8ad9b21ad10c29186f00d"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c57bc7b946cf2efa67ac55766e41764b66d40cbd9489041e637c1304400494"}, - {file = "orjson-3.9.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:946c3a1ef25338e78107fba746f299f926db408d34553b4754e90a7de1d44068"}, - {file = "orjson-3.9.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2f256d03957075fcb5923410058982aea85455d035607486ccb847f095442bda"}, - {file = "orjson-3.9.15-cp312-none-win_amd64.whl", hash = "sha256:5bb399e1b49db120653a31463b4a7b27cf2fbfe60469546baf681d1b39f4edf2"}, - {file = "orjson-3.9.15-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b17f0f14a9c0ba55ff6279a922d1932e24b13fc218a3e968ecdbf791b3682b25"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f6cbd8e6e446fb7e4ed5bac4661a29e43f38aeecbf60c4b900b825a353276a1"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:76bc6356d07c1d9f4b782813094d0caf1703b729d876ab6a676f3aaa9a47e37c"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fdfa97090e2d6f73dced247a2f2d8004ac6449df6568f30e7fa1a045767c69a6"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7413070a3e927e4207d00bd65f42d1b780fb0d32d7b1d951f6dc6ade318e1b5a"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cf1596680ac1f01839dba32d496136bdd5d8ffb858c280fa82bbfeb173bdd40"}, - {file = "orjson-3.9.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:809d653c155e2cc4fd39ad69c08fdff7f4016c355ae4b88905219d3579e31eb7"}, - {file = "orjson-3.9.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:920fa5a0c5175ab14b9c78f6f820b75804fb4984423ee4c4f1e6d748f8b22bc1"}, - {file = "orjson-3.9.15-cp38-none-win32.whl", hash = "sha256:2b5c0f532905e60cf22a511120e3719b85d9c25d0e1c2a8abb20c4dede3b05a5"}, - {file = "orjson-3.9.15-cp38-none-win_amd64.whl", hash = "sha256:67384f588f7f8daf040114337d34a5188346e3fae6c38b6a19a2fe8c663a2f9b"}, - {file = "orjson-3.9.15-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6fc2fe4647927070df3d93f561d7e588a38865ea0040027662e3e541d592811e"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34cbcd216e7af5270f2ffa63a963346845eb71e174ea530867b7443892d77180"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f541587f5c558abd93cb0de491ce99a9ef8d1ae29dd6ab4dbb5a13281ae04cbd"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92255879280ef9c3c0bcb327c5a1b8ed694c290d61a6a532458264f887f052cb"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:05a1f57fb601c426635fcae9ddbe90dfc1ed42245eb4c75e4960440cac667262"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ede0bde16cc6e9b96633df1631fbcd66491d1063667f260a4f2386a098393790"}, - {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e88b97ef13910e5f87bcbc4dd7979a7de9ba8702b54d3204ac587e83639c0c2b"}, - {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57d5d8cf9c27f7ef6bc56a5925c7fbc76b61288ab674eb352c26ac780caa5b10"}, - {file = "orjson-3.9.15-cp39-none-win32.whl", hash = "sha256:001f4eb0ecd8e9ebd295722d0cbedf0748680fb9998d3993abaed2f40587257a"}, - {file = "orjson-3.9.15-cp39-none-win_amd64.whl", hash = "sha256:ea0b183a5fe6b2b45f3b854b0d19c4e932d6f5934ae1f723b07cf9560edd4ec7"}, - {file = "orjson-3.9.15.tar.gz", hash = "sha256:95cae920959d772f30ab36d3b25f83bb0f3be671e986c72ce22f8fa700dae061"}, + {file = "orjson-3.9.10-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c18a4da2f50050a03d1da5317388ef84a16013302a5281d6f64e4a3f406aabc4"}, + {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5148bab4d71f58948c7c39d12b14a9005b6ab35a0bdf317a8ade9a9e4d9d0bd5"}, + {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4cf7837c3b11a2dfb589f8530b3cff2bd0307ace4c301e8997e95c7468c1378e"}, + {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c62b6fa2961a1dcc51ebe88771be5319a93fd89bd247c9ddf732bc250507bc2b"}, + {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deeb3922a7a804755bbe6b5be9b312e746137a03600f488290318936c1a2d4dc"}, + {file = "orjson-3.9.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1234dc92d011d3554d929b6cf058ac4a24d188d97be5e04355f1b9223e98bbe9"}, + {file = "orjson-3.9.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:06ad5543217e0e46fd7ab7ea45d506c76f878b87b1b4e369006bdb01acc05a83"}, + {file = "orjson-3.9.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4fd72fab7bddce46c6826994ce1e7de145ae1e9e106ebb8eb9ce1393ca01444d"}, + {file = "orjson-3.9.10-cp310-none-win32.whl", hash = "sha256:b5b7d4a44cc0e6ff98da5d56cde794385bdd212a86563ac321ca64d7f80c80d1"}, + {file = "orjson-3.9.10-cp310-none-win_amd64.whl", hash = "sha256:61804231099214e2f84998316f3238c4c2c4aaec302df12b21a64d72e2a135c7"}, + {file = "orjson-3.9.10-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:cff7570d492bcf4b64cc862a6e2fb77edd5e5748ad715f487628f102815165e9"}, + {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8bc367f725dfc5cabeed1ae079d00369900231fbb5a5280cf0736c30e2adf7"}, + {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c812312847867b6335cfb264772f2a7e85b3b502d3a6b0586aa35e1858528ab1"}, + {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9edd2856611e5050004f4722922b7b1cd6268da34102667bd49d2a2b18bafb81"}, + {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:674eb520f02422546c40401f4efaf8207b5e29e420c17051cddf6c02783ff5ca"}, + {file = "orjson-3.9.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d0dc4310da8b5f6415949bd5ef937e60aeb0eb6b16f95041b5e43e6200821fb"}, + {file = "orjson-3.9.10-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e99c625b8c95d7741fe057585176b1b8783d46ed4b8932cf98ee145c4facf499"}, + {file = "orjson-3.9.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec6f18f96b47299c11203edfbdc34e1b69085070d9a3d1f302810cc23ad36bf3"}, + {file = "orjson-3.9.10-cp311-none-win32.whl", hash = "sha256:ce0a29c28dfb8eccd0f16219360530bc3cfdf6bf70ca384dacd36e6c650ef8e8"}, + {file = "orjson-3.9.10-cp311-none-win_amd64.whl", hash = "sha256:cf80b550092cc480a0cbd0750e8189247ff45457e5a023305f7ef1bcec811616"}, + {file = "orjson-3.9.10-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:602a8001bdf60e1a7d544be29c82560a7b49319a0b31d62586548835bbe2c862"}, + {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f295efcd47b6124b01255d1491f9e46f17ef40d3d7eabf7364099e463fb45f0f"}, + {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92af0d00091e744587221e79f68d617b432425a7e59328ca4c496f774a356071"}, + {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5a02360e73e7208a872bf65a7554c9f15df5fe063dc047f79738998b0506a14"}, + {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:858379cbb08d84fe7583231077d9a36a1a20eb72f8c9076a45df8b083724ad1d"}, + {file = "orjson-3.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666c6fdcaac1f13eb982b649e1c311c08d7097cbda24f32612dae43648d8db8d"}, + {file = "orjson-3.9.10-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3fb205ab52a2e30354640780ce4587157a9563a68c9beaf52153e1cea9aa0921"}, + {file = "orjson-3.9.10-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7ec960b1b942ee3c69323b8721df2a3ce28ff40e7ca47873ae35bfafeb4555ca"}, + {file = "orjson-3.9.10-cp312-none-win_amd64.whl", hash = "sha256:3e892621434392199efb54e69edfff9f699f6cc36dd9553c5bf796058b14b20d"}, + {file = "orjson-3.9.10-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8b9ba0ccd5a7f4219e67fbbe25e6b4a46ceef783c42af7dbc1da548eb28b6531"}, + {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e2ecd1d349e62e3960695214f40939bbfdcaeaaa62ccc638f8e651cf0970e5f"}, + {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f433be3b3f4c66016d5a20e5b4444ef833a1f802ced13a2d852c637f69729c1"}, + {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4689270c35d4bb3102e103ac43c3f0b76b169760aff8bcf2d401a3e0e58cdb7f"}, + {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd176f528a8151a6efc5359b853ba3cc0e82d4cd1fab9c1300c5d957dc8f48c"}, + {file = "orjson-3.9.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a2ce5ea4f71681623f04e2b7dadede3c7435dfb5e5e2d1d0ec25b35530e277b"}, + {file = "orjson-3.9.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:49f8ad582da6e8d2cf663c4ba5bf9f83cc052570a3a767487fec6af839b0e777"}, + {file = "orjson-3.9.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2a11b4b1a8415f105d989876a19b173f6cdc89ca13855ccc67c18efbd7cbd1f8"}, + {file = "orjson-3.9.10-cp38-none-win32.whl", hash = "sha256:a353bf1f565ed27ba71a419b2cd3db9d6151da426b61b289b6ba1422a702e643"}, + {file = "orjson-3.9.10-cp38-none-win_amd64.whl", hash = "sha256:e28a50b5be854e18d54f75ef1bb13e1abf4bc650ab9d635e4258c58e71eb6ad5"}, + {file = "orjson-3.9.10-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ee5926746232f627a3be1cc175b2cfad24d0170d520361f4ce3fa2fd83f09e1d"}, + {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a73160e823151f33cdc05fe2cea557c5ef12fdf276ce29bb4f1c571c8368a60"}, + {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c338ed69ad0b8f8f8920c13f529889fe0771abbb46550013e3c3d01e5174deef"}, + {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5869e8e130e99687d9e4be835116c4ebd83ca92e52e55810962446d841aba8de"}, + {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2c1e559d96a7f94a4f581e2a32d6d610df5840881a8cba8f25e446f4d792df3"}, + {file = "orjson-3.9.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a3a3a72c9811b56adf8bcc829b010163bb2fc308877e50e9910c9357e78521"}, + {file = "orjson-3.9.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7f8fb7f5ecf4f6355683ac6881fd64b5bb2b8a60e3ccde6ff799e48791d8f864"}, + {file = "orjson-3.9.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c943b35ecdf7123b2d81d225397efddf0bce2e81db2f3ae633ead38e85cd5ade"}, + {file = "orjson-3.9.10-cp39-none-win32.whl", hash = "sha256:fb0b361d73f6b8eeceba47cd37070b5e6c9de5beaeaa63a1cb35c7e1a73ef088"}, + {file = "orjson-3.9.10-cp39-none-win_amd64.whl", hash = "sha256:b90f340cb6397ec7a854157fac03f0c82b744abdd1c0941a024c3c29d1340aff"}, + {file = "orjson-3.9.10.tar.gz", hash = "sha256:9ebbdbd6a046c304b1845e96fbcc5559cd296b4dfd3ad2509e33c4d9ce07d6a1"}, ] [[package]] @@ -5517,77 +5456,81 @@ files = [ [[package]] name = "pandas" -version = "2.1.4" +version = "2.2.0" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bdec823dc6ec53f7a6339a0e34c68b144a7a1fd28d80c260534c39c62c5bf8c9"}, - {file = "pandas-2.1.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:294d96cfaf28d688f30c918a765ea2ae2e0e71d3536754f4b6de0ea4a496d034"}, - {file = "pandas-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b728fb8deba8905b319f96447a27033969f3ea1fea09d07d296c9030ab2ed1d"}, - {file = "pandas-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00028e6737c594feac3c2df15636d73ace46b8314d236100b57ed7e4b9ebe8d9"}, - {file = "pandas-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:426dc0f1b187523c4db06f96fb5c8d1a845e259c99bda74f7de97bd8a3bb3139"}, - {file = "pandas-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:f237e6ca6421265643608813ce9793610ad09b40154a3344a088159590469e46"}, - {file = "pandas-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b7d852d16c270e4331f6f59b3e9aa23f935f5c4b0ed2d0bc77637a8890a5d092"}, - {file = "pandas-2.1.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bd7d5f2f54f78164b3d7a40f33bf79a74cdee72c31affec86bfcabe7e0789821"}, - {file = "pandas-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0aa6e92e639da0d6e2017d9ccff563222f4eb31e4b2c3cf32a2a392fc3103c0d"}, - {file = "pandas-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d797591b6846b9db79e65dc2d0d48e61f7db8d10b2a9480b4e3faaddc421a171"}, - {file = "pandas-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d2d3e7b00f703aea3945995ee63375c61b2e6aa5aa7871c5d622870e5e137623"}, - {file = "pandas-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:dc9bf7ade01143cddc0074aa6995edd05323974e6e40d9dbde081021ded8510e"}, - {file = "pandas-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:482d5076e1791777e1571f2e2d789e940dedd927325cc3cb6d0800c6304082f6"}, - {file = "pandas-2.1.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8a706cfe7955c4ca59af8c7a0517370eafbd98593155b48f10f9811da440248b"}, - {file = "pandas-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0513a132a15977b4a5b89aabd304647919bc2169eac4c8536afb29c07c23540"}, - {file = "pandas-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9f17f2b6fc076b2a0078862547595d66244db0f41bf79fc5f64a5c4d635bead"}, - {file = "pandas-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:45d63d2a9b1b37fa6c84a68ba2422dc9ed018bdaa668c7f47566a01188ceeec1"}, - {file = "pandas-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:f69b0c9bb174a2342818d3e2778584e18c740d56857fc5cdb944ec8bbe4082cf"}, - {file = "pandas-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3f06bda01a143020bad20f7a85dd5f4a1600112145f126bc9e3e42077c24ef34"}, - {file = "pandas-2.1.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab5796839eb1fd62a39eec2916d3e979ec3130509930fea17fe6f81e18108f6a"}, - {file = "pandas-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edbaf9e8d3a63a9276d707b4d25930a262341bca9874fcb22eff5e3da5394732"}, - {file = "pandas-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ebfd771110b50055712b3b711b51bee5d50135429364d0498e1213a7adc2be8"}, - {file = "pandas-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8ea107e0be2aba1da619cc6ba3f999b2bfc9669a83554b1904ce3dd9507f0860"}, - {file = "pandas-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:d65148b14788b3758daf57bf42725caa536575da2b64df9964c563b015230984"}, - {file = "pandas-2.1.4.tar.gz", hash = "sha256:fcb68203c833cc735321512e13861358079a96c174a61f5116a1de89c58c0ef7"}, + {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, + {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, + {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, + {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, + {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, + {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, + {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, + {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, + {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, + {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, + {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, + {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, + {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, + {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, + {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, + {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, + {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, + {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, + {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, + {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, + {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, + {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, + {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, + {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, + {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, + {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, + {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, + {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, + {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, ] [package.dependencies] numpy = {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""} python-dateutil = ">=2.8.2" pytz = ">=2020.1" -tzdata = ">=2022.1" +tzdata = ">=2022.7" [package.extras] -all = ["PyQt5 (>=5.15.6)", "SQLAlchemy (>=1.4.36)", "beautifulsoup4 (>=4.11.1)", "bottleneck (>=1.3.4)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=0.8.1)", "fsspec (>=2022.05.0)", "gcsfs (>=2022.05.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.8.0)", "matplotlib (>=3.6.1)", "numba (>=0.55.2)", "numexpr (>=2.8.0)", "odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pandas-gbq (>=0.17.5)", "psycopg2 (>=2.9.3)", "pyarrow (>=7.0.0)", "pymysql (>=1.0.2)", "pyreadstat (>=1.1.5)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "pyxlsb (>=1.0.9)", "qtpy (>=2.2.0)", "s3fs (>=2022.05.0)", "scipy (>=1.8.1)", "tables (>=3.7.0)", "tabulate (>=0.8.10)", "xarray (>=2022.03.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)", "zstandard (>=0.17.0)"] -aws = ["s3fs (>=2022.05.0)"] -clipboard = ["PyQt5 (>=5.15.6)", "qtpy (>=2.2.0)"] -compression = ["zstandard (>=0.17.0)"] -computation = ["scipy (>=1.8.1)", "xarray (>=2022.03.0)"] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] consortium-standard = ["dataframe-api-compat (>=0.1.7)"] -excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.0.10)", "pyxlsb (>=1.0.9)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.3)"] -feather = ["pyarrow (>=7.0.0)"] -fss = ["fsspec (>=2022.05.0)"] -gcp = ["gcsfs (>=2022.05.0)", "pandas-gbq (>=0.17.5)"] -hdf5 = ["tables (>=3.7.0)"] -html = ["beautifulsoup4 (>=4.11.1)", "html5lib (>=1.1)", "lxml (>=4.8.0)"] -mysql = ["SQLAlchemy (>=1.4.36)", "pymysql (>=1.0.2)"] -output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.8.10)"] -parquet = ["pyarrow (>=7.0.0)"] -performance = ["bottleneck (>=1.3.4)", "numba (>=0.55.2)", "numexpr (>=2.8.0)"] -plot = ["matplotlib (>=3.6.1)"] -postgresql = ["SQLAlchemy (>=1.4.36)", "psycopg2 (>=2.9.3)"] -spss = ["pyreadstat (>=1.1.5)"] -sql-other = ["SQLAlchemy (>=1.4.36)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] -xml = ["lxml (>=4.8.0)"] +xml = ["lxml (>=4.9.2)"] [[package]] name = "pandas-gbq" -version = "0.22.0" +version = "0.19.2" description = "Google BigQuery connector for pandas" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "pandas-gbq-0.22.0.tar.gz", hash = "sha256:3fb24010c96e795c22b35d86601ef76f8aed84d5d17ceb8a4396a354c1949ece"}, - {file = "pandas_gbq-0.22.0-py2.py3-none-any.whl", hash = "sha256:e3bc1f9903928e4923dc5ff7f29fad9e9799aa406058567f1c654d934bf41323"}, + {file = "pandas-gbq-0.19.2.tar.gz", hash = "sha256:b0f7fa84a2be0fe767e33a008ca7e4ad9a9e3ac67255fd0a41fc19b503138447"}, + {file = "pandas_gbq-0.19.2-py2.py3-none-any.whl", hash = "sha256:0ef8da3e4088053a2bea069ed688992a44b52af67dadb97eee494b32a2147563"}, ] [package.dependencies] @@ -5596,15 +5539,14 @@ google-api-core = ">=2.10.2,<3.0.0dev" google-auth = ">=2.13.0" google-auth-oauthlib = ">=0.7.0" google-cloud-bigquery = ">=3.3.5,<4.0.0dev" +google-cloud-bigquery-storage = ">=2.16.2,<3.0.0dev" numpy = ">=1.16.6" -packaging = ">=20.0.0" pandas = ">=1.1.4" pyarrow = ">=3.0.0" pydata-google-auth = ">=1.5.0" setuptools = "*" [package.extras] -bqstorage = ["google-cloud-bigquery-storage (>=2.16.2,<3.0.0dev)"] tqdm = ["tqdm (>=4.23.0)"] [[package]] @@ -5638,113 +5580,48 @@ testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "pathspec" -version = "0.12.1" +version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, + {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, + {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, ] [[package]] name = "pendulum" -version = "3.0.0" +version = "2.1.2" description = "Python datetimes made easy" optional = false -python-versions = ">=3.8" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "pendulum-3.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2cf9e53ef11668e07f73190c805dbdf07a1939c3298b78d5a9203a86775d1bfd"}, - {file = "pendulum-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fb551b9b5e6059377889d2d878d940fd0bbb80ae4810543db18e6f77b02c5ef6"}, - {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c58227ac260d5b01fc1025176d7b31858c9f62595737f350d22124a9a3ad82d"}, - {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60fb6f415fea93a11c52578eaa10594568a6716602be8430b167eb0d730f3332"}, - {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b69f6b4dbcb86f2c2fe696ba991e67347bcf87fe601362a1aba6431454b46bde"}, - {file = "pendulum-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:138afa9c373ee450ede206db5a5e9004fd3011b3c6bbe1e57015395cd076a09f"}, - {file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:83d9031f39c6da9677164241fd0d37fbfc9dc8ade7043b5d6d62f56e81af8ad2"}, - {file = "pendulum-3.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c2308af4033fa534f089595bcd40a95a39988ce4059ccd3dc6acb9ef14ca44a"}, - {file = "pendulum-3.0.0-cp310-none-win_amd64.whl", hash = "sha256:9a59637cdb8462bdf2dbcb9d389518c0263799189d773ad5c11db6b13064fa79"}, - {file = "pendulum-3.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3725245c0352c95d6ca297193192020d1b0c0f83d5ee6bb09964edc2b5a2d508"}, - {file = "pendulum-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c035f03a3e565ed132927e2c1b691de0dbf4eb53b02a5a3c5a97e1a64e17bec"}, - {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:597e66e63cbd68dd6d58ac46cb7a92363d2088d37ccde2dae4332ef23e95cd00"}, - {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99a0f8172e19f3f0c0e4ace0ad1595134d5243cf75985dc2233e8f9e8de263ca"}, - {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:77d8839e20f54706aed425bec82a83b4aec74db07f26acd039905d1237a5e1d4"}, - {file = "pendulum-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afde30e8146292b059020fbc8b6f8fd4a60ae7c5e6f0afef937bbb24880bdf01"}, - {file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:660434a6fcf6303c4efd36713ca9212c753140107ee169a3fc6c49c4711c2a05"}, - {file = "pendulum-3.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dee9e5a48c6999dc1106eb7eea3e3a50e98a50651b72c08a87ee2154e544b33e"}, - {file = "pendulum-3.0.0-cp311-none-win_amd64.whl", hash = "sha256:d4cdecde90aec2d67cebe4042fd2a87a4441cc02152ed7ed8fb3ebb110b94ec4"}, - {file = "pendulum-3.0.0-cp311-none-win_arm64.whl", hash = "sha256:773c3bc4ddda2dda9f1b9d51fe06762f9200f3293d75c4660c19b2614b991d83"}, - {file = "pendulum-3.0.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:409e64e41418c49f973d43a28afe5df1df4f1dd87c41c7c90f1a63f61ae0f1f7"}, - {file = "pendulum-3.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a38ad2121c5ec7c4c190c7334e789c3b4624798859156b138fcc4d92295835dc"}, - {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fde4d0b2024b9785f66b7f30ed59281bd60d63d9213cda0eb0910ead777f6d37"}, - {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b2c5675769fb6d4c11238132962939b960fcb365436b6d623c5864287faa319"}, - {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8af95e03e066826f0f4c65811cbee1b3123d4a45a1c3a2b4fc23c4b0dff893b5"}, - {file = "pendulum-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2165a8f33cb15e06c67070b8afc87a62b85c5a273e3aaa6bc9d15c93a4920d6f"}, - {file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ad5e65b874b5e56bd942546ea7ba9dd1d6a25121db1c517700f1c9de91b28518"}, - {file = "pendulum-3.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17fe4b2c844bbf5f0ece69cfd959fa02957c61317b2161763950d88fed8e13b9"}, - {file = "pendulum-3.0.0-cp312-none-win_amd64.whl", hash = "sha256:78f8f4e7efe5066aca24a7a57511b9c2119f5c2b5eb81c46ff9222ce11e0a7a5"}, - {file = "pendulum-3.0.0-cp312-none-win_arm64.whl", hash = "sha256:28f49d8d1e32aae9c284a90b6bb3873eee15ec6e1d9042edd611b22a94ac462f"}, - {file = "pendulum-3.0.0-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d4e2512f4e1a4670284a153b214db9719eb5d14ac55ada5b76cbdb8c5c00399d"}, - {file = "pendulum-3.0.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:3d897eb50883cc58d9b92f6405245f84b9286cd2de6e8694cb9ea5cb15195a32"}, - {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e169cc2ca419517f397811bbe4589cf3cd13fca6dc38bb352ba15ea90739ebb"}, - {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f17c3084a4524ebefd9255513692f7e7360e23c8853dc6f10c64cc184e1217ab"}, - {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:826d6e258052715f64d05ae0fc9040c0151e6a87aae7c109ba9a0ed930ce4000"}, - {file = "pendulum-3.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2aae97087872ef152a0c40e06100b3665d8cb86b59bc8471ca7c26132fccd0f"}, - {file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ac65eeec2250d03106b5e81284ad47f0d417ca299a45e89ccc69e36130ca8bc7"}, - {file = "pendulum-3.0.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a5346d08f3f4a6e9e672187faa179c7bf9227897081d7121866358af369f44f9"}, - {file = "pendulum-3.0.0-cp37-none-win_amd64.whl", hash = "sha256:235d64e87946d8f95c796af34818c76e0f88c94d624c268693c85b723b698aa9"}, - {file = "pendulum-3.0.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:6a881d9c2a7f85bc9adafcfe671df5207f51f5715ae61f5d838b77a1356e8b7b"}, - {file = "pendulum-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d7762d2076b9b1cb718a6631ad6c16c23fc3fac76cbb8c454e81e80be98daa34"}, - {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e8e36a8130819d97a479a0e7bf379b66b3b1b520e5dc46bd7eb14634338df8c"}, - {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7dc843253ac373358ffc0711960e2dd5b94ab67530a3e204d85c6e8cb2c5fa10"}, - {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a78ad3635d609ceb1e97d6aedef6a6a6f93433ddb2312888e668365908c7120"}, - {file = "pendulum-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b30a137e9e0d1f751e60e67d11fc67781a572db76b2296f7b4d44554761049d6"}, - {file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c95984037987f4a457bb760455d9ca80467be792236b69d0084f228a8ada0162"}, - {file = "pendulum-3.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d29c6e578fe0f893766c0d286adbf0b3c726a4e2341eba0917ec79c50274ec16"}, - {file = "pendulum-3.0.0-cp38-none-win_amd64.whl", hash = "sha256:deaba8e16dbfcb3d7a6b5fabdd5a38b7c982809567479987b9c89572df62e027"}, - {file = "pendulum-3.0.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b11aceea5b20b4b5382962b321dbc354af0defe35daa84e9ff3aae3c230df694"}, - {file = "pendulum-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a90d4d504e82ad236afac9adca4d6a19e4865f717034fc69bafb112c320dcc8f"}, - {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:825799c6b66e3734227756fa746cc34b3549c48693325b8b9f823cb7d21b19ac"}, - {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad769e98dc07972e24afe0cff8d365cb6f0ebc7e65620aa1976fcfbcadc4c6f3"}, - {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6fc26907eb5fb8cc6188cc620bc2075a6c534d981a2f045daa5f79dfe50d512"}, - {file = "pendulum-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c717eab1b6d898c00a3e0fa7781d615b5c5136bbd40abe82be100bb06df7a56"}, - {file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3ddd1d66d1a714ce43acfe337190be055cdc221d911fc886d5a3aae28e14b76d"}, - {file = "pendulum-3.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:822172853d7a9cf6da95d7b66a16c7160cb99ae6df55d44373888181d7a06edc"}, - {file = "pendulum-3.0.0-cp39-none-win_amd64.whl", hash = "sha256:840de1b49cf1ec54c225a2a6f4f0784d50bd47f68e41dc005b7f67c7d5b5f3ae"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b1f74d1e6ffe5d01d6023870e2ce5c2191486928823196f8575dcc786e107b1"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:729e9f93756a2cdfa77d0fc82068346e9731c7e884097160603872686e570f07"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e586acc0b450cd21cbf0db6bae386237011b75260a3adceddc4be15334689a9a"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22e7944ffc1f0099a79ff468ee9630c73f8c7835cd76fdb57ef7320e6a409df4"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fa30af36bd8e50686846bdace37cf6707bdd044e5cb6e1109acbad3277232e04"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:440215347b11914ae707981b9a57ab9c7b6983ab0babde07063c6ee75c0dc6e7"}, - {file = "pendulum-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:314c4038dc5e6a52991570f50edb2f08c339debdf8cea68ac355b32c4174e820"}, - {file = "pendulum-3.0.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5acb1d386337415f74f4d1955c4ce8d0201978c162927d07df8eb0692b2d8533"}, - {file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a789e12fbdefaffb7b8ac67f9d8f22ba17a3050ceaaa635cd1cc4645773a4b1e"}, - {file = "pendulum-3.0.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:860aa9b8a888e5913bd70d819306749e5eb488e6b99cd6c47beb701b22bdecf5"}, - {file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5ebc65ea033ef0281368217fbf59f5cb05b338ac4dd23d60959c7afcd79a60a0"}, - {file = "pendulum-3.0.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9fef18ab0386ef6a9ac7bad7e43ded42c83ff7ad412f950633854f90d59afa8"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1c134ba2f0571d0b68b83f6972e2307a55a5a849e7dac8505c715c531d2a8795"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:385680812e7e18af200bb9b4a49777418c32422d05ad5a8eb85144c4a285907b"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9eec91cd87c59fb32ec49eb722f375bd58f4be790cae11c1b70fac3ee4f00da0"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4386bffeca23c4b69ad50a36211f75b35a4deb6210bdca112ac3043deb7e494a"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dfbcf1661d7146d7698da4b86e7f04814221081e9fe154183e34f4c5f5fa3bf8"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:04a1094a5aa1daa34a6b57c865b25f691848c61583fb22722a4df5699f6bf74c"}, - {file = "pendulum-3.0.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5b0ec85b9045bd49dd3a3493a5e7ddfd31c36a2a60da387c419fa04abcaecb23"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0a15b90129765b705eb2039062a6daf4d22c4e28d1a54fa260892e8c3ae6e157"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:bb8f6d7acd67a67d6fedd361ad2958ff0539445ef51cbe8cd288db4306503cd0"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd69b15374bef7e4b4440612915315cc42e8575fcda2a3d7586a0d88192d0c88"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc00f8110db6898360c53c812872662e077eaf9c75515d53ecc65d886eec209a"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:83a44e8b40655d0ba565a5c3d1365d27e3e6778ae2a05b69124db9e471255c4a"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1a3604e9fbc06b788041b2a8b78f75c243021e0f512447806a6d37ee5214905d"}, - {file = "pendulum-3.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:92c307ae7accebd06cbae4729f0ba9fa724df5f7d91a0964b1b972a22baa482b"}, - {file = "pendulum-3.0.0.tar.gz", hash = "sha256:5d034998dea404ec31fae27af6b22cff1708f830a1ed7353be4d1019bb9f584e"}, -] - -[package.dependencies] -python-dateutil = ">=2.6" -tzdata = ">=2020.1" - -[package.extras] -test = ["time-machine (>=2.6.0)"] + {file = "pendulum-2.1.2-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:b6c352f4bd32dff1ea7066bd31ad0f71f8d8100b9ff709fb343f3b86cee43efe"}, + {file = "pendulum-2.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:318f72f62e8e23cd6660dbafe1e346950281a9aed144b5c596b2ddabc1d19739"}, + {file = "pendulum-2.1.2-cp35-cp35m-macosx_10_15_x86_64.whl", hash = "sha256:0731f0c661a3cb779d398803655494893c9f581f6488048b3fb629c2342b5394"}, + {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:3481fad1dc3f6f6738bd575a951d3c15d4b4ce7c82dce37cf8ac1483fde6e8b0"}, + {file = "pendulum-2.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9702069c694306297ed362ce7e3c1ef8404ac8ede39f9b28b7c1a7ad8c3959e3"}, + {file = "pendulum-2.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:fb53ffa0085002ddd43b6ca61a7b34f2d4d7c3ed66f931fe599e1a531b42af9b"}, + {file = "pendulum-2.1.2-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:c501749fdd3d6f9e726086bf0cd4437281ed47e7bca132ddb522f86a1645d360"}, + {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:c807a578a532eeb226150d5006f156632df2cc8c5693d778324b43ff8c515dd0"}, + {file = "pendulum-2.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2d1619a721df661e506eff8db8614016f0720ac171fe80dda1333ee44e684087"}, + {file = "pendulum-2.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f888f2d2909a414680a29ae74d0592758f2b9fcdee3549887779cd4055e975db"}, + {file = "pendulum-2.1.2-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e95d329384717c7bf627bf27e204bc3b15c8238fa8d9d9781d93712776c14002"}, + {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4c9c689747f39d0d02a9f94fcee737b34a5773803a64a5fdb046ee9cac7442c5"}, + {file = "pendulum-2.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:1245cd0075a3c6d889f581f6325dd8404aca5884dea7223a5566c38aab94642b"}, + {file = "pendulum-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:db0a40d8bcd27b4fb46676e8eb3c732c67a5a5e6bfab8927028224fbced0b40b"}, + {file = "pendulum-2.1.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f5e236e7730cab1644e1b87aca3d2ff3e375a608542e90fe25685dae46310116"}, + {file = "pendulum-2.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:de42ea3e2943171a9e95141f2eecf972480636e8e484ccffaf1e833929e9e052"}, + {file = "pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7c5ec650cb4bec4c63a89a0242cc8c3cebcec92fcfe937c417ba18277d8560be"}, + {file = "pendulum-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33fb61601083f3eb1d15edeb45274f73c63b3c44a8524703dc143f4212bf3269"}, + {file = "pendulum-2.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:29c40a6f2942376185728c9a0347d7c0f07905638c83007e1d262781f1e6953a"}, + {file = "pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:94b1fc947bfe38579b28e1cccb36f7e28a15e841f30384b5ad6c5e31055c85d7"}, + {file = "pendulum-2.1.2.tar.gz", hash = "sha256:b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"}, +] + +[package.dependencies] +python-dateutil = ">=2.6,<3.0" +pytzdata = ">=2020.1" [[package]] name = "pep8-naming" @@ -5762,13 +5639,13 @@ flake8 = ">=5.0.0" [[package]] name = "pexpect" -version = "4.9.0" +version = "4.8.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" files = [ - {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, - {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, + {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, + {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, ] [package.dependencies] @@ -5776,113 +5653,95 @@ ptyprocess = ">=0.5" [[package]] name = "pillow" -version = "10.2.0" +version = "10.1.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {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"}, + {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"}, ] [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 = "platformdirs" -version = "4.2.0" +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.8" +python-versions = ">=3.7" files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {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.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +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 = "plotly" -version = "5.19.0" +version = "5.18.0" description = "An open-source, interactive data visualization library for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" files = [ - {file = "plotly-5.19.0-py3-none-any.whl", hash = "sha256:906abcc5f15945765328c5d47edaa884bc99f5985fbc61e8cd4dc361f4ff8f5a"}, - {file = "plotly-5.19.0.tar.gz", hash = "sha256:5ea91a56571292ade3e3bc9bf712eba0b95a1fb0a941375d978cc79432e055f4"}, + {file = "plotly-5.18.0-py3-none-any.whl", hash = "sha256:23aa8ea2f4fb364a20d34ad38235524bd9d691bf5299e800bca608c31e8db8de"}, + {file = "plotly-5.18.0.tar.gz", hash = "sha256:360a31e6fbb49d12b007036eb6929521343d6bee2236f8459915821baefa2cbb"}, ] [package.dependencies] @@ -5925,13 +5784,13 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p [[package]] name = "pre-commit" -version = "3.6.2" +version = "3.6.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" files = [ - {file = "pre_commit-3.6.2-py2.py3-none-any.whl", hash = "sha256:ba637c2d7a670c10daedc059f5c49b5bd0aadbccfcd7ec15592cf9665117532c"}, - {file = "pre_commit-3.6.2.tar.gz", hash = "sha256:c3ef34f463045c88658c5b99f38c1e297abdcc0ff13f98d3370055fbbfabc67e"}, + {file = "pre_commit-3.6.0-py2.py3-none-any.whl", hash = "sha256:c255039ef399049a5544b6ce13d135caba8f2c28c3b4033277a788f434308376"}, + {file = "pre_commit-3.6.0.tar.gz", hash = "sha256:d30bad9abf165f7785c15a21a1f46da7d0677cb00ee7ff4c579fd38922efe15d"}, ] [package.dependencies] @@ -5971,13 +5830,13 @@ dev = ["nose", "pipreqs", "twine"] [[package]] name = "prompt-toolkit" -version = "3.0.43" +version = "3.0.41" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, - {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, + {file = "prompt_toolkit-3.0.41-py3-none-any.whl", hash = "sha256:f36fe301fafb7470e86aaf90f036eef600a3210be4decf461a5b1ca8403d3cb2"}, + {file = "prompt_toolkit-3.0.41.tar.gz", hash = "sha256:941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0"}, ] [package.dependencies] @@ -5985,13 +5844,13 @@ wcwidth = "*" [[package]] name = "proto-plus" -version = "1.23.0" +version = "1.22.3" description = "Beautiful, Pythonic protocol buffers." optional = false python-versions = ">=3.6" files = [ - {file = "proto-plus-1.23.0.tar.gz", hash = "sha256:89075171ef11988b3fa157f5dbd8b9cf09d65fffee97e29ce403cd8defba19d2"}, - {file = "proto_plus-1.23.0-py3-none-any.whl", hash = "sha256:a829c79e619e1cf632de091013a4173deed13a55f326ef84f05af6f50ff4c82c"}, + {file = "proto-plus-1.22.3.tar.gz", hash = "sha256:fdcd09713cbd42480740d2fe29c990f7fbd885a67efc328aa8be6ee3e9f76a6b"}, + {file = "proto_plus-1.22.3-py3-none-any.whl", hash = "sha256:a49cd903bc0b6ab41f76bf65510439d56ca76f868adf0274e738bfdd096894df"}, ] [package.dependencies] @@ -6033,27 +5892,27 @@ files = [ [[package]] name = "psutil" -version = "5.9.8" +version = "5.9.6" 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.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"}, + {file = "psutil-5.9.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:fb8a697f11b0f5994550555fcfe3e69799e5b060c8ecf9e2f75c69302cc35c0d"}, + {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:91ecd2d9c00db9817a4b4192107cf6954addb5d9d67a969a4f436dbc9200f88c"}, + {file = "psutil-5.9.6-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:10e8c17b4f898d64b121149afb136c53ea8b68c7531155147867b7b1ac9e7e28"}, + {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:18cd22c5db486f33998f37e2bb054cc62fd06646995285e02a51b1e08da97017"}, + {file = "psutil-5.9.6-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:ca2780f5e038379e520281e4c032dddd086906ddff9ef0d1b9dcf00710e5071c"}, + {file = "psutil-5.9.6-cp27-none-win32.whl", hash = "sha256:70cb3beb98bc3fd5ac9ac617a327af7e7f826373ee64c80efd4eb2856e5051e9"}, + {file = "psutil-5.9.6-cp27-none-win_amd64.whl", hash = "sha256:51dc3d54607c73148f63732c727856f5febec1c7c336f8f41fcbd6315cce76ac"}, + {file = "psutil-5.9.6-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c69596f9fc2f8acd574a12d5f8b7b1ba3765a641ea5d60fb4736bf3c08a8214a"}, + {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92e0cc43c524834af53e9d3369245e6cc3b130e78e26100d1f63cdb0abeb3d3c"}, + {file = "psutil-5.9.6-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:748c9dd2583ed86347ed65d0035f45fa8c851e8d90354c122ab72319b5f366f4"}, + {file = "psutil-5.9.6-cp36-cp36m-win32.whl", hash = "sha256:3ebf2158c16cc69db777e3c7decb3c0f43a7af94a60d72e87b2823aebac3d602"}, + {file = "psutil-5.9.6-cp36-cp36m-win_amd64.whl", hash = "sha256:ff18b8d1a784b810df0b0fff3bcb50ab941c3b8e2c8de5726f9c71c601c611aa"}, + {file = "psutil-5.9.6-cp37-abi3-win32.whl", hash = "sha256:a6f01f03bf1843280f4ad16f4bde26b817847b4c1a0db59bf6419807bc5ce05c"}, + {file = "psutil-5.9.6-cp37-abi3-win_amd64.whl", hash = "sha256:6e5fb8dc711a514da83098bc5234264e551ad980cec5f85dabf4d38ed6f15e9a"}, + {file = "psutil-5.9.6-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:daecbcbd29b289aac14ece28eca6a3e60aa361754cf6da3dfb20d4d32b6c7f57"}, + {file = "psutil-5.9.6.tar.gz", hash = "sha256:e4b92ddcd7dd4cdd3f900180ea1e104932c7bce234fb88976e2a3b296441225a"}, ] [package.extras] @@ -6108,61 +5967,61 @@ files = [ [[package]] name = "pyarrow" -version = "15.0.1" +version = "14.0.1" description = "Python library for Apache Arrow" optional = false python-versions = ">=3.8" files = [ - {file = "pyarrow-15.0.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:c2ddb3be5ea938c329a84171694fc230b241ce1b6b0ff1a0280509af51c375fa"}, - {file = "pyarrow-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7543ea88a0ff72f8e6baaf9bfdbec2c62aeabdbede9e4a571c71cc3bc43b6302"}, - {file = "pyarrow-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1519e218a6941fc074e4501088d891afcb2adf77c236e03c34babcf3d6a0d1c7"}, - {file = "pyarrow-15.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28cafa86e1944761970d3b3fc0411b14ff9b5c2b73cd22aaf470d7a3976335f5"}, - {file = "pyarrow-15.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:be5c3d463e33d03eab496e1af7916b1d44001c08f0f458ad27dc16093a020638"}, - {file = "pyarrow-15.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:47b1eda15d3aa3f49a07b1808648e1397e5dc6a80a30bf87faa8e2d02dad7ac3"}, - {file = "pyarrow-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e524a31be7db22deebbbcf242b189063ab9a7652c62471d296b31bc6e3cae77b"}, - {file = "pyarrow-15.0.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:a476fefe8bdd56122fb0d4881b785413e025858803cc1302d0d788d3522b374d"}, - {file = "pyarrow-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:309e6191be385f2e220586bfdb643f9bb21d7e1bc6dd0a6963dc538e347b2431"}, - {file = "pyarrow-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83bc586903dbeb4365cbc72b602f99f70b96c5882e5dfac5278813c7d624ca3c"}, - {file = "pyarrow-15.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07e652daac6d8b05280cd2af31c0fb61a4490ec6a53dc01588014d9fa3fdbee9"}, - {file = "pyarrow-15.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:abad2e08652df153a72177ce20c897d083b0c4ebeec051239e2654ddf4d3c996"}, - {file = "pyarrow-15.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cde663352bc83ad75ba7b3206e049ca1a69809223942362a8649e37bd22f9e3b"}, - {file = "pyarrow-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:1b6e237dd7a08482a8b8f3f6512d258d2460f182931832a8c6ef3953203d31e1"}, - {file = "pyarrow-15.0.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7bd167536ee23192760b8c731d39b7cfd37914c27fd4582335ffd08450ff799d"}, - {file = "pyarrow-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7c08bb31eb2984ba5c3747d375bb522e7e536b8b25b149c9cb5e1c49b0ccb736"}, - {file = "pyarrow-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0f9c1d630ed2524bd1ddf28ec92780a7b599fd54704cd653519f7ff5aec177a"}, - {file = "pyarrow-15.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5186048493395220550bca7b524420471aac2d77af831f584ce132680f55c3df"}, - {file = "pyarrow-15.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:31dc30c7ec8958da3a3d9f31d6c3630429b2091ede0ecd0d989fd6bec129f0e4"}, - {file = "pyarrow-15.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:3f111a014fb8ac2297b43a74bf4495cc479a332908f7ee49cb7cbd50714cb0c1"}, - {file = "pyarrow-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:a6d1f7c15d7f68f08490d0cb34611497c74285b8a6bbeab4ef3fc20117310983"}, - {file = "pyarrow-15.0.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:9ad931b996f51c2f978ed517b55cb3c6078272fb4ec579e3da5a8c14873b698d"}, - {file = "pyarrow-15.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:738f6b53ab1c2f66b2bde8a1d77e186aeaab702d849e0dfa1158c9e2c030add3"}, - {file = "pyarrow-15.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c1c3fc16bc74e33bf8f1e5a212938ed8d88e902f372c4dac6b5bad328567d2f"}, - {file = "pyarrow-15.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1fa92512128f6c1b8dde0468c1454dd70f3bff623970e370d52efd4d24fd0be"}, - {file = "pyarrow-15.0.1-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:b4157f307c202cbbdac147d9b07447a281fa8e63494f7fc85081da351ec6ace9"}, - {file = "pyarrow-15.0.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:b75e7da26f383787f80ad76143b44844ffa28648fcc7099a83df1538c078d2f2"}, - {file = "pyarrow-15.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:3a99eac76ae14096c209850935057b9e8ce97a78397c5cde8724674774f34e5d"}, - {file = "pyarrow-15.0.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:dd532d3177e031e9b2d2df19fd003d0cc0520d1747659fcabbd4d9bb87de508c"}, - {file = "pyarrow-15.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ce8c89848fd37e5313fc2ce601483038ee5566db96ba0808d5883b2e2e55dc53"}, - {file = "pyarrow-15.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:862eac5e5f3b6477f7a92b2f27e560e1f4e5e9edfca9ea9da8a7478bb4abd5ce"}, - {file = "pyarrow-15.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f0ea3a29cd5cb99bf14c1c4533eceaa00ea8fb580950fb5a89a5c771a994a4e"}, - {file = "pyarrow-15.0.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:bb902f780cfd624b2e8fd8501fadab17618fdb548532620ef3d91312aaf0888a"}, - {file = "pyarrow-15.0.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:4f87757f02735a6bb4ad2e1b98279ac45d53b748d5baf52401516413007c6999"}, - {file = "pyarrow-15.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:efd3816c7fbfcbd406ac0f69873cebb052effd7cdc153ae5836d1b00845845d7"}, - {file = "pyarrow-15.0.1.tar.gz", hash = "sha256:21d812548d39d490e0c6928a7c663f37b96bf764034123d4b4ab4530ecc757a9"}, -] - -[package.dependencies] -numpy = ">=1.16.6,<2" + {file = "pyarrow-14.0.1-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:96d64e5ba7dceb519a955e5eeb5c9adcfd63f73a56aea4722e2cc81364fc567a"}, + {file = "pyarrow-14.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a8ae88c0038d1bc362a682320112ee6774f006134cd5afc291591ee4bc06505"}, + {file = "pyarrow-14.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f6f053cb66dc24091f5511e5920e45c83107f954a21032feadc7b9e3a8e7851"}, + {file = "pyarrow-14.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:906b0dc25f2be12e95975722f1e60e162437023f490dbd80d0deb7375baf3171"}, + {file = "pyarrow-14.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:78d4a77a46a7de9388b653af1c4ce539350726cd9af62e0831e4f2bd0c95a2f4"}, + {file = "pyarrow-14.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:06ca79080ef89d6529bb8e5074d4b4f6086143b2520494fcb7cf8a99079cde93"}, + {file = "pyarrow-14.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:32542164d905002c42dff896efdac79b3bdd7291b1b74aa292fac8450d0e4dcd"}, + {file = "pyarrow-14.0.1-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:c7331b4ed3401b7ee56f22c980608cf273f0380f77d0f73dd3c185f78f5a6220"}, + {file = "pyarrow-14.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:922e8b49b88da8633d6cac0e1b5a690311b6758d6f5d7c2be71acb0f1e14cd61"}, + {file = "pyarrow-14.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58c889851ca33f992ea916b48b8540735055201b177cb0dcf0596a495a667b00"}, + {file = "pyarrow-14.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30d8494870d9916bb53b2a4384948491444741cb9a38253c590e21f836b01222"}, + {file = "pyarrow-14.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:be28e1a07f20391bb0b15ea03dcac3aade29fc773c5eb4bee2838e9b2cdde0cb"}, + {file = "pyarrow-14.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:981670b4ce0110d8dcb3246410a4aabf5714db5d8ea63b15686bce1c914b1f83"}, + {file = "pyarrow-14.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:4756a2b373a28f6166c42711240643fb8bd6322467e9aacabd26b488fa41ec23"}, + {file = "pyarrow-14.0.1-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:cf87e2cec65dd5cf1aa4aba918d523ef56ef95597b545bbaad01e6433851aa10"}, + {file = "pyarrow-14.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:470ae0194fbfdfbf4a6b65b4f9e0f6e1fa0ea5b90c1ee6b65b38aecee53508c8"}, + {file = "pyarrow-14.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6263cffd0c3721c1e348062997babdf0151301f7353010c9c9a8ed47448f82ab"}, + {file = "pyarrow-14.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8089d7e77d1455d529dbd7cff08898bbb2666ee48bc4085203af1d826a33cc"}, + {file = "pyarrow-14.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fada8396bc739d958d0b81d291cfd201126ed5e7913cb73de6bc606befc30226"}, + {file = "pyarrow-14.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:2a145dab9ed7849fc1101bf03bcdc69913547f10513fdf70fc3ab6c0a50c7eee"}, + {file = "pyarrow-14.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:05fe7994745b634c5fb16ce5717e39a1ac1fac3e2b0795232841660aa76647cd"}, + {file = "pyarrow-14.0.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:a8eeef015ae69d104c4c3117a6011e7e3ecd1abec79dc87fd2fac6e442f666ee"}, + {file = "pyarrow-14.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3c76807540989fe8fcd02285dd15e4f2a3da0b09d27781abec3adc265ddbeba1"}, + {file = "pyarrow-14.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:450e4605e3c20e558485f9161a79280a61c55efe585d51513c014de9ae8d393f"}, + {file = "pyarrow-14.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:323cbe60210173ffd7db78bfd50b80bdd792c4c9daca8843ef3cd70b186649db"}, + {file = "pyarrow-14.0.1-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:0140c7e2b740e08c5a459439d87acd26b747fc408bde0a8806096ee0baaa0c15"}, + {file = "pyarrow-14.0.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:e592e482edd9f1ab32f18cd6a716c45b2c0f2403dc2af782f4e9674952e6dd27"}, + {file = "pyarrow-14.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:d264ad13605b61959f2ae7c1d25b1a5b8505b112715c961418c8396433f213ad"}, + {file = "pyarrow-14.0.1-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:01e44de9749cddc486169cb632f3c99962318e9dacac7778315a110f4bf8a450"}, + {file = "pyarrow-14.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d0351fecf0e26e152542bc164c22ea2a8e8c682726fce160ce4d459ea802d69c"}, + {file = "pyarrow-14.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33c1f6110c386464fd2e5e4ea3624466055bbe681ff185fd6c9daa98f30a3f9a"}, + {file = "pyarrow-14.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11e045dfa09855b6d3e7705a37c42e2dc2c71d608fab34d3c23df2e02df9aec3"}, + {file = "pyarrow-14.0.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:097828b55321897db0e1dbfc606e3ff8101ae5725673498cbfa7754ee0da80e4"}, + {file = "pyarrow-14.0.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1daab52050a1c48506c029e6fa0944a7b2436334d7e44221c16f6f1b2cc9c510"}, + {file = "pyarrow-14.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:3f6d5faf4f1b0d5a7f97be987cf9e9f8cd39902611e818fe134588ee99bf0283"}, + {file = "pyarrow-14.0.1.tar.gz", hash = "sha256:b8b3f4fe8d4ec15e1ef9b599b94683c5216adaed78d5cb4c606180546d1e2ee1"}, +] + +[package.dependencies] +numpy = ">=1.16.6" [[package]] name = "pyasn1" -version = "0.5.1" +version = "0.5.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "pyasn1-0.5.1-py2.py3-none-any.whl", hash = "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58"}, - {file = "pyasn1-0.5.1.tar.gz", hash = "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"}, + {file = "pyasn1-0.5.0-py2.py3-none-any.whl", hash = "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57"}, + {file = "pyasn1-0.5.0.tar.gz", hash = "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde"}, ] [[package]] @@ -6269,18 +6128,18 @@ files = [ [[package]] name = "pydantic" -version = "2.6.3" +version = "2.4.2" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "pydantic-2.6.3-py3-none-any.whl", hash = "sha256:72c6034df47f46ccdf81869fddb81aade68056003900a8724a4f160700016a2a"}, - {file = "pydantic-2.6.3.tar.gz", hash = "sha256:e07805c4c7f5c6826e33a1d4c9d47950d7eaf34868e2690f8594d2e30241f11f"}, + {file = "pydantic-2.4.2-py3-none-any.whl", hash = "sha256:bc3ddf669d234f4220e6e1c4d96b061abe0998185a8d7855c0126782b7abc8c1"}, + {file = "pydantic-2.4.2.tar.gz", hash = "sha256:94f336138093a5d7f426aac732dcfe7ab4eb4da243c88f891d65deb4a2556ee7"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.16.3" +pydantic-core = "2.10.1" typing-extensions = ">=4.6.1" [package.extras] @@ -6288,90 +6147,117 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.16.3" +version = "2.10.1" description = "" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "pydantic_core-2.16.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:75b81e678d1c1ede0785c7f46690621e4c6e63ccd9192af1f0bd9d504bbb6bf4"}, - {file = "pydantic_core-2.16.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c865a7ee6f93783bd5d781af5a4c43dadc37053a5b42f7d18dc019f8c9d2bd1"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:162e498303d2b1c036b957a1278fa0899d02b2842f1ff901b6395104c5554a45"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f583bd01bbfbff4eaee0868e6fc607efdfcc2b03c1c766b06a707abbc856187"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b926dd38db1519ed3043a4de50214e0d600d404099c3392f098a7f9d75029ff8"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:716b542728d4c742353448765aa7cdaa519a7b82f9564130e2b3f6766018c9ec"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4ad7f7ee1a13d9cb49d8198cd7d7e3aa93e425f371a68235f784e99741561f"}, - {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd87f48924f360e5d1c5f770d6155ce0e7d83f7b4e10c2f9ec001c73cf475c99"}, - {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0df446663464884297c793874573549229f9eca73b59360878f382a0fc085979"}, - {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4df8a199d9f6afc5ae9a65f8f95ee52cae389a8c6b20163762bde0426275b7db"}, - {file = "pydantic_core-2.16.3-cp310-none-win32.whl", hash = "sha256:456855f57b413f077dff513a5a28ed838dbbb15082ba00f80750377eed23d132"}, - {file = "pydantic_core-2.16.3-cp310-none-win_amd64.whl", hash = "sha256:732da3243e1b8d3eab8c6ae23ae6a58548849d2e4a4e03a1924c8ddf71a387cb"}, - {file = "pydantic_core-2.16.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:519ae0312616026bf4cedc0fe459e982734f3ca82ee8c7246c19b650b60a5ee4"}, - {file = "pydantic_core-2.16.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b3992a322a5617ded0a9f23fd06dbc1e4bd7cf39bc4ccf344b10f80af58beacd"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d62da299c6ecb04df729e4b5c52dc0d53f4f8430b4492b93aa8de1f541c4aac"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2acca2be4bb2f2147ada8cac612f8a98fc09f41c89f87add7256ad27332c2fda"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b662180108c55dfbf1280d865b2d116633d436cfc0bba82323554873967b340"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7c6ed0dc9d8e65f24f5824291550139fe6f37fac03788d4580da0d33bc00c97"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1bb0827f56654b4437955555dc3aeeebeddc47c2d7ed575477f082622c49e"}, - {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e56f8186d6210ac7ece503193ec84104da7ceb98f68ce18c07282fcc2452e76f"}, - {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:936e5db01dd49476fa8f4383c259b8b1303d5dd5fb34c97de194560698cc2c5e"}, - {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33809aebac276089b78db106ee692bdc9044710e26f24a9a2eaa35a0f9fa70ba"}, - {file = "pydantic_core-2.16.3-cp311-none-win32.whl", hash = "sha256:ded1c35f15c9dea16ead9bffcde9bb5c7c031bff076355dc58dcb1cb436c4721"}, - {file = "pydantic_core-2.16.3-cp311-none-win_amd64.whl", hash = "sha256:d89ca19cdd0dd5f31606a9329e309d4fcbb3df860960acec32630297d61820df"}, - {file = "pydantic_core-2.16.3-cp311-none-win_arm64.whl", hash = "sha256:6162f8d2dc27ba21027f261e4fa26f8bcb3cf9784b7f9499466a311ac284b5b9"}, - {file = "pydantic_core-2.16.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f56ae86b60ea987ae8bcd6654a887238fd53d1384f9b222ac457070b7ac4cff"}, - {file = "pydantic_core-2.16.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9bd22a2a639e26171068f8ebb5400ce2c1bc7d17959f60a3b753ae13c632975"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4204e773b4b408062960e65468d5346bdfe139247ee5f1ca2a378983e11388a2"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f651dd19363c632f4abe3480a7c87a9773be27cfe1341aef06e8759599454120"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aaf09e615a0bf98d406657e0008e4a8701b11481840be7d31755dc9f97c44053"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e47755d8152c1ab5b55928ab422a76e2e7b22b5ed8e90a7d584268dd49e9c6b"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:500960cb3a0543a724a81ba859da816e8cf01b0e6aaeedf2c3775d12ee49cade"}, - {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf6204fe865da605285c34cf1172879d0314ff267b1c35ff59de7154f35fdc2e"}, - {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d33dd21f572545649f90c38c227cc8631268ba25c460b5569abebdd0ec5974ca"}, - {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:49d5d58abd4b83fb8ce763be7794d09b2f50f10aa65c0f0c1696c677edeb7cbf"}, - {file = "pydantic_core-2.16.3-cp312-none-win32.whl", hash = "sha256:f53aace168a2a10582e570b7736cc5bef12cae9cf21775e3eafac597e8551fbe"}, - {file = "pydantic_core-2.16.3-cp312-none-win_amd64.whl", hash = "sha256:0d32576b1de5a30d9a97f300cc6a3f4694c428d956adbc7e6e2f9cad279e45ed"}, - {file = "pydantic_core-2.16.3-cp312-none-win_arm64.whl", hash = "sha256:ec08be75bb268473677edb83ba71e7e74b43c008e4a7b1907c6d57e940bf34b6"}, - {file = "pydantic_core-2.16.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:b1f6f5938d63c6139860f044e2538baeee6f0b251a1816e7adb6cbce106a1f01"}, - {file = "pydantic_core-2.16.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2a1ef6a36fdbf71538142ed604ad19b82f67b05749512e47f247a6ddd06afdc7"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704d35ecc7e9c31d48926150afada60401c55efa3b46cd1ded5a01bdffaf1d48"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d937653a696465677ed583124b94a4b2d79f5e30b2c46115a68e482c6a591c8a"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9803edf8e29bd825f43481f19c37f50d2b01899448273b3a7758441b512acf8"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72282ad4892a9fb2da25defeac8c2e84352c108705c972db82ab121d15f14e6d"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f752826b5b8361193df55afcdf8ca6a57d0232653494ba473630a83ba50d8c9"}, - {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4384a8f68ddb31a0b0c3deae88765f5868a1b9148939c3f4121233314ad5532c"}, - {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a4b2bf78342c40b3dc830880106f54328928ff03e357935ad26c7128bbd66ce8"}, - {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:13dcc4802961b5f843a9385fc821a0b0135e8c07fc3d9949fd49627c1a5e6ae5"}, - {file = "pydantic_core-2.16.3-cp38-none-win32.whl", hash = "sha256:e3e70c94a0c3841e6aa831edab1619ad5c511199be94d0c11ba75fe06efe107a"}, - {file = "pydantic_core-2.16.3-cp38-none-win_amd64.whl", hash = "sha256:ecdf6bf5f578615f2e985a5e1f6572e23aa632c4bd1dc67f8f406d445ac115ed"}, - {file = "pydantic_core-2.16.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bda1ee3e08252b8d41fa5537413ffdddd58fa73107171a126d3b9ff001b9b820"}, - {file = "pydantic_core-2.16.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:21b888c973e4f26b7a96491c0965a8a312e13be108022ee510248fe379a5fa23"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be0ec334369316fa73448cc8c982c01e5d2a81c95969d58b8f6e272884df0074"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5b6079cc452a7c53dd378c6f881ac528246b3ac9aae0f8eef98498a75657805"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee8d5f878dccb6d499ba4d30d757111847b6849ae07acdd1205fffa1fc1253c"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7233d65d9d651242a68801159763d09e9ec96e8a158dbf118dc090cd77a104c9"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6119dc90483a5cb50a1306adb8d52c66e447da88ea44f323e0ae1a5fcb14256"}, - {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:578114bc803a4c1ff9946d977c221e4376620a46cf78da267d946397dc9514a8"}, - {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d8f99b147ff3fcf6b3cc60cb0c39ea443884d5559a30b1481e92495f2310ff2b"}, - {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4ac6b4ce1e7283d715c4b729d8f9dab9627586dafce81d9eaa009dd7f25dd972"}, - {file = "pydantic_core-2.16.3-cp39-none-win32.whl", hash = "sha256:e7774b570e61cb998490c5235740d475413a1f6de823169b4cf94e2fe9e9f6b2"}, - {file = "pydantic_core-2.16.3-cp39-none-win_amd64.whl", hash = "sha256:9091632a25b8b87b9a605ec0e61f241c456e9248bfdcf7abdf344fdb169c81cf"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:36fa178aacbc277bc6b62a2c3da95226520da4f4e9e206fdf076484363895d2c"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dcca5d2bf65c6fb591fff92da03f94cd4f315972f97c21975398bd4bd046854a"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a72fb9963cba4cd5793854fd12f4cfee731e86df140f59ff52a49b3552db241"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60cc1a081f80a2105a59385b92d82278b15d80ebb3adb200542ae165cd7d183"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cbcc558401de90a746d02ef330c528f2e668c83350f045833543cd57ecead1ad"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fee427241c2d9fb7192b658190f9f5fd6dfe41e02f3c1489d2ec1e6a5ab1e04a"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4cb85f693044e0f71f394ff76c98ddc1bc0953e48c061725e540396d5c8a2e1"}, - {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b29eeb887aa931c2fcef5aa515d9d176d25006794610c264ddc114c053bf96fe"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a425479ee40ff021f8216c9d07a6a3b54b31c8267c6e17aa88b70d7ebd0e5e5b"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c5cbc703168d1b7a838668998308018a2718c2130595e8e190220238addc96f"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b6add4c0b39a513d323d3b93bc173dac663c27b99860dd5bf491b240d26137"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f76ee558751746d6a38f89d60b6228fa174e5172d143886af0f85aa306fd89"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:287073c66748f624be4cef893ef9174e3eb88fe0b8a78dc22e88eca4bc357ca6"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed25e1835c00a332cb10c683cd39da96a719ab1dfc08427d476bce41b92531fc"}, - {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:86b3d0033580bd6bbe07590152007275bd7af95f98eaa5bd36f3da219dcd93da"}, - {file = "pydantic_core-2.16.3.tar.gz", hash = "sha256:1cac689f80a3abab2d3c0048b29eea5751114054f032a941a32de4c852c59cad"}, + {file = "pydantic_core-2.10.1-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:d64728ee14e667ba27c66314b7d880b8eeb050e58ffc5fec3b7a109f8cddbd63"}, + {file = "pydantic_core-2.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:48525933fea744a3e7464c19bfede85df4aba79ce90c60b94d8b6e1eddd67096"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef337945bbd76cce390d1b2496ccf9f90b1c1242a3a7bc242ca4a9fc5993427a"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1392e0638af203cee360495fd2cfdd6054711f2db5175b6e9c3c461b76f5175"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0675ba5d22de54d07bccde38997e780044dcfa9a71aac9fd7d4d7a1d2e3e65f7"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:128552af70a64660f21cb0eb4876cbdadf1a1f9d5de820fed6421fa8de07c893"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f6e6aed5818c264412ac0598b581a002a9f050cb2637a84979859e70197aa9e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ecaac27da855b8d73f92123e5f03612b04c5632fd0a476e469dfc47cd37d6b2e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3c01c2fb081fced3bbb3da78510693dc7121bb893a1f0f5f4b48013201f362e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:92f675fefa977625105708492850bcbc1182bfc3e997f8eecb866d1927c98ae6"}, + {file = "pydantic_core-2.10.1-cp310-none-win32.whl", hash = "sha256:420a692b547736a8d8703c39ea935ab5d8f0d2573f8f123b0a294e49a73f214b"}, + {file = "pydantic_core-2.10.1-cp310-none-win_amd64.whl", hash = "sha256:0880e239827b4b5b3e2ce05e6b766a7414e5f5aedc4523be6b68cfbc7f61c5d0"}, + {file = "pydantic_core-2.10.1-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:073d4a470b195d2b2245d0343569aac7e979d3a0dcce6c7d2af6d8a920ad0bea"}, + {file = "pydantic_core-2.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:600d04a7b342363058b9190d4e929a8e2e715c5682a70cc37d5ded1e0dd370b4"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39215d809470f4c8d1881758575b2abfb80174a9e8daf8f33b1d4379357e417c"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eeb3d3d6b399ffe55f9a04e09e635554012f1980696d6b0aca3e6cf42a17a03b"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7a7902bf75779bc12ccfc508bfb7a4c47063f748ea3de87135d433a4cca7a2f"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3625578b6010c65964d177626fde80cf60d7f2e297d56b925cb5cdeda6e9925a"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caa48fc31fc7243e50188197b5f0c4228956f97b954f76da157aae7f67269ae8"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:07ec6d7d929ae9c68f716195ce15e745b3e8fa122fc67698ac6498d802ed0fa4"}, + {file = "pydantic_core-2.10.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e6f31a17acede6a8cd1ae2d123ce04d8cca74056c9d456075f4f6f85de055607"}, + {file = "pydantic_core-2.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d8f1ebca515a03e5654f88411420fea6380fc841d1bea08effb28184e3d4899f"}, + {file = "pydantic_core-2.10.1-cp311-none-win32.whl", hash = "sha256:6db2eb9654a85ada248afa5a6db5ff1cf0f7b16043a6b070adc4a5be68c716d6"}, + {file = "pydantic_core-2.10.1-cp311-none-win_amd64.whl", hash = "sha256:4a5be350f922430997f240d25f8219f93b0c81e15f7b30b868b2fddfc2d05f27"}, + {file = "pydantic_core-2.10.1-cp311-none-win_arm64.whl", hash = "sha256:5fdb39f67c779b183b0c853cd6b45f7db84b84e0571b3ef1c89cdb1dfc367325"}, + {file = "pydantic_core-2.10.1-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1f22a9ab44de5f082216270552aa54259db20189e68fc12484873d926426921"}, + {file = "pydantic_core-2.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8572cadbf4cfa95fb4187775b5ade2eaa93511f07947b38f4cd67cf10783b118"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db9a28c063c7c00844ae42a80203eb6d2d6bbb97070cfa00194dff40e6f545ab"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e2a35baa428181cb2270a15864ec6286822d3576f2ed0f4cd7f0c1708472aff"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05560ab976012bf40f25d5225a58bfa649bb897b87192a36c6fef1ab132540d7"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6495008733c7521a89422d7a68efa0a0122c99a5861f06020ef5b1f51f9ba7c"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ac492c686defc8e6133e3a2d9eaf5261b3df26b8ae97450c1647286750b901"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8282bab177a9a3081fd3d0a0175a07a1e2bfb7fcbbd949519ea0980f8a07144d"}, + {file = "pydantic_core-2.10.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:aafdb89fdeb5fe165043896817eccd6434aee124d5ee9b354f92cd574ba5e78f"}, + {file = "pydantic_core-2.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f6defd966ca3b187ec6c366604e9296f585021d922e666b99c47e78738b5666c"}, + {file = "pydantic_core-2.10.1-cp312-none-win32.whl", hash = "sha256:7c4d1894fe112b0864c1fa75dffa045720a194b227bed12f4be7f6045b25209f"}, + {file = "pydantic_core-2.10.1-cp312-none-win_amd64.whl", hash = "sha256:5994985da903d0b8a08e4935c46ed8daf5be1cf217489e673910951dc533d430"}, + {file = "pydantic_core-2.10.1-cp312-none-win_arm64.whl", hash = "sha256:0d8a8adef23d86d8eceed3e32e9cca8879c7481c183f84ed1a8edc7df073af94"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9badf8d45171d92387410b04639d73811b785b5161ecadabf056ea14d62d4ede"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:ebedb45b9feb7258fac0a268a3f6bec0a2ea4d9558f3d6f813f02ff3a6dc6698"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfe1090245c078720d250d19cb05d67e21a9cd7c257698ef139bc41cf6c27b4f"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e357571bb0efd65fd55f18db0a2fb0ed89d0bb1d41d906b138f088933ae618bb"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b3dcd587b69bbf54fc04ca157c2323b8911033e827fffaecf0cafa5a892a0904"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c120c9ce3b163b985a3b966bb701114beb1da4b0468b9b236fc754783d85aa3"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15d6bca84ffc966cc9976b09a18cf9543ed4d4ecbd97e7086f9ce9327ea48891"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5cabb9710f09d5d2e9e2748c3e3e20d991a4c5f96ed8f1132518f54ab2967221"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:82f55187a5bebae7d81d35b1e9aaea5e169d44819789837cdd4720d768c55d15"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1d40f55222b233e98e3921df7811c27567f0e1a4411b93d4c5c0f4ce131bc42f"}, + {file = "pydantic_core-2.10.1-cp37-none-win32.whl", hash = "sha256:14e09ff0b8fe6e46b93d36a878f6e4a3a98ba5303c76bb8e716f4878a3bee92c"}, + {file = "pydantic_core-2.10.1-cp37-none-win_amd64.whl", hash = "sha256:1396e81b83516b9d5c9e26a924fa69164156c148c717131f54f586485ac3c15e"}, + {file = "pydantic_core-2.10.1-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6835451b57c1b467b95ffb03a38bb75b52fb4dc2762bb1d9dbed8de31ea7d0fc"}, + {file = "pydantic_core-2.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b00bc4619f60c853556b35f83731bd817f989cba3e97dc792bb8c97941b8053a"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fa467fd300a6f046bdb248d40cd015b21b7576c168a6bb20aa22e595c8ffcdd"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d99277877daf2efe074eae6338453a4ed54a2d93fb4678ddfe1209a0c93a2468"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa7db7558607afeccb33c0e4bf1c9a9a835e26599e76af6fe2fcea45904083a6"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aad7bd686363d1ce4ee930ad39f14e1673248373f4a9d74d2b9554f06199fb58"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:443fed67d33aa85357464f297e3d26e570267d1af6fef1c21ca50921d2976302"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:042462d8d6ba707fd3ce9649e7bf268633a41018d6a998fb5fbacb7e928a183e"}, + {file = "pydantic_core-2.10.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ecdbde46235f3d560b18be0cb706c8e8ad1b965e5c13bbba7450c86064e96561"}, + {file = "pydantic_core-2.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ed550ed05540c03f0e69e6d74ad58d026de61b9eaebebbaaf8873e585cbb18de"}, + {file = "pydantic_core-2.10.1-cp38-none-win32.whl", hash = "sha256:8cdbbd92154db2fec4ec973d45c565e767ddc20aa6dbaf50142676484cbff8ee"}, + {file = "pydantic_core-2.10.1-cp38-none-win_amd64.whl", hash = "sha256:9f6f3e2598604956480f6c8aa24a3384dbf6509fe995d97f6ca6103bb8c2534e"}, + {file = "pydantic_core-2.10.1-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:655f8f4c8d6a5963c9a0687793da37b9b681d9ad06f29438a3b2326d4e6b7970"}, + {file = "pydantic_core-2.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e570ffeb2170e116a5b17e83f19911020ac79d19c96f320cbfa1fa96b470185b"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64322bfa13e44c6c30c518729ef08fda6026b96d5c0be724b3c4ae4da939f875"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:485a91abe3a07c3a8d1e082ba29254eea3e2bb13cbbd4351ea4e5a21912cc9b0"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7c2b8eb9fc872e68b46eeaf835e86bccc3a58ba57d0eedc109cbb14177be531"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a5cb87bdc2e5f620693148b5f8f842d293cae46c5f15a1b1bf7ceeed324a740c"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25bd966103890ccfa028841a8f30cebcf5875eeac8c4bde4fe221364c92f0c9a"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f323306d0556351735b54acbf82904fe30a27b6a7147153cbe6e19aaaa2aa429"}, + {file = "pydantic_core-2.10.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0c27f38dc4fbf07b358b2bc90edf35e82d1703e22ff2efa4af4ad5de1b3833e7"}, + {file = "pydantic_core-2.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f1365e032a477c1430cfe0cf2856679529a2331426f8081172c4a74186f1d595"}, + {file = "pydantic_core-2.10.1-cp39-none-win32.whl", hash = "sha256:a1c311fd06ab3b10805abb72109f01a134019739bd3286b8ae1bc2fc4e50c07a"}, + {file = "pydantic_core-2.10.1-cp39-none-win_amd64.whl", hash = "sha256:ae8a8843b11dc0b03b57b52793e391f0122e740de3df1474814c700d2622950a"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d43002441932f9a9ea5d6f9efaa2e21458221a3a4b417a14027a1d530201ef1b"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fcb83175cc4936a5425dde3356f079ae03c0802bbdf8ff82c035f8a54b333521"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:962ed72424bf1f72334e2f1e61b68f16c0e596f024ca7ac5daf229f7c26e4208"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cf5bb4dd67f20f3bbc1209ef572a259027c49e5ff694fa56bed62959b41e1f9"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e544246b859f17373bed915182ab841b80849ed9cf23f1f07b73b7c58baee5fb"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c0877239307b7e69d025b73774e88e86ce82f6ba6adf98f41069d5b0b78bd1bf"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:53df009d1e1ba40f696f8995683e067e3967101d4bb4ea6f667931b7d4a01357"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a1254357f7e4c82e77c348dabf2d55f1d14d19d91ff025004775e70a6ef40ada"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:524ff0ca3baea164d6d93a32c58ac79eca9f6cf713586fdc0adb66a8cdeab96a"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f0ac9fb8608dbc6eaf17956bf623c9119b4db7dbb511650910a82e261e6600f"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:320f14bd4542a04ab23747ff2c8a778bde727158b606e2661349557f0770711e"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:63974d168b6233b4ed6a0046296803cb13c56637a7b8106564ab575926572a55"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:417243bf599ba1f1fef2bb8c543ceb918676954734e2dcb82bf162ae9d7bd514"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dda81e5ec82485155a19d9624cfcca9be88a405e2857354e5b089c2a982144b2"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:14cfbb00959259e15d684505263d5a21732b31248a5dd4941f73a3be233865b9"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:631cb7415225954fdcc2a024119101946793e5923f6c4d73a5914d27eb3d3a05"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:bec7dd208a4182e99c5b6c501ce0b1f49de2802448d4056091f8e630b28e9a52"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:149b8a07712f45b332faee1a2258d8ef1fb4a36f88c0c17cb687f205c5dc6e7d"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d966c47f9dd73c2d32a809d2be529112d509321c5310ebf54076812e6ecd884"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7eb037106f5c6b3b0b864ad226b0b7ab58157124161d48e4b30c4a43fef8bc4b"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:154ea7c52e32dce13065dbb20a4a6f0cc012b4f667ac90d648d36b12007fa9f7"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e562617a45b5a9da5be4abe72b971d4f00bf8555eb29bb91ec2ef2be348cd132"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f23b55eb5464468f9e0e9a9935ce3ed2a870608d5f534025cd5536bca25b1402"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:e9121b4009339b0f751955baf4543a0bfd6bc3f8188f8056b1a25a2d45099934"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:0523aeb76e03f753b58be33b26540880bac5aa54422e4462404c432230543f33"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0e2959ef5d5b8dc9ef21e1a305a21a36e254e6a34432d00c72a92fdc5ecda5"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da01bec0a26befab4898ed83b362993c844b9a607a86add78604186297eb047e"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2e9072d71c1f6cfc79a36d4484c82823c560e6f5599c43c1ca6b5cdbd54f881"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f36a3489d9e28fe4b67be9992a23029c3cec0babc3bd9afb39f49844a8c721c5"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f64f82cc3443149292b32387086d02a6c7fb39b8781563e0ca7b8d7d9cf72bd7"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b4a6db486ac8e99ae696e09efc8b2b9fea67b63c8f88ba7a1a16c24a057a0776"}, + {file = "pydantic_core-2.10.1.tar.gz", hash = "sha256:0f8682dbdd2f67f8e1edddcbffcc29f60a6182b4901c367fc8c1c40d30bb0a82"}, ] [package.dependencies] @@ -6414,29 +6300,28 @@ flake8 = ["flake8 (>=4)"] [[package]] name = "pyflakes" -version = "3.2.0" +version = "3.1.0" description = "passive checker of Python programs" optional = false python-versions = ">=3.8" files = [ - {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, - {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, + {file = "pyflakes-3.1.0-py2.py3-none-any.whl", hash = "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774"}, + {file = "pyflakes-3.1.0.tar.gz", hash = "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"}, ] [[package]] name = "pygments" -version = "2.17.2" +version = "2.16.1" 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"}, + {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, + {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, ] [package.extras] plugins = ["importlib-metadata"] -windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyjwt" @@ -6460,24 +6345,23 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pyliftover" -version = "0.4.1" +version = "0.4" description = "Pure-python implementation of UCSC ``liftOver`` genome coordinate conversion." optional = false python-versions = "*" files = [ - {file = "pyliftover-0.4.1-py3-none-any.whl", hash = "sha256:49ef8938010d2e934abb483d3ef8073897ed6b88bcd978c486c8f7631c24dbc1"}, - {file = "pyliftover-0.4.1.tar.gz", hash = "sha256:33ad187e35d1b6662ba446432f4dd1a808ac2914ce1645eef37598fa5a3860cd"}, + {file = "pyliftover-0.4.tar.gz", hash = "sha256:72bcfb7de907569b0eb75e86c817840365297d63ba43a961da394187e399da41"}, ] [[package]] name = "pymdown-extensions" -version = "10.7.1" +version = "10.7" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "pymdown_extensions-10.7.1-py3-none-any.whl", hash = "sha256:f5cc7000d7ff0d1ce9395d216017fa4df3dde800afb1fb72d1c7d3fd35e710f4"}, - {file = "pymdown_extensions-10.7.1.tar.gz", hash = "sha256:c70e146bdd83c744ffc766b4671999796aba18842b268510a329f7f64700d584"}, + {file = "pymdown_extensions-10.7-py3-none-any.whl", hash = "sha256:6ca215bc57bc12bf32b414887a68b810637d039124ed9b2e5bd3325cbb2c050c"}, + {file = "pymdown_extensions-10.7.tar.gz", hash = "sha256:c0d64d5cf62566f59e6b2b690a4095c931107c250a8c8e1351c1de5f6b036deb"}, ] [package.dependencies] @@ -6489,31 +6373,31 @@ extra = ["pygments (>=2.12)"] [[package]] name = "pyopenssl" -version = "24.0.0" +version = "23.2.0" description = "Python wrapper module around the OpenSSL library" optional = false -python-versions = ">=3.7" +python-versions = ">=3.6" files = [ - {file = "pyOpenSSL-24.0.0-py3-none-any.whl", hash = "sha256:ba07553fb6fd6a7a2259adb9b84e12302a9a8a75c44046e8bb5d3e5ee887e3c3"}, - {file = "pyOpenSSL-24.0.0.tar.gz", hash = "sha256:6aa33039a93fffa4563e655b61d11364d01264be8ccb49906101e02a334530bf"}, + {file = "pyOpenSSL-23.2.0-py3-none-any.whl", hash = "sha256:24f0dc5227396b3e831f4c7f602b950a5e9833d292c8e4a2e06b709292806ae2"}, + {file = "pyOpenSSL-23.2.0.tar.gz", hash = "sha256:276f931f55a452e7dea69c7173e984eb2a4407ce413c918aa34b55f82f9b8bac"}, ] [package.dependencies] -cryptography = ">=41.0.5,<43" +cryptography = ">=38.0.0,<40.0.0 || >40.0.0,<40.0.1 || >40.0.1,<42" [package.extras] -docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] +docs = ["sphinx (!=5.2.0,!=5.2.0.post0)", "sphinx-rtd-theme"] test = ["flaky", "pretend", "pytest (>=3.0.1)"] [[package]] name = "pyparsing" -version = "3.1.2" +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.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, - {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, + {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, + {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, ] [package.extras] @@ -6639,13 +6523,13 @@ test = ["coverage", "docutils", "testscenarios (>=0.4)", "testtools"] [[package]] name = "python-dateutil" -version = "2.9.0.post0" +version = "2.8.2" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] [package.dependencies] @@ -6653,13 +6537,13 @@ six = ">=1.5" [[package]] name = "python-gitlab" -version = "4.4.0" -description = "A python wrapper for the GitLab API" +version = "3.15.0" +description = "Interact with GitLab API" optional = false -python-versions = ">=3.8.0" +python-versions = ">=3.7.0" files = [ - {file = "python-gitlab-4.4.0.tar.gz", hash = "sha256:1d117bf7b433ae8255e5d74e72c660978f50ee85eb62248c9fb52ef43c3e3814"}, - {file = "python_gitlab-4.4.0-py3-none-any.whl", hash = "sha256:cdad39d016f59664cdaad0f878f194c79cb4357630776caa9a92c1da25c8d986"}, + {file = "python-gitlab-3.15.0.tar.gz", hash = "sha256:c9e65eb7612a9fbb8abf0339972eca7fd7a73d4da66c9b446ffe528930aff534"}, + {file = "python_gitlab-3.15.0-py3-none-any.whl", hash = "sha256:8f8d1c0d387f642eb1ac7bf5e8e0cd8b3dd49c6f34170cee3c7deb7d384611f3"}, ] [package.dependencies] @@ -6668,7 +6552,7 @@ requests-toolbelt = ">=0.10.1" [package.extras] autocompletion = ["argcomplete (>=1.10.0,<3)"] -yaml = ["PyYaml (>=6.0.1)"] +yaml = ["PyYaml (>=5.2)"] [[package]] name = "python-json-logger" @@ -6697,13 +6581,13 @@ python-slugify = ">=1.2.5" [[package]] name = "python-semantic-release" -version = "9.1.1" +version = "9.1.0" description = "Automatic Semantic Versioning for Python projects" optional = false python-versions = ">=3.8" files = [ - {file = "python-semantic-release-9.1.1.tar.gz", hash = "sha256:fe4fc40f52cdddbfe82c710070978306b35e9e4f2c7d98a77db55bf6f5e544f2"}, - {file = "python_semantic_release-9.1.1-py3-none-any.whl", hash = "sha256:4d45bc6540dd894663636ced5a98cf4d3ea5765a9f1f18f4ffef6ae0733e05a3"}, + {file = "python-semantic-release-9.1.0.tar.gz", hash = "sha256:0317e72a940c5080c8aa6ff56cce6230f045b1a8f91f0a58fdc8f80745912369"}, + {file = "python_semantic_release-9.1.0-py3-none-any.whl", hash = "sha256:7ca5fb1ea4d5215182db477fbc53d9f4c907b7030520c4ac6640b9aaa71dbce7"}, ] [package.dependencies] @@ -6727,13 +6611,13 @@ test = ["coverage[toml] (>=6,<8)", "pytest (>=7,<8)", "pytest-clarity (>=1.0.1)" [[package]] name = "python-slugify" -version = "8.0.4" +version = "8.0.1" description = "A Python slugify application that also handles Unicode" optional = false python-versions = ">=3.7" files = [ - {file = "python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856"}, - {file = "python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8"}, + {file = "python-slugify-8.0.1.tar.gz", hash = "sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27"}, + {file = "python_slugify-8.0.1-py2.py3-none-any.whl", hash = "sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395"}, ] [package.dependencies] @@ -6744,13 +6628,24 @@ unidecode = ["Unidecode (>=1.1.1)"] [[package]] name = "pytz" -version = "2024.1" +version = "2023.3.post1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, + {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, + {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, +] + +[[package]] +name = "pytzdata" +version = "2020.1" +description = "The Olson timezone database for Python." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"}, + {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"}, ] [[package]] @@ -6851,104 +6746,104 @@ pyyaml = "*" [[package]] name = "pyzmq" -version = "25.1.2" +version = "25.1.1" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, - {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, - {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, - {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, - {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, - {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, - {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, - {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, - {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, - {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, - {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, - {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, - {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, - {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, - {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, - {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, - {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, - {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, - {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, - {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, - {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, - {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, - {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, - {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, - {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, - {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, + {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:381469297409c5adf9a0e884c5eb5186ed33137badcbbb0560b86e910a2f1e76"}, + {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:955215ed0604dac5b01907424dfa28b40f2b2292d6493445dd34d0dfa72586a8"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:985bbb1316192b98f32e25e7b9958088431d853ac63aca1d2c236f40afb17c83"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afea96f64efa98df4da6958bae37f1cbea7932c35878b185e5982821bc883369"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76705c9325d72a81155bb6ab48d4312e0032bf045fb0754889133200f7a0d849"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77a41c26205d2353a4c94d02be51d6cbdf63c06fbc1295ea57dad7e2d3381b71"}, + {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:12720a53e61c3b99d87262294e2b375c915fea93c31fc2336898c26d7aed34cd"}, + {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:57459b68e5cd85b0be8184382cefd91959cafe79ae019e6b1ae6e2ba8a12cda7"}, + {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:292fe3fc5ad4a75bc8df0dfaee7d0babe8b1f4ceb596437213821f761b4589f9"}, + {file = "pyzmq-25.1.1-cp310-cp310-win32.whl", hash = "sha256:35b5ab8c28978fbbb86ea54958cd89f5176ce747c1fb3d87356cf698048a7790"}, + {file = "pyzmq-25.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:11baebdd5fc5b475d484195e49bae2dc64b94a5208f7c89954e9e354fc609d8f"}, + {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:d20a0ddb3e989e8807d83225a27e5c2eb2260eaa851532086e9e0fa0d5287d83"}, + {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1c1be77bc5fb77d923850f82e55a928f8638f64a61f00ff18a67c7404faf008"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d89528b4943d27029a2818f847c10c2cecc79fa9590f3cb1860459a5be7933eb"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90f26dc6d5f241ba358bef79be9ce06de58d477ca8485e3291675436d3827cf8"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2b92812bd214018e50b6380ea3ac0c8bb01ac07fcc14c5f86a5bb25e74026e9"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f957ce63d13c28730f7fd6b72333814221c84ca2421298f66e5143f81c9f91f"}, + {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:047a640f5c9c6ade7b1cc6680a0e28c9dd5a0825135acbd3569cc96ea00b2505"}, + {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7f7e58effd14b641c5e4dec8c7dab02fb67a13df90329e61c869b9cc607ef752"}, + {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c2910967e6ab16bf6fbeb1f771c89a7050947221ae12a5b0b60f3bca2ee19bca"}, + {file = "pyzmq-25.1.1-cp311-cp311-win32.whl", hash = "sha256:76c1c8efb3ca3a1818b837aea423ff8a07bbf7aafe9f2f6582b61a0458b1a329"}, + {file = "pyzmq-25.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:44e58a0554b21fc662f2712814a746635ed668d0fbc98b7cb9d74cb798d202e6"}, + {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e1ffa1c924e8c72778b9ccd386a7067cddf626884fd8277f503c48bb5f51c762"}, + {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1af379b33ef33757224da93e9da62e6471cf4a66d10078cf32bae8127d3d0d4a"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cff084c6933680d1f8b2f3b4ff5bbb88538a4aac00d199ac13f49d0698727ecb"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2400a94f7dd9cb20cd012951a0cbf8249e3d554c63a9c0cdfd5cbb6c01d2dec"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d81f1ddae3858b8299d1da72dd7d19dd36aab654c19671aa8a7e7fb02f6638a"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:255ca2b219f9e5a3a9ef3081512e1358bd4760ce77828e1028b818ff5610b87b"}, + {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a882ac0a351288dd18ecae3326b8a49d10c61a68b01419f3a0b9a306190baf69"}, + {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:724c292bb26365659fc434e9567b3f1adbdb5e8d640c936ed901f49e03e5d32e"}, + {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ca1ed0bb2d850aa8471387882247c68f1e62a4af0ce9c8a1dbe0d2bf69e41fb"}, + {file = "pyzmq-25.1.1-cp312-cp312-win32.whl", hash = "sha256:b3451108ab861040754fa5208bca4a5496c65875710f76789a9ad27c801a0075"}, + {file = "pyzmq-25.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:eadbefd5e92ef8a345f0525b5cfd01cf4e4cc651a2cffb8f23c0dd184975d787"}, + {file = "pyzmq-25.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:db0b2af416ba735c6304c47f75d348f498b92952f5e3e8bff449336d2728795d"}, + {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c133e93b405eb0d36fa430c94185bdd13c36204a8635470cccc200723c13bb"}, + {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:273bc3959bcbff3f48606b28229b4721716598d76b5aaea2b4a9d0ab454ec062"}, + {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cbc8df5c6a88ba5ae385d8930da02201165408dde8d8322072e3e5ddd4f68e22"}, + {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:18d43df3f2302d836f2a56f17e5663e398416e9dd74b205b179065e61f1a6edf"}, + {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:73461eed88a88c866656e08f89299720a38cb4e9d34ae6bf5df6f71102570f2e"}, + {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c850ce7976d19ebe7b9d4b9bb8c9dfc7aac336c0958e2651b88cbd46682123"}, + {file = "pyzmq-25.1.1-cp36-cp36m-win32.whl", hash = "sha256:d2045d6d9439a0078f2a34b57c7b18c4a6aef0bee37f22e4ec9f32456c852c71"}, + {file = "pyzmq-25.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:458dea649f2f02a0b244ae6aef8dc29325a2810aa26b07af8374dc2a9faf57e3"}, + {file = "pyzmq-25.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cff25c5b315e63b07a36f0c2bab32c58eafbe57d0dce61b614ef4c76058c115"}, + {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1579413ae492b05de5a6174574f8c44c2b9b122a42015c5292afa4be2507f28"}, + {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0a409d3b28607cc427aa5c30a6f1e4452cc44e311f843e05edb28ab5e36da0"}, + {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21eb4e609a154a57c520e3d5bfa0d97e49b6872ea057b7c85257b11e78068222"}, + {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:034239843541ef7a1aee0c7b2cb7f6aafffb005ede965ae9cbd49d5ff4ff73cf"}, + {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8115e303280ba09f3898194791a153862cbf9eef722ad8f7f741987ee2a97c7"}, + {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a5d26fe8f32f137e784f768143728438877d69a586ddeaad898558dc971a5ae"}, + {file = "pyzmq-25.1.1-cp37-cp37m-win32.whl", hash = "sha256:f32260e556a983bc5c7ed588d04c942c9a8f9c2e99213fec11a031e316874c7e"}, + {file = "pyzmq-25.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf34e43c531bbb510ae7e8f5b2b1f2a8ab93219510e2b287a944432fad135f3"}, + {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:87e34f31ca8f168c56d6fbf99692cc8d3b445abb5bfd08c229ae992d7547a92a"}, + {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c9c6c9b2c2f80747a98f34ef491c4d7b1a8d4853937bb1492774992a120f475d"}, + {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5619f3f5a4db5dbb572b095ea3cb5cc035335159d9da950830c9c4db2fbb6995"}, + {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a34d2395073ef862b4032343cf0c32a712f3ab49d7ec4f42c9661e0294d106f"}, + {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0e6b78220aba09815cd1f3a32b9c7cb3e02cb846d1cfc526b6595f6046618"}, + {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3669cf8ee3520c2f13b2e0351c41fea919852b220988d2049249db10046a7afb"}, + {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2d163a18819277e49911f7461567bda923461c50b19d169a062536fffe7cd9d2"}, + {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df27ffddff4190667d40de7beba4a950b5ce78fe28a7dcc41d6f8a700a80a3c0"}, + {file = "pyzmq-25.1.1-cp38-cp38-win32.whl", hash = "sha256:a382372898a07479bd34bda781008e4a954ed8750f17891e794521c3e21c2e1c"}, + {file = "pyzmq-25.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:52533489f28d62eb1258a965f2aba28a82aa747202c8fa5a1c7a43b5db0e85c1"}, + {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:03b3f49b57264909aacd0741892f2aecf2f51fb053e7d8ac6767f6c700832f45"}, + {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:330f9e188d0d89080cde66dc7470f57d1926ff2fb5576227f14d5be7ab30b9fa"}, + {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2ca57a5be0389f2a65e6d3bb2962a971688cbdd30b4c0bd188c99e39c234f414"}, + {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d457aed310f2670f59cc5b57dcfced452aeeed77f9da2b9763616bd57e4dbaae"}, + {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c56d748ea50215abef7030c72b60dd723ed5b5c7e65e7bc2504e77843631c1a6"}, + {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f03d3f0d01cb5a018debeb412441996a517b11c5c17ab2001aa0597c6d6882c"}, + {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:820c4a08195a681252f46926de10e29b6bbf3e17b30037bd4250d72dd3ddaab8"}, + {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17ef5f01d25b67ca8f98120d5fa1d21efe9611604e8eb03a5147360f517dd1e2"}, + {file = "pyzmq-25.1.1-cp39-cp39-win32.whl", hash = "sha256:04ccbed567171579ec2cebb9c8a3e30801723c575601f9a990ab25bcac6b51e2"}, + {file = "pyzmq-25.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:e61f091c3ba0c3578411ef505992d356a812fb200643eab27f4f70eed34a29ef"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ade6d25bb29c4555d718ac6d1443a7386595528c33d6b133b258f65f963bb0f6"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0c95ddd4f6e9fca4e9e3afaa4f9df8552f0ba5d1004e89ef0a68e1f1f9807c7"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48e466162a24daf86f6b5ca72444d2bf39a5e58da5f96370078be67c67adc978"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abc719161780932c4e11aaebb203be3d6acc6b38d2f26c0f523b5b59d2fc1996"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ccf825981640b8c34ae54231b7ed00271822ea1c6d8ba1090ebd4943759abf5"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2f20ce161ebdb0091a10c9ca0372e023ce24980d0e1f810f519da6f79c60800"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:deee9ca4727f53464daf089536e68b13e6104e84a37820a88b0a057b97bba2d2"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa8d6cdc8b8aa19ceb319aaa2b660cdaccc533ec477eeb1309e2a291eaacc43a"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:019e59ef5c5256a2c7378f2fb8560fc2a9ff1d315755204295b2eab96b254d0a"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b9af3757495c1ee3b5c4e945c1df7be95562277c6e5bccc20a39aec50f826cd0"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:548d6482dc8aadbe7e79d1b5806585c8120bafa1ef841167bc9090522b610fa6"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:057e824b2aae50accc0f9a0570998adc021b372478a921506fddd6c02e60308e"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2243700cc5548cff20963f0ca92d3e5e436394375ab8a354bbea2b12911b20b0"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79986f3b4af059777111409ee517da24a529bdbd46da578b33f25580adcff728"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:11d58723d44d6ed4dd677c5615b2ffb19d5c426636345567d6af82be4dff8a55"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:49d238cf4b69652257db66d0c623cd3e09b5d2e9576b56bc067a396133a00d4a"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fedbdc753827cf014c01dbbee9c3be17e5a208dcd1bf8641ce2cd29580d1f0d4"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc16ac425cc927d0a57d242589f87ee093884ea4804c05a13834d07c20db203c"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11c1d2aed9079c6b0c9550a7257a836b4a637feb334904610f06d70eb44c56d2"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e8a701123029cc240cea61dd2d16ad57cab4691804143ce80ecd9286b464d180"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:61706a6b6c24bdece85ff177fec393545a3191eeda35b07aaa1458a027ad1304"}, + {file = "pyzmq-25.1.1.tar.gz", hash = "sha256:259c22485b71abacdfa8bf79720cd7bcf4b9d128b30ea554f01ae71fdbfdaa23"}, ] [package.dependencies] @@ -6956,13 +6851,13 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "referencing" -version = "0.33.0" +version = "0.30.2" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"}, - {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"}, + {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"}, + {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"}, ] [package.dependencies] @@ -6971,104 +6866,99 @@ rpds-py = ">=0.7.0" [[package]] name = "regex" -version = "2023.12.25" +version = "2023.10.3" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.7" files = [ - {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"}, + {file = "regex-2023.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc"}, + {file = "regex-2023.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55"}, + {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a"}, + {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a"}, + {file = "regex-2023.10.3-cp310-cp310-win32.whl", hash = "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec"}, + {file = "regex-2023.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353"}, + {file = "regex-2023.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e"}, + {file = "regex-2023.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac"}, + {file = "regex-2023.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6"}, + {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54"}, + {file = "regex-2023.10.3-cp311-cp311-win32.whl", hash = "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2"}, + {file = "regex-2023.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c"}, + {file = "regex-2023.10.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037"}, + {file = "regex-2023.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841"}, + {file = "regex-2023.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292"}, + {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a"}, + {file = "regex-2023.10.3-cp312-cp312-win32.whl", hash = "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a"}, + {file = "regex-2023.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b"}, + {file = "regex-2023.10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf"}, + {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597"}, + {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb"}, + {file = "regex-2023.10.3-cp37-cp37m-win32.whl", hash = "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a"}, + {file = "regex-2023.10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed"}, + {file = "regex-2023.10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533"}, + {file = "regex-2023.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07"}, + {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711"}, + {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4"}, + {file = "regex-2023.10.3-cp38-cp38-win32.whl", hash = "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d"}, + {file = "regex-2023.10.3-cp38-cp38-win_amd64.whl", hash = "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b"}, + {file = "regex-2023.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af"}, + {file = "regex-2023.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b"}, + {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca"}, + {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48"}, + {file = "regex-2023.10.3-cp39-cp39-win32.whl", hash = "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd"}, + {file = "regex-2023.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988"}, + {file = "regex-2023.10.3.tar.gz", hash = "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f"}, ] [[package]] @@ -7172,110 +7062,110 @@ rich = ">=11.0.0" [[package]] name = "rpds-py" -version = "0.18.0" +version = "0.10.6" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {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"}, + {file = "rpds_py-0.10.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:6bdc11f9623870d75692cc33c59804b5a18d7b8a4b79ef0b00b773a27397d1f6"}, + {file = "rpds_py-0.10.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:26857f0f44f0e791f4a266595a7a09d21f6b589580ee0585f330aaccccb836e3"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7f5e15c953ace2e8dde9824bdab4bec50adb91a5663df08d7d994240ae6fa31"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61fa268da6e2e1cd350739bb61011121fa550aa2545762e3dc02ea177ee4de35"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c48f3fbc3e92c7dd6681a258d22f23adc2eb183c8cb1557d2fcc5a024e80b094"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0503c5b681566e8b722fe8c4c47cce5c7a51f6935d5c7012c4aefe952a35eed"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:734c41f9f57cc28658d98270d3436dba65bed0cfc730d115b290e970150c540d"}, + {file = "rpds_py-0.10.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a5d7ed104d158c0042a6a73799cf0eb576dfd5fc1ace9c47996e52320c37cb7c"}, + {file = "rpds_py-0.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e3df0bc35e746cce42579826b89579d13fd27c3d5319a6afca9893a9b784ff1b"}, + {file = "rpds_py-0.10.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:73e0a78a9b843b8c2128028864901f55190401ba38aae685350cf69b98d9f7c9"}, + {file = "rpds_py-0.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5ed505ec6305abd2c2c9586a7b04fbd4baf42d4d684a9c12ec6110deefe2a063"}, + {file = "rpds_py-0.10.6-cp310-none-win32.whl", hash = "sha256:d97dd44683802000277bbf142fd9f6b271746b4846d0acaf0cefa6b2eaf2a7ad"}, + {file = "rpds_py-0.10.6-cp310-none-win_amd64.whl", hash = "sha256:b455492cab07107bfe8711e20cd920cc96003e0da3c1f91297235b1603d2aca7"}, + {file = "rpds_py-0.10.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e8cdd52744f680346ff8c1ecdad5f4d11117e1724d4f4e1874f3a67598821069"}, + {file = "rpds_py-0.10.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66414dafe4326bca200e165c2e789976cab2587ec71beb80f59f4796b786a238"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc435d059f926fdc5b05822b1be4ff2a3a040f3ae0a7bbbe672babb468944722"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8e7f2219cb72474571974d29a191714d822e58be1eb171f229732bc6fdedf0ac"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3953c6926a63f8ea5514644b7afb42659b505ece4183fdaaa8f61d978754349e"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2bb2e4826be25e72013916eecd3d30f66fd076110de09f0e750163b416500721"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bf347b495b197992efc81a7408e9a83b931b2f056728529956a4d0858608b80"}, + {file = "rpds_py-0.10.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:102eac53bb0bf0f9a275b438e6cf6904904908562a1463a6fc3323cf47d7a532"}, + {file = "rpds_py-0.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40f93086eef235623aa14dbddef1b9fb4b22b99454cb39a8d2e04c994fb9868c"}, + {file = "rpds_py-0.10.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e22260a4741a0e7a206e175232867b48a16e0401ef5bce3c67ca5b9705879066"}, + {file = "rpds_py-0.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f4e56860a5af16a0fcfa070a0a20c42fbb2012eed1eb5ceeddcc7f8079214281"}, + {file = "rpds_py-0.10.6-cp311-none-win32.whl", hash = "sha256:0774a46b38e70fdde0c6ded8d6d73115a7c39d7839a164cc833f170bbf539116"}, + {file = "rpds_py-0.10.6-cp311-none-win_amd64.whl", hash = "sha256:4a5ee600477b918ab345209eddafde9f91c0acd931f3776369585a1c55b04c57"}, + {file = "rpds_py-0.10.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:5ee97c683eaface61d38ec9a489e353d36444cdebb128a27fe486a291647aff6"}, + {file = "rpds_py-0.10.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0713631d6e2d6c316c2f7b9320a34f44abb644fc487b77161d1724d883662e31"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5a53f5998b4bbff1cb2e967e66ab2addc67326a274567697379dd1e326bded7"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a555ae3d2e61118a9d3e549737bb4a56ff0cec88a22bd1dfcad5b4e04759175"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:945eb4b6bb8144909b203a88a35e0a03d22b57aefb06c9b26c6e16d72e5eb0f0"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:52c215eb46307c25f9fd2771cac8135d14b11a92ae48d17968eda5aa9aaf5071"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1b3cd23d905589cb205710b3988fc8f46d4a198cf12862887b09d7aaa6bf9b9"}, + {file = "rpds_py-0.10.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64ccc28683666672d7c166ed465c09cee36e306c156e787acef3c0c62f90da5a"}, + {file = "rpds_py-0.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:516a611a2de12fbea70c78271e558f725c660ce38e0006f75139ba337d56b1f6"}, + {file = "rpds_py-0.10.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9ff93d3aedef11f9c4540cf347f8bb135dd9323a2fc705633d83210d464c579d"}, + {file = "rpds_py-0.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d858532212f0650be12b6042ff4378dc2efbb7792a286bee4489eaa7ba010586"}, + {file = "rpds_py-0.10.6-cp312-none-win32.whl", hash = "sha256:3c4eff26eddac49d52697a98ea01b0246e44ca82ab09354e94aae8823e8bda02"}, + {file = "rpds_py-0.10.6-cp312-none-win_amd64.whl", hash = "sha256:150eec465dbc9cbca943c8e557a21afdcf9bab8aaabf386c44b794c2f94143d2"}, + {file = "rpds_py-0.10.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:cf693eb4a08eccc1a1b636e4392322582db2a47470d52e824b25eca7a3977b53"}, + {file = "rpds_py-0.10.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4134aa2342f9b2ab6c33d5c172e40f9ef802c61bb9ca30d21782f6e035ed0043"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e782379c2028a3611285a795b89b99a52722946d19fc06f002f8b53e3ea26ea9"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f6da6d842195fddc1cd34c3da8a40f6e99e4a113918faa5e60bf132f917c247"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4a9fe992887ac68256c930a2011255bae0bf5ec837475bc6f7edd7c8dfa254e"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b788276a3c114e9f51e257f2a6f544c32c02dab4aa7a5816b96444e3f9ffc336"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caa1afc70a02645809c744eefb7d6ee8fef7e2fad170ffdeacca267fd2674f13"}, + {file = "rpds_py-0.10.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bddd4f91eede9ca5275e70479ed3656e76c8cdaaa1b354e544cbcf94c6fc8ac4"}, + {file = "rpds_py-0.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:775049dfa63fb58293990fc59473e659fcafd953bba1d00fc5f0631a8fd61977"}, + {file = "rpds_py-0.10.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:c6c45a2d2b68c51fe3d9352733fe048291e483376c94f7723458cfd7b473136b"}, + {file = "rpds_py-0.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0699ab6b8c98df998c3eacf51a3b25864ca93dab157abe358af46dc95ecd9801"}, + {file = "rpds_py-0.10.6-cp38-none-win32.whl", hash = "sha256:ebdab79f42c5961682654b851f3f0fc68e6cc7cd8727c2ac4ffff955154123c1"}, + {file = "rpds_py-0.10.6-cp38-none-win_amd64.whl", hash = "sha256:24656dc36f866c33856baa3ab309da0b6a60f37d25d14be916bd3e79d9f3afcf"}, + {file = "rpds_py-0.10.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:0898173249141ee99ffcd45e3829abe7bcee47d941af7434ccbf97717df020e5"}, + {file = "rpds_py-0.10.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9e9184fa6c52a74a5521e3e87badbf9692549c0fcced47443585876fcc47e469"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5752b761902cd15073a527b51de76bbae63d938dc7c5c4ad1e7d8df10e765138"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99a57006b4ec39dbfb3ed67e5b27192792ffb0553206a107e4aadb39c5004cd5"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09586f51a215d17efdb3a5f090d7cbf1633b7f3708f60a044757a5d48a83b393"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e225a6a14ecf44499aadea165299092ab0cba918bb9ccd9304eab1138844490b"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2039f8d545f20c4e52713eea51a275e62153ee96c8035a32b2abb772b6fc9e5"}, + {file = "rpds_py-0.10.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:34ad87a831940521d462ac11f1774edf867c34172010f5390b2f06b85dcc6014"}, + {file = "rpds_py-0.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dcdc88b6b01015da066da3fb76545e8bb9a6880a5ebf89e0f0b2e3ca557b3ab7"}, + {file = "rpds_py-0.10.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:25860ed5c4e7f5e10c496ea78af46ae8d8468e0be745bd233bab9ca99bfd2647"}, + {file = "rpds_py-0.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7854a207ef77319ec457c1eb79c361b48807d252d94348305db4f4b62f40f7f3"}, + {file = "rpds_py-0.10.6-cp39-none-win32.whl", hash = "sha256:e6fcc026a3f27c1282c7ed24b7fcac82cdd70a0e84cc848c0841a3ab1e3dea2d"}, + {file = "rpds_py-0.10.6-cp39-none-win_amd64.whl", hash = "sha256:e98c4c07ee4c4b3acf787e91b27688409d918212dfd34c872201273fdd5a0e18"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:68fe9199184c18d997d2e4293b34327c0009a78599ce703e15cd9a0f47349bba"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3339eca941568ed52d9ad0f1b8eb9fe0958fa245381747cecf2e9a78a5539c42"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a360cfd0881d36c6dc271992ce1eda65dba5e9368575663de993eeb4523d895f"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:031f76fc87644a234883b51145e43985aa2d0c19b063e91d44379cd2786144f8"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f36a9d751f86455dc5278517e8b65580eeee37d61606183897f122c9e51cef3"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:052a832078943d2b2627aea0d19381f607fe331cc0eb5df01991268253af8417"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:023574366002bf1bd751ebaf3e580aef4a468b3d3c216d2f3f7e16fdabd885ed"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:defa2c0c68734f4a82028c26bcc85e6b92cced99866af118cd6a89b734ad8e0d"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:879fb24304ead6b62dbe5034e7b644b71def53c70e19363f3c3be2705c17a3b4"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:53c43e10d398e365da2d4cc0bcaf0854b79b4c50ee9689652cdc72948e86f487"}, + {file = "rpds_py-0.10.6-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:3777cc9dea0e6c464e4b24760664bd8831738cc582c1d8aacf1c3f546bef3f65"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:40578a6469e5d1df71b006936ce95804edb5df47b520c69cf5af264d462f2cbb"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:cf71343646756a072b85f228d35b1d7407da1669a3de3cf47f8bbafe0c8183a4"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10f32b53f424fc75ff7b713b2edb286fdbfc94bf16317890260a81c2c00385dc"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:81de24a1c51cfb32e1fbf018ab0bdbc79c04c035986526f76c33e3f9e0f3356c"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac17044876e64a8ea20ab132080ddc73b895b4abe9976e263b0e30ee5be7b9c2"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e8a78bd4879bff82daef48c14d5d4057f6856149094848c3ed0ecaf49f5aec2"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78ca33811e1d95cac8c2e49cb86c0fb71f4d8409d8cbea0cb495b6dbddb30a55"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c63c3ef43f0b3fb00571cff6c3967cc261c0ebd14a0a134a12e83bdb8f49f21f"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:7fde6d0e00b2fd0dbbb40c0eeec463ef147819f23725eda58105ba9ca48744f4"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:79edd779cfc46b2e15b0830eecd8b4b93f1a96649bcb502453df471a54ce7977"}, + {file = "rpds_py-0.10.6-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9164ec8010327ab9af931d7ccd12ab8d8b5dc2f4c6a16cbdd9d087861eaaefa1"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d29ddefeab1791e3c751e0189d5f4b3dbc0bbe033b06e9c333dca1f99e1d523e"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:30adb75ecd7c2a52f5e76af50644b3e0b5ba036321c390b8e7ec1bb2a16dd43c"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd609fafdcdde6e67a139898196698af37438b035b25ad63704fd9097d9a3482"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6eef672de005736a6efd565577101277db6057f65640a813de6c2707dc69f396"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cf4393c7b41abbf07c88eb83e8af5013606b1cdb7f6bc96b1b3536b53a574b8"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad857f42831e5b8d41a32437f88d86ead6c191455a3499c4b6d15e007936d4cf"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d7360573f1e046cb3b0dceeb8864025aa78d98be4bb69f067ec1c40a9e2d9df"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d08f63561c8a695afec4975fae445245386d645e3e446e6f260e81663bfd2e38"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:f0f17f2ce0f3529177a5fff5525204fad7b43dd437d017dd0317f2746773443d"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:442626328600bde1d09dc3bb00434f5374948838ce75c41a52152615689f9403"}, + {file = "rpds_py-0.10.6-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e9616f5bd2595f7f4a04b67039d890348ab826e943a9bfdbe4938d0eba606971"}, + {file = "rpds_py-0.10.6.tar.gz", hash = "sha256:4ce5a708d65a8dbf3748d2474b580d606b1b9f91b5c6ab2a316e0b0cf7a4ba50"}, ] [[package]] @@ -7294,80 +7184,100 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruff" -version = "0.2.2" +version = "0.2.0" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.2.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0a9efb032855ffb3c21f6405751d5e147b0c6b631e3ca3f6b20f917572b97eb6"}, - {file = "ruff-0.2.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d450b7fbff85913f866a5384d8912710936e2b96da74541c82c1b458472ddb39"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecd46e3106850a5c26aee114e562c329f9a1fbe9e4821b008c4404f64ff9ce73"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e22676a5b875bd72acd3d11d5fa9075d3a5f53b877fe7b4793e4673499318ba"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1695700d1e25a99d28f7a1636d85bafcc5030bba9d0578c0781ba1790dbcf51c"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b0c232af3d0bd8f521806223723456ffebf8e323bd1e4e82b0befb20ba18388e"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f63d96494eeec2fc70d909393bcd76c69f35334cdbd9e20d089fb3f0640216ca"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a61ea0ff048e06de273b2e45bd72629f470f5da8f71daf09fe481278b175001"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1439c8f407e4f356470e54cdecdca1bd5439a0673792dbe34a2b0a551a2fe3"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:940de32dc8853eba0f67f7198b3e79bc6ba95c2edbfdfac2144c8235114d6726"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:0c126da55c38dd917621552ab430213bdb3273bb10ddb67bc4b761989210eb6e"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3b65494f7e4bed2e74110dac1f0d17dc8e1f42faaa784e7c58a98e335ec83d7e"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1ec49be4fe6ddac0503833f3ed8930528e26d1e60ad35c2446da372d16651ce9"}, - {file = "ruff-0.2.2-py3-none-win32.whl", hash = "sha256:d920499b576f6c68295bc04e7b17b6544d9d05f196bb3aac4358792ef6f34325"}, - {file = "ruff-0.2.2-py3-none-win_amd64.whl", hash = "sha256:cc9a91ae137d687f43a44c900e5d95e9617cb37d4c989e462980ba27039d239d"}, - {file = "ruff-0.2.2-py3-none-win_arm64.whl", hash = "sha256:c9d15fc41e6054bfc7200478720570078f0b41c9ae4f010bcc16bd6f4d1aacdd"}, - {file = "ruff-0.2.2.tar.gz", hash = "sha256:e62ed7f36b3068a30ba39193a14274cd706bc486fad521276458022f7bccb31d"}, + {file = "ruff-0.2.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:638ea3294f800d18bae84a492cb5a245c8d29c90d19a91d8e338937a4c27fca0"}, + {file = "ruff-0.2.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3ff35433fcf4dff6d610738712152df6b7d92351a1bde8e00bd405b08b3d5759"}, + {file = "ruff-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf9faafbdcf4f53917019f2c230766da437d4fd5caecd12ddb68bb6a17d74399"}, + {file = "ruff-0.2.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8153a3e4128ed770871c47545f1ae7b055023e0c222ff72a759f5a341ee06483"}, + {file = "ruff-0.2.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8a75a98ae989a27090e9c51f763990ad5bbc92d20626d54e9701c7fe597f399"}, + {file = "ruff-0.2.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:87057dd2fdde297130ff99553be8549ca38a2965871462a97394c22ed2dfc19d"}, + {file = "ruff-0.2.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d232f99d3ab00094ebaf88e0fb7a8ccacaa54cc7fa3b8993d9627a11e6aed7a"}, + {file = "ruff-0.2.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d3c641f95f435fc6754b05591774a17df41648f0daf3de0d75ad3d9f099ab92"}, + {file = "ruff-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3826fb34c144ef1e171b323ed6ae9146ab76d109960addca730756dc19dc7b22"}, + {file = "ruff-0.2.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:eceab7d85d09321b4de18b62d38710cf296cb49e98979960a59c6b9307c18cfe"}, + {file = "ruff-0.2.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:30ad74687e1f4a9ff8e513b20b82ccadb6bd796fe5697f1e417189c5cde6be3e"}, + {file = "ruff-0.2.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a7e3818698f8460bd0f8d4322bbe99db8327e9bc2c93c789d3159f5b335f47da"}, + {file = "ruff-0.2.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:edf23041242c48b0d8295214783ef543847ef29e8226d9f69bf96592dba82a83"}, + {file = "ruff-0.2.0-py3-none-win32.whl", hash = "sha256:e155147199c2714ff52385b760fe242bb99ea64b240a9ffbd6a5918eb1268843"}, + {file = "ruff-0.2.0-py3-none-win_amd64.whl", hash = "sha256:ba918e01cdd21e81b07555564f40d307b0caafa9a7a65742e98ff244f5035c59"}, + {file = "ruff-0.2.0-py3-none-win_arm64.whl", hash = "sha256:3fbaff1ba9564a2c5943f8f38bc221f04bac687cc7485e45237579fee7ccda79"}, + {file = "ruff-0.2.0.tar.gz", hash = "sha256:63856b91837606c673537d2889989733d7dffde553828d3b0f0bacfa6def54be"}, ] [[package]] name = "s3transfer" -version = "0.10.0" +version = "0.7.0" description = "An Amazon S3 Transfer Manager" optional = false -python-versions = ">= 3.8" +python-versions = ">= 3.7" files = [ - {file = "s3transfer-0.10.0-py3-none-any.whl", hash = "sha256:3cdb40f5cfa6966e812209d0994f2a4709b561c88e90cf00c2696d2df4e56b2e"}, - {file = "s3transfer-0.10.0.tar.gz", hash = "sha256:d0c8bbf672d5eebbe4e57945e23b972d963f07d82f661cabf678a5c88831595b"}, + {file = "s3transfer-0.7.0-py3-none-any.whl", hash = "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a"}, + {file = "s3transfer-0.7.0.tar.gz", hash = "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"}, ] [package.dependencies] -botocore = ">=1.33.2,<2.0a.0" +botocore = ">=1.12.36,<2.0a.0" [package.extras] -crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] +crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] [[package]] name = "scikit-learn" -version = "1.4.1.post1" +version = "1.4.0" description = "A set of python modules for machine learning and data mining" optional = false python-versions = ">=3.9" files = [ - {file = "scikit-learn-1.4.1.post1.tar.gz", hash = "sha256:93d3d496ff1965470f9977d05e5ec3376fb1e63b10e4fda5e39d23c2d8969a30"}, - {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c540aaf44729ab5cd4bd5e394f2b375e65ceaea9cdd8c195788e70433d91bbc5"}, - {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4310bff71aa98b45b46cd26fa641309deb73a5d1c0461d181587ad4f30ea3c36"}, - {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f43dd527dabff5521af2786a2f8de5ba381e182ec7292663508901cf6ceaf6e"}, - {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c02e27d65b0c7dc32f2c5eb601aaf5530b7a02bfbe92438188624524878336f2"}, - {file = "scikit_learn-1.4.1.post1-cp310-cp310-win_amd64.whl", hash = "sha256:629e09f772ad42f657ca60a1a52342eef786218dd20cf1369a3b8d085e55ef8f"}, - {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6145dfd9605b0b50ae72cdf72b61a2acd87501369a763b0d73d004710ebb76b5"}, - {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1afed6951bc9d2053c6ee9a518a466cbc9b07c6a3f9d43bfe734192b6125d508"}, - {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce03506ccf5f96b7e9030fea7eb148999b254c44c10182ac55857bc9b5d4815f"}, - {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ba516fcdc73d60e7f48cbb0bccb9acbdb21807de3651531208aac73c758e3ab"}, - {file = "scikit_learn-1.4.1.post1-cp311-cp311-win_amd64.whl", hash = "sha256:78cd27b4669513b50db4f683ef41ea35b5dddc797bd2bbd990d49897fd1c8a46"}, - {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a1e289f33f613cefe6707dead50db31930530dc386b6ccff176c786335a7b01c"}, - {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0df87de9ce1c0140f2818beef310fb2e2afdc1e66fc9ad587965577f17733649"}, - {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712c1c69c45b58ef21635360b3d0a680ff7d83ac95b6f9b82cf9294070cda710"}, - {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1754b0c2409d6ed5a3380512d0adcf182a01363c669033a2b55cca429ed86a81"}, - {file = "scikit_learn-1.4.1.post1-cp312-cp312-win_amd64.whl", hash = "sha256:1d491ef66e37f4e812db7e6c8286520c2c3fc61b34bf5e59b67b4ce528de93af"}, - {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aa0029b78ef59af22cfbd833e8ace8526e4df90212db7ceccbea582ebb5d6794"}, - {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:14e4c88436ac96bf69eb6d746ac76a574c314a23c6961b7d344b38877f20fee1"}, - {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7cd3a77c32879311f2aa93466d3c288c955ef71d191503cf0677c3340ae8ae0"}, - {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a3ee19211ded1a52ee37b0a7b373a8bfc66f95353af058a210b692bd4cda0dd"}, - {file = "scikit_learn-1.4.1.post1-cp39-cp39-win_amd64.whl", hash = "sha256:234b6bda70fdcae9e4abbbe028582ce99c280458665a155eed0b820599377d25"}, + {file = "scikit-learn-1.4.0.tar.gz", hash = "sha256:d4373c984eba20e393216edd51a3e3eede56cbe93d4247516d205643c3b93121"}, + {file = "scikit_learn-1.4.0-1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fce93a7473e2f4ee4cc280210968288d6a7d7ad8dc6fa7bb7892145e407085f9"}, + {file = "scikit_learn-1.4.0-1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d77df3d1e15fc37a9329999979fa7868ba8655dbab21fe97fc7ddabac9e08cc7"}, + {file = "scikit_learn-1.4.0-1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2404659fedec40eeafa310cd14d613e564d13dbf8f3c752d31c095195ec05de6"}, + {file = "scikit_learn-1.4.0-1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e98632da8f6410e6fb6bf66937712c949b4010600ccd3f22a5388a83e610cc3c"}, + {file = "scikit_learn-1.4.0-1-cp310-cp310-win_amd64.whl", hash = "sha256:11b3b140f70fbc9f6a08884631ae8dd60a4bb2d7d6d1de92738ea42b740d8992"}, + {file = "scikit_learn-1.4.0-1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8341eabdc754d5ab91641a7763243845e96b6d68e03e472531e88a4f1b09f21"}, + {file = "scikit_learn-1.4.0-1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d1f6bce875ac2bb6b52514f67c185c564ccd299a05b65b7bab091a4c13dde12d"}, + {file = "scikit_learn-1.4.0-1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c408b46b2fd61952d519ea1af2f8f0a7a703e1433923ab1704c4131520b2083b"}, + {file = "scikit_learn-1.4.0-1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b465dd1dcd237b7b1dcd1a9048ccbf70a98c659474324fa708464c3a2533fad"}, + {file = "scikit_learn-1.4.0-1-cp311-cp311-win_amd64.whl", hash = "sha256:0db8e22c42f7980fe5eb22069b1f84c48966f3e0d23a01afde5999e3987a2501"}, + {file = "scikit_learn-1.4.0-1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7eef6ea2ed289af40e88c0be9f7704ca8b5de18508a06897c3fe21e0905efdf"}, + {file = "scikit_learn-1.4.0-1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:349669b01435bc4dbf25c6410b0892073befdaec52637d1a1d1ff53865dc8db3"}, + {file = "scikit_learn-1.4.0-1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d439c584e58434d0350701bd33f6c10b309e851fccaf41c121aed55f6851d8cf"}, + {file = "scikit_learn-1.4.0-1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0e2427d9ef46477625ab9b55c1882844fe6fc500f418c3f8e650200182457bc"}, + {file = "scikit_learn-1.4.0-1-cp312-cp312-win_amd64.whl", hash = "sha256:d3d75343940e7bf9b85c830c93d34039fa015eeb341c5c0b4cd7a90dadfe00d4"}, + {file = "scikit_learn-1.4.0-1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:76986d22e884ab062b1beecdd92379656e9d3789ecc1f9870923c178de55f9fe"}, + {file = "scikit_learn-1.4.0-1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:e22446ad89f1cb7657f0d849dcdc345b48e2d10afa3daf2925fdb740f85b714c"}, + {file = "scikit_learn-1.4.0-1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74812c9eabb265be69d738a8ea8d4884917a59637fcbf88a5f0e9020498bc6b3"}, + {file = "scikit_learn-1.4.0-1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aad2a63e0dd386b92da3270887a29b308af4d7c750d8c4995dfd9a4798691bcc"}, + {file = "scikit_learn-1.4.0-1-cp39-cp39-win_amd64.whl", hash = "sha256:53b9e29177897c37e2ff9d4ba6ca12fdb156e22523e463db05def303f5c72b5c"}, + {file = "scikit_learn-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb8f044a8f5962613ce1feb4351d66f8d784bd072d36393582f351859b065f7d"}, + {file = "scikit_learn-1.4.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:a6372c90bbf302387792108379f1ec77719c1618d88496d0df30cb8e370b4661"}, + {file = "scikit_learn-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:785ce3c352bf697adfda357c3922c94517a9376002971bc5ea50896144bc8916"}, + {file = "scikit_learn-1.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0aba2a20d89936d6e72d95d05e3bf1db55bca5c5920926ad7b92c34f5e7d3bbe"}, + {file = "scikit_learn-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:2bac5d56b992f8f06816f2cd321eb86071c6f6d44bb4b1cb3d626525820d754b"}, + {file = "scikit_learn-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:27ae4b0f1b2c77107c096a7e05b33458354107b47775428d1f11b23e30a73e8a"}, + {file = "scikit_learn-1.4.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5c5c62ffb52c3ffb755eb21fa74cc2cbf2c521bd53f5c04eaa10011dbecf5f80"}, + {file = "scikit_learn-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f0d2018ac6fa055dab65fe8a485967990d33c672d55bc254c56c35287b02fab"}, + {file = "scikit_learn-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91a8918c415c4b4bf1d60c38d32958849a9191c2428ab35d30b78354085c7c7a"}, + {file = "scikit_learn-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:80a21de63275f8bcd7877b3e781679d2ff1eddfed515a599f95b2502a3283d42"}, + {file = "scikit_learn-1.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0f33bbafb310c26b81c4d41ecaebdbc1f63498a3f13461d50ed9a2e8f24d28e4"}, + {file = "scikit_learn-1.4.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:8b6ac1442ec714b4911e5aef8afd82c691b5c88b525ea58299d455acc4e8dcec"}, + {file = "scikit_learn-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05fc5915b716c6cc60a438c250108e9a9445b522975ed37e416d5ea4f9a63381"}, + {file = "scikit_learn-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:842b7d6989f3c574685e18da6f91223eb32301d0f93903dd399894250835a6f7"}, + {file = "scikit_learn-1.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:88bcb586fdff865372df1bc6be88bb7e6f9e0aa080dab9f54f5cac7eca8e2b6b"}, + {file = "scikit_learn-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f77674647dd31f56cb12ed13ed25b6ed43a056fffef051715022d2ebffd7a7d1"}, + {file = "scikit_learn-1.4.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:833999872e2920ce00f3a50839946bdac7539454e200eb6db54898a41f4bfd43"}, + {file = "scikit_learn-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:970ec697accaef10fb4f51763f3a7b1250f9f0553cf05514d0e94905322a0172"}, + {file = "scikit_learn-1.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:923d778f378ebacca2c672ab1740e5a413e437fb45ab45ab02578f8b689e5d43"}, + {file = "scikit_learn-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:1d041bc95006b545b59e458399e3175ab11ca7a03dc9a74a573ac891f5df1489"}, ] [package.dependencies] joblib = ">=1.2.0" -numpy = ">=1.19.5,<2.0" +numpy = ">=1.19.5" scipy = ">=1.6.0" threadpoolctl = ">=2.0.0" @@ -7421,13 +7331,13 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo [[package]] name = "sentry-sdk" -version = "1.41.0" +version = "1.33.1" description = "Python client for Sentry (https://sentry.io)" optional = false python-versions = "*" files = [ - {file = "sentry-sdk-1.41.0.tar.gz", hash = "sha256:4f2d6c43c07925d8cd10dfbd0970ea7cb784f70e79523cca9dbcd72df38e5a46"}, - {file = "sentry_sdk-1.41.0-py2.py3-none-any.whl", hash = "sha256:be4f8f4b29a80b6a3b71f0f31487beb9e296391da20af8504498a328befed53f"}, + {file = "sentry-sdk-1.33.1.tar.gz", hash = "sha256:816aeb900a54bba2d9346bad8ffac2d258c4fa09271b95a6533a714e9000f074"}, + {file = "sentry_sdk-1.33.1-py2.py3-none-any.whl", hash = "sha256:1cce906dc86afda1ecd22c4716b0c846639151a3c3b59e23826711c6525c5642"}, ] [package.dependencies] @@ -7453,7 +7363,7 @@ huey = ["huey (>=2)"] loguru = ["loguru (>=0.5)"] opentelemetry = ["opentelemetry-distro (>=0.35b0)"] opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"] -pure-eval = ["asttokens", "executing", "pure-eval"] +pure-eval = ["asttokens", "executing", "pure_eval"] pymongo = ["pymongo (>=3.1)"] pyspark = ["pyspark (>=2.4.4)"] quart = ["blinker (>=1.1)", "quart (>=0.16.1)"] @@ -7566,72 +7476,72 @@ test = ["pytest"] [[package]] name = "setuptools" -version = "66.1.1" +version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "setuptools-66.1.1-py3-none-any.whl", hash = "sha256:6f590d76b713d5de4e49fe4fbca24474469f53c83632d5d0fd056f7ff7e8112b"}, - {file = "setuptools-66.1.1.tar.gz", hash = "sha256:ac4008d396bc9cd983ea483cb7139c0240a07bbc74ffb6232fceffedc6cf03a8"}, + {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"}, + {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "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"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "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] (>=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 = "shapely" -version = "2.0.3" +version = "2.0.2" description = "Manipulation and analysis of geometric objects" optional = false python-versions = ">=3.7" files = [ - {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:af7e9abe180b189431b0f490638281b43b84a33a960620e6b2e8d3e3458b61a1"}, - {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:98040462b36ced9671e266b95c326b97f41290d9d17504a1ee4dc313a7667b9c"}, - {file = "shapely-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:71eb736ef2843f23473c6e37f6180f90f0a35d740ab284321548edf4e55d9a52"}, - {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:881eb9dbbb4a6419667e91fcb20313bfc1e67f53dbb392c6840ff04793571ed1"}, - {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f10d2ccf0554fc0e39fad5886c839e47e207f99fdf09547bc687a2330efda35b"}, - {file = "shapely-2.0.3-cp310-cp310-win32.whl", hash = "sha256:6dfdc077a6fcaf74d3eab23a1ace5abc50c8bce56ac7747d25eab582c5a2990e"}, - {file = "shapely-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:64c5013dacd2d81b3bb12672098a0b2795c1bf8190cfc2980e380f5ef9d9e4d9"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:56cee3e4e8159d6f2ce32e421445b8e23154fd02a0ac271d6a6c0b266a8e3cce"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:619232c8276fded09527d2a9fd91a7885ff95c0ff9ecd5e3cb1e34fbb676e2ae"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2a7d256db6f5b4b407dc0c98dd1b2fcf1c9c5814af9416e5498d0a2e4307a4b"}, - {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45f0c8cd4583647db3216d965d49363e6548c300c23fd7e57ce17a03f824034"}, - {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13cb37d3826972a82748a450328fe02a931dcaed10e69a4d83cc20ba021bc85f"}, - {file = "shapely-2.0.3-cp311-cp311-win32.whl", hash = "sha256:9302d7011e3e376d25acd30d2d9e70d315d93f03cc748784af19b00988fc30b1"}, - {file = "shapely-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6b464f2666b13902835f201f50e835f2f153f37741db88f68c7f3b932d3505fa"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e86e7cb8e331a4850e0c2a8b2d66dc08d7a7b301b8d1d34a13060e3a5b4b3b55"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c91981c99ade980fc49e41a544629751a0ccd769f39794ae913e53b07b2f78b9"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd45d456983dc60a42c4db437496d3f08a4201fbf662b69779f535eb969660af"}, - {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:882fb1ffc7577e88c1194f4f1757e277dc484ba096a3b94844319873d14b0f2d"}, - {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9f2d93bff2ea52fa93245798cddb479766a18510ea9b93a4fb9755c79474889"}, - {file = "shapely-2.0.3-cp312-cp312-win32.whl", hash = "sha256:99abad1fd1303b35d991703432c9481e3242b7b3a393c186cfb02373bf604004"}, - {file = "shapely-2.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:6f555fe3304a1f40398977789bc4fe3c28a11173196df9ece1e15c5bc75a48db"}, - {file = "shapely-2.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a983cc418c1fa160b7d797cfef0e0c9f8c6d5871e83eae2c5793fce6a837fad9"}, - {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18bddb8c327f392189a8d5d6b9a858945722d0bb95ccbd6a077b8e8fc4c7890d"}, - {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:442f4dcf1eb58c5a4e3428d88e988ae153f97ab69a9f24e07bf4af8038536325"}, - {file = "shapely-2.0.3-cp37-cp37m-win32.whl", hash = "sha256:31a40b6e3ab00a4fd3a1d44efb2482278642572b8e0451abdc8e0634b787173e"}, - {file = "shapely-2.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:59b16976c2473fec85ce65cc9239bef97d4205ab3acead4e6cdcc72aee535679"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:705efbce1950a31a55b1daa9c6ae1c34f1296de71ca8427974ec2f27d57554e3"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:601c5c0058a6192df704cb889439f64994708563f57f99574798721e9777a44b"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f24ecbb90a45c962b3b60d8d9a387272ed50dc010bfe605f1d16dfc94772d8a1"}, - {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8c2a2989222c6062f7a0656e16276c01bb308bc7e5d999e54bf4e294ce62e76"}, - {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42bceb9bceb3710a774ce04908fda0f28b291323da2688f928b3f213373b5aee"}, - {file = "shapely-2.0.3-cp38-cp38-win32.whl", hash = "sha256:54d925c9a311e4d109ec25f6a54a8bd92cc03481a34ae1a6a92c1fe6729b7e01"}, - {file = "shapely-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:300d203b480a4589adefff4c4af0b13919cd6d760ba3cbb1e56275210f96f654"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:083d026e97b6c1f4a9bd2a9171c7692461092ed5375218170d91705550eecfd5"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:27b6e1910094d93e9627f2664121e0e35613262fc037051680a08270f6058daf"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:71b2de56a9e8c0e5920ae5ddb23b923490557ac50cb0b7fa752761bf4851acde"}, - {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d279e56bbb68d218d63f3efc80c819cedcceef0e64efbf058a1df89dc57201b"}, - {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88566d01a30f0453f7d038db46bc83ce125e38e47c5f6bfd4c9c287010e9bf74"}, - {file = "shapely-2.0.3-cp39-cp39-win32.whl", hash = "sha256:58afbba12c42c6ed44c4270bc0e22f3dadff5656d711b0ad335c315e02d04707"}, - {file = "shapely-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:5026b30433a70911979d390009261b8c4021ff87c7c3cbd825e62bb2ffa181bc"}, - {file = "shapely-2.0.3.tar.gz", hash = "sha256:4d65d0aa7910af71efa72fd6447e02a8e5dd44da81a983de9d736d6e6ccbe674"}, -] - -[package.dependencies] -numpy = ">=1.14,<2" + {file = "shapely-2.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6ca8cffbe84ddde8f52b297b53f8e0687bd31141abb2c373fd8a9f032df415d6"}, + {file = "shapely-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:baa14fc27771e180c06b499a0a7ba697c7988c7b2b6cba9a929a19a4d2762de3"}, + {file = "shapely-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:36480e32c434d168cdf2f5e9862c84aaf4d714a43a8465ae3ce8ff327f0affb7"}, + {file = "shapely-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ef753200cbffd4f652efb2c528c5474e5a14341a473994d90ad0606522a46a2"}, + {file = "shapely-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9a41ff4323fc9d6257759c26eb1cf3a61ebc7e611e024e6091f42977303fd3a"}, + {file = "shapely-2.0.2-cp310-cp310-win32.whl", hash = "sha256:72b5997272ae8c25f0fd5b3b967b3237e87fab7978b8d6cd5fa748770f0c5d68"}, + {file = "shapely-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:34eac2337cbd67650248761b140d2535855d21b969d76d76123317882d3a0c1a"}, + {file = "shapely-2.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5b0c052709c8a257c93b0d4943b0b7a3035f87e2d6a8ac9407b6a992d206422f"}, + {file = "shapely-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2d217e56ae067e87b4e1731d0dc62eebe887ced729ba5c2d4590e9e3e9fdbd88"}, + {file = "shapely-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94ac128ae2ab4edd0bffcd4e566411ea7bdc738aeaf92c32a8a836abad725f9f"}, + {file = "shapely-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa3ee28f5e63a130ec5af4dc3c4cb9c21c5788bb13c15e89190d163b14f9fb89"}, + {file = "shapely-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:737dba15011e5a9b54a8302f1748b62daa207c9bc06f820cd0ad32a041f1c6f2"}, + {file = "shapely-2.0.2-cp311-cp311-win32.whl", hash = "sha256:45ac6906cff0765455a7b49c1670af6e230c419507c13e2f75db638c8fc6f3bd"}, + {file = "shapely-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:dc9342fc82e374130db86a955c3c4525bfbf315a248af8277a913f30911bed9e"}, + {file = "shapely-2.0.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:06f193091a7c6112fc08dfd195a1e3846a64306f890b151fa8c63b3e3624202c"}, + {file = "shapely-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eebe544df5c018134f3c23b6515877f7e4cd72851f88a8d0c18464f414d141a2"}, + {file = "shapely-2.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7e92e7c255f89f5cdf777690313311f422aa8ada9a3205b187113274e0135cd8"}, + {file = "shapely-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be46d5509b9251dd9087768eaf35a71360de6afac82ce87c636990a0871aa18b"}, + {file = "shapely-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5533a925d8e211d07636ffc2fdd9a7f9f13d54686d00577eeb11d16f00be9c4"}, + {file = "shapely-2.0.2-cp312-cp312-win32.whl", hash = "sha256:084b023dae8ad3d5b98acee9d3bf098fdf688eb0bb9b1401e8b075f6a627b611"}, + {file = "shapely-2.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:ea84d1cdbcf31e619d672b53c4532f06253894185ee7acb8ceb78f5f33cbe033"}, + {file = "shapely-2.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ed1e99702125e7baccf401830a3b94d810d5c70b329b765fe93451fe14cf565b"}, + {file = "shapely-2.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7d897e6bdc6bc64f7f65155dbbb30e49acaabbd0d9266b9b4041f87d6e52b3a"}, + {file = "shapely-2.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0521d76d1e8af01e712db71da9096b484f081e539d4f4a8c97342e7971d5e1b4"}, + {file = "shapely-2.0.2-cp37-cp37m-win32.whl", hash = "sha256:5324be299d4c533ecfcfd43424dfd12f9428fd6f12cda38a4316da001d6ef0ea"}, + {file = "shapely-2.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:78128357a0cee573257a0c2c388d4b7bf13cb7dbe5b3fe5d26d45ebbe2a39e25"}, + {file = "shapely-2.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:87dc2be34ac3a3a4a319b963c507ac06682978a5e6c93d71917618b14f13066e"}, + {file = "shapely-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:42997ac806e4583dad51c80a32d38570fd9a3d4778f5e2c98f9090aa7db0fe91"}, + {file = "shapely-2.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ccfd5fa10a37e67dbafc601c1ddbcbbfef70d34c3f6b0efc866ddbdb55893a6c"}, + {file = "shapely-2.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7c95d3379ae3abb74058938a9fcbc478c6b2e28d20dace38f8b5c587dde90aa"}, + {file = "shapely-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a21353d28209fb0d8cc083e08ca53c52666e0d8a1f9bbe23b6063967d89ed24"}, + {file = "shapely-2.0.2-cp38-cp38-win32.whl", hash = "sha256:03e63a99dfe6bd3beb8d5f41ec2086585bb969991d603f9aeac335ad396a06d4"}, + {file = "shapely-2.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:c6fd29fbd9cd76350bd5cc14c49de394a31770aed02d74203e23b928f3d2f1aa"}, + {file = "shapely-2.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1f217d28ecb48e593beae20a0082a95bd9898d82d14b8fcb497edf6bff9a44d7"}, + {file = "shapely-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:394e5085b49334fd5b94fa89c086edfb39c3ecab7f669e8b2a4298b9d523b3a5"}, + {file = "shapely-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fd3ad17b64466a033848c26cb5b509625c87d07dcf39a1541461cacdb8f7e91c"}, + {file = "shapely-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d41a116fcad58048d7143ddb01285e1a8780df6dc1f56c3b1e1b7f12ed296651"}, + {file = "shapely-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dea9a0651333cf96ef5bb2035044e3ad6a54f87d90e50fe4c2636debf1b77abc"}, + {file = "shapely-2.0.2-cp39-cp39-win32.whl", hash = "sha256:b8eb0a92f7b8c74f9d8fdd1b40d395113f59bd8132ca1348ebcc1f5aece94b96"}, + {file = "shapely-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:794affd80ca0f2c536fc948a3afa90bd8fb61ebe37fe873483ae818e7f21def4"}, + {file = "shapely-2.0.2.tar.gz", hash = "sha256:1713cc04c171baffc5b259ba8531c58acc2a301707b7f021d88a15ed090649e7"}, +] + +[package.dependencies] +numpy = ">=1.14" [package.extras] docs = ["matplotlib", "numpydoc (==1.1.*)", "sphinx", "sphinx-book-theme", "sphinx-remove-toctrees"] @@ -7672,13 +7582,13 @@ files = [ [[package]] name = "sniffio" -version = "1.3.1" +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.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, + {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, + {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, ] [[package]] @@ -7705,7 +7615,7 @@ files = [ [[package]] name = "sqlalchemy" -version = "1.4.52" +version = "1.4.50" description = "Database Abstraction Library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" @@ -7742,7 +7652,7 @@ greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platfo [package.extras] aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] -aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2)"] @@ -7752,24 +7662,24 @@ mssql-pyodbc = ["pyodbc"] mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] mysql-connector = ["mysql-connector-python"] -oracle = ["cx_oracle (>=7)", "cx_oracle (>=7,<8)"] +oracle = ["cx-oracle (>=7)", "cx-oracle (>=7,<8)"] postgresql = ["psycopg2 (>=2.7)"] postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] postgresql-psycopg2binary = ["psycopg2-binary"] postgresql-psycopg2cffi = ["psycopg2cffi"] pymysql = ["pymysql", "pymysql (<1)"] -sqlcipher = ["sqlcipher3_binary"] +sqlcipher = ["sqlcipher3-binary"] [[package]] name = "sqlalchemy-bigquery" -version = "1.10.0" +version = "1.8.0" description = "SQLAlchemy dialect for BigQuery" optional = false -python-versions = ">=3.8, <3.13" +python-versions = ">=3.7, <3.12" files = [ - {file = "sqlalchemy-bigquery-1.10.0.tar.gz", hash = "sha256:f7537fa283687c31b6f8bf9d3c76d6a1fd5d1a1df8e814116a991b2339656c1e"}, - {file = "sqlalchemy_bigquery-1.10.0-py2.py3-none-any.whl", hash = "sha256:ea59c9625848c92469463956f93ea1179242f35e582bf1010dec794ab7042046"}, + {file = "sqlalchemy-bigquery-1.8.0.tar.gz", hash = "sha256:fdc58cc23415b9e251dc90a97052a4831894c15b1b54911909d746696eba6f38"}, + {file = "sqlalchemy_bigquery-1.8.0-py2.py3-none-any.whl", hash = "sha256:d755a9f820c373858cc799fd4b03d334fb1c372e21a6d224f82eb4f10db00124"}, ] [package.dependencies] @@ -7788,13 +7698,13 @@ tests = ["packaging", "pytz"] [[package]] name = "sqlalchemy-jsonfield" -version = "1.0.2" +version = "1.0.1.post0" description = "SQLALchemy JSONField implementation for storing dicts at SQL" optional = false python-versions = ">=3.7.0" files = [ - {file = "SQLAlchemy-JSONField-1.0.2.tar.gz", hash = "sha256:dab3abc9d75a1640e7f3d4875564a4199f665d27863da8d5a089e4eaca5e67f2"}, - {file = "SQLAlchemy_JSONField-1.0.2-py3-none-any.whl", hash = "sha256:b2945fa1e60b07d5764a7c73b18da427948b35dd4c07c0e94939001dc2dacf77"}, + {file = "SQLAlchemy-JSONField-1.0.1.post0.tar.gz", hash = "sha256:72a5e714fe0493d2660abd7484a9fd9f492f493a0856288dd22a5decb29f5dc4"}, + {file = "SQLAlchemy_JSONField-1.0.1.post0-py3-none-any.whl", hash = "sha256:d6f1e5ee329a3c0d9d164e40d81a2143ac8332e09988fbbaff84179dac5503d4"}, ] [package.dependencies] @@ -7912,13 +7822,13 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] [[package]] name = "termcolor" -version = "2.4.0" +version = "2.3.0" description = "ANSI color formatting for output in terminal" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "termcolor-2.4.0-py3-none-any.whl", hash = "sha256:9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63"}, - {file = "termcolor-2.4.0.tar.gz", hash = "sha256:aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a"}, + {file = "termcolor-2.3.0-py3-none-any.whl", hash = "sha256:3afb05607b89aed0ffe25202399ee0867ad4d3cb4180d98aaf8eefa6a5f7d475"}, + {file = "termcolor-2.3.0.tar.gz", hash = "sha256:b5b08f68937f138fe92f6c089b99f1e2da0ae56c52b78bf7075fd95420fd9a5a"}, ] [package.extras] @@ -7937,13 +7847,13 @@ files = [ [[package]] name = "threadpoolctl" -version = "3.3.0" +version = "3.2.0" description = "threadpoolctl" optional = false python-versions = ">=3.8" files = [ - {file = "threadpoolctl-3.3.0-py3-none-any.whl", hash = "sha256:6155be1f4a39f31a18ea70f94a77e0ccd57dced08122ea61109e7da89883781e"}, - {file = "threadpoolctl-3.3.0.tar.gz", hash = "sha256:5dac632b4fa2d43f42130267929af3ba01399ef4bd1882918e92dbc30365d30c"}, + {file = "threadpoolctl-3.2.0-py3-none-any.whl", hash = "sha256:2b7818516e423bdaebb97c723f86a7c6b0a83d3f3b0970328d66f4d9104dc032"}, + {file = "threadpoolctl-3.2.0.tar.gz", hash = "sha256:c96a0ba3bdddeaca37dc4cc7344aafad41cdb8c313f74fdfe387a867bba93355"}, ] [[package]] @@ -7970,49 +7880,49 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.4" +version = "0.12.3" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, - {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, + {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"}, + {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"}, ] [[package]] name = "tornado" -version = "6.4" +version = "6.3.3" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false python-versions = ">= 3.8" files = [ - {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, - {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, - {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, - {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, - {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, + {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:502fba735c84450974fec147340016ad928d29f1e91f49be168c0a4c18181e1d"}, + {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:805d507b1f588320c26f7f097108eb4023bbaa984d63176d1652e184ba24270a"}, + {file = "tornado-6.3.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd19ca6c16882e4d37368e0152f99c099bad93e0950ce55e71daed74045908f"}, + {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ac51f42808cca9b3613f51ffe2a965c8525cb1b00b7b2d56828b8045354f76a"}, + {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71a8db65160a3c55d61839b7302a9a400074c9c753040455494e2af74e2501f2"}, + {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ceb917a50cd35882b57600709dd5421a418c29ddc852da8bcdab1f0db33406b0"}, + {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:7d01abc57ea0dbb51ddfed477dfe22719d376119844e33c661d873bf9c0e4a16"}, + {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9dc4444c0defcd3929d5c1eb5706cbe1b116e762ff3e0deca8b715d14bf6ec17"}, + {file = "tornado-6.3.3-cp38-abi3-win32.whl", hash = "sha256:65ceca9500383fbdf33a98c0087cb975b2ef3bfb874cb35b8de8740cf7f41bd3"}, + {file = "tornado-6.3.3-cp38-abi3-win_amd64.whl", hash = "sha256:22d3c2fa10b5793da13c807e6fc38ff49a4f6e1e3868b0a6f4164768bb8e20f5"}, + {file = "tornado-6.3.3.tar.gz", hash = "sha256:e7d8db41c0181c80d76c982aacc442c0783a2c54d6400fe028954201a2e032fe"}, ] [[package]] name = "traitlets" -version = "5.14.1" +version = "5.13.0" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" files = [ - {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"}, - {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"}, + {file = "traitlets-5.13.0-py3-none-any.whl", hash = "sha256:baf991e61542da48fe8aef8b779a9ea0aa38d8a54166ee250d5af5ecf4486619"}, + {file = "traitlets-5.13.0.tar.gz", hash = "sha256:9b232b9430c8f57288c1024b34a8f0251ddcc47268927367a0dd3eeaca40deb5"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.6.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "typer" @@ -8048,24 +7958,24 @@ files = [ [[package]] name = "tzdata" -version = "2024.1" +version = "2023.3" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, + {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, ] [[package]] name = "uc-micro-py" -version = "1.0.3" +version = "1.0.2" description = "Micro subset of unicode data files for linkify-it-py projects." optional = false python-versions = ">=3.7" files = [ - {file = "uc-micro-py-1.0.3.tar.gz", hash = "sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a"}, - {file = "uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5"}, + {file = "uc-micro-py-1.0.2.tar.gz", hash = "sha256:30ae2ac9c49f39ac6dce743bd187fcd2b574b16ca095fa74cd9396795c954c54"}, + {file = "uc_micro_py-1.0.2-py3-none-any.whl", hash = "sha256:8c9110c309db9d9e87302e2f4ad2c3152770930d88ab385cd544e7a7e75f3de0"}, ] [package.extras] @@ -8173,19 +8083,19 @@ test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)" [[package]] name = "virtualenv" -version = "20.25.1" +version = "20.24.6" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"}, - {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"}, + {file = "virtualenv-20.24.6-py3-none-any.whl", hash = "sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381"}, + {file = "virtualenv-20.24.6.tar.gz", hash = "sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af"}, ] [package.dependencies] distlib = ">=0.3.7,<1" filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<5" +platformdirs = ">=3.9.1,<4" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] @@ -8193,13 +8103,13 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "wandb" -version = "0.16.4" +version = "0.16.2" description = "A CLI and library for interacting with the Weights & Biases API." optional = false python-versions = ">=3.7" files = [ - {file = "wandb-0.16.4-py3-none-any.whl", hash = "sha256:bb9eb5aa2c2c85e11c76040c4271366f54d4975167aa6320ba86c3f2d97fe5fa"}, - {file = "wandb-0.16.4.tar.gz", hash = "sha256:8752c67d1347a4c29777e64dc1e1a742a66c5ecde03aebadf2b0d62183fa307c"}, + {file = "wandb-0.16.2-py3-none-any.whl", hash = "sha256:6b119cf3c01f35e7276b62d052128e5320621d182c9eb5796a12cf62a9b3134f"}, + {file = "wandb-0.16.2.tar.gz", hash = "sha256:e40cd79ea6272fe4762a80b9f47b172e141daeb3b56eb9d1e192ebd10752e64e"}, ] [package.dependencies] @@ -8220,51 +8130,47 @@ async = ["httpx (>=0.23.0)"] aws = ["boto3"] azure = ["azure-identity", "azure-storage-blob"] gcp = ["google-cloud-storage"] -importers = ["filelock", "mlflow", "polars", "rich", "tenacity"] kubeflow = ["google-cloud-storage", "kubernetes", "minio", "sh"] -launch = ["PyYAML (>=6.0.0)", "awscli", "azure-containerregistry", "azure-identity", "azure-storage-blob", "boto3", "botocore", "chardet", "google-auth", "google-cloud-aiplatform", "google-cloud-artifact-registry", "google-cloud-compute", "google-cloud-storage", "iso8601", "kubernetes", "kubernetes-asyncio", "nbconvert", "nbformat", "optuna", "pydantic", "tomli", "typing-extensions"] +launch = ["PyYAML (>=6.0.0)", "awscli", "azure-containerregistry", "azure-identity", "azure-storage-blob", "boto3", "botocore", "chardet", "google-auth", "google-cloud-aiplatform", "google-cloud-artifact-registry", "google-cloud-compute", "google-cloud-storage", "iso8601", "kubernetes", "kubernetes-asyncio", "nbconvert", "nbformat", "optuna", "pydantic", "typing-extensions"] media = ["bokeh", "moviepy", "numpy", "pillow", "plotly (>=5.18.0)", "rdkit-pypi", "soundfile"] models = ["cloudpickle"] perf = ["orjson"] -reports = ["pydantic (>=2.0.0)"] sweeps = ["sweeps (>=0.2.0)"] [[package]] name = "watchdog" -version = "4.0.0" +version = "3.0.0" description = "Filesystem events monitoring" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b"}, - {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b"}, - {file = "watchdog-4.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6c47bdd680009b11c9ac382163e05ca43baf4127954c5f6d0250e7d772d2b80c"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8350d4055505412a426b6ad8c521bc7d367d1637a762c70fdd93a3a0d595990b"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c17d98799f32e3f55f181f19dd2021d762eb38fdd381b4a748b9f5a36738e935"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4986db5e8880b0e6b7cd52ba36255d4793bf5cdc95bd6264806c233173b1ec0b"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:11e12fafb13372e18ca1bbf12d50f593e7280646687463dd47730fd4f4d5d257"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5369136a6474678e02426bd984466343924d1df8e2fd94a9b443cb7e3aa20d19"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76ad8484379695f3fe46228962017a7e1337e9acadafed67eb20aabb175df98b"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:45cc09cc4c3b43fb10b59ef4d07318d9a3ecdbff03abd2e36e77b6dd9f9a5c85"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eed82cdf79cd7f0232e2fdc1ad05b06a5e102a43e331f7d041e5f0e0a34a51c4"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba30a896166f0fee83183cec913298151b73164160d965af2e93a20bbd2ab605"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d18d7f18a47de6863cd480734613502904611730f8def45fc52a5d97503e5101"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2895bf0518361a9728773083908801a376743bcc37dfa252b801af8fd281b1ca"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87e9df830022488e235dd601478c15ad73a0389628588ba0b028cb74eb72fed8"}, - {file = "watchdog-4.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6e949a8a94186bced05b6508faa61b7adacc911115664ccb1923b9ad1f1ccf7b"}, - {file = "watchdog-4.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6a4db54edea37d1058b08947c789a2354ee02972ed5d1e0dca9b0b820f4c7f92"}, - {file = "watchdog-4.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d31481ccf4694a8416b681544c23bd271f5a123162ab603c7d7d2dd7dd901a07"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269"}, - {file = "watchdog-4.0.0-py3-none-win32.whl", hash = "sha256:8f9a542c979df62098ae9c58b19e03ad3df1c9d8c6895d96c0d51da17b243b1c"}, - {file = "watchdog-4.0.0-py3-none-win_amd64.whl", hash = "sha256:f970663fa4f7e80401a7b0cbeec00fa801bf0287d93d48368fc3e6fa32716245"}, - {file = "watchdog-4.0.0-py3-none-win_ia64.whl", hash = "sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7"}, - {file = "watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7"}, + {file = "watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8"}, + {file = "watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100"}, + {file = "watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346"}, + {file = "watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"}, + {file = "watchdog-3.0.0-py3-none-win32.whl", hash = "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f"}, + {file = "watchdog-3.0.0-py3-none-win_amd64.whl", hash = "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c"}, + {file = "watchdog-3.0.0-py3-none-win_ia64.whl", hash = "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759"}, + {file = "watchdog-3.0.0.tar.gz", hash = "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"}, ] [package.extras] @@ -8272,13 +8178,13 @@ watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "wcmatch" -version = "8.5.1" +version = "8.5" description = "Wildcard/glob file name matcher." optional = false python-versions = ">=3.8" files = [ - {file = "wcmatch-8.5.1-py3-none-any.whl", hash = "sha256:24c19cedc92bc9c9e27f39db4e1824d72f95bd2cea32b254a47a45b1a1b227ed"}, - {file = "wcmatch-8.5.1.tar.gz", hash = "sha256:c0088c7f6426cf6bf27e530e2b7b734031905f7e490475fd83c7c5008ab581b3"}, + {file = "wcmatch-8.5-py3-none-any.whl", hash = "sha256:14554e409b142edeefab901dc68ad570b30a72a8ab9a79106c5d5e9a6d241bd5"}, + {file = "wcmatch-8.5.tar.gz", hash = "sha256:86c17572d0f75cbf3bcb1a18f3bf2f9e72b39a9c08c9b4a74e991e1882a8efb3"}, ] [package.dependencies] @@ -8286,24 +8192,24 @@ bracex = ">=2.1.1" [[package]] name = "wcwidth" -version = "0.2.13" +version = "0.2.9" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, + {file = "wcwidth-0.2.9-py2.py3-none-any.whl", hash = "sha256:9a929bd8380f6cd9571a968a9c8f4353ca58d7cd812a4822bba831f8d685b223"}, + {file = "wcwidth-0.2.9.tar.gz", hash = "sha256:a675d1a4a2d24ef67096a04b85b02deeecd8e226f57b5e3a72dbb9ed99d27da8"}, ] [[package]] name = "werkzeug" -version = "2.3.8" +version = "2.3.7" description = "The comprehensive WSGI web application library." optional = false python-versions = ">=3.8" files = [ - {file = "werkzeug-2.3.8-py3-none-any.whl", hash = "sha256:bba1f19f8ec89d4d607a3bd62f1904bd2e609472d93cd85e9d4e178f472c3748"}, - {file = "werkzeug-2.3.8.tar.gz", hash = "sha256:554b257c74bbeb7a0d254160a4f8ffe185243f52a52035060b761ca62d977f03"}, + {file = "werkzeug-2.3.7-py3-none-any.whl", hash = "sha256:effc12dba7f3bd72e605ce49807bbe692bd729c3bb122a3b91747a6ae77df528"}, + {file = "werkzeug-2.3.7.tar.gz", hash = "sha256:2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8"}, ] [package.dependencies] @@ -8314,96 +8220,101 @@ watchdog = ["watchdog (>=2.3)"] [[package]] name = "wrapt" -version = "1.16.0" +version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." optional = false -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"}, +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"}, ] [[package]] name = "wtforms" -version = "3.1.2" +version = "3.0.1" description = "Form validation and rendering for Python web development." optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "wtforms-3.1.2-py3-none-any.whl", hash = "sha256:bf831c042829c8cdbad74c27575098d541d039b1faa74c771545ecac916f2c07"}, - {file = "wtforms-3.1.2.tar.gz", hash = "sha256:f8d76180d7239c94c6322f7990ae1216dae3659b7aa1cee94b6318bdffb474b9"}, + {file = "WTForms-3.0.1-py3-none-any.whl", hash = "sha256:837f2f0e0ca79481b92884962b914eba4e72b7a2daaf1f939c890ed0124b834b"}, + {file = "WTForms-3.0.1.tar.gz", hash = "sha256:6b351bbb12dd58af57ffef05bc78425d08d1914e0fd68ee14143b7ade023c5bc"}, ] [package.dependencies] -markupsafe = "*" +MarkupSafe = "*" [package.extras] email = ["email-validator"] @@ -8466,101 +8377,85 @@ dev = ["doc8", "flake8", "flake8-import-order", "rstcheck[sphinx]", "sphinx"] [[package]] name = "yarl" -version = "1.9.4" +version = "1.9.2" description = "Yet another URL library" optional = false python-versions = ">=3.7" files = [ - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, - {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, - {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, - {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, - {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, - {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, - {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, - {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, - {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, - {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, - {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, - {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, - {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, - {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, - {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, - {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, - {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, - {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, - {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, - {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, - {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, - {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, - {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, - {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, - {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, - {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, - {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, - {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, - {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, - {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, - {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, - {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, - {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, + {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82"}, + {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8"}, + {file = "yarl-1.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9"}, + {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560"}, + {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac"}, + {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea"}, + {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608"}, + {file = "yarl-1.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5"}, + {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0"}, + {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4"}, + {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095"}, + {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3"}, + {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528"}, + {file = "yarl-1.9.2-cp310-cp310-win32.whl", hash = "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3"}, + {file = "yarl-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde"}, + {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6"}, + {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb"}, + {file = "yarl-1.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0"}, + {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2"}, + {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191"}, + {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d"}, + {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7"}, + {file = "yarl-1.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6"}, + {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8"}, + {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9"}, + {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be"}, + {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7"}, + {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a"}, + {file = "yarl-1.9.2-cp311-cp311-win32.whl", hash = "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8"}, + {file = "yarl-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051"}, + {file = "yarl-1.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74"}, + {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367"}, + {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef"}, + {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3"}, + {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938"}, + {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc"}, + {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33"}, + {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45"}, + {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185"}, + {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04"}, + {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582"}, + {file = "yarl-1.9.2-cp37-cp37m-win32.whl", hash = "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b"}, + {file = "yarl-1.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368"}, + {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac"}, + {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4"}, + {file = "yarl-1.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574"}, + {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb"}, + {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59"}, + {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e"}, + {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417"}, + {file = "yarl-1.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78"}, + {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333"}, + {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c"}, + {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5"}, + {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc"}, + {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b"}, + {file = "yarl-1.9.2-cp38-cp38-win32.whl", hash = "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7"}, + {file = "yarl-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72"}, + {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9"}, + {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8"}, + {file = "yarl-1.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7"}, + {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716"}, + {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a"}, + {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3"}, + {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955"}, + {file = "yarl-1.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1"}, + {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4"}, + {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6"}, + {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf"}, + {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3"}, + {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80"}, + {file = "yarl-1.9.2-cp39-cp39-win32.whl", hash = "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623"}, + {file = "yarl-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18"}, + {file = "yarl-1.9.2.tar.gz", hash = "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"}, ] [package.dependencies] From a7c919a52f7bbccfbcf4a98351f23a15fa8a56fc Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Fri, 8 Mar 2024 15:45:33 +0000 Subject: [PATCH 19/86] fix: updating gwas catalog test files following schema changes --- tests/gentropy/conftest.py | 6 +++--- .../data_samples/gwas_catalog_ancestries.tsv | 20 +++++++++++++++++++ ...g_ancestries_sample_v1.0.3-r2022-11-29.tsv | 20 ------------------- ...1-29.tsv => gwas_catalog_associations.tsv} | 0 .../data_samples/gwas_catalog_studies.tsv | 20 +++++++++++++++++++ ...was_catalog_studies_sample-r2022-11-29.tsv | 20 ------------------- 6 files changed, 43 insertions(+), 43 deletions(-) create mode 100644 tests/gentropy/data_samples/gwas_catalog_ancestries.tsv delete mode 100644 tests/gentropy/data_samples/gwas_catalog_ancestries_sample_v1.0.3-r2022-11-29.tsv rename tests/gentropy/data_samples/{gwas_catalog_associations_sample_e107_r2022-11-29.tsv => gwas_catalog_associations.tsv} (100%) create mode 100644 tests/gentropy/data_samples/gwas_catalog_studies.tsv delete mode 100644 tests/gentropy/data_samples/gwas_catalog_studies_sample-r2022-11-29.tsv diff --git a/tests/gentropy/conftest.py b/tests/gentropy/conftest.py index 13409ac16..78bd567da 100644 --- a/tests/gentropy/conftest.py +++ b/tests/gentropy/conftest.py @@ -414,7 +414,7 @@ def mock_ld_index(spark: SparkSession) -> LDIndex: def sample_gwas_catalog_studies(spark: SparkSession) -> DataFrame: """Sample GWAS Catalog studies.""" return spark.read.csv( - "tests/gentropy/data_samples/gwas_catalog_studies_sample-r2022-11-29.tsv", + "tests/gentropy/data_samples/gwas_catalog_studies.tsv", sep="\t", header=True, ) @@ -424,7 +424,7 @@ def sample_gwas_catalog_studies(spark: SparkSession) -> DataFrame: def sample_gwas_catalog_ancestries_lut(spark: SparkSession) -> DataFrame: """Sample GWAS ancestries sample data.""" return spark.read.csv( - "tests/gentropy/data_samples/gwas_catalog_ancestries_sample_v1.0.3-r2022-11-29.tsv", + "tests/gentropy/data_samples/gwas_catalog_ancestries.tsv", sep="\t", header=True, ) @@ -444,7 +444,7 @@ def sample_gwas_catalog_harmonised_sumstats_list(spark: SparkSession) -> DataFra def sample_gwas_catalog_associations(spark: SparkSession) -> DataFrame: """Sample GWAS raw associations sample data.""" return spark.read.csv( - "tests/gentropy/data_samples/gwas_catalog_associations_sample_e107_r2022-11-29.tsv", + "tests/gentropy/data_samples/gwas_catalog_associations.tsv", sep="\t", header=True, ) diff --git a/tests/gentropy/data_samples/gwas_catalog_ancestries.tsv b/tests/gentropy/data_samples/gwas_catalog_ancestries.tsv new file mode 100644 index 000000000..48423eeee --- /dev/null +++ b/tests/gentropy/data_samples/gwas_catalog_ancestries.tsv @@ -0,0 +1,20 @@ +STUDY ACCESSION PUBMED ID FIRST AUTHOR DATE INITIAL SAMPLE DESCRIPTION REPLICATION SAMPLE DESCRIPTION STAGE NUMBER OF INDIVIDUALS BROAD ANCESTRAL CATEGORY COUNTRY OF ORIGIN COUNTRY OF RECRUITMENT ADDITIONAL ANCESTRY DESCRIPTION ANCESTRY DESCRIPTOR FOUNDER/GENETICALLY ISOLATED POPULATION NUMBER OF CASES NUMBER OF CONTROLS SAMPLE DESCRIPTION +GCST004795 28763065 Xia K 2017-08-01 295 European, African American, Asian, Native American and other admixed ancestry infants, 17 European, African American, Asian, Native American and other admixed ancestry sibling pairs, 116 European, African American, Asian, Native American and other admixed ancestry twin pairs. NA initial 205 Asian unspecified, African American or Afro-Caribbean, Native American, Other admixed ancestry NR U.S. +GCST004795 28763065 Xia K 2017-08-01 295 European, African American, Asian, Native American and other admixed ancestry infants, 17 European, African American, Asian, Native American and other admixed ancestry sibling pairs, 116 European, African American, Asian, Native American and other admixed ancestry twin pairs. NA initial 356 European NR U.S. +GCST004796 28763065 Xia K 2017-08-01 295 European, African American, Asian, Native American and other admixed ancestry infants, 17 European, African American, Asian, Native American and other admixed ancestry sibling pairs, 116 European, African American, Asian, Native American and other admixed ancestry twin pairs. NA initial 356 European NR U.S. +GCST004796 28763065 Xia K 2017-08-01 295 European, African American, Asian, Native American and other admixed ancestry infants, 17 European, African American, Asian, Native American and other admixed ancestry sibling pairs, 116 European, African American, Asian, Native American and other admixed ancestry twin pairs. NA initial 205 Asian unspecified, African American or Afro-Caribbean, Native American, Other admixed ancestry NR U.S. +GCST004797 28763065 Xia K 2017-08-01 295 European, African American, Asian, Native American and other admixed ancestry infants, 17 European, African American, Asian, Native American and other admixed ancestry sibling pairs, 116 European, African American, Asian, Native American and other admixed ancestry twin pairs. NA initial 205 Asian unspecified, African American or Afro-Caribbean, Native American, Other admixed ancestry NR U.S. +GCST004797 28763065 Xia K 2017-08-01 295 European, African American, Asian, Native American and other admixed ancestry infants, 17 European, African American, Asian, Native American and other admixed ancestry sibling pairs, 116 European, African American, Asian, Native American and other admixed ancestry twin pairs. NA initial 356 European NR U.S. +GCST004794 28763065 Xia K 2017-08-01 295 European, African American, Asian, Native American and other admixed ancestry infants, 17 European, African American, Asian, Native American and other admixed ancestry sibling pairs, 116 European, African American, Asian, Native American and other admixed ancestry twin pairs. NA initial 356 European NR U.S. +GCST004794 28763065 Xia K 2017-08-01 295 European, African American, Asian, Native American and other admixed ancestry infants, 17 European, African American, Asian, Native American and other admixed ancestry sibling pairs, 116 European, African American, Asian, Native American and other admixed ancestry twin pairs. NA initial 205 Asian unspecified, African American or Afro-Caribbean, Native American, Other admixed ancestry NR U.S. +GCST005522 23459209 Faraco J 2013-01-01 1,886 European ancestry cases, 10,421 European ancestry controls NA initial 12307 European NR Canada, U.S., Australia, Austria, France, Germany, Netherlands, Switzerland, Argentina, Israel, Turkey, Czech Republic, Poland, Slovakia, Denmark, Finland, Norway, U.K., Italy, Portugal, Spain +GCST004692 27455348 van Rheenen W 2016-07-25 12,577 European ancestry cases, 23,475 European ancestry controls 2,579 European ancestry cases, 2,767 European ancestry controls initial 36052 European NR U.S., Belgium, France, Germany, Netherlands, Switzerland, Finland, Republic of Ireland, Sweden, U.K., Italy, Portugal, Spain +GCST004692 27455348 van Rheenen W 2016-07-25 12,577 European ancestry cases, 23,475 European ancestry controls 2,579 European ancestry cases, 2,767 European ancestry controls replication 5346 European NR Australia, Belgium, France, Germany, Netherlands, Turkey, Republic of Ireland, Italy +GCST005134 28800628 Salem JE 2017-08-11 448 European ancestry individuals, 47 North African ancestry individuals 431 European ancestry individuals, 64 North African ancestry individuals replication 64 Greater Middle Eastern (Middle Eastern, North African or Persian) NR France +GCST005134 28800628 Salem JE 2017-08-11 448 European ancestry individuals, 47 North African ancestry individuals 431 European ancestry individuals, 64 North African ancestry individuals replication 431 European NR France +GCST005134 28800628 Salem JE 2017-08-11 448 European ancestry individuals, 47 North African ancestry individuals 431 European ancestry individuals, 64 North African ancestry individuals initial 448 European NR France +GCST005134 28800628 Salem JE 2017-08-11 448 European ancestry individuals, 47 North African ancestry individuals 431 European ancestry individuals, 64 North African ancestry individuals initial 47 Greater Middle Eastern (Middle Eastern, North African or Persian) NR France +GCST005135 28800628 Salem JE 2017-08-11 448 European ancestry individuals, 47 North African ancestry individuals 431 European ancestry individuals, 64 North African ancestry individuals initial 448 European NR France +GCST005135 28800628 Salem JE 2017-08-11 448 European ancestry individuals, 47 North African ancestry individuals 431 European ancestry individuals, 64 North African ancestry individuals initial 47 Greater Middle Eastern (Middle Eastern, North African or Persian) NR France +GCST005135 28800628 Salem JE 2017-08-11 448 European ancestry individuals, 47 North African ancestry individuals 431 European ancestry individuals, 64 North African ancestry individuals replication 431 European NR France +GCST005135 28800628 Salem JE 2017-08-11 448 European ancestry individuals, 47 North African ancestry individuals 431 European ancestry individuals, 64 North African ancestry individuals replication 64 Greater Middle Eastern (Middle Eastern, North African or Persian) NR France diff --git a/tests/gentropy/data_samples/gwas_catalog_ancestries_sample_v1.0.3-r2022-11-29.tsv b/tests/gentropy/data_samples/gwas_catalog_ancestries_sample_v1.0.3-r2022-11-29.tsv deleted file mode 100644 index 92d87d92b..000000000 --- a/tests/gentropy/data_samples/gwas_catalog_ancestries_sample_v1.0.3-r2022-11-29.tsv +++ /dev/null @@ -1,20 +0,0 @@ -STUDY ACCESSION PUBMED ID FIRST AUTHOR DATE INITIAL SAMPLE DESCRIPTION REPLICATION SAMPLE DESCRIPTION STAGE NUMBER OF INDIVIDUALS BROAD ANCESTRAL CATEGORY COUNTRY OF ORIGIN COUNTRY OF RECRUITMENT ADDITIONAL ANCESTRY DESCRIPTION ANCESTRY DESCRIPTOR FOUNDER/GENETICALLY ISOLATED POPULATION NUMBER OF CASES NUMBER OF CONTROLS SAMPLE DESCRIPTION COHORT(S) COHORT-SPECIFIC REFERENCE -GCST008644 26546613 Gutierrez-Achury J 2016-01-01 371 South Asian ancestry celiac disease cases, 3,138 European ancestry celiac disease cases, 4,418 European ancestry rheumatoid arthritis cases, 509 South Asian ancestry celiac disease controls, 2,473 European ancestry celiac disease controls, 3,300 European ancestry rheumatoid arthritis controls, 8,872 celiac disease cases, 9,401 rheumatoid arthritis cases, 4,845 celiac disease controls, 9,627 rheumatoid arthritis controls NA initial 32475 NR NR U.S., Netherlands, U.K. -GCST008644 26546613 Gutierrez-Achury J 2016-01-01 371 South Asian ancestry celiac disease cases, 3,138 European ancestry celiac disease cases, 4,418 European ancestry rheumatoid arthritis cases, 509 South Asian ancestry celiac disease controls, 2,473 European ancestry celiac disease controls, 3,300 European ancestry rheumatoid arthritis controls, 8,872 celiac disease cases, 9,401 rheumatoid arthritis cases, 4,845 celiac disease controls, 9,627 rheumatoid arthritis controls NA initial 13329 European NR Sweden, Poland, Italy, Spain -GCST008644 26546613 Gutierrez-Achury J 2016-01-01 371 South Asian ancestry celiac disease cases, 3,138 European ancestry celiac disease cases, 4,418 European ancestry rheumatoid arthritis cases, 509 South Asian ancestry celiac disease controls, 2,473 European ancestry celiac disease controls, 3,300 European ancestry rheumatoid arthritis controls, 8,872 celiac disease cases, 9,401 rheumatoid arthritis cases, 4,845 celiac disease controls, 9,627 rheumatoid arthritis controls NA initial 880 South Asian NR India -GCST004026 27911795 Schumann G 2016-11-28 up to 70,460 European ancestry drinker individuals up to 35,438 European ancestry drinker individuals replication 35438 European NR Finland, Sweden, Italy, Netherlands, U.K., Austria, France, Republic of Ireland -GCST004026 27911795 Schumann G 2016-11-28 up to 70,460 European ancestry drinker individuals up to 35,438 European ancestry drinker individuals initial 70460 European NR Finland, U.S., Australia, Iceland, Netherlands, Germany, U.K., Switzerland, Estonia, NR -GCST004027 27911795 Schumann G 2016-11-28 up to 74,711 European ancestry heavy and light/non-drinker individuals up to 31,021 European ancestry heavy and light/non-drinker individuals initial 74711 European NR Finland, U.S., Australia, Iceland, Netherlands, Germany, U.K., Switzerland, Estonia, NR, France -GCST004027 27911795 Schumann G 2016-11-28 up to 74,711 European ancestry heavy and light/non-drinker individuals up to 31,021 European ancestry heavy and light/non-drinker individuals replication 31021 European NR Finland, U.S., Italy, Netherlands, U.K., Austria, Republic of Ireland -GCST004281 28235828 Traglia M 2017-04-03 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA initial 23 South Asian NR U.S. -GCST004281 28235828 Traglia M 2017-04-03 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA initial 329 Hispanic or Latin American NR U.S. -GCST004281 28235828 Traglia M 2017-04-03 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA initial 21 African American or Afro-Caribbean NR U.S. -GCST004281 28235828 Traglia M 2017-04-03 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA initial 273 European NR U.S. -GCST004281 28235828 Traglia M 2017-04-03 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA initial 22 Other NR U.S. -GCST004281 28235828 Traglia M 2017-04-03 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA initial 122 Asian unspecified NR U.S. -GCST004284 28235828 Traglia M 2017-04-03 764 fetuses NA initial 764 European, South Asian, Asian unspecified, African American or Afro-Caribbean, Hispanic or Latin American, Other NR U.S. -GCST004285 28235828 Traglia M 2017-04-03 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA initial 329 Hispanic or Latin American NR U.S. -GCST004285 28235828 Traglia M 2017-04-03 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA initial 273 European NR U.S. -GCST004285 28235828 Traglia M 2017-04-03 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA initial 23 South Asian NR U.S. -GCST004285 28235828 Traglia M 2017-04-03 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA initial 21 African American or Afro-Caribbean NR U.S. -GCST004285 28235828 Traglia M 2017-04-03 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA initial 22 Other NR U.S. diff --git a/tests/gentropy/data_samples/gwas_catalog_associations_sample_e107_r2022-11-29.tsv b/tests/gentropy/data_samples/gwas_catalog_associations.tsv similarity index 100% rename from tests/gentropy/data_samples/gwas_catalog_associations_sample_e107_r2022-11-29.tsv rename to tests/gentropy/data_samples/gwas_catalog_associations.tsv diff --git a/tests/gentropy/data_samples/gwas_catalog_studies.tsv b/tests/gentropy/data_samples/gwas_catalog_studies.tsv new file mode 100644 index 000000000..aca9ed666 --- /dev/null +++ b/tests/gentropy/data_samples/gwas_catalog_studies.tsv @@ -0,0 +1,20 @@ +DATE ADDED TO CATALOG PUBMED ID FIRST AUTHOR DATE JOURNAL LINK STUDY DISEASE/TRAIT INITIAL SAMPLE SIZE REPLICATION SAMPLE SIZE PLATFORM [SNPS PASSING QC] ASSOCIATION COUNT MAPPED_TRAIT MAPPED_TRAIT_URI STUDY ACCESSION GENOTYPING TECHNOLOGY SUBMISSION DATE STATISTICAL MODEL BACKGROUND TRAIT MAPPED BACKGROUND TRAIT MAPPED BACKGROUND TRAIT URI COHORT FULL SUMMARY STATISTICS SUMMARY STATS LOCATION +2017-09-11 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Insomnia complaints 12,863 European ancestry male cases, 19,521 European ancestry female cases, 40,776 European ancestry male controls, 39,846 European ancestry female controls 1,983 Icelandic ancestry male cases, 1,791 Icelandic ancestry female cases, 2,064 Icelandic ancestry male controls, 1,727 Icelandic ancestry female controls Affymetrix [at least 12428592] (imputed) 2 insomnia http://www.ebi.ac.uk/efo/EFO_0004698 GCST004695 Genome-wide genotyping array yes http://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/GCST004001-GCST005000/GCST004695 +2017-09-11 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Sleep duration 112,411 European ancestry male individuals NA Affymetrix [at least 12428592] (imputed) 3 sleep duration http://www.ebi.ac.uk/efo/EFO_0005271 GCST004694 Genome-wide genotyping array no NA +2017-09-11 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Insomnia complaints (sex interaction) 12,863 European ancestry male cases, 19,521 European ancestry female cases, 40,776 European ancestry male controls, 39,846 European ancestry female controls NA Affymetrix [at least 12428592] (imputed) 0 insomnia http://www.ebi.ac.uk/efo/EFO_0004698 GCST004700 Genome-wide genotyping array no NA +2017-09-11 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Insomnia complaints (continuous) 12,863 European ancestry male cases, 19,521 European ancestry female cases, 40,776 European ancestry male controls, 39,846 European ancestry female controls NA Affymetrix [at least 12428592] (imputed) 1 insomnia http://www.ebi.ac.uk/efo/EFO_0004698 GCST004701 Genome-wide genotyping array no NA +2017-09-11 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Insomnia complaints (dichotomous) 32,384 European ancestry cases, 27,128 European ancestry controls NA Affymetrix [at least 12428592] (imputed) 1 insomnia http://www.ebi.ac.uk/efo/EFO_0004698 GCST004702 Genome-wide genotyping array no NA +2017-09-11 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Chronotype 101,185 European ancestry individuals NA Affymetrix [at least 12428592] (imputed) 9 circadian rhythm http://www.ebi.ac.uk/efo/EFO_0004354 GCST004696 Genome-wide genotyping array no NA +2017-09-11 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Ease of getting up in the morning 112,866 European ancestry individuals NA Affymetrix [at least 12428592] (imputed) 5 chronotype measurement http://www.ebi.ac.uk/efo/EFO_0008328 GCST004697 Genome-wide genotyping array no NA +2017-09-11 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Daytime nap 113,054 European ancestry cases and controls NA Affymetrix [at least 12428592] (imputed) 4 daytime rest measurement http://www.ebi.ac.uk/efo/EFO_0007828 GCST004693 Genome-wide genotyping array no NA +2017-09-11 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Snoring 105,377 European ancestry cases and controls NA Affymetrix [at least 12428592] (imputed) 1 snoring measurement http://www.ebi.ac.uk/efo/EFO_0008341 GCST004698 Genome-wide genotyping array no NA +2017-09-11 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Daytime sleepiness 112,717 European ancestry cases and controls NA Affymetrix [at least 12428592] (imputed) 6 excessive daytime sleepiness measurement http://www.ebi.ac.uk/efo/EFO_0007875 GCST004699 Genome-wide genotyping array no NA +2018-11-02 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Insomnia complaints 19,521 European ancestry female cases, 39,846 European ancestry female controls 1,983 Icelandic ancestry male cases, 1,791 Icelandic ancestry female cases, 2,064 Icelandic ancestry male controls, 1,727 Icelandic ancestry female controls Affymetrix [at least 12428592] (imputed) 1 insomnia http://www.ebi.ac.uk/efo/EFO_0004698 GCST006487 Genome-wide genotyping array yes http://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/GCST006001-GCST007000/GCST006487 +2018-11-02 28604731 Hammerschlag AR 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604731 Genome-wide association analysis of insomnia complaints identifies risk genes and genetic overlap with psychiatric and metabolic traits. Insomnia complaints 12,863 European ancestry male cases, 40,776 European ancestry male controls 1,983 Icelandic ancestry male cases, 1,791 Icelandic ancestry female cases, 2,064 Icelandic ancestry male controls, 1,727 Icelandic ancestry female controls Affymetrix [at least 12428592] (imputed) 2 insomnia http://www.ebi.ac.uk/efo/EFO_0004698 GCST006488 Genome-wide genotyping array yes http://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/GCST006001-GCST007000/GCST006488 +2017-09-14 28610988 Kerr KF 2017-06-10 Heart Rhythm www.ncbi.nlm.nih.gov/pubmed/28610988 Genome-wide association study of heart rate and its variability in Hispanic/Latino cohorts. Heart rate 13,184 Hispanic/Latino individuals 7,073 European ancestry individuals, 4,771 African American individuals Affymetrix, Illumina [16967914] (imputed) 2 heart rate http://www.ebi.ac.uk/efo/EFO_0004326 GCST004715 Genome-wide genotyping array no NA +2017-09-14 28610988 Kerr KF 2017-06-10 Heart Rhythm www.ncbi.nlm.nih.gov/pubmed/28610988 Genome-wide association study of heart rate and its variability in Hispanic/Latino cohorts. Heart rate variability traits (RMSSD) 13,767 Hispanic/Latino individuals 4,730 European ancestry individuals, 2,908 African American individuals Affymetrix, Illumina [17209892] (imputed) 2 heart rate variability measurement http://www.ebi.ac.uk/efo/EFO_0008003 GCST004716 Genome-wide genotyping array no NA +2017-09-14 28610988 Kerr KF 2017-06-10 Heart Rhythm www.ncbi.nlm.nih.gov/pubmed/28610988 Genome-wide association study of heart rate and its variability in Hispanic/Latino cohorts. Heart rate variability traits (SDNN) 13,184 Hispanic/Latino individuals 7,073 European ancestry individuals, 2,908 African American individuals Affymetrix, Illumina [17209740] (imputed) 3 heart rate variability measurement http://www.ebi.ac.uk/efo/EFO_0008003 GCST004714 Genome-wide genotyping array no NA +2017-09-18 28604730 McKay JD 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604730 Large-scale association analysis identifies new lung cancer susceptibility loci and heterogeneity in genetic susceptibility across histological subtypes. Lung cancer 29,266 European ancestry cases, 56,450 European ancestry controls NA Illumina [10439017] (imputed) 135 lung carcinoma http://www.ebi.ac.uk/efo/EFO_0001071 GCST004748 Genome-wide genotyping array yes http://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/GCST004001-GCST005000/GCST004748 +2017-09-18 28604730 McKay JD 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604730 Large-scale association analysis identifies new lung cancer susceptibility loci and heterogeneity in genetic susceptibility across histological subtypes. Lung adenocarcinoma 11,273 European ancestry cases, 55,483 European ancestry controls NA Illumina [10439017] (imputed) 79 lung adenocarcinoma http://www.ebi.ac.uk/efo/EFO_0000571 GCST004744 Genome-wide genotyping array yes http://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/GCST004001-GCST005000/GCST004744 +2017-09-18 28604730 McKay JD 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604730 Large-scale association analysis identifies new lung cancer susceptibility loci and heterogeneity in genetic susceptibility across histological subtypes. Squamous cell lung carcinoma 7,426 European ancestry cases, 55,627 European ancestry controls NA Illumina [10439017] (imputed) 101 squamous cell lung carcinoma http://www.ebi.ac.uk/efo/EFO_0000708 GCST004750 Genome-wide genotyping array yes http://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/GCST004001-GCST005000/GCST004750 +2017-09-18 28604730 McKay JD 2017-06-12 Nat Genet www.ncbi.nlm.nih.gov/pubmed/28604730 Large-scale association analysis identifies new lung cancer susceptibility loci and heterogeneity in genetic susceptibility across histological subtypes. Small cell lung carcinoma 2,664 European ancestry cases, 21,444 European ancestry controls NA Illumina [10439017] (imputed) 50 small cell lung carcinoma http://www.ebi.ac.uk/efo/EFO_0000702 GCST004746 Genome-wide genotyping array yes http://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/GCST004001-GCST005000/GCST004746 diff --git a/tests/gentropy/data_samples/gwas_catalog_studies_sample-r2022-11-29.tsv b/tests/gentropy/data_samples/gwas_catalog_studies_sample-r2022-11-29.tsv deleted file mode 100644 index 7db8f5302..000000000 --- a/tests/gentropy/data_samples/gwas_catalog_studies_sample-r2022-11-29.tsv +++ /dev/null @@ -1,20 +0,0 @@ -DATE ADDED TO CATALOG PUBMED ID FIRST AUTHOR DATE JOURNAL LINK STUDY DISEASE/TRAIT INITIAL SAMPLE SIZE REPLICATION SAMPLE SIZE PLATFORM [SNPS PASSING QC] ASSOCIATION COUNT MAPPED_TRAIT MAPPED_TRAIT_URI STUDY ACCESSION GENOTYPING TECHNOLOGY SUMMARY STATS LOCATION SUBMISSION DATE STATISTICAL MODEL BACKGROUND TRAIT MAPPED BACKGROUND TRAIT MAPPED BACKGROUND TRAIT URI -2019-09-11 26546613 Gutierrez-Achury J 2016-01-01 Hum Mol Genet www.ncbi.nlm.nih.gov/pubmed/26546613 Functional implications of disease-specific variants in loci jointly associated with coeliac disease and rheumatoid arthritis. Celiac disease and Rheumatoid arthritis 371 South Asian ancestry celiac disease cases, 3,138 European ancestry celiac disease cases, 4,418 European ancestry rheumatoid arthritis cases, 509 South Asian ancestry celiac disease controls, 2,473 European ancestry celiac disease controls, 3,300 European ancestry rheumatoid arthritis controls, 8,872 celiac disease cases, 9,401 rheumatoid arthritis cases, 4,845 celiac disease controls, 9,627 rheumatoid arthritis controls NA Illumina [109572] 24 rheumatoid arthritis, celiac disease http://www.ebi.ac.uk/efo/EFO_0000685, http://www.ebi.ac.uk/efo/EFO_0001060 GCST008644 Targeted genotyping array [Immunochip] -2017-05-12 27911795 Schumann G 2016-11-28 Proc Natl Acad Sci U S A www.ncbi.nlm.nih.gov/pubmed/27911795 KLB is associated with alcohol drinking, and its gene product β-Klotho is necessary for FGF21 regulation of alcohol preference. Alcohol consumption up to 70,460 European ancestry drinker individuals up to 35,438 European ancestry drinker individuals Affymetrix, Illumina, Perlegen [at least 316407] (imputed) 3 alcohol consumption measurement http://www.ebi.ac.uk/efo/EFO_0007878 GCST004026 Genome-wide genotyping array -2017-05-12 27911795 Schumann G 2016-11-28 Proc Natl Acad Sci U S A www.ncbi.nlm.nih.gov/pubmed/27911795 KLB is associated with alcohol drinking, and its gene product β-Klotho is necessary for FGF21 regulation of alcohol preference. Alcohol consumption (heavy vs. light/non-drinkers) up to 74,711 European ancestry heavy and light/non-drinker individuals up to 31,021 European ancestry heavy and light/non-drinker individuals Affymetrix, Illumina, Perlegen [at least 316407] (imputed) 2 alcohol consumption measurement http://www.ebi.ac.uk/efo/EFO_0007878 GCST004027 Genome-wide genotyping array -2017-07-03 28235828 Traglia M 2017-04-03 G3 (Bethesda) www.ncbi.nlm.nih.gov/pubmed/28235828 Independent Maternal and Fetal Genetic Effects on Midgestational Circulating Levels of Environmental Pollutants. Midgestational circulating levels of organochlorine pesticides 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA Affymetrix [629686] 2 gestational serum measurement, organochlorine pesticide measurement http://www.ebi.ac.uk/efo/EFO_0007964, http://www.ebi.ac.uk/efo/EFO_0007960 GCST004281 Genome-wide genotyping array -2017-07-03 28235828 Traglia M 2017-04-03 G3 (Bethesda) www.ncbi.nlm.nih.gov/pubmed/28235828 Independent Maternal and Fetal Genetic Effects on Midgestational Circulating Levels of Environmental Pollutants. Midgestational circulating levels of PCBs (fetal genetic effect) 764 fetuses NA Affymetrix [622716] 11 polychlorinated biphenyls measurement, gestational serum measurement, fetal genotype effect measurement http://www.ebi.ac.uk/efo/EFO_0007042, http://www.ebi.ac.uk/efo/EFO_0007964, http://www.ebi.ac.uk/efo/EFO_0007959 GCST004284 Genome-wide genotyping array -2017-07-03 28235828 Traglia M 2017-04-03 G3 (Bethesda) www.ncbi.nlm.nih.gov/pubmed/28235828 Independent Maternal and Fetal Genetic Effects on Midgestational Circulating Levels of Environmental Pollutants. Midgestational circulating levels of PBDEs 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA Affymetrix [629686] 9 polybrominated biphenyl measurement, gestational serum measurement, polybrominated diphenyl ether measurement http://www.ebi.ac.uk/efo/EFO_0007961, http://www.ebi.ac.uk/efo/EFO_0007964, http://www.ebi.ac.uk/efo/EFO_0007962 GCST004285 Genome-wide genotyping array -2017-07-03 28235828 Traglia M 2017-04-03 G3 (Bethesda) www.ncbi.nlm.nih.gov/pubmed/28235828 Independent Maternal and Fetal Genetic Effects on Midgestational Circulating Levels of Environmental Pollutants. Midgestational circulating levels of PBDEs (fetal genetic effect) 764 fetuses NA Affymetrix [629686] 11 polybrominated biphenyl measurement, gestational serum measurement, fetal genotype effect measurement, polybrominated diphenyl ether measurement http://www.ebi.ac.uk/efo/EFO_0007961, http://www.ebi.ac.uk/efo/EFO_0007964, http://www.ebi.ac.uk/efo/EFO_0007959, http://www.ebi.ac.uk/efo/EFO_0007962 GCST004286 Genome-wide genotyping array -2017-07-03 28235828 Traglia M 2017-04-03 G3 (Bethesda) www.ncbi.nlm.nih.gov/pubmed/28235828 Independent Maternal and Fetal Genetic Effects on Midgestational Circulating Levels of Environmental Pollutants. Midgestational circulating levels of organochlorine pesticides (fetal genetic effect) 764 fetuses NA Affymetrix [629686] 0 gestational serum measurement, fetal genotype effect measurement, organochlorine pesticide measurement http://www.ebi.ac.uk/efo/EFO_0007964, http://www.ebi.ac.uk/efo/EFO_0007959, http://www.ebi.ac.uk/efo/EFO_0007960 GCST004282 Genome-wide genotyping array -2017-07-03 28235828 Traglia M 2017-04-03 G3 (Bethesda) www.ncbi.nlm.nih.gov/pubmed/28235828 Independent Maternal and Fetal Genetic Effects on Midgestational Circulating Levels of Environmental Pollutants. Midgestational circulating levels of PCBs 329 Hispanic mothers, 273 European ancestry mothers, 122 Asian ancestry mothers, 23 South Asian ancestry mothers, 21 African American mothers, 22 other ancestry mothers NA Affymetrix [629686] 25 polychlorinated biphenyls measurement, gestational serum measurement http://www.ebi.ac.uk/efo/EFO_0007042, http://www.ebi.ac.uk/efo/EFO_0007964 GCST004283 Genome-wide genotyping array -2016-09-12 26325155 Brehm JM 2015-09-01 Am J Respir Crit Care Med www.ncbi.nlm.nih.gov/pubmed/26325155 A Genome-Wide Association Study of Post-bronchodilator Lung Function in Children with Asthma. Post-bronchodilator lung function in asthma (FEV1) 447 Puerto Rican ancestry cases 568 European, black or Hispanic cases, 2,414 Hispanic cases Illumina [NR] 0 pulmonary function measurement, forced expiratory volume, response to bronchodilator http://www.ebi.ac.uk/efo/EFO_0003892, http://www.ebi.ac.uk/efo/EFO_0004314, http://purl.obolibrary.org/obo/GO_0097366 GCST003110 Genome-wide genotyping array asthma http://purl.obolibrary.org/obo/MONDO_0004979 -2016-09-12 26325155 Brehm JM 2015-09-01 Am J Respir Crit Care Med www.ncbi.nlm.nih.gov/pubmed/26325155 A Genome-Wide Association Study of Post-bronchodilator Lung Function in Children with Asthma. Post-bronchodilator lung function in asthma (FEV1/FVC) 447 Puerto Rican ancestry cases 568 European, black or Hispanic cases, 2,414 Hispanic cases Illumina [NR] 0 pulmonary function measurement, response to bronchodilator, FEV/FEC ratio http://www.ebi.ac.uk/efo/EFO_0003892, http://purl.obolibrary.org/obo/GO_0097366, http://www.ebi.ac.uk/efo/EFO_0004713 GCST003107 Genome-wide genotyping array asthma http://purl.obolibrary.org/obo/MONDO_0004979 -2016-07-27 26237429 Aminkeng F 2015-08-03 Nat Genet www.ncbi.nlm.nih.gov/pubmed/26237429 A coding variant in RARG confers susceptibility to anthracycline-induced cardiotoxicity in childhood cancer. Anthracycline-induced cardiotoxicity in childhood cancer 32 European ancestry cases with cardiotoxicity, 248 European ancestry cases without cardiotoxicity 22 European ancestry cases with cardiotoxicity, 74 European ancestry cases without cardiotoxicity, 2 African cases with cardiotoxicity, 9 African cases without cardiotoxicity, 5 Hispanic cases with cardiotoxicity, 18 Hispanic cases without cardiotoxicity, 8 East Asian cases with cardiotoxicity, 23 East Asian cases without cardiotoxicity, 4 Aboriginal Canadian cases with cardiotoxicity, 11 Aboriginal Canadian cases without cardiotoxicity Illumina [657694] 2 cardiotoxicity, response to anthracycline-based chemotherapy http://www.ebi.ac.uk/efo/EFO_1001482, http://www.ebi.ac.uk/efo/EFO_0005257 GCST003062 Genome-wide genotyping array childhood cancer http://www.ebi.ac.uk/efo/EFO_1000654 -2017-02-25 27387956 Murk W 2016-07-07 BMC Genet www.ncbi.nlm.nih.gov/pubmed/27387956 Genome-wide search identifies a gene-gene interaction between 20p13 and 2q14 in asthma. Asthma (SNP x SNP interaction) 802 European ancestry cases, 823 European ancestry controls 754 European ancestry cases, 57 European and unknown ancestry cases, 2,573 cases, 880 European ancestry controls, 68 European and unknown ancestry controls, 2,145 controls Illumina [301547] 0 asthma http://purl.obolibrary.org/obo/MONDO_0004979 GCST003682 Genome-wide genotyping array -2016-12-09 27008869 Chen MM 2016-03-23 Hum Mol Genet www.ncbi.nlm.nih.gov/pubmed/27008869 GWAS meta-analysis of 16 852 women identifies new susceptibility locus for endometrial cancer. Endometrial cancer 4,907 European ancestry cases, 11,945 European ancestry controls NA Illumina [9486271] (imputed) 4 endometrial carcinoma http://www.ebi.ac.uk/efo/EFO_1001512 GCST003436 Genome-wide genotyping array -2016-12-01 27016271 Kornilov SA 2016-03-25 Pediatrics www.ncbi.nlm.nih.gov/pubmed/27016271 Genome-Wide Association and Exome Sequencing Study of Language Disorder in an Isolated Population. Developmental language disorder 149 isolated population cases, 210 isolated population controls NA Illumina [223580] 4 specific language impairment http://www.ebi.ac.uk/efo/EFO_1001510 GCST003396 Genome-wide genotyping array -2016-12-01 27016271 Kornilov SA 2016-03-25 Pediatrics www.ncbi.nlm.nih.gov/pubmed/27016271 Genome-Wide Association and Exome Sequencing Study of Language Disorder in an Isolated Population. Developmental language disorder (linguistic errors) 149 isolated population cases, 210 isolated population controls NA Illumina [223580] 9 linguistic error measurement, specific language impairment http://www.ebi.ac.uk/efo/EFO_0007798, http://www.ebi.ac.uk/efo/EFO_1001510 GCST003397 Genome-wide genotyping array -2016-12-01 27016271 Kornilov SA 2016-03-25 Pediatrics www.ncbi.nlm.nih.gov/pubmed/27016271 Genome-Wide Association and Exome Sequencing Study of Language Disorder in an Isolated Population. Developmental language disorder (syntactic complexity) 149 isolated population cases, 210 isolated population controls NA Illumina [223580] 3 syntactic complexity measurement, specific language impairment http://www.ebi.ac.uk/efo/EFO_0007799, http://www.ebi.ac.uk/efo/EFO_1001510 GCST003398 Genome-wide genotyping array -2016-12-13 27005419 Borne Y 2016-03-22 Hum Mol Genet www.ncbi.nlm.nih.gov/pubmed/27005419 Genome wide association study identifies two loci associated with cadmium in erythrocytes among never-smokers. Erythrocyte cadmium concentration 2,704 ever-smoker individuals, 1,728 never-smoker individuals NA Illumina [658884] 5 erythrocyte cadmium measurement http://www.ebi.ac.uk/efo/EFO_0007807 GCST003449 Genome-wide genotyping array -2016-12-13 27005419 Borne Y 2016-03-22 Hum Mol Genet www.ncbi.nlm.nih.gov/pubmed/27005419 Genome wide association study identifies two loci associated with cadmium in erythrocytes among never-smokers. Erythrocyte cadmium concentration in never smokers 1,728 individuals NA Illumina [658884] 7 erythrocyte cadmium measurement http://www.ebi.ac.uk/efo/EFO_0007807 GCST003448 Genome-wide genotyping array From 8f0c6d57d92a2f3a42b432a296d154aef5d9a481 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 09:24:17 +0000 Subject: [PATCH 20/86] build(deps-dev): bump ruff from 0.2.0 to 0.3.2 (#531) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.2.0 to 0.3.2. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/v0.2.0...v0.3.2) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 160 +++++++++++++++++++++++++++++++++++++++++++------ pyproject.toml | 2 +- 2 files changed, 142 insertions(+), 20 deletions(-) diff --git a/poetry.lock b/poetry.lock index f1b435867..baa3259c2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3426,6 +3426,106 @@ files = [ {file = "google_re2-1.1-3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d140c7b9395b4d1e654127aa1c99bcc603ed01000b7bc7e28c52562f1894ec12"}, {file = "google_re2-1.1-3-cp39-cp39-win32.whl", hash = "sha256:80c5fc200f64b2d903eeb07b8d6cefc620a872a0240c7caaa9aca05b20f5568f"}, {file = "google_re2-1.1-3-cp39-cp39-win_amd64.whl", hash = "sha256:9eb6dbcee9b5dc4069bbc0634f2eb039ca524a14bed5868fdf6560aaafcbca06"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0db114d7e1aa96dbcea452a40136d7d747d60cbb61394965774688ef59cccd4e"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:82133958e003a1344e5b7a791b9a9dd7560b5c8f96936dbe16f294604524a633"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:9e74fd441d1f3d917d3303e319f61b82cdbd96b9a5ba919377a6eef1504a1e2b"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:734a2e7a4541c57253b5ebee24f3f3366ba3658bcad01da25fb623c78723471a"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d88d5eecbc908abe16132456fae13690d0508f3ac5777f320ef95cb6cab9a961"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:b91db80b171ecec435a07977a227757dd487356701a32f556fa6fca5d0a40522"}, + {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b23129887a64bb9948af14c84705273ed1a40054e99433b4acccab4dcf6a226"}, + {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5dc1a0cc7cd19261dcaf76763e2499305dbb7e51dc69555167cdb8af98782698"}, + {file = "google_re2-1.1-4-cp310-cp310-win32.whl", hash = "sha256:3b2ab1e2420b5dd9743a2d6bc61b64e5f708563702a75b6db86637837eaeaf2f"}, + {file = "google_re2-1.1-4-cp310-cp310-win_amd64.whl", hash = "sha256:92efca1a7ef83b6df012d432a1cbc71d10ff42200640c0f9a5ff5b343a48e633"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854818fd4ce79787aca5ba459d6e5abe4ca9be2c684a5b06a7f1757452ca3708"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:4ceef51174b6f653b6659a8fdaa9c38960c5228b44b25be2a3bcd8566827554f"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:ee49087c3db7e6f5238105ab5299c09e9b77516fe8cfb0a37e5f1e813d76ecb8"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:dc2312854bdc01410acc5d935f1906a49cb1f28980341c20a68797ad89d8e178"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0dc0d2e42296fa84a3cb3e1bd667c6969389cd5cdf0786e6b1f911ae2d75375b"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6bf04ced98453b035f84320f348f67578024f44d2997498def149054eb860ae8"}, + {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d6b6ef11dc4ab322fa66c2f3561925f2b5372a879c3ed764d20e939e2fd3e5f"}, + {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0dcde6646fa9a97fd3692b3f6ae7daf7f3277d7500b6c253badeefa11db8956a"}, + {file = "google_re2-1.1-4-cp311-cp311-win32.whl", hash = "sha256:5f4f0229deb057348893574d5b0a96d055abebac6debf29d95b0c0e26524c9f6"}, + {file = "google_re2-1.1-4-cp311-cp311-win_amd64.whl", hash = "sha256:4713ddbe48a18875270b36a462b0eada5e84d6826f8df7edd328d8706b6f9d07"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:40a698300b8faddbb325662973f839489c89b960087060bd389c376828978a04"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:103d2d7ac92ba23911a151fd1fc7035cbf6dc92a7f6aea92270ebceb5cd5acd3"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:51fb7182bccab05e8258a2b6a63dda1a6b4a9e8dfb9b03ec50e50c49c2827dd4"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:65383022abd63d7b620221eba7935132b53244b8b463d8fdce498c93cf58b7b7"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396281fc68a9337157b3ffcd9392c6b7fcb8aab43e5bdab496262a81d56a4ecc"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8198adcfcff1c680e052044124621730fc48d08005f90a75487f5651f1ebfce2"}, + {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:81f7bff07c448aec4db9ca453d2126ece8710dbd9278b8bb09642045d3402a96"}, + {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7dacf730fd7d6ec71b11d6404b0b26e230814bfc8e9bb0d3f13bec9b5531f8d"}, + {file = "google_re2-1.1-4-cp312-cp312-win32.whl", hash = "sha256:8c764f62f4b1d89d1ef264853b6dd9fee14a89e9b86a81bc2157fe3531425eb4"}, + {file = "google_re2-1.1-4-cp312-cp312-win_amd64.whl", hash = "sha256:0be2666df4bc5381a5d693585f9bbfefb0bfd3c07530d7e403f181f5de47254a"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:5cb1b63a0bfd8dd65d39d2f3b2e5ae0a06ce4b2ce5818a1d1fc78a786a252673"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e41751ce6b67a95230edd0772226dc94c2952a2909674cd69df9804ed0125307"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:b998cfa2d50bf4c063e777c999a7e8645ec7e5d7baf43ad71b1e2e10bb0300c3"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:226ca3b0c2e970f3fc82001ac89e845ecc7a4bb7c68583e7a76cda70b61251a7"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:9adec1f734ebad7c72e56c85f205a281d8fe9bf6583bc21020157d3f2812ce89"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:9c34f3c64ba566af967d29e11299560e6fdfacd8ca695120a7062b6ed993b179"}, + {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b85385fe293838e0d0b6e19e6c48ba8c6f739ea92ce2e23b718afe7b343363"}, + {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4694daa8a8987cfb568847aa872f9990e930c91a68c892ead876411d4b9012c3"}, + {file = "google_re2-1.1-4-cp38-cp38-win32.whl", hash = "sha256:5e671e9be1668187e2995aac378de574fa40df70bb6f04657af4d30a79274ce0"}, + {file = "google_re2-1.1-4-cp38-cp38-win_amd64.whl", hash = "sha256:f66c164d6049a8299f6dfcfa52d1580576b4b9724d6fcdad2f36f8f5da9304b6"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:25cb17ae0993a48c70596f3a3ef5d659638106401cc8193f51c0d7961b3b3eb7"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5f101f86d14ca94ca4dcf63cceaa73d351f2be2481fcaa29d9e68eeab0dc2a88"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:4e82591e85bf262a6d74cff152867e05fc97867c68ba81d6836ff8b0e7e62365"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:1f61c09b93ffd34b1e2557e5a9565039f935407a5786dbad46f64f1a484166e6"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:12b390ad8c7e74bab068732f774e75e0680dade6469b249a721f3432f90edfc3"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:1284343eb31c2e82ed2d8159f33ba6842238a56782c881b07845a6d85613b055"}, + {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c7b38e0daf2c06e4d3163f4c732ab3ad2521aecfed6605b69e4482c612da303"}, + {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f4d4f0823e8b2f6952a145295b1ff25245ce9bb136aff6fe86452e507d4c1dd"}, + {file = "google_re2-1.1-4-cp39-cp39-win32.whl", hash = "sha256:1afae56b2a07bb48cfcfefaa15ed85bae26a68f5dc7f9e128e6e6ea36914e847"}, + {file = "google_re2-1.1-4-cp39-cp39-win_amd64.whl", hash = "sha256:aa7d6d05911ab9c8adbf3c225a7a120ab50fd2784ac48f2f0d140c0b7afc2b55"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:222fc2ee0e40522de0b21ad3bc90ab8983be3bf3cec3d349c80d76c8bb1a4beb"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d4763b0b9195b72132a4e7de8e5a9bf1f05542f442a9115aa27cfc2a8004f581"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:209649da10c9d4a93d8a4d100ecbf9cc3b0252169426bec3e8b4ad7e57d600cf"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:68813aa333c1604a2df4a495b2a6ed065d7c8aebf26cc7e7abb5a6835d08353c"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:370a23ec775ad14e9d1e71474d56f381224dcf3e72b15d8ca7b4ad7dd9cd5853"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:14664a66a3ddf6bc9e56f401bf029db2d169982c53eff3f5876399104df0e9a6"}, + {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea3722cc4932cbcebd553b69dce1b4a73572823cff4e6a244f1c855da21d511"}, + {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e14bb264c40fd7c627ef5678e295370cd6ba95ca71d835798b6e37502fc4c690"}, + {file = "google_re2-1.1-5-cp310-cp310-win32.whl", hash = "sha256:39512cd0151ea4b3969c992579c79b423018b464624ae955be685fc07d94556c"}, + {file = "google_re2-1.1-5-cp310-cp310-win_amd64.whl", hash = "sha256:ac66537aa3bc5504320d922b73156909e3c2b6da19739c866502f7827b3f9fdf"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b5ea68d54890c9edb1b930dcb2658819354e5d3f2201f811798bbc0a142c2b4"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:33443511b6b83c35242370908efe2e8e1e7cae749c766b2b247bf30e8616066c"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:413d77bdd5ba0bfcada428b4c146e87707452ec50a4091ec8e8ba1413d7e0619"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:5171686e43304996a34baa2abcee6f28b169806d0e583c16d55e5656b092a414"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b284db130283771558e31a02d8eb8fb756156ab98ce80035ae2e9e3a5f307c4"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:296e6aed0b169648dc4b870ff47bd34c702a32600adb9926154569ef51033f47"}, + {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:38d50e68ead374160b1e656bbb5d101f0b95fb4cc57f4a5c12100155001480c5"}, + {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a0416a35921e5041758948bcb882456916f22845f66a93bc25070ef7262b72a"}, + {file = "google_re2-1.1-5-cp311-cp311-win32.whl", hash = "sha256:a1d59568bbb5de5dd56dd6cdc79907db26cce63eb4429260300c65f43469e3e7"}, + {file = "google_re2-1.1-5-cp311-cp311-win_amd64.whl", hash = "sha256:72f5a2f179648b8358737b2b493549370debd7d389884a54d331619b285514e3"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:cbc72c45937b1dc5acac3560eb1720007dccca7c9879138ff874c7f6baf96005"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5fadd1417fbef7235fa9453dba4eb102e6e7d94b1e4c99d5fa3dd4e288d0d2ae"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:040f85c63cc02696485b59b187a5ef044abe2f99b92b4fb399de40b7d2904ccc"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:64e3b975ee6d9bbb2420494e41f929c1a0de4bcc16d86619ab7a87f6ea80d6bd"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8ee370413e00f4d828eaed0e83b8af84d7a72e8ee4f4bd5d3078bc741dfc430a"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:5b89383001079323f693ba592d7aad789d7a02e75adb5d3368d92b300f5963fd"}, + {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:63cb4fdfbbda16ae31b41a6388ea621510db82feb8217a74bf36552ecfcd50ad"}, + {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ebedd84ae8be10b7a71a16162376fd67a2386fe6361ef88c622dcf7fd679daf"}, + {file = "google_re2-1.1-5-cp312-cp312-win32.whl", hash = "sha256:c8e22d1692bc2c81173330c721aff53e47ffd3c4403ff0cd9d91adfd255dd150"}, + {file = "google_re2-1.1-5-cp312-cp312-win_amd64.whl", hash = "sha256:5197a6af438bb8c4abda0bbe9c4fbd6c27c159855b211098b29d51b73e4cbcf6"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b6727e0b98417e114b92688ad2aa256102ece51f29b743db3d831df53faf1ce3"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:711e2b6417eb579c61a4951029d844f6b95b9b373b213232efd413659889a363"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:71ae8b3df22c5c154c8af0f0e99d234a450ef1644393bc2d7f53fc8c0a1e111c"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:94a04e214bc521a3807c217d50cf099bbdd0c0a80d2d996c0741dbb995b5f49f"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:a770f75358508a9110c81a1257721f70c15d9bb592a2fb5c25ecbd13566e52a5"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:07c9133357f7e0b17c6694d5dcb82e0371f695d7c25faef2ff8117ef375343ff"}, + {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:204ca6b1cf2021548f4a9c29ac015e0a4ab0a7b6582bf2183d838132b60c8fda"}, + {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b95857c2c654f419ca684ec38c9c3325c24e6ba7d11910a5110775a557bb18"}, + {file = "google_re2-1.1-5-cp38-cp38-win32.whl", hash = "sha256:347ac770e091a0364e822220f8d26ab53e6fdcdeaec635052000845c5a3fb869"}, + {file = "google_re2-1.1-5-cp38-cp38-win_amd64.whl", hash = "sha256:ec32bb6de7ffb112a07d210cf9f797b7600645c2d5910703fa07f456dd2150e0"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:eb5adf89060f81c5ff26c28e261e6b4997530a923a6093c9726b8dec02a9a326"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a22630c9dd9ceb41ca4316bccba2643a8b1d5c198f21c00ed5b50a94313aaf10"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:544dc17fcc2d43ec05f317366375796351dec44058e1164e03c3f7d050284d58"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:19710af5ea88751c7768575b23765ce0dfef7324d2539de576f75cdc319d6654"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:f82995a205e08ad896f4bd5ce4847c834fab877e1772a44e5f262a647d8a1dec"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:63533c4d58da9dc4bc040250f1f52b089911699f0368e0e6e15f996387a984ed"}, + {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79e00fcf0cb04ea35a22b9014712d448725ce4ddc9f08cc818322566176ca4b0"}, + {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc41afcefee2da6c4ed883a93d7f527c4b960cd1d26bbb0020a7b8c2d341a60a"}, + {file = "google_re2-1.1-5-cp39-cp39-win32.whl", hash = "sha256:486730b5e1f1c31b0abc6d80abe174ce4f1188fe17d1b50698f2bf79dc6e44be"}, + {file = "google_re2-1.1-5-cp39-cp39-win_amd64.whl", hash = "sha256:4de637ca328f1d23209e80967d1b987d6b352cd01b3a52a84b4d742c69c3da6c"}, ] [[package]] @@ -6696,6 +6796,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"}, @@ -7184,28 +7285,28 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruff" -version = "0.2.0" +version = "0.3.2" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.2.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:638ea3294f800d18bae84a492cb5a245c8d29c90d19a91d8e338937a4c27fca0"}, - {file = "ruff-0.2.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3ff35433fcf4dff6d610738712152df6b7d92351a1bde8e00bd405b08b3d5759"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf9faafbdcf4f53917019f2c230766da437d4fd5caecd12ddb68bb6a17d74399"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8153a3e4128ed770871c47545f1ae7b055023e0c222ff72a759f5a341ee06483"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8a75a98ae989a27090e9c51f763990ad5bbc92d20626d54e9701c7fe597f399"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:87057dd2fdde297130ff99553be8549ca38a2965871462a97394c22ed2dfc19d"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d232f99d3ab00094ebaf88e0fb7a8ccacaa54cc7fa3b8993d9627a11e6aed7a"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d3c641f95f435fc6754b05591774a17df41648f0daf3de0d75ad3d9f099ab92"}, - {file = "ruff-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3826fb34c144ef1e171b323ed6ae9146ab76d109960addca730756dc19dc7b22"}, - {file = "ruff-0.2.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:eceab7d85d09321b4de18b62d38710cf296cb49e98979960a59c6b9307c18cfe"}, - {file = "ruff-0.2.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:30ad74687e1f4a9ff8e513b20b82ccadb6bd796fe5697f1e417189c5cde6be3e"}, - {file = "ruff-0.2.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a7e3818698f8460bd0f8d4322bbe99db8327e9bc2c93c789d3159f5b335f47da"}, - {file = "ruff-0.2.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:edf23041242c48b0d8295214783ef543847ef29e8226d9f69bf96592dba82a83"}, - {file = "ruff-0.2.0-py3-none-win32.whl", hash = "sha256:e155147199c2714ff52385b760fe242bb99ea64b240a9ffbd6a5918eb1268843"}, - {file = "ruff-0.2.0-py3-none-win_amd64.whl", hash = "sha256:ba918e01cdd21e81b07555564f40d307b0caafa9a7a65742e98ff244f5035c59"}, - {file = "ruff-0.2.0-py3-none-win_arm64.whl", hash = "sha256:3fbaff1ba9564a2c5943f8f38bc221f04bac687cc7485e45237579fee7ccda79"}, - {file = "ruff-0.2.0.tar.gz", hash = "sha256:63856b91837606c673537d2889989733d7dffde553828d3b0f0bacfa6def54be"}, + {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77f2612752e25f730da7421ca5e3147b213dca4f9a0f7e0b534e9562c5441f01"}, + {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9966b964b2dd1107797be9ca7195002b874424d1d5472097701ae8f43eadef5d"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b83d17ff166aa0659d1e1deaf9f2f14cbe387293a906de09bc4860717eb2e2da"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb875c6cc87b3703aeda85f01c9aebdce3d217aeaca3c2e52e38077383f7268a"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be75e468a6a86426430373d81c041b7605137a28f7014a72d2fc749e47f572aa"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:967978ac2d4506255e2f52afe70dda023fc602b283e97685c8447d036863a302"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1231eacd4510f73222940727ac927bc5d07667a86b0cbe822024dd00343e77e9"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c6d613b19e9a8021be2ee1d0e27710208d1603b56f47203d0abbde906929a9b"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8439338a6303585d27b66b4626cbde89bb3e50fa3cae86ce52c1db7449330a7"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:de8b480d8379620cbb5ea466a9e53bb467d2fb07c7eca54a4aa8576483c35d36"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b74c3de9103bd35df2bb05d8b2899bf2dbe4efda6474ea9681280648ec4d237d"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f380be9fc15a99765c9cf316b40b9da1f6ad2ab9639e551703e581a5e6da6745"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0ac06a3759c3ab9ef86bbeca665d31ad3aa9a4b1c17684aadb7e61c10baa0df4"}, + {file = "ruff-0.3.2-py3-none-win32.whl", hash = "sha256:9bd640a8f7dd07a0b6901fcebccedadeb1a705a50350fb86b4003b805c81385a"}, + {file = "ruff-0.3.2-py3-none-win_amd64.whl", hash = "sha256:0c1bdd9920cab5707c26c8b3bf33a064a4ca7842d91a99ec0634fec68f9f4037"}, + {file = "ruff-0.3.2-py3-none-win_arm64.whl", hash = "sha256:5f65103b1d76e0d600cabd577b04179ff592064eaa451a70a81085930e907d0b"}, + {file = "ruff-0.3.2.tar.gz", hash = "sha256:fa78ec9418eb1ca3db392811df3376b46471ae93792a81af2d1cbb0e5dcb5142"}, ] [[package]] @@ -7620,30 +7721,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.50-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:54138aa80d2dedd364f4e8220eef284c364d3270aaef621570aa2bd99902e2e8"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, {file = "SQLAlchemy-1.4.50-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:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, + {file = "SQLAlchemy-1.4.50-cp310-cp310-win32.whl", hash = "sha256:6c78e3fb4a58e900ec433b6b5f4efe1a0bf81bbb366ae7761c6e0051dd310ee3"}, + {file = "SQLAlchemy-1.4.50-cp310-cp310-win_amd64.whl", hash = "sha256:d55f7a33e8631e15af1b9e67c9387c894fedf6deb1a19f94be8731263c51d515"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:324b1fdd50e960a93a231abb11d7e0f227989a371e3b9bd4f1259920f15d0304"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-win32.whl", hash = "sha256:8bdab03ff34fc91bfab005e96f672ae207d87e0ac7ee716d74e87e7046079d8b"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-win_amd64.whl", hash = "sha256:52e01d60b06f03b0a5fc303c8aada405729cbc91a56a64cead8cb7c0b9b13c1a"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:77fde9bf74f4659864c8e26ac08add8b084e479b9a18388e7db377afc391f926"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-win32.whl", hash = "sha256:e86c920b7d362cfa078c8b40e7765cbc34efb44c1007d7557920be9ddf138ec7"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-win_amd64.whl", hash = "sha256:6b3df20fbbcbcd1c1d43f49ccf3eefb370499088ca251ded632b8cbaee1d497d"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:fb9adc4c6752d62c6078c107d23327aa3023ef737938d0135ece8ffb67d07030"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, {file = "SQLAlchemy-1.4.50-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:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-win32.whl", hash = "sha256:1b9c4359d3198f341480e57494471201e736de459452caaacf6faa1aca852bd8"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-win_amd64.whl", hash = "sha256:35e4520f7c33c77f2636a1e860e4f8cafaac84b0b44abe5de4c6c8890b6aaa6d"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f5b1fb2943d13aba17795a770d22a2ec2214fc65cff46c487790192dda3a3ee7"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, {file = "SQLAlchemy-1.4.50-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:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-win32.whl", hash = "sha256:7b4396452273aedda447e5aebe68077aa7516abf3b3f48408793e771d696f397"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-win_amd64.whl", hash = "sha256:752f9df3dddbacb5f42d8405b2d5885675a93501eb5f86b88f2e47a839cf6337"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:35c7ed095a4b17dbc8813a2bfb38b5998318439da8e6db10a804df855e3a9e3a"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, {file = "SQLAlchemy-1.4.50-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:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-win32.whl", hash = "sha256:8a219688297ee5e887a93ce4679c87a60da4a5ce62b7cb4ee03d47e9e767f558"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl", hash = "sha256:a648770db002452703b729bdcf7d194e904aa4092b9a4d6ab185b48d13252f63"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:4be4da121d297ce81e1ba745a0a0521c6cf8704634d7b520e350dce5964c71ac"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, {file = "SQLAlchemy-1.4.50-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:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-win32.whl", hash = "sha256:a7c9b9dca64036008962dd6b0d9fdab2dfdbf96c82f74dbd5d86006d8d24a30f"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-win_amd64.whl", hash = "sha256:df200762efbd672f7621b253721644642ff04a6ff957236e0e2fe56d9ca34d2c"}, {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, ] @@ -8480,4 +8602,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10, <3.11" -content-hash = "8d85933db4bf8f4ca92ef227e9a767d26f4f7d2b360083449cfafc54878885fc" +content-hash = "22fb188b8c3280c467d702419d19bcef44e4f35fa35de4f89ba7930455d721ac" diff --git a/pyproject.toml b/pyproject.toml index d94d8412b..40b4ea630 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,7 @@ pep8-naming = "^0.13.2" interrogate = "^1.5.0" isort = "^5.13.2" darglint = "^1.8.1" -ruff = "^0.2.0" +ruff = "^0.3.2" [tool.poetry.group.docs.dependencies] mkdocs = "^1.5.3" From 317a09c25ed2c9e4e73a7abf1da4680a61d72356 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 09:47:12 +0000 Subject: [PATCH 21/86] build(deps-dev): bump mypy from 1.8.0 to 1.9.0 (#532) Bumps [mypy](https://github.com/python/mypy) from 1.8.0 to 1.9.0. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.8.0...1.9.0) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 58 +++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/poetry.lock b/poetry.lock index baa3259c2..3044f36c4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -5154,38 +5154,38 @@ files = [ [[package]] name = "mypy" -version = "1.8.0" +version = "1.9.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:485a8942f671120f76afffff70f259e1cd0f0cfe08f81c05d8816d958d4577d3"}, - {file = "mypy-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:df9824ac11deaf007443e7ed2a4a26bebff98d2bc43c6da21b2b64185da011c4"}, - {file = "mypy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afecd6354bbfb6e0160f4e4ad9ba6e4e003b767dd80d85516e71f2e955ab50d"}, - {file = "mypy-1.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8963b83d53ee733a6e4196954502b33567ad07dfd74851f32be18eb932fb1cb9"}, - {file = "mypy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:e46f44b54ebddbeedbd3d5b289a893219065ef805d95094d16a0af6630f5d410"}, - {file = "mypy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:855fe27b80375e5c5878492f0729540db47b186509c98dae341254c8f45f42ae"}, - {file = "mypy-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4c886c6cce2d070bd7df4ec4a05a13ee20c0aa60cb587e8d1265b6c03cf91da3"}, - {file = "mypy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d19c413b3c07cbecf1f991e2221746b0d2a9410b59cb3f4fb9557f0365a1a817"}, - {file = "mypy-1.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9261ed810972061388918c83c3f5cd46079d875026ba97380f3e3978a72f503d"}, - {file = "mypy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:51720c776d148bad2372ca21ca29256ed483aa9a4cdefefcef49006dff2a6835"}, - {file = "mypy-1.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:52825b01f5c4c1c4eb0db253ec09c7aa17e1a7304d247c48b6f3599ef40db8bd"}, - {file = "mypy-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f5ac9a4eeb1ec0f1ccdc6f326bcdb464de5f80eb07fb38b5ddd7b0de6bc61e55"}, - {file = "mypy-1.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afe3fe972c645b4632c563d3f3eff1cdca2fa058f730df2b93a35e3b0c538218"}, - {file = "mypy-1.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:42c6680d256ab35637ef88891c6bd02514ccb7e1122133ac96055ff458f93fc3"}, - {file = "mypy-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:720a5ca70e136b675af3af63db533c1c8c9181314d207568bbe79051f122669e"}, - {file = "mypy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:028cf9f2cae89e202d7b6593cd98db6759379f17a319b5faf4f9978d7084cdc6"}, - {file = "mypy-1.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4e6d97288757e1ddba10dd9549ac27982e3e74a49d8d0179fc14d4365c7add66"}, - {file = "mypy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f1478736fcebb90f97e40aff11a5f253af890c845ee0c850fe80aa060a267c6"}, - {file = "mypy-1.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42419861b43e6962a649068a61f4a4839205a3ef525b858377a960b9e2de6e0d"}, - {file = "mypy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:2b5b6c721bd4aabaadead3a5e6fa85c11c6c795e0c81a7215776ef8afc66de02"}, - {file = "mypy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5c1538c38584029352878a0466f03a8ee7547d7bd9f641f57a0f3017a7c905b8"}, - {file = "mypy-1.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ef4be7baf08a203170f29e89d79064463b7fc7a0908b9d0d5114e8009c3a259"}, - {file = "mypy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7178def594014aa6c35a8ff411cf37d682f428b3b5617ca79029d8ae72f5402b"}, - {file = "mypy-1.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ab3c84fa13c04aeeeabb2a7f67a25ef5d77ac9d6486ff33ded762ef353aa5592"}, - {file = "mypy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:99b00bc72855812a60d253420d8a2eae839b0afa4938f09f4d2aa9bb4654263a"}, - {file = "mypy-1.8.0-py3-none-any.whl", hash = "sha256:538fd81bb5e430cc1381a443971c0475582ff9f434c16cd46d2c66763ce85d9d"}, - {file = "mypy-1.8.0.tar.gz", hash = "sha256:6ff8b244d7085a0b425b56d327b480c3b29cafbd2eff27316a004f9a7391ae07"}, + {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"}, + {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"}, + {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"}, + {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"}, + {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"}, + {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"}, + {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"}, + {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"}, + {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"}, + {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"}, + {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"}, + {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"}, + {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"}, + {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"}, + {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"}, + {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"}, + {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"}, + {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"}, + {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"}, + {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"}, + {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"}, + {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"}, + {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"}, + {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"}, + {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"}, + {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"}, + {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"}, ] [package.dependencies] @@ -8602,4 +8602,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10, <3.11" -content-hash = "22fb188b8c3280c467d702419d19bcef44e4f35fa35de4f89ba7930455d721ac" +content-hash = "3e83722356bcba15ea8f788d4bc43f05820f1577adef4c558aa30676f5bc7c08" diff --git a/pyproject.toml b/pyproject.toml index 40b4ea630..5680f5d39 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ pandas = "^2.1.4" [tool.poetry.dev-dependencies] pre-commit = "^3.6.0" -mypy = "^1.8" +mypy = "^1.9" pep8-naming = "^0.13.2" interrogate = "^1.5.0" isort = "^5.13.2" From 5cd46028d8a28b2299f0520e72d2cf6fadfaf738 Mon Sep 17 00:00:00 2001 From: Joris Louwen <62542407+louwenjjr@users.noreply.github.com> Date: Mon, 11 Mar 2024 17:22:00 +0100 Subject: [PATCH 22/86] fix: pin version of commitlint (#533) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 51d4e05a8..a8a2bf4c9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -62,7 +62,7 @@ repos: rev: v9.11.0 hooks: - id: commitlint - additional_dependencies: ["@commitlint/config-conventional"] + additional_dependencies: ["@commitlint/config-conventional@18.6.3"] stages: [commit-msg] - repo: https://github.com/pre-commit/mirrors-mypy From 06c611780e3ecb95b7d4b8b40a192dd8b984560b Mon Sep 17 00:00:00 2001 From: Joris Louwen <62542407+louwenjjr@users.noreply.github.com> Date: Tue, 12 Mar 2024 11:20:10 +0100 Subject: [PATCH 23/86] fix: read function for thurman data to include first line (#534) --- src/gentropy/datasource/intervals/thurman.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gentropy/datasource/intervals/thurman.py b/src/gentropy/datasource/intervals/thurman.py index 88ed5b6ad..a8113e5a6 100644 --- a/src/gentropy/datasource/intervals/thurman.py +++ b/src/gentropy/datasource/intervals/thurman.py @@ -41,7 +41,7 @@ def read(spark: SparkSession, path: str) -> DataFrame: t.StructField("score", t.FloatType(), False), ] ) - return spark.read.csv(path, sep="\t", header=True, schema=thurman_schema) + return spark.read.csv(path, sep="\t", header=False, schema=thurman_schema) @classmethod def parse( From 43dd479f896f651093f2511de277b208d1d2a9b2 Mon Sep 17 00:00:00 2001 From: Yakov Date: Tue, 12 Mar 2024 15:35:22 +0000 Subject: [PATCH 24/86] feat(sumstat imputation): adding class for sumstat imputation (#490) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(sumstat imputation): adding class for sumstat imputation * feat: added test * docs: update summary statistics imputation description * Update src/gentropy/method/sumstat_imputation.py Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * Update src/gentropy/method/sumstat_imputation.py Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * Update src/gentropy/method/sumstat_imputation.py Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * Update src/gentropy/method/sumstat_imputation.py Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * Update docs/python_api/methods/sumstat_imputation.md Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * Update src/gentropy/method/sumstat_imputation.py Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * Update src/gentropy/method/sumstat_imputation.py Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * fix: changes according to comment * Update src/gentropy/method/sumstat_imputation.py Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * Update src/gentropy/method/sumstat_imputation.py Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * Update src/gentropy/method/sumstat_imputation.py Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * Update src/gentropy/method/sumstat_imputation.py Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * Update src/gentropy/method/sumstat_imputation.py Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> * fix: fixing tests --------- Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> --- docs/python_api/methods/sumstat_imputation.md | 28 +++ src/gentropy/method/sumstat_imputation.py | 172 ++++++++++++++++++ .../method/test_sumstat_imputation.py | 31 ++++ 3 files changed, 231 insertions(+) create mode 100644 docs/python_api/methods/sumstat_imputation.md create mode 100644 src/gentropy/method/sumstat_imputation.py create mode 100644 tests/gentropy/method/test_sumstat_imputation.py diff --git a/docs/python_api/methods/sumstat_imputation.md b/docs/python_api/methods/sumstat_imputation.md new file mode 100644 index 000000000..6e64d35b1 --- /dev/null +++ b/docs/python_api/methods/sumstat_imputation.md @@ -0,0 +1,28 @@ +--- +title: Summary Statistics Imputation +--- + +Summary statistics imputation leverages linkage disequilibrium (LD) information to compute Z-scores of missing SNPs from neighbouring observed SNPs +SNPs by taking advantage of the Linkage Disequilibrium. + +We implemented the basic model from RAISS (Robust and Accurate Imputation from Summary Statistics) package (see the original [paper](https://academic.oup.com/bioinformatics/article/35/22/4837/5512360)). + +The full repository for the RAISS package can be found [here](https://gitlab.pasteur.fr/statistical-genetics/raiss). + +The original model was suggested in 2014 by Bogdan Pasaniuc et al. [here](https://pubmed.ncbi.nlm.nih.gov/24990607/). + +It represents the following formula: + +E(z*i|z_t) = M*{i,t} \cdot (M\_{t,t})^{-1} \cdot z_t + +Where: + +- E(z_i|z_t) represents the expected z-score of SNP 'i' given the observed z-scores at known SNP indexes 't'. + +- M\_{i,t} represents the LD (Linkage Disequilibrium) matrix between SNP 'i' and the known SNPs at indexes 't'. + +- (M\_{t,t})^{-1} represents the inverse of the LD matrix of the known SNPs at indexes 't'. + +- z_t represents the vector of observed z-scores at the known SNP indexes 't'. + +:::gentropy.method.sumstat_imputation.SummaryStatisticsImputation diff --git a/src/gentropy/method/sumstat_imputation.py b/src/gentropy/method/sumstat_imputation.py new file mode 100644 index 000000000..8375fa84f --- /dev/null +++ b/src/gentropy/method/sumstat_imputation.py @@ -0,0 +1,172 @@ +"""RAISS summary statstics imputation model.""" + +from __future__ import annotations + +from typing import Any + +import numpy as np +import scipy.linalg + + +class SummaryStatisticsImputation: + """Implementation of RAISS summary statstics imputation model.""" + + @staticmethod + def raiss_model( + z_scores_known: np.ndarray, + ld_matrix_known: np.ndarray, + ld_matrix_known_missing: np.ndarray, + lamb: float = 0.01, + rtol: float = 0.01, + ) -> dict[str, Any]: + """Compute the imputation of the z-score using the RAISS model. + + Args: + z_scores_known (np.ndarray): the vector of known Z scores + ld_matrix_known (np.ndarray) : the matrix of known LD correlations + ld_matrix_known_missing (np.ndarray): LD matrix of known SNPs with other unknown SNPs in large matrix (similar to ld[unknowns, :][:,known]) + lamb (float): size of the small value added to the diagonal of the covariance matrix before inversion. Defaults to 0.01. + rtol (float): threshold to filter eigenvectos by its eigenvalue. It makes an inversion biased but much more numerically robust. Default to 0.01. + + Returns: + dict[str, Any]: + - var (np.ndarray): variance of the imputed SNPs + - mu (np.ndarray): the estimation of the zscore of the imputed SNPs + - ld_score (np.ndarray): the linkage disequilibrium score of the imputed SNPs + - condition_number (np.ndarray): the condition number of the correlation matrix + - correct_inversion (np.ndarray): a boolean array indicating if the inversion was successful + - imputation_r2 (np.ndarray): the R2 of the imputation + """ + sig_t_inv = SummaryStatisticsImputation._invert_sig_t( + ld_matrix_known, lamb, rtol + ) + if sig_t_inv is None: + return { + "var": None, + "mu": None, + "ld_score": None, + "condition_number": None, + "correct_inversion": None, + "imputation_r2": None, + } + else: + condition_number = np.array( + [np.linalg.cond(ld_matrix_known)] * ld_matrix_known_missing.shape[0] + ) + correct_inversion = np.array( + [ + SummaryStatisticsImputation._check_inversion( + ld_matrix_known, sig_t_inv + ) + ] + * ld_matrix_known_missing.shape[0] + ) + + var, ld_score = SummaryStatisticsImputation._compute_var( + ld_matrix_known_missing, sig_t_inv, lamb + ) + + mu = SummaryStatisticsImputation._compute_mu( + ld_matrix_known_missing, sig_t_inv, z_scores_known + ) + var_norm = SummaryStatisticsImputation._var_in_boundaries(var, lamb) + + R2 = (1 + lamb) - var_norm + + mu = mu / np.sqrt(R2) + return { + "var": var, + "mu": mu, + "ld_score": ld_score, + "condition_number": condition_number, + "correct_inversion": correct_inversion, + "imputation_r2": 1 - var, + } + + @staticmethod + def _compute_mu( + sig_i_t: np.ndarray, sig_t_inv: np.ndarray, zt: np.ndarray + ) -> np.ndarray: + """Compute the estimation of z-score from neighborring snp. + + Args: + sig_i_t (np.ndarray) : correlation matrix with line corresponding to unknown Snp (snp to impute) and column to known SNPs + sig_t_inv (np.ndarray): inverse of the correlation matrix of known matrix + zt (np.ndarray): Zscores of known snp + Returns: + np.ndarray: a vector of length i containing the estimate of zscore + + """ + return np.dot(sig_i_t, np.dot(sig_t_inv, zt)) + + @staticmethod + def _compute_var( + sig_i_t: np.ndarray, sig_t_inv: np.ndarray, lamb: float + ) -> tuple[np.ndarray, np.ndarray]: + """Compute the expected variance of the imputed SNPs. + + Args: + sig_i_t (np.ndarray) : correlation matrix with line corresponding to unknown Snp (snp to impute) and column to known SNPs + sig_t_inv (np.ndarray): inverse of the correlation matrix of known matrix + lamb (float): regularization term added to matrix + + Returns: + tuple[np.ndarray, np.ndarray]: a tuple containing the variance and the ld score + """ + var = (1 + lamb) - np.einsum( + "ij,jk,ki->i", sig_i_t, sig_t_inv, sig_i_t.transpose() + ) + ld_score = (sig_i_t**2).sum(1) + + return var, ld_score + + @staticmethod + def _check_inversion(sig_t: np.ndarray, sig_t_inv: np.ndarray) -> bool: + """Check if the inversion is correct. + + Args: + sig_t (np.ndarray): the correlation matrix + sig_t_inv (np.ndarray): the inverse of the correlation matrix + Returns: + bool: True if the inversion is correct, False otherwise + """ + return np.allclose(sig_t, np.dot(sig_t, np.dot(sig_t_inv, sig_t))) + + @staticmethod + def _var_in_boundaries(var: np.ndarray, lamb: float) -> np.ndarray: + """Forces the variance to be in the 0 to 1+lambda boundary. Theoritically we shouldn't have to do that. + + Args: + var (np.ndarray): the variance of the imputed SNPs + lamb (float): regularization term added to the diagonal of the sig_t matrix + + Returns: + np.ndarray: the variance of the imputed SNPs + """ + id_neg = np.where(var < 0) + var[id_neg] = 0 + id_inf = np.where(var > (0.99999 + lamb)) + var[id_inf] = 1 + + return var + + @staticmethod + def _invert_sig_t(sig_t: np.ndarray, lamb: float, rtol: float) -> np.ndarray: + """Invert the correlation matrix. If the provided regularization values are not enough to stabilize the inversion process for the given matrix, the function calls itself recursively, increasing lamb and rtol by 10%. + + Args: + sig_t (np.ndarray): the correlation matrix + lamb (float): regularization term added to the diagonal of the sig_t matrix + rtol (float): threshold to filter eigenvector with a eigenvalue under rtol make inversion biased but much more numerically robust + + Returns: + np.ndarray: the inverse of the correlation matrix + """ + try: + np.fill_diagonal(sig_t, (1 + lamb)) + sig_t_inv = scipy.linalg.pinv(sig_t, rtol=rtol, atol=0) + return sig_t_inv + except np.linalg.LinAlgError: + return SummaryStatisticsImputation._invert_sig_t( + sig_t, lamb * 1.1, rtol * 1.1 + ) diff --git a/tests/gentropy/method/test_sumstat_imputation.py b/tests/gentropy/method/test_sumstat_imputation.py new file mode 100644 index 000000000..aea59f76b --- /dev/null +++ b/tests/gentropy/method/test_sumstat_imputation.py @@ -0,0 +1,31 @@ +"""Test of sumstat imputation functions.""" + +from __future__ import annotations + +import numpy as np +from gentropy.method.sumstat_imputation import SummaryStatisticsImputation + + +class TestSSImp: + """Test of RAISS sumstat imputation main function.""" + + def test_sumstat_imputation( + self: TestSSImp, sample_data_for_carma: list[np.ndarray] + ) -> None: + """Test of RAISS.""" + ld = sample_data_for_carma[0] + z = sample_data_for_carma[1] + + unknowns = [5] + known = [index for index in list(range(21)) if index not in unknowns] + sig_t = ld[known, :][:, known] + sig_i_t = ld[unknowns, :][:, known] + zt = z[known] + + _l = SummaryStatisticsImputation.raiss_model( + zt, sig_t, sig_i_t, lamb=0.01, rtol=0.01 + ) + assert ( + np.round(_l["imputation_r2"][0], decimals=4) == 0.9304 + and np.round(_l["mu"][0], decimals=4) == 9.7215 + ) From db73c2332b482466c04689b7db1561943728d74a Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Wed, 13 Mar 2024 10:08:39 +0000 Subject: [PATCH 25/86] chore: apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> --- src/airflow/dags/test_DAG.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/airflow/dags/test_DAG.py b/src/airflow/dags/test_DAG.py index 3f9a8ee13..6e3fe17dd 100644 --- a/src/airflow/dags/test_DAG.py +++ b/src/airflow/dags/test_DAG.py @@ -38,14 +38,14 @@ "source_bucket": GWAS_CATALOG_BUCKET_NAME, "source_object": "credible_set_datasets/gwas_catalog_curated", "destination_bucket": RELEASE_BUCKET_NAME, - "destination_object": f"releases/{RELEASE_VERSION}/credible_set/gwas_catalog_curated", + "destination_object": f"releases/{RELEASE_VERSION}/credible_set/gwas_catalog_pics_from_curation", }, # PICS credible sets from GWAS Catalog summary statistics: "gwas_catalog_sumstats_credible_set": { "source_bucket": GWAS_CATALOG_BUCKET_NAME, "source_object": "credible_set_datasets/gwas_catalog_summary_stats", "destination_bucket": RELEASE_BUCKET_NAME, - "destination_object": f"releases/{RELEASE_VERSION}/credible_set/gwas_catalog_summary_statistics", + "destination_object": f"releases/{RELEASE_VERSION}/credible_set/gwas_catalog_pics_from_summary_statistics", }, # GWAS Catalog manifest files: "gwas_catalog_manifests": { @@ -55,18 +55,18 @@ "destination_object": f"releases/{RELEASE_VERSION}/manifests", }, # eQTL Catalog study index: - "eqtl_catalog_study_index": { + "eqtl_catalogue_study_index": { "source_bucket": EQTL_BUCKET_NAME, "source_object": "study_index", "destination_bucket": RELEASE_BUCKET_NAME, - "destination_object": f"releases/{RELEASE_VERSION}/study_index/eqtl_catalog", + "destination_object": f"releases/{RELEASE_VERSION}/study_index/eqtl_catalogue", }, # eQTL Catalog SuSiE credible sets: - "eqtl_catalog_susie_credible_set": { + "eqtl_catalogue_susie_credible_set": { "source_bucket": EQTL_BUCKET_NAME, "source_object": "credible_set_datasets/susie", "destination_bucket": RELEASE_BUCKET_NAME, - "destination_object": f"releases/{RELEASE_VERSION}/credible_set/eqtl_catalog_susie", + "destination_object": f"releases/{RELEASE_VERSION}/credible_set/eqtl_catalogue_susie", }, # Finngen study index: "finngen_study_index": { @@ -100,7 +100,7 @@ # Test if release folder exists: -def test_release_folder_exists() -> bool: +def test_release_folder_absent() -> bool: """This function tests if the release folder exists. Returns: @@ -109,13 +109,13 @@ def test_release_folder_exists() -> bool: hook = GCSHook(gcp_conn_id="google_cloud_default") return ( False - if hook.exists(RELEASE_BUCKET_NAME, f"releases/{RELEASE_VERSION}") + return not hook.exists(RELEASE_BUCKET_NAME, f"releases/{RELEASE_VERSION}") else True ) # This operator meant to fail the DAG if the release folder exists: -test_folder = ShortCircuitOperator( +absent_release_folder = ShortCircuitOperator( task_id="test_release_folder_exists", python_callable=test_release_folder_exists, ) @@ -161,7 +161,7 @@ def test_release_folder_exists() -> bool: # DAG description: ( - # Test if release folder exists: + # Test that the release folder doesn't exist: test_folder # Run data transfer: >> data_transfer From 6fa81a6df682436c60810a363070a5f7277545cb Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Wed, 13 Mar 2024 10:52:05 +0000 Subject: [PATCH 26/86] refactor: tidying up the ETL DAG --- src/airflow/dags/common_airflow.py | 19 ++++++++++ src/airflow/dags/dag_genetics_etl.py | 35 ------------------- src/airflow/dags/eqtl_preprocess.py | 8 ++--- .../dags/{test_DAG.py => genetics_etl.py} | 29 +++++---------- 4 files changed, 32 insertions(+), 59 deletions(-) delete mode 100644 src/airflow/dags/dag_genetics_etl.py rename src/airflow/dags/{test_DAG.py => genetics_etl.py} (90%) diff --git a/src/airflow/dags/common_airflow.py b/src/airflow/dags/common_airflow.py index e3dc56ccb..cfacacd13 100644 --- a/src/airflow/dags/common_airflow.py +++ b/src/airflow/dags/common_airflow.py @@ -6,6 +6,7 @@ import pendulum import yaml +from airflow.providers.google.cloud.hooks.gcs import GCSHook from airflow.providers.google.cloud.operators.dataproc import ( ClusterGenerator, DataprocCreateClusterOperator, @@ -59,6 +60,24 @@ } +# Test if release folder exists: +def tests_cloud_folder_exist( + bucket_name: str, path: str, connection_id: str = "google_cloud_default" +) -> bool: + """This function tests if a folder exist in Google Cloud. + + Args: + bucket_name (str): Name of the GCP bucket. + path (str): Path to the folder in the bucket. + connection_id (str): Connection ID to use. Defaults to "google_cloud_default". + + Returns: + bool: True if folder exists, False otherwise. + """ + hook = GCSHook(gcp_conn_id=connection_id) + return hook.exists(bucket_name, path) + + def create_cluster( cluster_name: str, master_machine_type: str = "n1-highmem-16", diff --git a/src/airflow/dags/dag_genetics_etl.py b/src/airflow/dags/dag_genetics_etl.py deleted file mode 100644 index 1d27b8bba..000000000 --- a/src/airflow/dags/dag_genetics_etl.py +++ /dev/null @@ -1,35 +0,0 @@ -"""Airflow DAG for the ETL part of the pipeline.""" -from __future__ import annotations - -from pathlib import Path - -import common_airflow as common -from airflow.models.dag import DAG - -CLUSTER_NAME = "otg-etl" -SOURCE_CONFIG_FILE_PATH = Path(__file__).parent / "configs" / "dag.yaml" - - -with DAG( - dag_id=Path(__file__).stem, - description="Open Targets Genetics ETL workflow", - default_args=common.shared_dag_args, - **common.shared_dag_kwargs, -): - # Parse and define all steps and their prerequisites. - tasks = {} - steps = common.read_yaml_config(SOURCE_CONFIG_FILE_PATH) - for step in steps: - # Define task for the current step. - step_id = step["id"] - this_task = common.submit_step( - cluster_name=CLUSTER_NAME, - step_id=step_id, - task_id=step_id, - ) - # Chain prerequisites. - tasks[step_id] = this_task - for prerequisite in step.get("prerequisites", []): - this_task.set_upstream(tasks[prerequisite]) - # Construct the DAG with all tasks. - dag = common.generate_dag(cluster_name=CLUSTER_NAME, tasks=list(tasks.values())) diff --git a/src/airflow/dags/eqtl_preprocess.py b/src/airflow/dags/eqtl_preprocess.py index ec346d137..5433d8968 100644 --- a/src/airflow/dags/eqtl_preprocess.py +++ b/src/airflow/dags/eqtl_preprocess.py @@ -15,11 +15,11 @@ AUTOSCALING = "eqtl-preprocess" PROJECT_ID = "open-targets-genetics-dev" -EQTL_CATALOG_SUSIE_LOCATION = "gs://eqtl_catalog_data/ebi_ftp/susie" -TEMP_DECOMPRESS_LOCATION = "gs://eqtl_catalog_data/susie_decompressed_tmp" +EQTL_CATALOG_SUSIE_LOCATION = "gs://eqtl_catalogue_data/ebi_ftp/susie" +TEMP_DECOMPRESS_LOCATION = "gs://eqtl_catalogue_data/susie_decompressed_tmp" DECOMPRESS_FAILED_LOG = f"{TEMP_DECOMPRESS_LOCATION}.log" -STUDY_INDEX_PATH = "gs://eqtl_catalog_data/study_index" -CREDIBLE_SET_PATH = "gs://eqtl_catalog_data/credible_set_datasets/susie" +STUDY_INDEX_PATH = "gs://eqtl_catalogue_data/study_index" +CREDIBLE_SET_PATH = "gs://eqtl_catalogue_data/credible_set_datasets/susie" with DAG( dag_id=Path(__file__).stem, diff --git a/src/airflow/dags/test_DAG.py b/src/airflow/dags/genetics_etl.py similarity index 90% rename from src/airflow/dags/test_DAG.py rename to src/airflow/dags/genetics_etl.py index 6e3fe17dd..9c44a440e 100644 --- a/src/airflow/dags/test_DAG.py +++ b/src/airflow/dags/genetics_etl.py @@ -7,7 +7,6 @@ import common_airflow as common from airflow.models.dag import DAG from airflow.operators.python import ShortCircuitOperator -from airflow.providers.google.cloud.hooks.gcs import GCSHook from airflow.providers.google.cloud.transfers.gcs_to_gcs import GCSToGCSOperator from airflow.utils.task_group import TaskGroup @@ -20,7 +19,7 @@ # Datasource paths: GWAS_CATALOG_BUCKET_NAME = "gwas_catalog_data" -EQTL_BUCKET_NAME = "eqtl_catalog_data" +EQTL_BUCKET_NAME = "eqtl_catalogue_data" FINNGEN_BUCKET_NAME = "finngen_data" FINNGEN_RELEASE = "r10" @@ -99,25 +98,15 @@ } -# Test if release folder exists: -def test_release_folder_absent() -> bool: - """This function tests if the release folder exists. - - Returns: - bool: False if the release folder exists, True otherwise. - """ - hook = GCSHook(gcp_conn_id="google_cloud_default") - return ( - False - return not hook.exists(RELEASE_BUCKET_NAME, f"releases/{RELEASE_VERSION}") - else True - ) - - # This operator meant to fail the DAG if the release folder exists: -absent_release_folder = ShortCircuitOperator( +ensrure_absent_release_folder = ShortCircuitOperator( task_id="test_release_folder_exists", - python_callable=test_release_folder_exists, + # The short-circuit operator will fail the DAG if the test condition returns True (i.e. the release folder exists) + python_callable=not common.tests_cloud_folder_exist( + bucket_name=RELEASE_BUCKET_NAME, + path=f"releases/{RELEASE_VERSION}", + connection_id="google_cloud_default", + ), ) with DAG( @@ -162,7 +151,7 @@ def test_release_folder_absent() -> bool: # DAG description: ( # Test that the release folder doesn't exist: - test_folder + ensrure_absent_release_folder # Run data transfer: >> data_transfer # Once datasets are transferred, run the rest of the steps: From 8b312efabd4fe1cb5e9475dbe22d0f5f5286b52f Mon Sep 17 00:00:00 2001 From: David Ochoa Date: Wed, 13 Mar 2024 11:53:27 +0000 Subject: [PATCH 27/86] ci: bugfix in PR labeller (#537) --- .github/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index 060922825..fdb0e58b6 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,4 +1,4 @@ -version: "1" +version: 1 labels: - label: "size-XS" size: From 1095c67a8d9d713615bc8890a5c1926b53815e48 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 12:12:43 +0000 Subject: [PATCH 28/86] chore: pre-commit autoupdate (#539) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.3.0 → v0.3.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.3.0...v0.3.2) - [github.com/alessandrojcm/commitlint-pre-commit-hook: v9.11.0 → v9.13.0](https://github.com/alessandrojcm/commitlint-pre-commit-hook/compare/v9.11.0...v9.13.0) - [github.com/pre-commit/mirrors-mypy: v1.8.0 → v1.9.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.8.0...v1.9.0) - [github.com/python-poetry/poetry: 1.8.2 → 1.8.0](https://github.com/python-poetry/poetry/compare/1.8.2...1.8.0) * ci: keep poetry s latest release --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a8a2bf4c9..b1b9b1a43 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ ci: skip: [poetry-lock] repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.0 + rev: v0.3.2 hooks: - id: ruff args: @@ -59,14 +59,14 @@ repos: exclude: "CHANGELOG.md" - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook - rev: v9.11.0 + rev: v9.13.0 hooks: - id: commitlint additional_dependencies: ["@commitlint/config-conventional@18.6.3"] stages: [commit-msg] - repo: https://github.com/pre-commit/mirrors-mypy - rev: "v1.8.0" + rev: "v1.9.0" hooks: - id: mypy args: From cae2e40f2a43ff8eb107e0e5ea06091927fabe93 Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Thu, 14 Mar 2024 10:23:50 +0000 Subject: [PATCH 29/86] fix(dag): sorting out the checks for the existence of GCP folders --- poetry.lock | 124 +---------------------------- src/airflow/dags/common_airflow.py | 23 +++--- src/airflow/dags/genetics_etl.py | 15 ++-- 3 files changed, 19 insertions(+), 143 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3044f36c4..31758ef5d 100644 --- a/poetry.lock +++ b/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.8.2 and should not be changed by hand. [[package]] name = "aiodns" @@ -3426,106 +3426,6 @@ files = [ {file = "google_re2-1.1-3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d140c7b9395b4d1e654127aa1c99bcc603ed01000b7bc7e28c52562f1894ec12"}, {file = "google_re2-1.1-3-cp39-cp39-win32.whl", hash = "sha256:80c5fc200f64b2d903eeb07b8d6cefc620a872a0240c7caaa9aca05b20f5568f"}, {file = "google_re2-1.1-3-cp39-cp39-win_amd64.whl", hash = "sha256:9eb6dbcee9b5dc4069bbc0634f2eb039ca524a14bed5868fdf6560aaafcbca06"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0db114d7e1aa96dbcea452a40136d7d747d60cbb61394965774688ef59cccd4e"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:82133958e003a1344e5b7a791b9a9dd7560b5c8f96936dbe16f294604524a633"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:9e74fd441d1f3d917d3303e319f61b82cdbd96b9a5ba919377a6eef1504a1e2b"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:734a2e7a4541c57253b5ebee24f3f3366ba3658bcad01da25fb623c78723471a"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d88d5eecbc908abe16132456fae13690d0508f3ac5777f320ef95cb6cab9a961"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:b91db80b171ecec435a07977a227757dd487356701a32f556fa6fca5d0a40522"}, - {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b23129887a64bb9948af14c84705273ed1a40054e99433b4acccab4dcf6a226"}, - {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5dc1a0cc7cd19261dcaf76763e2499305dbb7e51dc69555167cdb8af98782698"}, - {file = "google_re2-1.1-4-cp310-cp310-win32.whl", hash = "sha256:3b2ab1e2420b5dd9743a2d6bc61b64e5f708563702a75b6db86637837eaeaf2f"}, - {file = "google_re2-1.1-4-cp310-cp310-win_amd64.whl", hash = "sha256:92efca1a7ef83b6df012d432a1cbc71d10ff42200640c0f9a5ff5b343a48e633"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854818fd4ce79787aca5ba459d6e5abe4ca9be2c684a5b06a7f1757452ca3708"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:4ceef51174b6f653b6659a8fdaa9c38960c5228b44b25be2a3bcd8566827554f"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:ee49087c3db7e6f5238105ab5299c09e9b77516fe8cfb0a37e5f1e813d76ecb8"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:dc2312854bdc01410acc5d935f1906a49cb1f28980341c20a68797ad89d8e178"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0dc0d2e42296fa84a3cb3e1bd667c6969389cd5cdf0786e6b1f911ae2d75375b"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6bf04ced98453b035f84320f348f67578024f44d2997498def149054eb860ae8"}, - {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d6b6ef11dc4ab322fa66c2f3561925f2b5372a879c3ed764d20e939e2fd3e5f"}, - {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0dcde6646fa9a97fd3692b3f6ae7daf7f3277d7500b6c253badeefa11db8956a"}, - {file = "google_re2-1.1-4-cp311-cp311-win32.whl", hash = "sha256:5f4f0229deb057348893574d5b0a96d055abebac6debf29d95b0c0e26524c9f6"}, - {file = "google_re2-1.1-4-cp311-cp311-win_amd64.whl", hash = "sha256:4713ddbe48a18875270b36a462b0eada5e84d6826f8df7edd328d8706b6f9d07"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:40a698300b8faddbb325662973f839489c89b960087060bd389c376828978a04"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:103d2d7ac92ba23911a151fd1fc7035cbf6dc92a7f6aea92270ebceb5cd5acd3"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:51fb7182bccab05e8258a2b6a63dda1a6b4a9e8dfb9b03ec50e50c49c2827dd4"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:65383022abd63d7b620221eba7935132b53244b8b463d8fdce498c93cf58b7b7"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396281fc68a9337157b3ffcd9392c6b7fcb8aab43e5bdab496262a81d56a4ecc"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8198adcfcff1c680e052044124621730fc48d08005f90a75487f5651f1ebfce2"}, - {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:81f7bff07c448aec4db9ca453d2126ece8710dbd9278b8bb09642045d3402a96"}, - {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7dacf730fd7d6ec71b11d6404b0b26e230814bfc8e9bb0d3f13bec9b5531f8d"}, - {file = "google_re2-1.1-4-cp312-cp312-win32.whl", hash = "sha256:8c764f62f4b1d89d1ef264853b6dd9fee14a89e9b86a81bc2157fe3531425eb4"}, - {file = "google_re2-1.1-4-cp312-cp312-win_amd64.whl", hash = "sha256:0be2666df4bc5381a5d693585f9bbfefb0bfd3c07530d7e403f181f5de47254a"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:5cb1b63a0bfd8dd65d39d2f3b2e5ae0a06ce4b2ce5818a1d1fc78a786a252673"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e41751ce6b67a95230edd0772226dc94c2952a2909674cd69df9804ed0125307"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:b998cfa2d50bf4c063e777c999a7e8645ec7e5d7baf43ad71b1e2e10bb0300c3"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:226ca3b0c2e970f3fc82001ac89e845ecc7a4bb7c68583e7a76cda70b61251a7"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:9adec1f734ebad7c72e56c85f205a281d8fe9bf6583bc21020157d3f2812ce89"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:9c34f3c64ba566af967d29e11299560e6fdfacd8ca695120a7062b6ed993b179"}, - {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b85385fe293838e0d0b6e19e6c48ba8c6f739ea92ce2e23b718afe7b343363"}, - {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4694daa8a8987cfb568847aa872f9990e930c91a68c892ead876411d4b9012c3"}, - {file = "google_re2-1.1-4-cp38-cp38-win32.whl", hash = "sha256:5e671e9be1668187e2995aac378de574fa40df70bb6f04657af4d30a79274ce0"}, - {file = "google_re2-1.1-4-cp38-cp38-win_amd64.whl", hash = "sha256:f66c164d6049a8299f6dfcfa52d1580576b4b9724d6fcdad2f36f8f5da9304b6"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:25cb17ae0993a48c70596f3a3ef5d659638106401cc8193f51c0d7961b3b3eb7"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5f101f86d14ca94ca4dcf63cceaa73d351f2be2481fcaa29d9e68eeab0dc2a88"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:4e82591e85bf262a6d74cff152867e05fc97867c68ba81d6836ff8b0e7e62365"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:1f61c09b93ffd34b1e2557e5a9565039f935407a5786dbad46f64f1a484166e6"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:12b390ad8c7e74bab068732f774e75e0680dade6469b249a721f3432f90edfc3"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:1284343eb31c2e82ed2d8159f33ba6842238a56782c881b07845a6d85613b055"}, - {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c7b38e0daf2c06e4d3163f4c732ab3ad2521aecfed6605b69e4482c612da303"}, - {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f4d4f0823e8b2f6952a145295b1ff25245ce9bb136aff6fe86452e507d4c1dd"}, - {file = "google_re2-1.1-4-cp39-cp39-win32.whl", hash = "sha256:1afae56b2a07bb48cfcfefaa15ed85bae26a68f5dc7f9e128e6e6ea36914e847"}, - {file = "google_re2-1.1-4-cp39-cp39-win_amd64.whl", hash = "sha256:aa7d6d05911ab9c8adbf3c225a7a120ab50fd2784ac48f2f0d140c0b7afc2b55"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:222fc2ee0e40522de0b21ad3bc90ab8983be3bf3cec3d349c80d76c8bb1a4beb"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d4763b0b9195b72132a4e7de8e5a9bf1f05542f442a9115aa27cfc2a8004f581"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:209649da10c9d4a93d8a4d100ecbf9cc3b0252169426bec3e8b4ad7e57d600cf"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:68813aa333c1604a2df4a495b2a6ed065d7c8aebf26cc7e7abb5a6835d08353c"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:370a23ec775ad14e9d1e71474d56f381224dcf3e72b15d8ca7b4ad7dd9cd5853"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:14664a66a3ddf6bc9e56f401bf029db2d169982c53eff3f5876399104df0e9a6"}, - {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea3722cc4932cbcebd553b69dce1b4a73572823cff4e6a244f1c855da21d511"}, - {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e14bb264c40fd7c627ef5678e295370cd6ba95ca71d835798b6e37502fc4c690"}, - {file = "google_re2-1.1-5-cp310-cp310-win32.whl", hash = "sha256:39512cd0151ea4b3969c992579c79b423018b464624ae955be685fc07d94556c"}, - {file = "google_re2-1.1-5-cp310-cp310-win_amd64.whl", hash = "sha256:ac66537aa3bc5504320d922b73156909e3c2b6da19739c866502f7827b3f9fdf"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b5ea68d54890c9edb1b930dcb2658819354e5d3f2201f811798bbc0a142c2b4"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:33443511b6b83c35242370908efe2e8e1e7cae749c766b2b247bf30e8616066c"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:413d77bdd5ba0bfcada428b4c146e87707452ec50a4091ec8e8ba1413d7e0619"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:5171686e43304996a34baa2abcee6f28b169806d0e583c16d55e5656b092a414"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b284db130283771558e31a02d8eb8fb756156ab98ce80035ae2e9e3a5f307c4"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:296e6aed0b169648dc4b870ff47bd34c702a32600adb9926154569ef51033f47"}, - {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:38d50e68ead374160b1e656bbb5d101f0b95fb4cc57f4a5c12100155001480c5"}, - {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a0416a35921e5041758948bcb882456916f22845f66a93bc25070ef7262b72a"}, - {file = "google_re2-1.1-5-cp311-cp311-win32.whl", hash = "sha256:a1d59568bbb5de5dd56dd6cdc79907db26cce63eb4429260300c65f43469e3e7"}, - {file = "google_re2-1.1-5-cp311-cp311-win_amd64.whl", hash = "sha256:72f5a2f179648b8358737b2b493549370debd7d389884a54d331619b285514e3"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:cbc72c45937b1dc5acac3560eb1720007dccca7c9879138ff874c7f6baf96005"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5fadd1417fbef7235fa9453dba4eb102e6e7d94b1e4c99d5fa3dd4e288d0d2ae"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:040f85c63cc02696485b59b187a5ef044abe2f99b92b4fb399de40b7d2904ccc"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:64e3b975ee6d9bbb2420494e41f929c1a0de4bcc16d86619ab7a87f6ea80d6bd"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8ee370413e00f4d828eaed0e83b8af84d7a72e8ee4f4bd5d3078bc741dfc430a"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:5b89383001079323f693ba592d7aad789d7a02e75adb5d3368d92b300f5963fd"}, - {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:63cb4fdfbbda16ae31b41a6388ea621510db82feb8217a74bf36552ecfcd50ad"}, - {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ebedd84ae8be10b7a71a16162376fd67a2386fe6361ef88c622dcf7fd679daf"}, - {file = "google_re2-1.1-5-cp312-cp312-win32.whl", hash = "sha256:c8e22d1692bc2c81173330c721aff53e47ffd3c4403ff0cd9d91adfd255dd150"}, - {file = "google_re2-1.1-5-cp312-cp312-win_amd64.whl", hash = "sha256:5197a6af438bb8c4abda0bbe9c4fbd6c27c159855b211098b29d51b73e4cbcf6"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b6727e0b98417e114b92688ad2aa256102ece51f29b743db3d831df53faf1ce3"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:711e2b6417eb579c61a4951029d844f6b95b9b373b213232efd413659889a363"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:71ae8b3df22c5c154c8af0f0e99d234a450ef1644393bc2d7f53fc8c0a1e111c"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:94a04e214bc521a3807c217d50cf099bbdd0c0a80d2d996c0741dbb995b5f49f"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:a770f75358508a9110c81a1257721f70c15d9bb592a2fb5c25ecbd13566e52a5"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:07c9133357f7e0b17c6694d5dcb82e0371f695d7c25faef2ff8117ef375343ff"}, - {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:204ca6b1cf2021548f4a9c29ac015e0a4ab0a7b6582bf2183d838132b60c8fda"}, - {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b95857c2c654f419ca684ec38c9c3325c24e6ba7d11910a5110775a557bb18"}, - {file = "google_re2-1.1-5-cp38-cp38-win32.whl", hash = "sha256:347ac770e091a0364e822220f8d26ab53e6fdcdeaec635052000845c5a3fb869"}, - {file = "google_re2-1.1-5-cp38-cp38-win_amd64.whl", hash = "sha256:ec32bb6de7ffb112a07d210cf9f797b7600645c2d5910703fa07f456dd2150e0"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:eb5adf89060f81c5ff26c28e261e6b4997530a923a6093c9726b8dec02a9a326"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a22630c9dd9ceb41ca4316bccba2643a8b1d5c198f21c00ed5b50a94313aaf10"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:544dc17fcc2d43ec05f317366375796351dec44058e1164e03c3f7d050284d58"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:19710af5ea88751c7768575b23765ce0dfef7324d2539de576f75cdc319d6654"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:f82995a205e08ad896f4bd5ce4847c834fab877e1772a44e5f262a647d8a1dec"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:63533c4d58da9dc4bc040250f1f52b089911699f0368e0e6e15f996387a984ed"}, - {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79e00fcf0cb04ea35a22b9014712d448725ce4ddc9f08cc818322566176ca4b0"}, - {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc41afcefee2da6c4ed883a93d7f527c4b960cd1d26bbb0020a7b8c2d341a60a"}, - {file = "google_re2-1.1-5-cp39-cp39-win32.whl", hash = "sha256:486730b5e1f1c31b0abc6d80abe174ce4f1188fe17d1b50698f2bf79dc6e44be"}, - {file = "google_re2-1.1-5-cp39-cp39-win_amd64.whl", hash = "sha256:4de637ca328f1d23209e80967d1b987d6b352cd01b3a52a84b4d742c69c3da6c"}, ] [[package]] @@ -6796,7 +6696,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"}, @@ -7721,51 +7620,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.50-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:54138aa80d2dedd364f4e8220eef284c364d3270aaef621570aa2bd99902e2e8"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, {file = "SQLAlchemy-1.4.50-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:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win32.whl", hash = "sha256:6c78e3fb4a58e900ec433b6b5f4efe1a0bf81bbb366ae7761c6e0051dd310ee3"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win_amd64.whl", hash = "sha256:d55f7a33e8631e15af1b9e67c9387c894fedf6deb1a19f94be8731263c51d515"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:324b1fdd50e960a93a231abb11d7e0f227989a371e3b9bd4f1259920f15d0304"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win32.whl", hash = "sha256:8bdab03ff34fc91bfab005e96f672ae207d87e0ac7ee716d74e87e7046079d8b"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win_amd64.whl", hash = "sha256:52e01d60b06f03b0a5fc303c8aada405729cbc91a56a64cead8cb7c0b9b13c1a"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:77fde9bf74f4659864c8e26ac08add8b084e479b9a18388e7db377afc391f926"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win32.whl", hash = "sha256:e86c920b7d362cfa078c8b40e7765cbc34efb44c1007d7557920be9ddf138ec7"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win_amd64.whl", hash = "sha256:6b3df20fbbcbcd1c1d43f49ccf3eefb370499088ca251ded632b8cbaee1d497d"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:fb9adc4c6752d62c6078c107d23327aa3023ef737938d0135ece8ffb67d07030"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, {file = "SQLAlchemy-1.4.50-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:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win32.whl", hash = "sha256:1b9c4359d3198f341480e57494471201e736de459452caaacf6faa1aca852bd8"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win_amd64.whl", hash = "sha256:35e4520f7c33c77f2636a1e860e4f8cafaac84b0b44abe5de4c6c8890b6aaa6d"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f5b1fb2943d13aba17795a770d22a2ec2214fc65cff46c487790192dda3a3ee7"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, {file = "SQLAlchemy-1.4.50-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:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win32.whl", hash = "sha256:7b4396452273aedda447e5aebe68077aa7516abf3b3f48408793e771d696f397"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win_amd64.whl", hash = "sha256:752f9df3dddbacb5f42d8405b2d5885675a93501eb5f86b88f2e47a839cf6337"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:35c7ed095a4b17dbc8813a2bfb38b5998318439da8e6db10a804df855e3a9e3a"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, {file = "SQLAlchemy-1.4.50-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:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win32.whl", hash = "sha256:8a219688297ee5e887a93ce4679c87a60da4a5ce62b7cb4ee03d47e9e767f558"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl", hash = "sha256:a648770db002452703b729bdcf7d194e904aa4092b9a4d6ab185b48d13252f63"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:4be4da121d297ce81e1ba745a0a0521c6cf8704634d7b520e350dce5964c71ac"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, {file = "SQLAlchemy-1.4.50-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:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win32.whl", hash = "sha256:a7c9b9dca64036008962dd6b0d9fdab2dfdbf96c82f74dbd5d86006d8d24a30f"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win_amd64.whl", hash = "sha256:df200762efbd672f7621b253721644642ff04a6ff957236e0e2fe56d9ca34d2c"}, {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, ] diff --git a/src/airflow/dags/common_airflow.py b/src/airflow/dags/common_airflow.py index cfacacd13..9d4f18503 100644 --- a/src/airflow/dags/common_airflow.py +++ b/src/airflow/dags/common_airflow.py @@ -6,7 +6,6 @@ import pendulum import yaml -from airflow.providers.google.cloud.hooks.gcs import GCSHook from airflow.providers.google.cloud.operators.dataproc import ( ClusterGenerator, DataprocCreateClusterOperator, @@ -14,7 +13,7 @@ DataprocSubmitJobOperator, ) from airflow.utils.trigger_rule import TriggerRule -from google.cloud import dataproc_v1 +from google.cloud import dataproc_v1, storage if TYPE_CHECKING: from pathlib import Path @@ -60,22 +59,20 @@ } -# Test if release folder exists: -def tests_cloud_folder_exist( - bucket_name: str, path: str, connection_id: str = "google_cloud_default" -) -> bool: - """This function tests if a folder exist in Google Cloud. +def check_gcp_folder_exists(bucket_name: str, folder_path: str) -> bool: + """Check if a folder exists in a Google Cloud bucket. Args: - bucket_name (str): Name of the GCP bucket. - path (str): Path to the folder in the bucket. - connection_id (str): Connection ID to use. Defaults to "google_cloud_default". + bucket_name (str): The name of the Google Cloud bucket. + folder_path (str): The path of the folder to check. Returns: - bool: True if folder exists, False otherwise. + bool: True if the folder exists, False otherwise. """ - hook = GCSHook(gcp_conn_id=connection_id) - return hook.exists(bucket_name, path) + client = storage.Client() + bucket = client.get_bucket(bucket_name) + blobs = bucket.list_blobs(prefix=folder_path) + return any(blobs) def create_cluster( diff --git a/src/airflow/dags/genetics_etl.py b/src/airflow/dags/genetics_etl.py index 9c44a440e..55f343648 100644 --- a/src/airflow/dags/genetics_etl.py +++ b/src/airflow/dags/genetics_etl.py @@ -99,14 +99,15 @@ # This operator meant to fail the DAG if the release folder exists: -ensrure_absent_release_folder = ShortCircuitOperator( +ensure_release_folder_not_exists = ShortCircuitOperator( task_id="test_release_folder_exists", - # The short-circuit operator will fail the DAG if the test condition returns True (i.e. the release folder exists) - python_callable=not common.tests_cloud_folder_exist( - bucket_name=RELEASE_BUCKET_NAME, - path=f"releases/{RELEASE_VERSION}", - connection_id="google_cloud_default", + python_callable=lambda bucket, path: not common.check_gcp_folder_exists( + bucket, path ), + op_kwargs={ + "bucket": RELEASE_BUCKET_NAME, + "path": f"releases/{RELEASE_VERSION}", + }, ) with DAG( @@ -151,7 +152,7 @@ # DAG description: ( # Test that the release folder doesn't exist: - ensrure_absent_release_folder + ensure_release_folder_not_exists # Run data transfer: >> data_transfer # Once datasets are transferred, run the rest of the steps: From 01abe9678bb3620648cea4b2a9ad1d48d9f468d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 12:30:45 +0000 Subject: [PATCH 30/86] build(deps-dev): bump deptry from 0.12.0 to 0.14.0 (#548) Bumps [deptry](https://github.com/fpgmaas/deptry) from 0.12.0 to 0.14.0. - [Release notes](https://github.com/fpgmaas/deptry/releases) - [Changelog](https://github.com/fpgmaas/deptry/blob/main/CHANGELOG.md) - [Commits](https://github.com/fpgmaas/deptry/compare/0.12.0...0.14.0) --- updated-dependencies: - dependency-name: deptry dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 142 ++++++++++++++++++++++++++++++++++++++++++++++--- pyproject.toml | 2 +- 2 files changed, 135 insertions(+), 9 deletions(-) diff --git a/poetry.lock b/poetry.lock index 31758ef5d..f725d304a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 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 = "aiodns" @@ -1627,21 +1627,25 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "deptry" -version = "0.12.0" +version = "0.14.0" description = "A command line utility to check for unused, missing and transitive dependencies in a Python project." optional = false -python-versions = ">=3.8,<4.0" +python-versions = ">=3.8, <4.0" files = [ - {file = "deptry-0.12.0-py3-none-any.whl", hash = "sha256:69c801a6ae1b39c7b8e0daf40dbe8b75f1f161277d206dd8f921f32cd22dad91"}, - {file = "deptry-0.12.0.tar.gz", hash = "sha256:ac3cd32d149c92a9af12f63cd9486ddd1760f0277ed0cf306c6ef0388f57ff0a"}, + {file = "deptry-0.14.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:951d40e40cca6b538d8b1992e9532c082757598c73249469d3f6f90cf3344c9f"}, + {file = "deptry-0.14.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:59e0808507ffb57a0ce9b8c40ecda7b4a235a0627f00485d8e6104bf71dc99f8"}, + {file = "deptry-0.14.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5e6b7485c3ece10eb94b2787258282275687a101587c6f88f65a6eadc65c4a4"}, + {file = "deptry-0.14.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d5a8299b9627dc32352caf99c5e8fdff0227539ccbe1535a6145649b5caa394"}, + {file = "deptry-0.14.0-cp38-abi3-win_amd64.whl", hash = "sha256:d55654025b567739a57f9b6b8467a21c65a30c21e834b2d8cb225618b320874c"}, + {file = "deptry-0.14.0.tar.gz", hash = "sha256:3415c65c0734f6dfafa1321c77c1c9fafb6d6f88d0f8441e5b2cfb5b3b41f71b"}, ] [package.dependencies] chardet = ">=4.0.0" -click = ">=8.0.0,<9.0.0" +click = ">=8.0.0,<9" colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} pathspec = ">=0.9.0" -tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [[package]] name = "dill" @@ -3426,6 +3430,106 @@ files = [ {file = "google_re2-1.1-3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d140c7b9395b4d1e654127aa1c99bcc603ed01000b7bc7e28c52562f1894ec12"}, {file = "google_re2-1.1-3-cp39-cp39-win32.whl", hash = "sha256:80c5fc200f64b2d903eeb07b8d6cefc620a872a0240c7caaa9aca05b20f5568f"}, {file = "google_re2-1.1-3-cp39-cp39-win_amd64.whl", hash = "sha256:9eb6dbcee9b5dc4069bbc0634f2eb039ca524a14bed5868fdf6560aaafcbca06"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0db114d7e1aa96dbcea452a40136d7d747d60cbb61394965774688ef59cccd4e"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:82133958e003a1344e5b7a791b9a9dd7560b5c8f96936dbe16f294604524a633"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:9e74fd441d1f3d917d3303e319f61b82cdbd96b9a5ba919377a6eef1504a1e2b"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:734a2e7a4541c57253b5ebee24f3f3366ba3658bcad01da25fb623c78723471a"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d88d5eecbc908abe16132456fae13690d0508f3ac5777f320ef95cb6cab9a961"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:b91db80b171ecec435a07977a227757dd487356701a32f556fa6fca5d0a40522"}, + {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b23129887a64bb9948af14c84705273ed1a40054e99433b4acccab4dcf6a226"}, + {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5dc1a0cc7cd19261dcaf76763e2499305dbb7e51dc69555167cdb8af98782698"}, + {file = "google_re2-1.1-4-cp310-cp310-win32.whl", hash = "sha256:3b2ab1e2420b5dd9743a2d6bc61b64e5f708563702a75b6db86637837eaeaf2f"}, + {file = "google_re2-1.1-4-cp310-cp310-win_amd64.whl", hash = "sha256:92efca1a7ef83b6df012d432a1cbc71d10ff42200640c0f9a5ff5b343a48e633"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854818fd4ce79787aca5ba459d6e5abe4ca9be2c684a5b06a7f1757452ca3708"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:4ceef51174b6f653b6659a8fdaa9c38960c5228b44b25be2a3bcd8566827554f"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:ee49087c3db7e6f5238105ab5299c09e9b77516fe8cfb0a37e5f1e813d76ecb8"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:dc2312854bdc01410acc5d935f1906a49cb1f28980341c20a68797ad89d8e178"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0dc0d2e42296fa84a3cb3e1bd667c6969389cd5cdf0786e6b1f911ae2d75375b"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6bf04ced98453b035f84320f348f67578024f44d2997498def149054eb860ae8"}, + {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d6b6ef11dc4ab322fa66c2f3561925f2b5372a879c3ed764d20e939e2fd3e5f"}, + {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0dcde6646fa9a97fd3692b3f6ae7daf7f3277d7500b6c253badeefa11db8956a"}, + {file = "google_re2-1.1-4-cp311-cp311-win32.whl", hash = "sha256:5f4f0229deb057348893574d5b0a96d055abebac6debf29d95b0c0e26524c9f6"}, + {file = "google_re2-1.1-4-cp311-cp311-win_amd64.whl", hash = "sha256:4713ddbe48a18875270b36a462b0eada5e84d6826f8df7edd328d8706b6f9d07"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:40a698300b8faddbb325662973f839489c89b960087060bd389c376828978a04"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:103d2d7ac92ba23911a151fd1fc7035cbf6dc92a7f6aea92270ebceb5cd5acd3"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:51fb7182bccab05e8258a2b6a63dda1a6b4a9e8dfb9b03ec50e50c49c2827dd4"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:65383022abd63d7b620221eba7935132b53244b8b463d8fdce498c93cf58b7b7"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396281fc68a9337157b3ffcd9392c6b7fcb8aab43e5bdab496262a81d56a4ecc"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8198adcfcff1c680e052044124621730fc48d08005f90a75487f5651f1ebfce2"}, + {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:81f7bff07c448aec4db9ca453d2126ece8710dbd9278b8bb09642045d3402a96"}, + {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7dacf730fd7d6ec71b11d6404b0b26e230814bfc8e9bb0d3f13bec9b5531f8d"}, + {file = "google_re2-1.1-4-cp312-cp312-win32.whl", hash = "sha256:8c764f62f4b1d89d1ef264853b6dd9fee14a89e9b86a81bc2157fe3531425eb4"}, + {file = "google_re2-1.1-4-cp312-cp312-win_amd64.whl", hash = "sha256:0be2666df4bc5381a5d693585f9bbfefb0bfd3c07530d7e403f181f5de47254a"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:5cb1b63a0bfd8dd65d39d2f3b2e5ae0a06ce4b2ce5818a1d1fc78a786a252673"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e41751ce6b67a95230edd0772226dc94c2952a2909674cd69df9804ed0125307"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:b998cfa2d50bf4c063e777c999a7e8645ec7e5d7baf43ad71b1e2e10bb0300c3"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:226ca3b0c2e970f3fc82001ac89e845ecc7a4bb7c68583e7a76cda70b61251a7"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:9adec1f734ebad7c72e56c85f205a281d8fe9bf6583bc21020157d3f2812ce89"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:9c34f3c64ba566af967d29e11299560e6fdfacd8ca695120a7062b6ed993b179"}, + {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b85385fe293838e0d0b6e19e6c48ba8c6f739ea92ce2e23b718afe7b343363"}, + {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4694daa8a8987cfb568847aa872f9990e930c91a68c892ead876411d4b9012c3"}, + {file = "google_re2-1.1-4-cp38-cp38-win32.whl", hash = "sha256:5e671e9be1668187e2995aac378de574fa40df70bb6f04657af4d30a79274ce0"}, + {file = "google_re2-1.1-4-cp38-cp38-win_amd64.whl", hash = "sha256:f66c164d6049a8299f6dfcfa52d1580576b4b9724d6fcdad2f36f8f5da9304b6"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:25cb17ae0993a48c70596f3a3ef5d659638106401cc8193f51c0d7961b3b3eb7"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5f101f86d14ca94ca4dcf63cceaa73d351f2be2481fcaa29d9e68eeab0dc2a88"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:4e82591e85bf262a6d74cff152867e05fc97867c68ba81d6836ff8b0e7e62365"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:1f61c09b93ffd34b1e2557e5a9565039f935407a5786dbad46f64f1a484166e6"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:12b390ad8c7e74bab068732f774e75e0680dade6469b249a721f3432f90edfc3"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:1284343eb31c2e82ed2d8159f33ba6842238a56782c881b07845a6d85613b055"}, + {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c7b38e0daf2c06e4d3163f4c732ab3ad2521aecfed6605b69e4482c612da303"}, + {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f4d4f0823e8b2f6952a145295b1ff25245ce9bb136aff6fe86452e507d4c1dd"}, + {file = "google_re2-1.1-4-cp39-cp39-win32.whl", hash = "sha256:1afae56b2a07bb48cfcfefaa15ed85bae26a68f5dc7f9e128e6e6ea36914e847"}, + {file = "google_re2-1.1-4-cp39-cp39-win_amd64.whl", hash = "sha256:aa7d6d05911ab9c8adbf3c225a7a120ab50fd2784ac48f2f0d140c0b7afc2b55"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:222fc2ee0e40522de0b21ad3bc90ab8983be3bf3cec3d349c80d76c8bb1a4beb"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d4763b0b9195b72132a4e7de8e5a9bf1f05542f442a9115aa27cfc2a8004f581"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:209649da10c9d4a93d8a4d100ecbf9cc3b0252169426bec3e8b4ad7e57d600cf"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:68813aa333c1604a2df4a495b2a6ed065d7c8aebf26cc7e7abb5a6835d08353c"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:370a23ec775ad14e9d1e71474d56f381224dcf3e72b15d8ca7b4ad7dd9cd5853"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:14664a66a3ddf6bc9e56f401bf029db2d169982c53eff3f5876399104df0e9a6"}, + {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea3722cc4932cbcebd553b69dce1b4a73572823cff4e6a244f1c855da21d511"}, + {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e14bb264c40fd7c627ef5678e295370cd6ba95ca71d835798b6e37502fc4c690"}, + {file = "google_re2-1.1-5-cp310-cp310-win32.whl", hash = "sha256:39512cd0151ea4b3969c992579c79b423018b464624ae955be685fc07d94556c"}, + {file = "google_re2-1.1-5-cp310-cp310-win_amd64.whl", hash = "sha256:ac66537aa3bc5504320d922b73156909e3c2b6da19739c866502f7827b3f9fdf"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b5ea68d54890c9edb1b930dcb2658819354e5d3f2201f811798bbc0a142c2b4"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:33443511b6b83c35242370908efe2e8e1e7cae749c766b2b247bf30e8616066c"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:413d77bdd5ba0bfcada428b4c146e87707452ec50a4091ec8e8ba1413d7e0619"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:5171686e43304996a34baa2abcee6f28b169806d0e583c16d55e5656b092a414"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b284db130283771558e31a02d8eb8fb756156ab98ce80035ae2e9e3a5f307c4"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:296e6aed0b169648dc4b870ff47bd34c702a32600adb9926154569ef51033f47"}, + {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:38d50e68ead374160b1e656bbb5d101f0b95fb4cc57f4a5c12100155001480c5"}, + {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a0416a35921e5041758948bcb882456916f22845f66a93bc25070ef7262b72a"}, + {file = "google_re2-1.1-5-cp311-cp311-win32.whl", hash = "sha256:a1d59568bbb5de5dd56dd6cdc79907db26cce63eb4429260300c65f43469e3e7"}, + {file = "google_re2-1.1-5-cp311-cp311-win_amd64.whl", hash = "sha256:72f5a2f179648b8358737b2b493549370debd7d389884a54d331619b285514e3"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:cbc72c45937b1dc5acac3560eb1720007dccca7c9879138ff874c7f6baf96005"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5fadd1417fbef7235fa9453dba4eb102e6e7d94b1e4c99d5fa3dd4e288d0d2ae"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:040f85c63cc02696485b59b187a5ef044abe2f99b92b4fb399de40b7d2904ccc"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:64e3b975ee6d9bbb2420494e41f929c1a0de4bcc16d86619ab7a87f6ea80d6bd"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8ee370413e00f4d828eaed0e83b8af84d7a72e8ee4f4bd5d3078bc741dfc430a"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:5b89383001079323f693ba592d7aad789d7a02e75adb5d3368d92b300f5963fd"}, + {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:63cb4fdfbbda16ae31b41a6388ea621510db82feb8217a74bf36552ecfcd50ad"}, + {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ebedd84ae8be10b7a71a16162376fd67a2386fe6361ef88c622dcf7fd679daf"}, + {file = "google_re2-1.1-5-cp312-cp312-win32.whl", hash = "sha256:c8e22d1692bc2c81173330c721aff53e47ffd3c4403ff0cd9d91adfd255dd150"}, + {file = "google_re2-1.1-5-cp312-cp312-win_amd64.whl", hash = "sha256:5197a6af438bb8c4abda0bbe9c4fbd6c27c159855b211098b29d51b73e4cbcf6"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b6727e0b98417e114b92688ad2aa256102ece51f29b743db3d831df53faf1ce3"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:711e2b6417eb579c61a4951029d844f6b95b9b373b213232efd413659889a363"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:71ae8b3df22c5c154c8af0f0e99d234a450ef1644393bc2d7f53fc8c0a1e111c"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:94a04e214bc521a3807c217d50cf099bbdd0c0a80d2d996c0741dbb995b5f49f"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:a770f75358508a9110c81a1257721f70c15d9bb592a2fb5c25ecbd13566e52a5"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:07c9133357f7e0b17c6694d5dcb82e0371f695d7c25faef2ff8117ef375343ff"}, + {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:204ca6b1cf2021548f4a9c29ac015e0a4ab0a7b6582bf2183d838132b60c8fda"}, + {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b95857c2c654f419ca684ec38c9c3325c24e6ba7d11910a5110775a557bb18"}, + {file = "google_re2-1.1-5-cp38-cp38-win32.whl", hash = "sha256:347ac770e091a0364e822220f8d26ab53e6fdcdeaec635052000845c5a3fb869"}, + {file = "google_re2-1.1-5-cp38-cp38-win_amd64.whl", hash = "sha256:ec32bb6de7ffb112a07d210cf9f797b7600645c2d5910703fa07f456dd2150e0"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:eb5adf89060f81c5ff26c28e261e6b4997530a923a6093c9726b8dec02a9a326"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a22630c9dd9ceb41ca4316bccba2643a8b1d5c198f21c00ed5b50a94313aaf10"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:544dc17fcc2d43ec05f317366375796351dec44058e1164e03c3f7d050284d58"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:19710af5ea88751c7768575b23765ce0dfef7324d2539de576f75cdc319d6654"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:f82995a205e08ad896f4bd5ce4847c834fab877e1772a44e5f262a647d8a1dec"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:63533c4d58da9dc4bc040250f1f52b089911699f0368e0e6e15f996387a984ed"}, + {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79e00fcf0cb04ea35a22b9014712d448725ce4ddc9f08cc818322566176ca4b0"}, + {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc41afcefee2da6c4ed883a93d7f527c4b960cd1d26bbb0020a7b8c2d341a60a"}, + {file = "google_re2-1.1-5-cp39-cp39-win32.whl", hash = "sha256:486730b5e1f1c31b0abc6d80abe174ce4f1188fe17d1b50698f2bf79dc6e44be"}, + {file = "google_re2-1.1-5-cp39-cp39-win_amd64.whl", hash = "sha256:4de637ca328f1d23209e80967d1b987d6b352cd01b3a52a84b4d742c69c3da6c"}, ] [[package]] @@ -6696,6 +6800,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"}, @@ -7620,30 +7725,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.50-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:54138aa80d2dedd364f4e8220eef284c364d3270aaef621570aa2bd99902e2e8"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, {file = "SQLAlchemy-1.4.50-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:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, + {file = "SQLAlchemy-1.4.50-cp310-cp310-win32.whl", hash = "sha256:6c78e3fb4a58e900ec433b6b5f4efe1a0bf81bbb366ae7761c6e0051dd310ee3"}, + {file = "SQLAlchemy-1.4.50-cp310-cp310-win_amd64.whl", hash = "sha256:d55f7a33e8631e15af1b9e67c9387c894fedf6deb1a19f94be8731263c51d515"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:324b1fdd50e960a93a231abb11d7e0f227989a371e3b9bd4f1259920f15d0304"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-win32.whl", hash = "sha256:8bdab03ff34fc91bfab005e96f672ae207d87e0ac7ee716d74e87e7046079d8b"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-win_amd64.whl", hash = "sha256:52e01d60b06f03b0a5fc303c8aada405729cbc91a56a64cead8cb7c0b9b13c1a"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:77fde9bf74f4659864c8e26ac08add8b084e479b9a18388e7db377afc391f926"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-win32.whl", hash = "sha256:e86c920b7d362cfa078c8b40e7765cbc34efb44c1007d7557920be9ddf138ec7"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-win_amd64.whl", hash = "sha256:6b3df20fbbcbcd1c1d43f49ccf3eefb370499088ca251ded632b8cbaee1d497d"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:fb9adc4c6752d62c6078c107d23327aa3023ef737938d0135ece8ffb67d07030"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, {file = "SQLAlchemy-1.4.50-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:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-win32.whl", hash = "sha256:1b9c4359d3198f341480e57494471201e736de459452caaacf6faa1aca852bd8"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-win_amd64.whl", hash = "sha256:35e4520f7c33c77f2636a1e860e4f8cafaac84b0b44abe5de4c6c8890b6aaa6d"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f5b1fb2943d13aba17795a770d22a2ec2214fc65cff46c487790192dda3a3ee7"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, {file = "SQLAlchemy-1.4.50-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:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-win32.whl", hash = "sha256:7b4396452273aedda447e5aebe68077aa7516abf3b3f48408793e771d696f397"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-win_amd64.whl", hash = "sha256:752f9df3dddbacb5f42d8405b2d5885675a93501eb5f86b88f2e47a839cf6337"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:35c7ed095a4b17dbc8813a2bfb38b5998318439da8e6db10a804df855e3a9e3a"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, {file = "SQLAlchemy-1.4.50-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:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-win32.whl", hash = "sha256:8a219688297ee5e887a93ce4679c87a60da4a5ce62b7cb4ee03d47e9e767f558"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl", hash = "sha256:a648770db002452703b729bdcf7d194e904aa4092b9a4d6ab185b48d13252f63"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:4be4da121d297ce81e1ba745a0a0521c6cf8704634d7b520e350dce5964c71ac"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, {file = "SQLAlchemy-1.4.50-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:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-win32.whl", hash = "sha256:a7c9b9dca64036008962dd6b0d9fdab2dfdbf96c82f74dbd5d86006d8d24a30f"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-win_amd64.whl", hash = "sha256:df200762efbd672f7621b253721644642ff04a6ff957236e0e2fe56d9ca34d2c"}, {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, ] @@ -8480,4 +8606,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10, <3.11" -content-hash = "3e83722356bcba15ea8f788d4bc43f05820f1577adef4c558aa30676f5bc7c08" +content-hash = "7e49947f0842c795031610eba766ccca04acb4944d62c6bc2dc522fb4c702cc4" diff --git a/pyproject.toml b/pyproject.toml index 5680f5d39..e83666536 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -74,7 +74,7 @@ apache-airflow = "^2.8.0" apache-airflow-providers-google = "^10.13.1" pydoclint = ">=0.3.8,<0.5.0" prettier = "^0.0.7" -deptry = "^0.12.0" +deptry = ">=0.12,<0.15" python-semantic-release = ">=8.7,<10.0" yamllint = "^1.33.0" From eaefc98c9346866e75eecdef309293a8a6af4083 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 12:41:41 +0000 Subject: [PATCH 31/86] build(deps-dev): bump mkdocstrings-python from 1.8.0 to 1.9.0 (#549) Bumps [mkdocstrings-python](https://github.com/mkdocstrings/python) from 1.8.0 to 1.9.0. - [Release notes](https://github.com/mkdocstrings/python/releases) - [Changelog](https://github.com/mkdocstrings/python/blob/main/CHANGELOG.md) - [Commits](https://github.com/mkdocstrings/python/compare/1.8.0...1.9.0) --- updated-dependencies: - dependency-name: mkdocstrings-python dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index f725d304a..8e2164c5d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -5002,17 +5002,18 @@ python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] [[package]] name = "mkdocstrings-python" -version = "1.8.0" +version = "1.9.0" description = "A Python handler for mkdocstrings." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocstrings_python-1.8.0-py3-none-any.whl", hash = "sha256:4209970cc90bec194568682a535848a8d8489516c6ed4adbe58bbc67b699ca9d"}, - {file = "mkdocstrings_python-1.8.0.tar.gz", hash = "sha256:1488bddf50ee42c07d9a488dddc197f8e8999c2899687043ec5dd1643d057192"}, + {file = "mkdocstrings_python-1.9.0-py3-none-any.whl", hash = "sha256:fad27d7314b4ec9c0359a187b477fb94c65ef561fdae941dca1b717c59aae96f"}, + {file = "mkdocstrings_python-1.9.0.tar.gz", hash = "sha256:6e1a442367cf75d30cf69774cbb1ad02aebec58bfff26087439df4955efecfde"}, ] [package.dependencies] griffe = ">=0.37" +markdown = ">=3.3,<3.6" mkdocstrings = ">=0.20" [[package]] From b3a56645a25bb1e74575012d246a193f0d6c6a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Irene=20L=C3=B3pez?= <45119610+ireneisdoomed@users.noreply.github.com> Date: Mon, 18 Mar 2024 15:15:15 +0000 Subject: [PATCH 32/86] chore(l2g): log annotated gold standards in w&b (#546) * refactor(l2g): select features of interest in data outside trainer * chore(l2g): log annotated gold standards in w&b * fix: update test_train --- src/gentropy/l2g.py | 27 ++++++++++++--------- src/gentropy/method/l2g/model.py | 11 ++++++--- src/gentropy/method/l2g/trainer.py | 10 +++----- tests/gentropy/method/test_locus_to_gene.py | 3 +-- 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/gentropy/l2g.py b/src/gentropy/l2g.py index d00a91596..0d85bd0ef 100644 --- a/src/gentropy/l2g.py +++ b/src/gentropy/l2g.py @@ -132,17 +132,21 @@ def __init__( colocalisation=coloc, ) - # Join and fill null values with 0 - data = L2GFeatureMatrix( - _df=fm.df.join( - f.broadcast( - gold_standards.df.drop("variantId", "studyId", "sources") + data = ( + # Annotate gold standards with features + L2GFeatureMatrix( + _df=fm.df.join( + f.broadcast( + gold_standards.df.drop("variantId", "studyId", "sources") + ), + on=["studyLocusId", "geneId"], + how="inner", ), - on=["studyLocusId", "geneId"], - how="inner", - ), - _schema=L2GFeatureMatrix.get_schema(), - ).fill_na() + _schema=L2GFeatureMatrix.get_schema(), + ) + .fill_na() + .select_features(list(features_list)) + ) # Instantiate classifier estimator = SparkXGBClassifier( @@ -165,9 +169,8 @@ def __init__( else: # Train model LocusToGeneTrainer.train( - data=data, + gold_standard_data=data, l2g_model=l2g_model, - features_list=list(features_list), model_path=model_path, evaluate=True, wandb_run_name=wandb_run_name, diff --git a/src/gentropy/method/l2g/model.py b/src/gentropy/method/l2g/model.py index 5df189d33..f8d892e07 100644 --- a/src/gentropy/method/l2g/model.py +++ b/src/gentropy/method/l2g/model.py @@ -207,7 +207,7 @@ def evaluate( results: DataFrame, hyperparameters: dict[str, Any], wandb_run_name: str | None, - training_data: L2GFeatureMatrix | None = None, + gold_standard_data: L2GFeatureMatrix | None = None, ) -> None: """Perform evaluation of the model predictions for the test set and track the results with W&B. @@ -215,7 +215,7 @@ def evaluate( results (DataFrame): Dataframe containing the predictions hyperparameters (dict[str, Any]): Hyperparameters used for the model wandb_run_name (str | None): Descriptive name for the run to be tracked with W&B - training_data (L2GFeatureMatrix | None): Training data used for the model. If provided, the ratio of positive to negative labels will be logged to W&B + gold_standard_data (L2GFeatureMatrix | None): Feature matrix for the associations in the gold standard. If provided, the ratio of positive to negative labels will be logged to W&B """ binary_evaluator = BinaryClassificationEvaluator( rawPredictionCol="rawPrediction", labelCol="label" @@ -224,7 +224,7 @@ def evaluate( labelCol="label", predictionCol="prediction" ) - if wandb_run_name and training_data: + if wandb_run_name and gold_standard_data: run = wandb_init( project=self.wandb_l2g_project_name, config=hyperparameters, @@ -232,7 +232,10 @@ def evaluate( ) if isinstance(run, Run): self.log_to_wandb( - results, training_data, [binary_evaluator, multi_evaluator], run + results, + gold_standard_data, + [binary_evaluator, multi_evaluator], + run, ) run.finish() diff --git a/src/gentropy/method/l2g/trainer.py b/src/gentropy/method/l2g/trainer.py index 8d2b3d7aa..1638a0417 100644 --- a/src/gentropy/method/l2g/trainer.py +++ b/src/gentropy/method/l2g/trainer.py @@ -22,9 +22,8 @@ class LocusToGeneTrainer: @classmethod def train( cls: type[LocusToGeneTrainer], - data: L2GFeatureMatrix, + gold_standard_data: L2GFeatureMatrix, l2g_model: LocusToGeneModel, - features_list: list[str], evaluate: bool, wandb_run_name: str | None = None, model_path: str | None = None, @@ -33,9 +32,8 @@ def train( """Train the Locus to Gene model. Args: - data (L2GFeatureMatrix): Feature matrix containing the data + gold_standard_data (L2GFeatureMatrix): Feature matrix for the associations in the gold standard l2g_model (LocusToGeneModel): Model to fit to the data on - features_list (list[str]): List of features to use for the model evaluate (bool): Whether to evaluate the model on a test set wandb_run_name (str | None): Descriptive name for the run to be tracked with W&B model_path (str | None): Path to save the model to @@ -44,7 +42,7 @@ def train( Returns: LocusToGeneModel: Trained model """ - train, test = data.select_features(features_list).train_test_split(fraction=0.8) + train, test = gold_standard_data.train_test_split(fraction=0.8) model = l2g_model.add_pipeline_stage(l2g_model.estimator).fit(train) @@ -53,7 +51,7 @@ def train( results=model.predict(test), hyperparameters=hyperparams, wandb_run_name=wandb_run_name, - training_data=train, + gold_standard_data=gold_standard_data, ) if model_path: l2g_model.save(model_path) diff --git a/tests/gentropy/method/test_locus_to_gene.py b/tests/gentropy/method/test_locus_to_gene.py index d97f4dc4d..db06c66bb 100644 --- a/tests/gentropy/method/test_locus_to_gene.py +++ b/tests/gentropy/method/test_locus_to_gene.py @@ -67,9 +67,8 @@ def test_train( ) -> None: """Test the training function.""" trained_model = LocusToGeneTrainer.train( - mock_l2g_feature_matrix.fill_na(), + mock_l2g_feature_matrix.fill_na().select_features(["distanceTssMean"]), model, - features_list=["distanceTssMean"], evaluate=False, ) # Check that `model` is a PipelineModel object and not None From 77976b59a080f3c287336b7a2045d8521d6293a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Irene=20L=C3=B3pez?= <45119610+ireneisdoomed@users.noreply.github.com> Date: Mon, 18 Mar 2024 15:40:56 +0000 Subject: [PATCH 33/86] perf(l2g): streamline feature generation (#544) * refactor(l2g): streamline coloc feature factory * perf(l2g): make joins in _get_vep_features lighter * fix(l2g): use weighted scores for _get_vep_features * refactor(l2g): minor improvements * perf(l2g): adapt session to set partition number for shuffling to 800 --------- Co-authored-by: Daniel Suveges --- src/gentropy/config.py | 1 + src/gentropy/dataset/l2g_feature_matrix.py | 33 +++-- src/gentropy/dataset/l2g_prediction.py | 8 +- src/gentropy/l2g.py | 8 +- src/gentropy/method/l2g/feature_factory.py | 137 ++++++++------------ tests/gentropy/conftest.py | 5 + tests/gentropy/method/test_locus_to_gene.py | 24 +--- 7 files changed, 95 insertions(+), 121 deletions(-) diff --git a/src/gentropy/config.py b/src/gentropy/config.py index 28935e637..6a2469c0c 100644 --- a/src/gentropy/config.py +++ b/src/gentropy/config.py @@ -182,6 +182,7 @@ class LocusToGeneConfig(StepConfig): "spark.dynamicAllocation.enabled": "false", "spark.driver.memory": "48g", "spark.executor.memory": "48g", + "spark.sql.shuffle.partitions": "800", } } ) diff --git a/src/gentropy/dataset/l2g_feature_matrix.py b/src/gentropy/dataset/l2g_feature_matrix.py index fa84499dc..948477600 100644 --- a/src/gentropy/dataset/l2g_feature_matrix.py +++ b/src/gentropy/dataset/l2g_feature_matrix.py @@ -5,6 +5,8 @@ from functools import reduce from typing import TYPE_CHECKING, Type +from pyspark.sql.functions import col + from gentropy.common.schemas import parse_spark_schema from gentropy.common.spark_helpers import convert_from_long_to_wide from gentropy.dataset.dataset import Dataset @@ -40,7 +42,7 @@ def __post_init__(self: L2GFeatureMatrix) -> None: def generate_features( cls: Type[L2GFeatureMatrix], features_list: list[str], - study_locus: StudyLocus, + credible_set: StudyLocus, study_index: StudyIndex, variant_gene: V2G, colocalisation: Colocalisation, @@ -49,7 +51,7 @@ def generate_features( Args: features_list (list[str]): List of features to generate - study_locus (StudyLocus): Study locus dataset + credible_set (StudyLocus): Credible set dataset study_index (StudyIndex): Study index dataset variant_gene (V2G): Variant to gene dataset colocalisation (Colocalisation): Colocalisation dataset @@ -60,13 +62,24 @@ def generate_features( Raises: ValueError: If the feature matrix is empty """ + coloc_methods = ( + colocalisation.df.select("colocalisationMethod") + .distinct() + .toPandas()["colocalisationMethod"] + .tolist() + ) if features_dfs := [ # Extract features - ColocalisationFactory._get_coloc_features( - study_locus, study_index, colocalisation - ).df, - StudyLocusFactory._get_tss_distance_features(study_locus, variant_gene).df, - StudyLocusFactory._get_vep_features(study_locus, variant_gene).df, + ColocalisationFactory._get_max_coloc_per_credible_set( + credible_set, + study_index, + colocalisation.filter(col("colocalisationMethod") == method), + method, + ).df + for method in coloc_methods + ] + [ + StudyLocusFactory._get_tss_distance_features(credible_set, variant_gene).df, + StudyLocusFactory._get_vep_features(credible_set, variant_gene).df, ]: fm = reduce( lambda x, y: x.unionByName(y), @@ -162,8 +175,6 @@ def train_test_split( """ train, test = self._df.randomSplit([fraction, 1 - fraction], seed=42) return ( - L2GFeatureMatrix( - _df=train, _schema=L2GFeatureMatrix.get_schema() - ).persist(), - L2GFeatureMatrix(_df=test, _schema=L2GFeatureMatrix.get_schema()).persist(), + L2GFeatureMatrix(_df=train, _schema=L2GFeatureMatrix.get_schema()), + L2GFeatureMatrix(_df=test, _schema=L2GFeatureMatrix.get_schema()), ) diff --git a/src/gentropy/dataset/l2g_prediction.py b/src/gentropy/dataset/l2g_prediction.py index e24688da3..c4eccdf45 100644 --- a/src/gentropy/dataset/l2g_prediction.py +++ b/src/gentropy/dataset/l2g_prediction.py @@ -44,7 +44,7 @@ def from_credible_set( cls: Type[L2GPrediction], model_path: str, features_list: list[str], - study_locus: StudyLocus, + credible_set: StudyLocus, study_index: StudyIndex, v2g: V2G, coloc: Colocalisation, @@ -54,7 +54,7 @@ def from_credible_set( Args: model_path (str): Path to the fitted model features_list (list[str]): List of features to use for the model - study_locus (StudyLocus): Study locus dataset + credible_set (StudyLocus): Credible set dataset study_index (StudyIndex): Study index dataset v2g (V2G): Variant to gene dataset coloc (Colocalisation): Colocalisation dataset @@ -64,7 +64,7 @@ def from_credible_set( """ fm = L2GFeatureMatrix.generate_features( features_list=features_list, - study_locus=study_locus, + credible_set=credible_set, study_index=study_index, variant_gene=v2g, colocalisation=coloc, @@ -73,7 +73,7 @@ def from_credible_set( gwas_fm = L2GFeatureMatrix( _df=( fm.df.join( - study_locus.filter_by_study_type("gwas", study_index).df, + credible_set.filter_by_study_type("gwas", study_index).df, on="studyLocusId", ) ), diff --git a/src/gentropy/l2g.py b/src/gentropy/l2g.py index 0d85bd0ef..d0acd2b95 100644 --- a/src/gentropy/l2g.py +++ b/src/gentropy/l2g.py @@ -73,7 +73,9 @@ def __init__( session, study_index_path, recursiveFileLookup=True ) v2g = V2G.from_parquet(session, variant_gene_path) - coloc = Colocalisation.from_parquet(session, colocalisation_path) + coloc = Colocalisation.from_parquet( + session, colocalisation_path, recursiveFileLookup=True + ) if run_mode == "predict": if not model_path or not predictions_path: @@ -91,7 +93,7 @@ def __init__( and gene_interactions_path ): # Process gold standard and L2G features - gs_curation = session.spark.read.json(gold_standard_curation_path).persist() + gs_curation = session.spark.read.json(gold_standard_curation_path) interactions = session.spark.read.parquet(gene_interactions_path) study_locus_overlap = StudyLocus( # We just extract overlaps of associations in the gold standard. This parsing is a duplication of the one in the gold standard curation, @@ -126,7 +128,7 @@ def __init__( fm = L2GFeatureMatrix.generate_features( features_list=features_list, - study_locus=credible_set, + credible_set=credible_set, study_index=studies, variant_gene=v2g, colocalisation=coloc, diff --git a/src/gentropy/method/l2g/feature_factory.py b/src/gentropy/method/l2g/feature_factory.py index a3dba6688..ff378e170 100644 --- a/src/gentropy/method/l2g/feature_factory.py +++ b/src/gentropy/method/l2g/feature_factory.py @@ -25,8 +25,8 @@ class ColocalisationFactory: """Feature extraction in colocalisation.""" @staticmethod - def _get_max_coloc_per_study_locus( - study_locus: StudyLocus, + def _get_max_coloc_per_credible_set( + credible_set: StudyLocus, studies: StudyIndex, colocalisation: Colocalisation, colocalisation_method: str, @@ -34,7 +34,7 @@ def _get_max_coloc_per_study_locus( """Get the maximum colocalisation posterior probability for each pair of overlapping study-locus per type of colocalisation method and QTL type. Args: - study_locus (StudyLocus): Study locus dataset + credible_set (StudyLocus): Study locus dataset studies (StudyIndex): Study index dataset colocalisation (Colocalisation): Colocalisation dataset colocalisation_method (str): Colocalisation method to extract the max from @@ -57,8 +57,8 @@ def _get_max_coloc_per_study_locus( coloc_score_col_name = "clpp" coloc_feature_col_template = "ColocClppMaximum" - colocalising_study_locus = ( - study_locus.df.select("studyLocusId", "studyId") + colocalising_credible_sets = ( + credible_set.df.select("studyLocusId", "studyId") # annotate studyLoci with overlapping IDs on the left - to just keep GWAS associations .join( colocalisation.df.selectExpr( @@ -72,7 +72,7 @@ def _get_max_coloc_per_study_locus( ) # bring study metadata to just keep QTL studies on the right .join( - study_locus.df.selectExpr( + credible_set.df.selectExpr( "studyLocusId as rightStudyLocusId", "studyId as right_studyId" ), on="rightStudyLocusId", @@ -98,52 +98,48 @@ def _get_max_coloc_per_study_locus( # Max PP calculation per studyLocus AND type of QTL local_max = get_record_with_maximum_value( - colocalising_study_locus, + colocalising_credible_sets, ["studyLocusId", "right_studyType", "geneId"], "coloc_score", - ).persist() + ) intercept = 0.0001 neighbourhood_max = ( - ( - local_max.selectExpr( - "studyLocusId", "coloc_score as coloc_local_max", "geneId" - ) - .join( - # Add maximum in the neighborhood - get_record_with_maximum_value( - colocalising_study_locus.withColumnRenamed( - "coloc_score", "coloc_neighborhood_max" - ), - ["studyLocusId", "right_studyType"], - "coloc_neighborhood_max", - ).drop("geneId"), - on="studyLocusId", - ) - .withColumn( - f"{coloc_feature_col_template}Neighborhood", - f.log10( - f.abs( - f.col("coloc_local_max") - - f.col("coloc_neighborhood_max") - + f.lit(intercept) - ) + local_max.selectExpr( + "studyLocusId", "coloc_score as coloc_local_max", "geneId" + ) + .join( + # Add maximum in the neighborhood + get_record_with_maximum_value( + colocalising_credible_sets.withColumnRenamed( + "coloc_score", "coloc_neighborhood_max" ), - ) + ["studyLocusId", "right_studyType"], + "coloc_neighborhood_max", + ).drop("geneId"), + on="studyLocusId", ) - .drop("coloc_neighborhood_max", "coloc_local_max") - .persist() - ) + .withColumn( + f"{coloc_feature_col_template}Neighborhood", + f.log10( + f.abs( + f.col("coloc_local_max") + - f.col("coloc_neighborhood_max") + + f.lit(intercept) + ) + ), + ) + ).drop("coloc_neighborhood_max", "coloc_local_max") # Split feature per molQTL local_dfs = [] nbh_dfs = [] qtl_types: list[str] = ( - colocalising_study_locus.select("right_studyType") + colocalising_credible_sets.select("right_studyType") .distinct() .toPandas()["right_studyType"] .tolist() - ) or ["eqtl", "pqtl", "sqtl"] + ) for qtl_type in qtl_types: filtered_local_max = ( local_max.filter(f.col("right_studyType") == qtl_type) @@ -190,46 +186,18 @@ def _get_max_coloc_per_study_locus( _schema=L2GFeature.get_schema(), ) - @staticmethod - def _get_coloc_features( - study_locus: StudyLocus, studies: StudyIndex, colocalisation: Colocalisation - ) -> L2GFeature: - """Calls _get_max_coloc_per_study_locus for both methods and concatenates the results. - - !!! note "Colocalisation features are only available for the eCAVIAR results for now." - - Args: - study_locus (StudyLocus): Study locus dataset - studies (StudyIndex): Study index dataset - colocalisation (Colocalisation): Colocalisation dataset - - Returns: - L2GFeature: Stores the features with the max coloc probabilities for each pair of study-locus - """ - coloc_clpp = ColocalisationFactory._get_max_coloc_per_study_locus( - study_locus, - studies, - colocalisation, - "eCAVIAR", - ) - - return L2GFeature( - _df=coloc_clpp.df, - _schema=L2GFeature.get_schema(), - ) - class StudyLocusFactory(StudyLocus): """Feature extraction in study locus.""" @staticmethod def _get_tss_distance_features( - study_locus: StudyLocus, distances: V2G + credible_set: StudyLocus, distances: V2G ) -> L2GFeature: """Joins StudyLocus with the V2G to extract the minimum distance to a gene TSS of all variants in a StudyLocus credible set. Args: - study_locus (StudyLocus): Study locus dataset + credible_set (StudyLocus): Credible set dataset distances (V2G): Dataframe containing the distances of all variants to all genes TSS within a region Returns: @@ -237,7 +205,7 @@ def _get_tss_distance_features( """ wide_df = ( - study_locus.filter_credible_set(CredibleInterval.IS95) + credible_set.filter_credible_set(CredibleInterval.IS95) .df.select( "studyLocusId", "variantId", @@ -321,32 +289,33 @@ def _aggregate_vep_feature( credible_set_w_variant_consequences = ( credible_set.filter_credible_set(CredibleInterval.IS95) - .df.withColumn("variantInLocusId", f.explode(f.col("locus.variantId"))) - .withColumn( - "variantInLocusPosteriorProbability", - f.explode(f.col("locus.posteriorProbability")), + .df.withColumn("variantInLocus", f.explode_outer("locus")) + .select( + f.col("studyLocusId"), + f.col("variantId"), + f.col("studyId"), + f.col("variantInLocus.variantId").alias("variantInLocusId"), + f.col("variantInLocus.posteriorProbability").alias( + "variantInLocusPosteriorProbability" + ), ) .join( # Join with V2G to get variant consequences - v2g.df.filter( - f.col("datasourceId") == "variantConsequence" - ).withColumnRenamed("variantId", "variantInLocusId"), + v2g.df.filter(f.col("datasourceId") == "variantConsequence").selectExpr( + "variantId as variantInLocusId", "geneId", "score" + ), on="variantInLocusId", ) - .withColumn( - "weightedScore", - f.col("score") * f.col("variantInLocusPosteriorProbability"), - ) .select( "studyLocusId", "variantId", "studyId", "geneId", - "score", - "weightedScore", + (f.col("score") * f.col("variantInLocusPosteriorProbability")).alias( + "weightedScore" + ), ) .distinct() - .persist() ) return L2GFeature( @@ -357,14 +326,14 @@ def _aggregate_vep_feature( # Calculate overall max VEP score for all genes in the vicinity credible_set_w_variant_consequences.transform( _aggregate_vep_feature, - f.max("score"), + f.max("weightedScore"), ["studyLocusId"], "vepMaximumNeighborhood", ), # Calculate overall max VEP score per gene credible_set_w_variant_consequences.transform( _aggregate_vep_feature, - f.max("score"), + f.max("weightedScore"), ["studyLocusId", "geneId"], "vepMaximum", ), diff --git a/tests/gentropy/conftest.py b/tests/gentropy/conftest.py index 78bd567da..ec106f975 100644 --- a/tests/gentropy/conftest.py +++ b/tests/gentropy/conftest.py @@ -84,6 +84,11 @@ def mock_colocalisation(spark: SparkSession) -> Colocalisation: .withColumnSpec("h4", percentNulls=0.1) .withColumnSpec("log2h4h3", percentNulls=0.1) .withColumnSpec("clpp", percentNulls=0.1) + .withColumnSpec( + "colocalisationMethod", + percentNulls=0.0, + values=["COLOC", "eCAVIAR"], + ) ) return Colocalisation(_df=data_spec.build(), _schema=coloc_schema) diff --git a/tests/gentropy/method/test_locus_to_gene.py b/tests/gentropy/method/test_locus_to_gene.py index db06c66bb..3976406c9 100644 --- a/tests/gentropy/method/test_locus_to_gene.py +++ b/tests/gentropy/method/test_locus_to_gene.py @@ -87,7 +87,7 @@ class TestColocalisationFactory: "eCAVIAR", ], ) - def test_get_max_coloc_per_study_locus( + def test_get_max_coloc_per_credible_set( self: TestColocalisationFactory, mock_study_locus: StudyLocus, mock_study_index: StudyIndex, @@ -95,7 +95,7 @@ def test_get_max_coloc_per_study_locus( colocalisation_method: str, ) -> None: """Test the function that extracts the maximum log likelihood ratio for each pair of overlapping study-locus returns the right data type.""" - coloc_features = ColocalisationFactory._get_max_coloc_per_study_locus( + coloc_features = ColocalisationFactory._get_max_coloc_per_credible_set( mock_study_locus, mock_study_index, mock_colocalisation, @@ -103,9 +103,9 @@ def test_get_max_coloc_per_study_locus( ) assert isinstance( coloc_features, L2GFeature - ), "Unexpected model type returned from _get_max_coloc_per_study_locus" + ), "Unexpected model type returned from _get_max_coloc_per_credible_set" - def test_get_max_coloc_per_study_locus_semantic( + def test_get_max_coloc_per_credible_set_semantic( self: TestColocalisationFactory, spark: SparkSession, ) -> None: @@ -182,7 +182,7 @@ def test_get_max_coloc_per_study_locus_semantic( L2GFeature.get_schema(), ) # Test - coloc_features = ColocalisationFactory._get_max_coloc_per_study_locus( + coloc_features = ColocalisationFactory._get_max_coloc_per_credible_set( credset, studies, coloc, @@ -190,20 +190,6 @@ def test_get_max_coloc_per_study_locus_semantic( ) assert coloc_features.df.collect() == expected_coloc_features_df.collect() - def test_get_coloc_features( - self: TestColocalisationFactory, - mock_study_locus: StudyLocus, - mock_study_index: StudyIndex, - mock_colocalisation: Colocalisation, - ) -> None: - """Test the function that calls all the methods to produce colocalisation features.""" - coloc_features = ColocalisationFactory._get_coloc_features( - mock_study_locus, mock_study_index, mock_colocalisation - ) - assert isinstance( - coloc_features, L2GFeature - ), "Unexpected model type returned from _get_coloc_features" - class TestStudyLocusFactory: """Test the StudyLocusFactory methods.""" From 923c622f0825a9763b75bef861f91e46825bd240 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 19 Mar 2024 13:14:57 +0000 Subject: [PATCH 34/86] chore: pre-commit autoupdate (#550) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.3.2 → v0.3.3](https://github.com/astral-sh/ruff-pre-commit/compare/v0.3.2...v0.3.3) - [github.com/python-poetry/poetry: 1.8.2 → 1.8.0](https://github.com/python-poetry/poetry/compare/1.8.2...1.8.0) * fix: poetry lock adjustments --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: David Ochoa --- .pre-commit-config.yaml | 4 +- poetry.lock | 124 +--------------------------------------- 2 files changed, 3 insertions(+), 125 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b1b9b1a43..56714becf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ ci: skip: [poetry-lock] repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.2 + rev: v0.3.3 hooks: - id: ruff args: @@ -104,7 +104,7 @@ repos: - id: pydoclint - repo: https://github.com/python-poetry/poetry - rev: "1.8.2" + rev: "1.8.0" hooks: - id: poetry-check - id: poetry-lock diff --git a/poetry.lock b/poetry.lock index 8e2164c5d..01cafdeec 100644 --- a/poetry.lock +++ b/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.8.0 and should not be changed by hand. [[package]] name = "aiodns" @@ -3430,106 +3430,6 @@ files = [ {file = "google_re2-1.1-3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d140c7b9395b4d1e654127aa1c99bcc603ed01000b7bc7e28c52562f1894ec12"}, {file = "google_re2-1.1-3-cp39-cp39-win32.whl", hash = "sha256:80c5fc200f64b2d903eeb07b8d6cefc620a872a0240c7caaa9aca05b20f5568f"}, {file = "google_re2-1.1-3-cp39-cp39-win_amd64.whl", hash = "sha256:9eb6dbcee9b5dc4069bbc0634f2eb039ca524a14bed5868fdf6560aaafcbca06"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0db114d7e1aa96dbcea452a40136d7d747d60cbb61394965774688ef59cccd4e"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:82133958e003a1344e5b7a791b9a9dd7560b5c8f96936dbe16f294604524a633"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:9e74fd441d1f3d917d3303e319f61b82cdbd96b9a5ba919377a6eef1504a1e2b"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:734a2e7a4541c57253b5ebee24f3f3366ba3658bcad01da25fb623c78723471a"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d88d5eecbc908abe16132456fae13690d0508f3ac5777f320ef95cb6cab9a961"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:b91db80b171ecec435a07977a227757dd487356701a32f556fa6fca5d0a40522"}, - {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b23129887a64bb9948af14c84705273ed1a40054e99433b4acccab4dcf6a226"}, - {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5dc1a0cc7cd19261dcaf76763e2499305dbb7e51dc69555167cdb8af98782698"}, - {file = "google_re2-1.1-4-cp310-cp310-win32.whl", hash = "sha256:3b2ab1e2420b5dd9743a2d6bc61b64e5f708563702a75b6db86637837eaeaf2f"}, - {file = "google_re2-1.1-4-cp310-cp310-win_amd64.whl", hash = "sha256:92efca1a7ef83b6df012d432a1cbc71d10ff42200640c0f9a5ff5b343a48e633"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854818fd4ce79787aca5ba459d6e5abe4ca9be2c684a5b06a7f1757452ca3708"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:4ceef51174b6f653b6659a8fdaa9c38960c5228b44b25be2a3bcd8566827554f"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:ee49087c3db7e6f5238105ab5299c09e9b77516fe8cfb0a37e5f1e813d76ecb8"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:dc2312854bdc01410acc5d935f1906a49cb1f28980341c20a68797ad89d8e178"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0dc0d2e42296fa84a3cb3e1bd667c6969389cd5cdf0786e6b1f911ae2d75375b"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6bf04ced98453b035f84320f348f67578024f44d2997498def149054eb860ae8"}, - {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d6b6ef11dc4ab322fa66c2f3561925f2b5372a879c3ed764d20e939e2fd3e5f"}, - {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0dcde6646fa9a97fd3692b3f6ae7daf7f3277d7500b6c253badeefa11db8956a"}, - {file = "google_re2-1.1-4-cp311-cp311-win32.whl", hash = "sha256:5f4f0229deb057348893574d5b0a96d055abebac6debf29d95b0c0e26524c9f6"}, - {file = "google_re2-1.1-4-cp311-cp311-win_amd64.whl", hash = "sha256:4713ddbe48a18875270b36a462b0eada5e84d6826f8df7edd328d8706b6f9d07"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:40a698300b8faddbb325662973f839489c89b960087060bd389c376828978a04"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:103d2d7ac92ba23911a151fd1fc7035cbf6dc92a7f6aea92270ebceb5cd5acd3"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:51fb7182bccab05e8258a2b6a63dda1a6b4a9e8dfb9b03ec50e50c49c2827dd4"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:65383022abd63d7b620221eba7935132b53244b8b463d8fdce498c93cf58b7b7"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396281fc68a9337157b3ffcd9392c6b7fcb8aab43e5bdab496262a81d56a4ecc"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8198adcfcff1c680e052044124621730fc48d08005f90a75487f5651f1ebfce2"}, - {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:81f7bff07c448aec4db9ca453d2126ece8710dbd9278b8bb09642045d3402a96"}, - {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7dacf730fd7d6ec71b11d6404b0b26e230814bfc8e9bb0d3f13bec9b5531f8d"}, - {file = "google_re2-1.1-4-cp312-cp312-win32.whl", hash = "sha256:8c764f62f4b1d89d1ef264853b6dd9fee14a89e9b86a81bc2157fe3531425eb4"}, - {file = "google_re2-1.1-4-cp312-cp312-win_amd64.whl", hash = "sha256:0be2666df4bc5381a5d693585f9bbfefb0bfd3c07530d7e403f181f5de47254a"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:5cb1b63a0bfd8dd65d39d2f3b2e5ae0a06ce4b2ce5818a1d1fc78a786a252673"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e41751ce6b67a95230edd0772226dc94c2952a2909674cd69df9804ed0125307"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:b998cfa2d50bf4c063e777c999a7e8645ec7e5d7baf43ad71b1e2e10bb0300c3"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:226ca3b0c2e970f3fc82001ac89e845ecc7a4bb7c68583e7a76cda70b61251a7"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:9adec1f734ebad7c72e56c85f205a281d8fe9bf6583bc21020157d3f2812ce89"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:9c34f3c64ba566af967d29e11299560e6fdfacd8ca695120a7062b6ed993b179"}, - {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b85385fe293838e0d0b6e19e6c48ba8c6f739ea92ce2e23b718afe7b343363"}, - {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4694daa8a8987cfb568847aa872f9990e930c91a68c892ead876411d4b9012c3"}, - {file = "google_re2-1.1-4-cp38-cp38-win32.whl", hash = "sha256:5e671e9be1668187e2995aac378de574fa40df70bb6f04657af4d30a79274ce0"}, - {file = "google_re2-1.1-4-cp38-cp38-win_amd64.whl", hash = "sha256:f66c164d6049a8299f6dfcfa52d1580576b4b9724d6fcdad2f36f8f5da9304b6"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:25cb17ae0993a48c70596f3a3ef5d659638106401cc8193f51c0d7961b3b3eb7"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5f101f86d14ca94ca4dcf63cceaa73d351f2be2481fcaa29d9e68eeab0dc2a88"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:4e82591e85bf262a6d74cff152867e05fc97867c68ba81d6836ff8b0e7e62365"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:1f61c09b93ffd34b1e2557e5a9565039f935407a5786dbad46f64f1a484166e6"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:12b390ad8c7e74bab068732f774e75e0680dade6469b249a721f3432f90edfc3"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:1284343eb31c2e82ed2d8159f33ba6842238a56782c881b07845a6d85613b055"}, - {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c7b38e0daf2c06e4d3163f4c732ab3ad2521aecfed6605b69e4482c612da303"}, - {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f4d4f0823e8b2f6952a145295b1ff25245ce9bb136aff6fe86452e507d4c1dd"}, - {file = "google_re2-1.1-4-cp39-cp39-win32.whl", hash = "sha256:1afae56b2a07bb48cfcfefaa15ed85bae26a68f5dc7f9e128e6e6ea36914e847"}, - {file = "google_re2-1.1-4-cp39-cp39-win_amd64.whl", hash = "sha256:aa7d6d05911ab9c8adbf3c225a7a120ab50fd2784ac48f2f0d140c0b7afc2b55"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:222fc2ee0e40522de0b21ad3bc90ab8983be3bf3cec3d349c80d76c8bb1a4beb"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d4763b0b9195b72132a4e7de8e5a9bf1f05542f442a9115aa27cfc2a8004f581"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:209649da10c9d4a93d8a4d100ecbf9cc3b0252169426bec3e8b4ad7e57d600cf"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:68813aa333c1604a2df4a495b2a6ed065d7c8aebf26cc7e7abb5a6835d08353c"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:370a23ec775ad14e9d1e71474d56f381224dcf3e72b15d8ca7b4ad7dd9cd5853"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:14664a66a3ddf6bc9e56f401bf029db2d169982c53eff3f5876399104df0e9a6"}, - {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea3722cc4932cbcebd553b69dce1b4a73572823cff4e6a244f1c855da21d511"}, - {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e14bb264c40fd7c627ef5678e295370cd6ba95ca71d835798b6e37502fc4c690"}, - {file = "google_re2-1.1-5-cp310-cp310-win32.whl", hash = "sha256:39512cd0151ea4b3969c992579c79b423018b464624ae955be685fc07d94556c"}, - {file = "google_re2-1.1-5-cp310-cp310-win_amd64.whl", hash = "sha256:ac66537aa3bc5504320d922b73156909e3c2b6da19739c866502f7827b3f9fdf"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b5ea68d54890c9edb1b930dcb2658819354e5d3f2201f811798bbc0a142c2b4"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:33443511b6b83c35242370908efe2e8e1e7cae749c766b2b247bf30e8616066c"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:413d77bdd5ba0bfcada428b4c146e87707452ec50a4091ec8e8ba1413d7e0619"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:5171686e43304996a34baa2abcee6f28b169806d0e583c16d55e5656b092a414"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b284db130283771558e31a02d8eb8fb756156ab98ce80035ae2e9e3a5f307c4"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:296e6aed0b169648dc4b870ff47bd34c702a32600adb9926154569ef51033f47"}, - {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:38d50e68ead374160b1e656bbb5d101f0b95fb4cc57f4a5c12100155001480c5"}, - {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a0416a35921e5041758948bcb882456916f22845f66a93bc25070ef7262b72a"}, - {file = "google_re2-1.1-5-cp311-cp311-win32.whl", hash = "sha256:a1d59568bbb5de5dd56dd6cdc79907db26cce63eb4429260300c65f43469e3e7"}, - {file = "google_re2-1.1-5-cp311-cp311-win_amd64.whl", hash = "sha256:72f5a2f179648b8358737b2b493549370debd7d389884a54d331619b285514e3"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:cbc72c45937b1dc5acac3560eb1720007dccca7c9879138ff874c7f6baf96005"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5fadd1417fbef7235fa9453dba4eb102e6e7d94b1e4c99d5fa3dd4e288d0d2ae"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:040f85c63cc02696485b59b187a5ef044abe2f99b92b4fb399de40b7d2904ccc"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:64e3b975ee6d9bbb2420494e41f929c1a0de4bcc16d86619ab7a87f6ea80d6bd"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8ee370413e00f4d828eaed0e83b8af84d7a72e8ee4f4bd5d3078bc741dfc430a"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:5b89383001079323f693ba592d7aad789d7a02e75adb5d3368d92b300f5963fd"}, - {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:63cb4fdfbbda16ae31b41a6388ea621510db82feb8217a74bf36552ecfcd50ad"}, - {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ebedd84ae8be10b7a71a16162376fd67a2386fe6361ef88c622dcf7fd679daf"}, - {file = "google_re2-1.1-5-cp312-cp312-win32.whl", hash = "sha256:c8e22d1692bc2c81173330c721aff53e47ffd3c4403ff0cd9d91adfd255dd150"}, - {file = "google_re2-1.1-5-cp312-cp312-win_amd64.whl", hash = "sha256:5197a6af438bb8c4abda0bbe9c4fbd6c27c159855b211098b29d51b73e4cbcf6"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b6727e0b98417e114b92688ad2aa256102ece51f29b743db3d831df53faf1ce3"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:711e2b6417eb579c61a4951029d844f6b95b9b373b213232efd413659889a363"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:71ae8b3df22c5c154c8af0f0e99d234a450ef1644393bc2d7f53fc8c0a1e111c"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:94a04e214bc521a3807c217d50cf099bbdd0c0a80d2d996c0741dbb995b5f49f"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:a770f75358508a9110c81a1257721f70c15d9bb592a2fb5c25ecbd13566e52a5"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:07c9133357f7e0b17c6694d5dcb82e0371f695d7c25faef2ff8117ef375343ff"}, - {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:204ca6b1cf2021548f4a9c29ac015e0a4ab0a7b6582bf2183d838132b60c8fda"}, - {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b95857c2c654f419ca684ec38c9c3325c24e6ba7d11910a5110775a557bb18"}, - {file = "google_re2-1.1-5-cp38-cp38-win32.whl", hash = "sha256:347ac770e091a0364e822220f8d26ab53e6fdcdeaec635052000845c5a3fb869"}, - {file = "google_re2-1.1-5-cp38-cp38-win_amd64.whl", hash = "sha256:ec32bb6de7ffb112a07d210cf9f797b7600645c2d5910703fa07f456dd2150e0"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:eb5adf89060f81c5ff26c28e261e6b4997530a923a6093c9726b8dec02a9a326"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a22630c9dd9ceb41ca4316bccba2643a8b1d5c198f21c00ed5b50a94313aaf10"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:544dc17fcc2d43ec05f317366375796351dec44058e1164e03c3f7d050284d58"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:19710af5ea88751c7768575b23765ce0dfef7324d2539de576f75cdc319d6654"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:f82995a205e08ad896f4bd5ce4847c834fab877e1772a44e5f262a647d8a1dec"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:63533c4d58da9dc4bc040250f1f52b089911699f0368e0e6e15f996387a984ed"}, - {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79e00fcf0cb04ea35a22b9014712d448725ce4ddc9f08cc818322566176ca4b0"}, - {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc41afcefee2da6c4ed883a93d7f527c4b960cd1d26bbb0020a7b8c2d341a60a"}, - {file = "google_re2-1.1-5-cp39-cp39-win32.whl", hash = "sha256:486730b5e1f1c31b0abc6d80abe174ce4f1188fe17d1b50698f2bf79dc6e44be"}, - {file = "google_re2-1.1-5-cp39-cp39-win_amd64.whl", hash = "sha256:4de637ca328f1d23209e80967d1b987d6b352cd01b3a52a84b4d742c69c3da6c"}, ] [[package]] @@ -6801,7 +6701,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"}, @@ -7726,51 +7625,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.50-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:54138aa80d2dedd364f4e8220eef284c364d3270aaef621570aa2bd99902e2e8"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, {file = "SQLAlchemy-1.4.50-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:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win32.whl", hash = "sha256:6c78e3fb4a58e900ec433b6b5f4efe1a0bf81bbb366ae7761c6e0051dd310ee3"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win_amd64.whl", hash = "sha256:d55f7a33e8631e15af1b9e67c9387c894fedf6deb1a19f94be8731263c51d515"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:324b1fdd50e960a93a231abb11d7e0f227989a371e3b9bd4f1259920f15d0304"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win32.whl", hash = "sha256:8bdab03ff34fc91bfab005e96f672ae207d87e0ac7ee716d74e87e7046079d8b"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win_amd64.whl", hash = "sha256:52e01d60b06f03b0a5fc303c8aada405729cbc91a56a64cead8cb7c0b9b13c1a"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:77fde9bf74f4659864c8e26ac08add8b084e479b9a18388e7db377afc391f926"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win32.whl", hash = "sha256:e86c920b7d362cfa078c8b40e7765cbc34efb44c1007d7557920be9ddf138ec7"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win_amd64.whl", hash = "sha256:6b3df20fbbcbcd1c1d43f49ccf3eefb370499088ca251ded632b8cbaee1d497d"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:fb9adc4c6752d62c6078c107d23327aa3023ef737938d0135ece8ffb67d07030"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, {file = "SQLAlchemy-1.4.50-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:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win32.whl", hash = "sha256:1b9c4359d3198f341480e57494471201e736de459452caaacf6faa1aca852bd8"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win_amd64.whl", hash = "sha256:35e4520f7c33c77f2636a1e860e4f8cafaac84b0b44abe5de4c6c8890b6aaa6d"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f5b1fb2943d13aba17795a770d22a2ec2214fc65cff46c487790192dda3a3ee7"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, {file = "SQLAlchemy-1.4.50-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:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win32.whl", hash = "sha256:7b4396452273aedda447e5aebe68077aa7516abf3b3f48408793e771d696f397"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win_amd64.whl", hash = "sha256:752f9df3dddbacb5f42d8405b2d5885675a93501eb5f86b88f2e47a839cf6337"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:35c7ed095a4b17dbc8813a2bfb38b5998318439da8e6db10a804df855e3a9e3a"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, {file = "SQLAlchemy-1.4.50-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:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win32.whl", hash = "sha256:8a219688297ee5e887a93ce4679c87a60da4a5ce62b7cb4ee03d47e9e767f558"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl", hash = "sha256:a648770db002452703b729bdcf7d194e904aa4092b9a4d6ab185b48d13252f63"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:4be4da121d297ce81e1ba745a0a0521c6cf8704634d7b520e350dce5964c71ac"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, {file = "SQLAlchemy-1.4.50-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:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win32.whl", hash = "sha256:a7c9b9dca64036008962dd6b0d9fdab2dfdbf96c82f74dbd5d86006d8d24a30f"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win_amd64.whl", hash = "sha256:df200762efbd672f7621b253721644642ff04a6ff957236e0e2fe56d9ca34d2c"}, {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, ] From 160051c762142d9a83439fa461e0491da05f86ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Irene=20L=C3=B3pez?= <45119610+ireneisdoomed@users.noreply.github.com> Date: Tue, 19 Mar 2024 14:09:09 +0000 Subject: [PATCH 35/86] feat(l2g): distance features based on weighted score (#545) * refactor(l2g): streamline coloc feature factory * perf(l2g): make joins in _get_vep_features lighter * fix(l2g): use weighted scores for _get_vep_features * refactor(l2g): minor improvements * perf(l2g): adapt session to set partition number for shuffling to 800 * feat(l2g): distance features based on weighted score * docs: update docs * refactor(l2g): select features of interest in data outside trainer * chore(l2g): log annotated gold standards in w&b * fix: update test_train * fix(l2g): typo in _get_tss_distance_features with no consequences --- src/gentropy/method/l2g/feature_factory.py | 32 +++++++++++++--------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/gentropy/method/l2g/feature_factory.py b/src/gentropy/method/l2g/feature_factory.py index ff378e170..5373be108 100644 --- a/src/gentropy/method/l2g/feature_factory.py +++ b/src/gentropy/method/l2g/feature_factory.py @@ -191,37 +191,43 @@ class StudyLocusFactory(StudyLocus): """Feature extraction in study locus.""" @staticmethod - def _get_tss_distance_features( - credible_set: StudyLocus, distances: V2G - ) -> L2GFeature: - """Joins StudyLocus with the V2G to extract the minimum distance to a gene TSS of all variants in a StudyLocus credible set. + def _get_tss_distance_features(credible_set: StudyLocus, v2g: V2G) -> L2GFeature: + """Joins StudyLocus with the V2G to extract a score that is based on the distance to a gene TSS of any variant weighted by its posterior probability in a credible set. Args: credible_set (StudyLocus): Credible set dataset - distances (V2G): Dataframe containing the distances of all variants to all genes TSS within a region + v2g (V2G): Dataframe containing the distances of all variants to all genes TSS within a region Returns: - L2GFeature: Stores the features with the minimum distance among all variants in the credible set and a gene TSS. + L2GFeature: Stores the features with the score of weighting the distance to the TSS by the posterior probability of the variant """ wide_df = ( credible_set.filter_credible_set(CredibleInterval.IS95) - .df.select( + .df.withColumn("variantInLocus", f.explode_outer("locus")) + .select( "studyLocusId", "variantId", - f.explode("locus.variantId").alias("tagVariantId"), + f.col("variantInLocus.variantId").alias("variantInLocusId"), + f.col("variantInLocus.posteriorProbability").alias( + "variantInLocusPosteriorProbability" + ), ) .join( - distances.df.selectExpr( - "variantId as tagVariantId", "geneId", "distance" + v2g.df.filter(f.col("datasourceId") == "canonical_tss").selectExpr( + "variantId as variantInLocusId", "geneId", "score" ), - on="tagVariantId", + on="variantInLocusId", how="inner", ) + .withColumn( + "weightedScore", + f.col("score") * f.col("variantInLocusPosteriorProbability"), + ) .groupBy("studyLocusId", "geneId") .agg( - f.min("distance").alias("distanceTssMinimum"), - f.mean("distance").alias("distanceTssMean"), + f.min("weightedScore").alias("distanceTssMinimum"), + f.mean("weightedScore").alias("distanceTssMean"), ) ) From ad50c158d45004c36dbeee0860c9a96ea052f2d7 Mon Sep 17 00:00:00 2001 From: David Ochoa Date: Wed, 20 Mar 2024 10:34:56 +0000 Subject: [PATCH 36/86] perf(clump): refactored window based clumping (#492) * perf: refactored window based clumping * fix: gwas catalog clump step adjusted * fix: broadcast logic * revert: coalesce instruction * fix: add alias * docs: enhance docs * test: accidentally removed test * test: rescue missing test * chore: remove unused step * refactor: increased modularisation * feat: restructure data model * test: structural test for annotate function * fix: prevent locus column could be duplicated * chore: up-to-date with pre-commit --- .../howto/python_api/c_applying_methods.py | 2 +- src/gentropy/clump.py | 70 ----------- src/gentropy/config.py | 5 +- src/gentropy/dataset/study_locus.py | 70 +++++++++++ src/gentropy/dataset/summary_statistics.py | 31 ++--- src/gentropy/method/window_based_clumping.py | 115 ++---------------- src/gentropy/window_based_clumping.py | 39 +++--- tests/gentropy/dataset/test_study_locus.py | 11 ++ .../method/test_window_based_clumping.py | 18 ++- 9 files changed, 147 insertions(+), 214 deletions(-) delete mode 100644 src/gentropy/clump.py diff --git a/docs/src_snippets/howto/python_api/c_applying_methods.py b/docs/src_snippets/howto/python_api/c_applying_methods.py index 12eaf61ac..d0bec9edc 100644 --- a/docs/src_snippets/howto/python_api/c_applying_methods.py +++ b/docs/src_snippets/howto/python_api/c_applying_methods.py @@ -23,7 +23,7 @@ def apply_class_method_clumping(summary_stats: SummaryStatistics) -> StudyLocus: from gentropy.method.window_based_clumping import WindowBasedClumping clumped_summary_statistics = WindowBasedClumping.clump( - summary_stats, window_length=500_000 + summary_stats, distance=250_000 ) # --8<-- [end:apply_class_method_clumping] return clumped_summary_statistics diff --git a/src/gentropy/clump.py b/src/gentropy/clump.py deleted file mode 100644 index 9ea3306ac..000000000 --- a/src/gentropy/clump.py +++ /dev/null @@ -1,70 +0,0 @@ -"""Step to run clump associations from summary statistics or study locus.""" -from __future__ import annotations - -from typing import Optional - -from gentropy.common.session import Session -from gentropy.dataset.ld_index import LDIndex -from gentropy.dataset.study_index import StudyIndex -from gentropy.dataset.study_locus import StudyLocus -from gentropy.dataset.summary_statistics import SummaryStatistics - - -class ClumpStep: - """Perform clumping of an association dataset to identify independent signals. - - Two types of clumping are supported and are applied based on the input dataset: - - Clumping of summary statistics based on a window-based approach. - - Clumping of study locus based on LD. - - Both approaches yield a StudyLocus dataset. - """ - - def __init__( - self, - session: Session, - input_path: str, - clumped_study_locus_path: str, - study_index_path: Optional[str] = None, - ld_index_path: Optional[str] = None, - locus_collect_distance: Optional[int] = None, - ) -> None: - """Run the clumping step. - - Args: - session (Session): Session object. - input_path (str): Input path for the study locus or summary statistics files. - clumped_study_locus_path (str): Output path for the clumped study locus dataset. - study_index_path (Optional[str]): Input path for the study index dataset. - ld_index_path (Optional[str]): Input path for the LD index dataset. - locus_collect_distance (Optional[int]): Distance in base pairs to collect variants around the study locus. - - Raises: - ValueError: If study index and LD index paths are not provided for study locus. - """ - input_cols = session.spark.read.parquet( - input_path, recursiveFileLookup=True - ).columns - if "studyLocusId" in input_cols: - if study_index_path is None or ld_index_path is None: - raise ValueError( - "Study index and LD index paths are required for clumping study locus." - ) - study_locus = StudyLocus.from_parquet(session, input_path) - ld_index = LDIndex.from_parquet(session, ld_index_path) - study_index = StudyIndex.from_parquet(session, study_index_path) - - clumped_study_locus = study_locus.annotate_ld( - study_index=study_index, ld_index=ld_index - ).clump() - else: - sumstats = SummaryStatistics.from_parquet( - session, input_path, recursiveFileLookup=True - ).coalesce(4000) - clumped_study_locus = sumstats.window_based_clumping( - locus_collect_distance=locus_collect_distance - ) - - clumped_study_locus.df.write.mode(session.write_mode).parquet( - clumped_study_locus_path - ) diff --git a/src/gentropy/config.py b/src/gentropy/config.py index 6a2469c0c..127d90844 100644 --- a/src/gentropy/config.py +++ b/src/gentropy/config.py @@ -321,9 +321,10 @@ class WindowBasedClumpingStep(StepConfig): summary_statistics_input_path: str = MISSING study_locus_output_path: str = MISSING + distance: int = 500_000 + collect_locus: bool = False + collect_locus_distance: int = 500_000 inclusion_list_path: str | None = None - locus_collect_distance: str | None = None - _target_: str = "gentropy.window_based_clumping.WindowBasedClumpingStep" diff --git a/src/gentropy/dataset/study_locus.py b/src/gentropy/dataset/study_locus.py index 4ff9f0172..185aeb569 100644 --- a/src/gentropy/dataset/study_locus.py +++ b/src/gentropy/dataset/study_locus.py @@ -1,4 +1,5 @@ """Study locus dataset.""" + from __future__ import annotations from dataclasses import dataclass @@ -24,6 +25,7 @@ from gentropy.dataset.ld_index import LDIndex from gentropy.dataset.study_index import StudyIndex + from gentropy.dataset.summary_statistics import SummaryStatistics class StudyLocusQualityCheck(Enum): @@ -427,6 +429,74 @@ def annotate_credible_sets(self: StudyLocus) -> StudyLocus: ) return self + def annotate_locus_statistics( + self: StudyLocus, + summary_statistics: SummaryStatistics, + collect_locus_distance: int, + ) -> StudyLocus: + """Annotates study locus with summary statistics in the specified distance around the position. + + Args: + summary_statistics (SummaryStatistics): Summary statistics to be used for annotation. + collect_locus_distance (int): distance from variant defining window for inclusion of variants in locus. + + Returns: + StudyLocus: Study locus annotated with summary statistics in `locus` column. If no statistics are found, the `locus` column will be empty. + """ + # The clumps will be used several times (persisting) + self.df.persist() + # Renaming columns: + sumstats_renamed = summary_statistics.df.selectExpr( + *[f"{col} as tag_{col}" for col in summary_statistics.df.columns] + ).alias("sumstat") + + locus_df = ( + sumstats_renamed + # Joining the two datasets together: + .join( + f.broadcast( + self.df.alias("clumped").select( + "position", "chromosome", "studyId", "studyLocusId" + ) + ), + on=[ + (f.col("sumstat.tag_studyId") == f.col("clumped.studyId")) + & (f.col("sumstat.tag_chromosome") == f.col("clumped.chromosome")) + & ( + f.col("sumstat.tag_position") + >= (f.col("clumped.position") - collect_locus_distance) + ) + & ( + f.col("sumstat.tag_position") + <= (f.col("clumped.position") + collect_locus_distance) + ) + ], + how="inner", + ) + .withColumn( + "locus", + f.struct( + f.col("tag_variantId").alias("variantId"), + f.col("tag_beta").alias("beta"), + f.col("tag_pValueMantissa").alias("pValueMantissa"), + f.col("tag_pValueExponent").alias("pValueExponent"), + f.col("tag_standardError").alias("standardError"), + ), + ) + .groupBy("studyLocusId") + .agg( + f.collect_list(f.col("locus")).alias("locus"), + ) + ) + + self.df = self.df.drop("locus").join( + locus_df, + on="studyLocusId", + how="left", + ) + + return self + def annotate_ld( self: StudyLocus, study_index: StudyIndex, ld_index: LDIndex ) -> StudyLocus: diff --git a/src/gentropy/dataset/summary_statistics.py b/src/gentropy/dataset/summary_statistics.py index 442672c58..6cde03988 100644 --- a/src/gentropy/dataset/summary_statistics.py +++ b/src/gentropy/dataset/summary_statistics.py @@ -9,7 +9,6 @@ from gentropy.common.schemas import parse_spark_schema from gentropy.common.utils import parse_region, split_pvalue from gentropy.dataset.dataset import Dataset -from gentropy.method.window_based_clumping import WindowBasedClumping if TYPE_CHECKING: from pyspark.sql.types import StructType @@ -59,34 +58,24 @@ def window_based_clumping( self: SummaryStatistics, distance: int = 500_000, gwas_significance: float = 5e-8, - baseline_significance: float = 0.05, - locus_collect_distance: int | None = None, ) -> StudyLocus: - """Generate study-locus from summary statistics by distance based clumping + collect locus. + """Generate study-locus from summary statistics using window-based clumping. + + For more info, see [`WindowBasedClumping`][gentropy.method.window_based_clumping.WindowBasedClumping] Args: distance (int): Distance in base pairs to be used for clumping. Defaults to 500_000. gwas_significance (float, optional): GWAS significance threshold. Defaults to 5e-8. - baseline_significance (float, optional): Baseline significance threshold for inclusion in the locus. Defaults to 0.05. - locus_collect_distance (int | None): The distance to collect locus around semi-indices. If not provided, locus is not collected. Returns: - StudyLocus: Clumped study-locus containing variants based on window. + StudyLocus: Clumped study-locus optionally containing variants based on window. """ - return ( - WindowBasedClumping.clump_with_locus( - self, - window_length=distance, - p_value_significance=gwas_significance, - p_value_baseline=baseline_significance, - locus_window_length=locus_collect_distance, - ) - if locus_collect_distance - else WindowBasedClumping.clump( - self, - window_length=distance, - p_value_significance=gwas_significance, - ) + from gentropy.method.window_based_clumping import WindowBasedClumping + + return WindowBasedClumping.clump( + self, + distance=distance, + gwas_significance=gwas_significance, ) def exclude_region(self: SummaryStatistics, region: str) -> SummaryStatistics: diff --git a/src/gentropy/method/window_based_clumping.py b/src/gentropy/method/window_based_clumping.py index a2ae12419..57a24c559 100644 --- a/src/gentropy/method/window_based_clumping.py +++ b/src/gentropy/method/window_based_clumping.py @@ -151,22 +151,21 @@ def _prune_peak(position: NDArray[np.float64], window_size: int) -> DenseVector: return DenseVector(is_lead) - @classmethod + @staticmethod def clump( - cls: type[WindowBasedClumping], - summary_stats: SummaryStatistics, - window_length: int, - p_value_significance: float = 5e-8, + summary_statistics: SummaryStatistics, + distance: int = 500_000, + gwas_significance: float = 5e-8, ) -> StudyLocus: - """Clump summary statistics by distance. + """Clump significant signals from summary statistics based on window. Args: - summary_stats (SummaryStatistics): summary statistics to clump - window_length (int): window length in basepair - p_value_significance (float): only more significant variants are considered + summary_statistics (SummaryStatistics): Summary statistics to be used for clumping. + distance (int): Distance in base pairs to be used for clumping. Defaults to 500_000. + gwas_significance (float): GWAS significance threshold. Defaults to 5e-8. Returns: - StudyLocus: clumped summary statistics + StudyLocus: clumped summary statistics (without locus collection) """ # Create window for locus clusters # - variants where the distance between subsequent variants is below the defined threshold. @@ -177,9 +176,9 @@ def clump( return StudyLocus( _df=( - summary_stats + summary_statistics # Dropping snps below significance - all subsequent steps are done on significant variants: - .pvalue_filter(p_value_significance) + .pvalue_filter(gwas_significance) .df # Clustering summary variants for efficient windowing (complexity reduction): .withColumn( @@ -188,7 +187,7 @@ def clump( f.col("studyId"), f.col("chromosome"), f.col("position"), - window_length, + distance, ), ) # Within each cluster variants are ranked by significance: @@ -213,7 +212,7 @@ def clump( fml.vector_to_array( f.udf(WindowBasedClumping._prune_peak, VectorUDT())( fml.array_to_vector(f.col("collectedPositions")), - f.lit(window_length), + f.lit(distance), ) ), ), @@ -245,91 +244,3 @@ def clump( ), _schema=StudyLocus.get_schema(), ) - - @classmethod - def clump_with_locus( - cls: type[WindowBasedClumping], - summary_stats: SummaryStatistics, - window_length: int, - p_value_significance: float = 5e-8, - p_value_baseline: float = 0.05, - locus_window_length: int | None = None, - ) -> StudyLocus: - """Clump significant associations while collecting locus around them. - - Args: - summary_stats (SummaryStatistics): Input summary statistics dataset - window_length (int): Window size in bp, used for distance based clumping. - p_value_significance (float): GWAS significance threshold used to filter peaks. Defaults to 5e-8. - p_value_baseline (float): Least significant threshold. Below this, all snps are dropped. Defaults to 0.05. - locus_window_length (int | None): The distance for collecting locus around the semi indices. Defaults to None. - - Returns: - StudyLocus: StudyLocus after clumping with information about the `locus` - """ - # If no locus window provided, using the same value: - if locus_window_length is None: - locus_window_length = window_length - - # Run distance based clumping on the summary stats: - clumped_dataframe = WindowBasedClumping.clump( - summary_stats, - window_length=window_length, - p_value_significance=p_value_significance, - ).df.alias("clumped") - - # Get list of columns from clumped dataset for further propagation: - clumped_columns = clumped_dataframe.columns - - # Dropping variants not meeting the baseline criteria: - sumstats_baseline = summary_stats.pvalue_filter(p_value_baseline).df - - # Renaming columns: - sumstats_baseline_renamed = sumstats_baseline.selectExpr( - *[f"{col} as tag_{col}" for col in sumstats_baseline.columns] - ).alias("sumstat") - - study_locus_df = ( - sumstats_baseline_renamed - # Joining the two datasets together: - .join( - f.broadcast(clumped_dataframe), - on=[ - (f.col("sumstat.tag_studyId") == f.col("clumped.studyId")) - & (f.col("sumstat.tag_chromosome") == f.col("clumped.chromosome")) - & ( - f.col("sumstat.tag_position") - >= (f.col("clumped.position") - locus_window_length) - ) - & ( - f.col("sumstat.tag_position") - <= (f.col("clumped.position") + locus_window_length) - ) - ], - how="right", - ) - .withColumn( - "locus", - f.struct( - f.col("tag_variantId").alias("variantId"), - f.col("tag_beta").alias("beta"), - f.col("tag_pValueMantissa").alias("pValueMantissa"), - f.col("tag_pValueExponent").alias("pValueExponent"), - f.col("tag_standardError").alias("standardError"), - ), - ) - .groupby("studyLocusId") - .agg( - *[ - f.first(col).alias(col) - for col in clumped_columns - if col != "studyLocusId" - ], - f.collect_list(f.col("locus")).alias("locus"), - ) - ) - - return StudyLocus( - _df=study_locus_df, - _schema=StudyLocus.get_schema(), - ) diff --git a/src/gentropy/window_based_clumping.py b/src/gentropy/window_based_clumping.py index fcc680ef7..bce9edd37 100644 --- a/src/gentropy/window_based_clumping.py +++ b/src/gentropy/window_based_clumping.py @@ -1,4 +1,5 @@ """Step to run window based clumping on summary statistics datasts.""" + from __future__ import annotations from gentropy.common.session import Session @@ -13,8 +14,10 @@ def __init__( session: Session, summary_statistics_input_path: str, study_locus_output_path: str, + distance: int = 500_000, + collect_locus: bool = False, + collect_locus_distance: int = 500_000, inclusion_list_path: str | None = None, - locus_collect_distance: int | None = None, ) -> None: """Run window-based clumping step. @@ -22,8 +25,10 @@ def __init__( session (Session): Session object. summary_statistics_input_path (str): Path to the harmonized summary statistics dataset. study_locus_output_path (str): Output path for the resulting study locus dataset. + distance (int): Distance, within which tagging variants are collected around the semi-index. Optional. + collect_locus (bool): Whether to collect locus around semi-indices. Optional. + collect_locus_distance (int): Distance, within which tagging variants are collected around the semi-index. Optional. inclusion_list_path (str | None): Path to the inclusion list (list of white-listed study identifier). Optional. - locus_collect_distance (int | None): Distance, within which tagging variants are collected around the semi-index. Optional. """ # If inclusion list path is provided, only these studies will be read: if inclusion_list_path: @@ -35,16 +40,22 @@ def __init__( # If no inclusion list is provided, read all summary stats in folder: study_ids_to_ingest = [summary_statistics_input_path] - ( - SummaryStatistics.from_parquet( - session, - study_ids_to_ingest, - recursiveFileLookup=True, - ) - .coalesce(4000) - # Applying window based clumping: - .window_based_clumping(locus_collect_distance=locus_collect_distance) - # Save resulting study locus dataset: - .df.write.mode(session.write_mode) - .parquet(study_locus_output_path) + ss = SummaryStatistics.from_parquet( + session, + study_ids_to_ingest, + recursiveFileLookup=True, + ) + + # Clumping: + study_locus = ss.window_based_clumping( + distance=distance, ) + + # Optional locus collection: + if collect_locus: + # Collecting locus around semi-indices: + study_locus = study_locus.annotate_locus_statistics( + ss, collect_locus_distance=collect_locus_distance + ) + + study_locus.df.write.mode(session.write_mode).parquet(study_locus_output_path) diff --git a/tests/gentropy/dataset/test_study_locus.py b/tests/gentropy/dataset/test_study_locus.py index c12597d54..1401b9dd3 100644 --- a/tests/gentropy/dataset/test_study_locus.py +++ b/tests/gentropy/dataset/test_study_locus.py @@ -10,6 +10,7 @@ from gentropy.dataset.study_index import StudyIndex from gentropy.dataset.study_locus import CredibleInterval, StudyLocus from gentropy.dataset.study_locus_overlap import StudyLocusOverlap +from gentropy.dataset.summary_statistics import SummaryStatistics from pyspark.sql import Column, SparkSession from pyspark.sql.types import ( ArrayType, @@ -214,6 +215,16 @@ def test_filter_by_study_type( assert observed.df.count() == expected_sl_count +def test_annotate_locus_statistics( + mock_study_locus: StudyLocus, mock_summary_statistics: SummaryStatistics +) -> None: + """Test annotate locus statistics returns a StudyLocus.""" + assert isinstance( + mock_study_locus.annotate_locus_statistics(mock_summary_statistics, 100), + StudyLocus, + ) + + def test_filter_credible_set(mock_study_locus: StudyLocus) -> None: """Test credible interval filter.""" assert isinstance( diff --git a/tests/gentropy/method/test_window_based_clumping.py b/tests/gentropy/method/test_window_based_clumping.py index 03546df9d..cd583bac2 100644 --- a/tests/gentropy/method/test_window_based_clumping.py +++ b/tests/gentropy/method/test_window_based_clumping.py @@ -8,12 +8,12 @@ from gentropy.method.window_based_clumping import WindowBasedClumping from pyspark.ml import functions as fml from pyspark.ml.linalg import VectorUDT +from pyspark.sql import SparkSession from pyspark.sql import functions as f from pyspark.sql.window import Window if TYPE_CHECKING: from gentropy.dataset.summary_statistics import SummaryStatistics - from pyspark.sql import SparkSession def test_window_based_clump__return_type( @@ -21,7 +21,14 @@ def test_window_based_clump__return_type( ) -> None: """Test window-based clumping.""" assert isinstance( - WindowBasedClumping.clump_with_locus(mock_summary_statistics, 250_000), + WindowBasedClumping.clump(mock_summary_statistics, distance=250_000), + StudyLocus, + ) + assert isinstance( + WindowBasedClumping.clump( + mock_summary_statistics, + distance=250_000, + ), StudyLocus, ) @@ -44,7 +51,10 @@ def test_window_based_clump_with_locus__correctness( ) -> None: """Test window-based clumping.""" clumped = sample_summary_statistics.window_based_clumping( - distance=250_000, locus_collect_distance=250_000 + distance=250_000, + ) + clumped = clumped.annotate_locus_statistics( + sample_summary_statistics, collect_locus_distance=250_000 ) # Asserting the presence of locus key: @@ -57,7 +67,7 @@ def test_window_based_clump_with_locus__correctness( assert (clumped.df.filter(f.col("variantId") == "18_12843138_T_C").count()) == 1 # Assert the number of variants in the locus: - assert (clumped.df.select(f.explode_outer("locus").alias("loci")).count()) == 132 + assert (clumped.df.select(f.explode_outer("locus").alias("loci")).count()) == 218 def test_prune_peak(spark: SparkSession) -> None: From 650bb2ee9f159b1a296b888daa4997837b881112 Mon Sep 17 00:00:00 2001 From: xyg123 <33658607+xyg123@users.noreply.github.com> Date: Wed, 20 Mar 2024 13:50:02 +0000 Subject: [PATCH 37/86] feat: notebook to run qc metrics each release (#541) * feat: notebook to run qc metrics each release * feat: added additional checks as discussed * feat: additional checks * fix: remove matplotlib from dependencies * fix: address comments --- notebooks/Release_QC_metrics.ipynb | 1103 ++++++++++++++++++++++++++++ 1 file changed, 1103 insertions(+) create mode 100644 notebooks/Release_QC_metrics.ipynb diff --git a/notebooks/Release_QC_metrics.ipynb b/notebooks/Release_QC_metrics.ipynb new file mode 100644 index 000000000..0052a3cc8 --- /dev/null +++ b/notebooks/Release_QC_metrics.ipynb @@ -0,0 +1,1103 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Notebook Title: Exploratory Data Analysis for Release QC Metrics\n", + "\n", + "## Description:\n", + "This notebook provides an exploratory data analysis for release quality control (QC) metrics. The notebook utilizes PySpark and pandas for data processing and visualization.\n", + "\n", + "## Notebook Workflow:\n", + "1. Import necessary modules and set up the release path and version.\n", + "2. Load and analyze the variant index data:\n", + " - Count the number of unique variants.\n", + "3. Load and analyze the variant-to-gene (v2g) data:\n", + " - Count the number of unique variants and total variant-to-gene assignments.\n", + " - Count the number of v2g assignments where the score is > 0.8.\n", + " - Plot a histogram/density plot for the \"score\" column.\n", + "4. Load and analyze the study index data for different data sources (FinnGen, GWASCat, eQTLcat):\n", + " - Count the number of unique studies for each data source.\n", + "5. Analyze the credible sets for each datasource (Finngen, gwascat, eqtlcat):\n", + " - Analyze the credible sets:\n", + " - Count the number of unique credible sets and unique study IDs.\n", + " - Plot a scatter plot of the credible set size vs. the top posterior probability.\n", + " - Count the number of credible sets with a top SNP posterior probability > 0.9..\n", + "6. Analyze colocalization data:\n", + " - Count the total number of colocalizations and the number with clpp > 0.8.\n", + " - Calculate the average number of overlaps per credible set.\n", + "7. Analyze locus-to-gene (L2G) predictions:\n", + " - Load the locus-to-gene predictions data.\n", + " - How many Studylocus contains a \"good\" l2g prediction? (l2g_score > 0.5)\n", + " - How does l2g perform based on different datasource inputs? (impossible to tell)\n", + " \n", + "Note: This notebook assumes that the necessary data files are available in the specified release path and version.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup steps\n", + "##### 1. Import necessary modules and set up the release path and version." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Setting default log level to \"WARN\".\n", + "To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "24/03/20 13:24:56 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n" + ] + } + ], + "source": [ + "\"\"\"notebook for release qc metrics.\"\"\"\n", + "\n", + "import sys\n", + "from gentropy.common.session import Session\n", + "from pyspark.sql import functions as f\n", + "\n", + "sys.path.append(\"../../gentropy/src/\")\n", + "release_path=\"../../otg_releases\"\n", + "release_ver=\"2403\"\n", + "\n", + "session=Session()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2. Load and analyze the variant index data:\n", + " - Count the number of unique variants." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 3:> (0 + 8) / 9]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Variant index contains 5468737 unique variants.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "\n", + "variant_index_path = f\"{release_path}/{release_ver}/variant_index\"\n", + "variant_index=session.spark.read.parquet(variant_index_path, recursiveFileLookup=True)\n", + "\n", + "# How many variants?\n", + "print(\"Variant index contains \", variant_index.select(f.col(\"variantId\")).distinct().count(), \" unique variants.\")\n", + "\n", + "# How many variants with MAF>=0.01 for EUR population?\n", + "#variant_index.filter(variant_index[\"alleleFrequencies.populationName\"] > 0.05).show(10, False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### 3. Load and analyze the variant-to-gene (v2g) data:\n", + " - Count the number of unique variants and total variant-to-gene assignments.\n", + " - Count the number of v2g assignments where the score is > 0.8." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Unique variants in v2g release: 5090991 , total variant to gene assignments: 105771851 , number of v2g assignments where score > 0.8: 23176515 ( 4.552 %)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summary of v2g_score: Mean: 0.5909395615801637 L.quart: 0.29 Median: 0.62 U.quart: 0.94\n" + ] + } + ], + "source": [ + "#v2g_path='gs://genetics_etl_python_playground/releases/24.03/variant_to_gene'\n", + "v2g_path=f\"{release_path}/{release_ver}/variant_to_gene\"\n", + "v2g=session.spark.read.parquet(v2g_path, recursiveFileLookup=True)\n", + "\n", + "#How many variants?\n", + "print(\"Unique variants in v2g release: \", v2g.select(f.col(\"variantId\")).distinct().count(), \", total variant to gene assignments: \", v2g.count(), \", number of v2g assignments where score > 0.8: \", v2g.filter(v2g[\"score\"] > 0.8).count(), \"(\", round( v2g.filter(v2g[\"score\"] > 0.8).count()/v2g.select(f.col(\"variantId\")).distinct().count(), 3), \"%)\")\n", + "sample_size_quartiles = v2g.stat.approxQuantile(\"score\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of v2g_score: Mean: \", v2g.select(f.mean(v2g[\"score\"])).collect()[0][0], \"L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])\n", + "#v2g.select().toPandas().plot.hist()\n", + "#v2g.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " - Plot a histogram/density plot for the \"score\" column." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "#The histogram/density plot for “score”\n", + "# Out of mem error:\n", + "#v2g.select(f.col(\"score\")).toPandas().plot.hist(bins=10, alpha=0.5, label=\"v2g scores\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### 5. Analyze the credible sets:\n", + "For each datasource and finemapping methods:\n", + "- Count the number of unique credible sets and unique study IDs.\n", + "- Plot a scatter plot of the credible set size vs. the top posterior probability.\n", + "- Count the number of credible sets with a top SNP posterior probability > 0.9.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of unique finngen susie CSs: 13966\n", + "Ingested 13966 Credible sets from 2408 finngen studies\n", + "Summary of finngen sample sizes: Mean: 355917.896179402 L.quart: 316100.0 Median: 392089.0 U.quart: 409683.0\n", + "Number of finngen studies with at least one CS: 1194\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of CS with top SNP PP > 0.9: 1898\n", + "Summary of finngen credible set sizes: L.quart: 4.0 Median: 14.0 U.quart: 41.0\n" + ] + }, + { + "data": { + "image/png": "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tWoVQ0NDO93v97//PYceeuiU22q1Gi984Qt54QtfSJ7n/Nmf/Rnvfve7eetb3zpjj6eJdOT69et363c97LDD+NWvfrXg+01+7v7+/jmfe926dVQqlU5EaTK33HLLTrdJKTn55JM5+eSTufTSS7n44ot529vexg033NBJwf785z/n5JNP3mUvprl+vqu/WyDQy4SUWSCwgpnwm1x22WVTbv/oRz865XulFM997nP50pe+NONmv2XLlkVZj7WW4eHhKbetX7+e/fbbb0pU5LDDDuO///u/yfO8c9tXv/pV7rrrrin33bZt25Tv4zjm4Q9/ON57iqKYcQ2nnnoq/f39XHzxxTMes6vf9bnPfS4///nP+Zd/+Zedfrar6Nixxx7LYYcdxvvf/37GxsZmfW6lFKeeeipf/vKXufPOOzs//81vfsPXv/71KffZvn37To8zEX2aeE1f8IIXcPfdd/PpT396p2ObzSbj4+Od72u12k5idL5/t0CglwkRokBgBXPsscfy3Oc+lw996ENs27atU3b/29/+FpgaDXjve9/LDTfcwPHHH88555zDwx/+cLZv385Pf/pTvvWtb8248S6U0dFRDjjgAJ73vOdx9NFHU6/X+da3vsWPfvQjPvCBD3SOO/vss/niF7/In/zJn/CCF7yA3/3ud3zuc5+bYjYH+OM//mM2btzIiSeeyIYNG/jNb37Dxz72MU477TT6+vpmXEN/fz+f+MQneOlLX8oxxxzDn//5n7Nu3TruvPNOrr32Wk488UQ+9rGPzfo7vPnNb+aLX/wiz3/+83n5y1/Osccey/bt2/nKV77C5ZdfztFHHz3rfaWUXHHFFTz96U/nEY94BGeddRb7778/d999NzfccAP9/f3827/9GwAXXngh119/PU984hM599xzMcZ0ei794he/6DzmRRddxHe/+11OO+00Dj74YB544AEuu+wyDjjgAJ7whCcA8NKXvpSrr76aV77yldxwww2ceOKJWGu5+eabufrqq/n617/OYx/7WKB8z3zrW9/i0ksvZb/99uOQQw7hoQ996Lz+boFAT7OMFW6BwD7BQsvuZyptnl6GPnHf6aXW00vMvfd+fHzcn3feeX716tW+Xq/7Zz/72f6WW27xgH/ve9875f7333+/P++88/yBBx7ooyjyGzdu9CeffLL/1Kc+tcvf54477vCA/8xn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0Ud3hvBKKXdKSU50Hgc48MADueWWW7jsssuoVCqce+65nHTSSVOOmbz+TZs2TVn/TTfdxC233MKb3/zmGdd3xBFHMDw8PG/xctRRR3Huuefyuc99jm9+85t885vf5D/+4z8A+MxnPsONN97I4x//eD7/+c9zxBFH8N///d/zety9xbIKorGxsc4fBcqy+ptuuok777wTKNNdL3vZyzrHv/KVr+T222/nr/7qr7j55pu57LLLuPrqq3nDG96wHMsPBAKBfQIpBEoKzLRIkHEeJQWyy7wgC+WhD33oTh6l6d8fc8wx3HLLLTzkIQ/Z6UvK3d9KtdaccsopXHLJJfziF7/gf//3f/n3f/93oKwSmyxGRkZGuOOOO6bcv1KpcPrpp/ORj3yE73znO51IzXSOOeYY7rvvPrTWO61/7dq1M67tec97HnEcc8kll8z48wnhNhMPf/jDgbK9zgSPecxjeOtb38p//dd/cdRRR/FP//RPs95/OVjWsvsf//jHPOUpT+l8/8Y3vhGAM844g6uuuop77723I44ADjnkEK699lre8IY38OEPf5gDDjiAK664IpTcBwKBwBIipSDVsu0hcui2OLLWU0sUUva2IHrNa17DSSedxKWXXsrpp5/Ov//7v3PddddNSRedf/75PPOZz+Sggw7iec97HlJKfv7zn/OrX/2Kv/3bv92t5/3qV7/K7bffzkknncSqVav42te+hnOOhz70oQA89alP5aqrruL0009ncHCQ888/H6VU5/5XXXUV1lqOP/54qtUqn/vc56hUKhx88ME7Pdcpp5zCCSecwLOf/WwuueQSjjjiCO655x6uvfZanvOc5/DYxz52p/sceOCBfPCDH+TVr341IyMjvOxlL2Pz5s384Q9/4B/+4R+o1+t84AMf4FWvehX77bcfT33qUzsm+L/9279l3bp1nHDCCdxxxx186lOf4lnPehb77bcft9xyC7feeuuUgEc3sKyC6MlPfvKcFQozdaF+8pOfzM9+9rMlXFUgEAgEppNG5UbcMo7MOJQU1BLVub2XOfHEE7n88su58MILefvb386pp57KG97wBj72sY91jjn11FP56le/ykUXXcT73vc+oijiYQ97GGefffZuP+/g4CDXXHMNF1xwAa1Wi8MPP5x//ud/5hGPeARQZknuuOMOnvnMZzIwMMC73vWuKRGiwcFB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eMPwfR4FnmhBdOnSJYwxvPrqqyd+/uqrr/Lcc8+d+pnnnnvuvt5fliVlWT6cDd7iDYv76Y6d5zN3e8/DXMzuKPrutq1aRnGnFWmnvf+sglZrhT0jue5+9u08230/uJ9zWGjLJWfZC2lT3Gmjztze40XXaVyTs/b1tZzr+zqGD+G43e37HgVp9kEKheqMY327seDD7n68luN8r2P3sM8dnDwOG85ReXJk+Ch+7xsFZ/c8HwOKouDd7343H/nIRzY/SynxkY98hJdffvnUz7z88ssn3g/wYz/2Y2e+f4stnlYcH++90X7vk9q3+4W1MvYqCnOu7T1tv86zr6/leDxNx/Bhbsu6UNitHHu125B8192v9e+yVp/7WN/rO58kHud5fJqPw+sBT3xk9t3f/d18+7d/O+95z3t473vfy5/9s3+W5XLJH/yDfxCA/+6/++948cUX+eAHPwjAd33Xd/EN3/AN/Jk/82f45m/+Zj70oQ/xsz/7s/x//9//9yR3Y4sttthii/vAo+hUbLsfgu1xeG144gXRt3zLt3Dt2jW+//u/n1deeYXf/Jt/M//iX/yLDXH6c5/7HPqYRfrXf/3X83f+zt/h//w//0/+2B/7Y7zzne/kwx/+8Bvag2iLLbbYYosttni0eOI+RI8bb1Yfoi222GKLLbZ4PeNRr99PlEO0xRZbbLHFFlts8TRgWxBtscUWW2yxxRZvemwLoi222GKLLbbY4k2PbUG0xRZbbLHFFlu86bEtiLbYYosttthiizc9tgXRFltsscUWW2zxpse2INpiiy222GKLLd702BZEW2yxxRZbbLHFmx7bgmiLLbbYYosttnjT44lHdzxurI25Z7PZE96SLbbYYostttjivFiv248qYONNVxDduHEDgLe+9a1PeEu22GKLLbbYYov7xY0bN9jd3X3o3/umK4guXLgASGjsozigW5wfs9mMt771rXz+85/f5so9Bdiej6cH23Px9GB7Lp4eHB0d8dJLL23W8YeNN11BpLXQpnZ3d7cX91OCnZ2d7bl4irA9H08Ptufi6cH2XDw9WK/jD/17H8m3brHFFltsscUWW7yOsC2Itthiiy222GKLNz3edAVRWZb8wA/8AGVZPulNedNjey6eLmzPx9OD7bl4erA9F08PHvW5UPlR6de22GKLLbbYYostXid403WItthiiy222GKL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55/7uZ/Lv/f3/t5TZfdf+7Vfm3/6p386/9RP/VR+5zvfuZXdvwb8z//z/5x3d3fzT/zET5yQta5Wq817/vAf/sP5pZdeyj/+4z+ef/Znfza//PLL+eWXX968vpa1/vbf/tvzJz7xifwv/sW/yM8888xWXnyf+J7v+Z78kz/5k/kzn/lM/rmf+7n8Pd/zPVkplf/lv/yXOefteXjSOK4yy3l7Ph4X/ugf/aP5J37iJ/JnPvOZ/G//7b/N73//+/OlS5fy1atXc86P9zy8qQqinHP+C3/hL+SXXnopF0WR3/ve9+Z//+///ZPepDcc/tW/+lcZuOOfb//2b885i/T++77v+/Kzzz6by7LM3/iN35g/+clPnviOGzdu5G/91m/Nk8kk7+zs5D/4B/9gns/nT2BvXt847TwA+Yd+6Ic272maJv8v/8v/kvf39/NoNMq///f//nzlypUT3/PZz342f9M3fVOu6zpfunQp/9E/+kez9/4x783rG//D//A/5Le97W25KIr8zDPP5G/8xm/cFEM5b8/Dk8btBdH2fDwefMu3fEt+/vnnc1EU+cUXX8zf8i3fkj/96U9vXn+c50HlnPNr7m1tscUWW2yxxRZbvAHwpuEQbbHFFltsscUWW5yFbUG0xRZbbLHFFlu86bEtiLbYYosttthiizc9tgXRFltsscUWW2zxpse2INpiiy222GKLLd702BZEW2yxxRZbbLHFmx7bgmiLLbbYYosttnjTY1sQbbHFFk8VPvvZz6KU4hOf+MST3pRToZTiwx/+8JPejC222OIhY5t2v8UWW7yh8d//9/89h4eHD62IuXLlCvv7+w/lu7bYYounB9uCaIsttngk8N7jnHvSm/HQsU0y32KLNya2I7Mtttji3Egp8af+1J/iy77syyjLkpdeeon/+//+vzdjrr/39/4e3/AN30BVVfztv/23Afjrf/2v85Vf+ZVUVcVXfMVX8Jf/8l8+8Z0/8zM/w9d+7ddSVRXvec97+PjHP37i9YODA77t276NZ555hrqueec738kP/dAPbV7//Oc/z3/73/637O3tceHCBX7v7/29fPaznwXgB3/wB/mbf/Nv8o//8T9GKYVSip/4iZ+46z72fc93fud38vzzz1NVFW9729v44Ac/uHn9+MjsB3/wBzffe/yfH/7hH94crw9+8IO84x3voK5r3vWu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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# study_index='gs://genetics_etl_python_playground/releases/24.03/study_index'\n", + "# Study Index. It has different files for different datasource (FinnGen, GWASCat, eQTLcat).\n", + "# Credible_set. Please use Daniels’ notebook as a reference. For each subfolder:\n", + "\n", + "finngen_index_path=f\"{release_path}/{release_ver}/study_index/finngen\"\n", + "# finngen susie:\n", + "finngen_susie_path=f\"{release_path}/{release_ver}/credible_set/finngen_susie\"\n", + "\n", + "finngen_susie=session.spark.read.parquet(finngen_susie_path, recursiveFileLookup=True)\n", + "print(\"Number of unique finngen susie CSs: \", finngen_susie.select(\"studyId\", \"region\", \"credibleSetIndex\").distinct().count())\n", + "\n", + "# FinnGen:\n", + "finngen_index=session.spark.read.parquet(finngen_index_path, recursiveFileLookup=True)\n", + "# Number of CSs, studies.\n", + "print(\"Ingested \", finngen_susie.select(\"studyId\", \"region\", \"credibleSetIndex\").distinct().count(), \" Credible sets from\", finngen_index.select(f.col(\"studyId\")).distinct().count(), \"finngen studies\")\n", + "sample_size_quartiles = finngen_index.stat.approxQuantile(\"nSamples\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of finngen sample sizes: Mean: \", finngen_index.select(f.mean(finngen_index[\"nSamples\"])).collect()[0][0], \"L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])\n", + "# Number of unique studyids with at leas one CS.\n", + "print(\"Number of finngen studies with at least one CS: \", finngen_susie.select(\"studyId\").distinct().count())\n", + "# Number of CSs with at leas one SNP with PIP>0.9\n", + "print(\"Number of CS with top SNP PP > 0.9: \", finngen_susie.select(\"studyId\", \"region\", \"credibleSetIndex\", \"locus.posteriorProbability\").withColumn(\"top_PP\", f.col(\"posteriorProbability\").getItem(0)).filter(f.col(\"top_PP\") > 0.9).count())\n", + "# The descriptive summary of 99% CS size and histogram/density plot\n", + "\n", + "credset_size_quartiles = finngen_susie.select(\"studyId\", \"region\", \"credibleSetIndex\", \"locus.posteriorProbability\").withColumn(\"credset_size\", f.size(f.col(\"posteriorProbability\"))).stat.approxQuantile(\"credset_size\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of finngen credible set sizes: L.quart: \", credset_size_quartiles[0], \"Median: \", credset_size_quartiles[1], \"U.quart: \", credset_size_quartiles[2])\n", + "\n", + "finngen_susie.select(\"studyId\", \"region\", \"credibleSetIndex\", \"locus.posteriorProbability\").withColumn(\"top_PP\", f.col(\"posteriorProbability\").getItem(0)).withColumn(\"credset_size\", f.size(f.col(\"posteriorProbability\"))).toPandas().plot.scatter(x=\"credset_size\", y=\"top_PP\", xlim=[0, 500], alpha=0.05, label=\"finngen susie CSs\", title=\"finngen susie credsets\")\n", + "\n", + "finngen_susie_fm=finngen_susie.select(\"studyId\", \"studyLocusId\", \"locus.posteriorProbability\").withColumn(\"top_PP\", f.col(\"posteriorProbability\").getItem(0)).withColumn(\"credset_size\", f.size(f.col(\"posteriorProbability\")))\n", + "# The histogram/density plot for total sample size\n", + "#finngen_index.select(f.col(\"nSamples\")).toPandas().plot.hist(bins=10, alpha=0.5, label=\"FinnGen sample size\", title=\"FinnGen sample sizes\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of unique finngen pics CSs: 19967 in 1342 studies.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of finngen_pics CS with top SNP PP > 0.9: 7239\n", + "Summary of finngen_pics sample sizes: L.quart: 316100.0 Median: 392089.0 U.quart: 409683.0\n", + "Summary of finngen_pics credset sizes: Mean: 36.04337156307908 L.quart: 1.0 Median: 7.0 U.quart: 30.0\n" + ] + }, + { + "data": { + "image/png": "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fOQjufvd785Xv/rVNT13JBIJREEUiWxxzjrrrMPu27Zt22GemsWO3bZtG8DcsTfffDNSSs4999wFx93tbndbcPvOO+9kcnKS97znPezatWvB16WXXgocbg5e6bnXwt3vfvcFtzudDqeeeio//OEPlzzne9/7Hve4xz2WNaa/4AUv4LzzzuNxj3scZ5xxxpxwWYmxsTEAZmZmVvcDABdffDGf//znmZyc5Etf+hIvfOELufnmm3n84x8fjdWRyBEQPUSRyBZHKbXo/X6RjhxrOXY5nHMA/K//9b945jOfuegx97vf/Y7Lcx9Pdu/ezY033sjnP/95PvvZz/LZz36W97///TzjGc/gAx/4wJLn3fOe9wTgX//1X+ciX6ul1WrxyEc+kkc+8pHs3LmTq666is9+9rNLvq6RSGRxYoQoEokcM84++2ycc/zgBz9YcP+h1WC7du2i2+1ireXCCy9c9Ot4Vkv913/914LbvV6PW2+9lXPOOWfJc+5617ty00030TTNstdO05RLLrmEa6+9lu9973v85m/+Jh/84AeXrYi75JJLAPjzP//z1f8Qi/DgBz8YgFtvvfWorhOJbEWiIIpEIseMiy++GIBrr712wf3veMc7FtxWSvHEJz6Rj3/84/zbv/3bYde58847j98igfe85z0LhM2f/MmfYIzhcY973JLnPPGJT2Tv3r28853vPOyx2SjVvn37FtwvpZyLdFVVteS1H/rQh/ILv/ALvPe97+WTn/zkYY/Xdc1LX/rSuds33HDDoteZ9UDd4x73WPK5IpHI4sSUWSQSOWY86EEP4olPfCJvfetb2bdv31zZ/ezYifkl7X/wB3/AF77wBc4//3wuu+wy7n3ve7N//36++c1v8rd/+7fs37//uK2zrmse+9jH8uu//uvcdNNNXHvttTziEY/gl3/5l5c85xnPeAYf/OAHeclLXsLXvvY1HvnIR9Lv9/nbv/1bXvCCF/CEJzyB5zznOezfv5/HPOYxnHHGGdx888284x3v4AEPeAD3ute9ll3TBz/4QX7+53+eX/3VX+WSSy7hsY99LO12m//6r//iwx/+MLfeeutcL6InPOEJnHvuuVxyySXc9a53nVvH//2//5eHPOQhcxGnSCSyeqIgikQix5QPfvCDnHLKKfyf//N/+Ku/+isuvPBCPvKRj3CPe9xjwdiQPXv28LWvfY3XvOY1fOITn+Daa69lx44d/NRP/dSCvkbHg3e+85186EMf4tWvfjVN0/CUpzyFt7/97csOv1VK8ZnPfIZrrrmGv/iLv+DjH/84O3bs4BGPeAT3ve99geCJes973sO1117L5OQkp5xyCk960pO48sorkXL5gPyuXbv46le/yrXXXstHPvIRXvnKV1LXNWeffTa//Mu/vKCP0Xvf+17++q//mo9+9KPccssteO+5y13uwitf+Upe9rKXxY7kkcgREGeZRSKR486NN97IAx/4QP78z/+cpz3taeu2juuuu45LL72Ur3/963N+m0gkEoHoIYpEIseY4XB42H1vfetbkVLycz/3c+uwokgkElmZGFeNRCLHlDe+8Y184xvf4NGPfjRa67ny8+c+97mceeaZx+U5h8MhU1NTyx6zffv24/LckUjk5CAKokgkckx52MMexvXXX8/VV19Nr9fjrLPO4sorr1wwrf1Y85GPfGSuoeNSfOELXzhuzx+JRDY/0UMUiUQ2Pbfeeiv/3//3/y17zIMe9KC57taRSCRyKFEQRSKRSCQS2fJEU3UkEolEIpEtz5bzEDnnuOWWW+h2u8v2HIlEIpFIJLJx8N4zMzPDaaedtmJfryNhywmiW2655bhVukQikUgkEjm+/PjHP+aMM8445tfdcoKo2+0C4QUdGxtb59VEIpFIJBJZDdPT05x55plz+/ixZssJotk02djYWBREkUgkEolsMo6X3SWaqiORSCQSiWx5oiCKRCKRSCSy5YmCKBKJRCKRyJZny3mIIpFIJLIyzjnqul7vZUS2GGmaHpeS+tUQBVEkEolEFlDXNT/4wQ9wzq33UiJbDCkl5557LmmanvDnjoIoEolEInN477n11ltRSnHmmWeu26f1yNZjtnHyrbfeyllnnXXCmydHQRSJRCKROYwxDAYDTjvtNFqt1novJ7LF2LVrF7fccgvGGJIkOaHPHaV/JBKJROaw1gKsS8oiEpn9u5v9OzyRREEUiUQikcOIsx4j68F6/t1FQRSJRCKRSGTLs66C6Etf+hKXXHIJp512GkIIPvnJT654zhe/+EV++qd/mizLuNvd7sZ11113RM99nys+zzkv//QRnRuJRCKRjYX3nuc+97ls374dIQQ33ngjF1xwAS960YvWe2mRTcK6CqJ+v8/9739//viP/3hVx//gBz/gl37pl3j0ox/NjTfeyIte9CKe85zn8PnPf/6I13DOyz8dhVEkEolscj73uc9x3XXX8Td/8zfceuut3Oc+9+ETn/gEV1999Xov7ZhxwQUXIIRACEGe59z73vfm2muvnXv8uuuuY2JiYsE5dV3zxje+kfvf//60Wi127tzJwx/+cN7//vfTNA0Ad955J89//vM566yzyLKMU045hYsvvpi///u/X3Y909PTvPKVr+Se97wneZ5zyimncOGFF/KJT3wC7z0Q9u2nPvWpnHbaaeR5zhlnnMETnvAEvvOd7xzbF+cYsK5VZo973ON43OMet+rj3/Wud3Huuefypje9CYB73etefOUrX+Etb3kLF1988fFaZiQSiUQ2ON/73vc49dRTedjDHjZ33/bt29dxRceHyy67jNe85jUMBgM++MEP8sIXvpBt27bxlKc85bBj67rm4osv5tvf/jZXX301D3/4wxkbG+Mf//Ef+aM/+iMe+MAH8oAHPIAnPvGJ1HXNBz7wAe5yl7tw++23c8MNN7Bv374l1zE5OckjHvEIpqameO1rX8tDHvIQtNb83d/9Hb/7u7/LYx7zGNrtNhdddBH3uMc9+MQnPsGpp57Kf//3f/PZz36WycnJ4/gqHSF+gwD4v/qrv1r2mEc+8pH+8ssvX3Df+973Pj82NrbkOWVZ+qmpqbmvH//4xx7wZ77oo/7sl/3Ngq9IJBLZ6gyHQ//v//7vfjgcHvW1rHW+MdZb647Bypbmmc98pgfmvs4++2zvvfePetSjFuwZZ599tr/mmmv8pZde6judjj/zzDP9u9/97rnHf/CDH3jAf/zjH/cXXHCBL4rC3+9+9/Nf/epXFzzfe97zHn/GGWf4oij8r/zKr/g3velNfnx8fMExn/zkJ/0DH/hAn2WZP/fcc/2VV17pm6aZexzwf/qnf+p/5Vd+xRdF4e92t7v5v/7rv1725zz05/He+7vf/e7+yU9+svfe+/e///0L1vGGN7zBSyn9N7/5zcOuVde17/V6/sCBAx7wX/ziF5d97kN5/vOf79vttv/JT35y2GMzMzO+aRr/rW99ywP+hz/84aqvu9zf39TUlAf81NTUmta6WjaVqfq2225jz549C+7bs2cP09PTDIfDRc95/etfz/j4+NzXmWeeueT1nfPHdL2RSCSyFfHeM6wNU2XD5LBhqmwY1mYujXKsedvb3sZrXvMazjjjDG699Va+/vWvL3nsm970Jh784AfzrW99ixe84AU8//nP56abblpwzCtf+Upe+tKXcuONN3LeeefxlKc8BWMMAH//93/P8573PC6//HJuvPFGLrroIq655poF53/5y1/mGc94Bpdffjn//u//zrvf/W6uu+66w4676qqr+PVf/3X+5V/+hV/8xV/kaU97Gvv371/Tz14UxZIjVj70oQ9x4YUX8sAHPvCwx5Ikod1u0+l06HQ6fPKTn6SqqlU9p3OOD3/4wzztaU/jtNNOO+zxTqeD1ppdu3YhpeRjH/vYupTRr5VNJYiOhFe84hVMTU3Nff34xz9e8tif7JuhXzbH7T9tJBKJbAXKxtKvwgaY6bDN9CtL2RyfTXF8fJxut4tSilNOOYVdu3Yteewv/uIv8oIXvIC73e1uvOxlL2Pnzp184QtfWHDMS1/6Un7pl36J8847j6uuuoqbb76Z7373uwC84x3v4HGPexwvfelLOe+883jBC15wmPXjqquu4uUvfznPfOYzuctd7sJFF13E1Vdfzbvf/e4Fxz3rWc/iKU95Cne729143eteR6/X42tf+9qqfmZrLX/+53/Ov/zLv/CYxzxm0WP+67/+i3ve857LXkdrzXXXXccHPvABJiYmePjDH87v/d7v8S//8i9LnrN3714OHDiw4rVPP/103v72t/PqV7+abdu28ZjHPIarr76a73//+yv/gOvAphJEp5xyCrfffvuC+26//XbGxsYoimLRc7IsY2xsbMHXUrzuE1/hmz+8gzsm+1S1oawMdWNj5CgSiURWiXOe0jiUEiRKIkT4rpSgNG7d30/vd7/7zf1bCMEpp5zCHXfcseQxp556KsDcMTfddBM/8zM/s+D4Q29/+9vf5jWvec1c9KXT6XDZZZdx6623MhgMFn2edrvN2NjYYWs5lGuvvZZOp0NRFFx22WW8+MUv5vnPf/6ix672w/0Tn/hEbrnlFj71qU/xC7/wC3PV3EtVca8laPDCF76Q2267jQ996EM89KEP5S//8i/5qZ/6Ka6//vpVX+NEsalGdzz0oQ/lM5/5zIL7rr/+eh760Icek+t/9gee03bfwp0zFadtb6OUJFOK7a2U7Z2MItWrbhrlnMd5jxQCKWODs0gksjVw3mOdn4sMzaKloDIuvC+yfu+Jh46DEEIcNsR2/jGz7/lrGXTb6/W46qqr+NVf/dXDHsvzfE1rOZSnPe1pvPKVr6QoCk499dRlZ82dd955q67myvOciy66iIsuuohXvepVPOc5z+GKK67gWc961mHH7tq1i4mJiVVfu9vtcskll3DJJZfw2te+losvvpjXvva1XHTRRas6/0SxrhGiXq/HjTfeyI033giE8rwbb7yRH/3oR0BIdz3jGc+YO/55z3se3//+9/nd3/1dvvOd73Dttdfy0Y9+lBe/+MXHbE3/eNMdfP37+7np1klumy659cCAm/f1+NH+Pv2yWXCscx5jwyee2X9b605o7jwSiUQ2ElIIlBSYQyJBxnmUFMhN3gH7Hve4x2EepUNv//RP/zQ33XQTd7vb3Q77OtphuePj49ztbnfj9NNPX/FaT33qU/nbv/1bvvWtbx32WNM09Pv9Jc+9973vveTjUkqe/OQn86EPfYhbbrnlsMd7vd6c5+pQhBDc8573XPa514t1jRD98z//M49+9KPnbr/kJS8B4JnPfCbXXXcdt95665w4Ajj33HP59Kc/zYtf/GLe9ra3ccYZZ/De9773mJbc3zQJ8id3kGiB9SCFJB1IZsqGxljO2dGlnWsq4yiNw1hHYx0C0EJQGovz0C0SMi0xzs/l0ov06F/uGHmKRCIbGSkFuZaj9z2HHokjaz3tTG36963f/u3f5ud+7ud485vfzCWXXML/+3//j89+9rMLsgevfvWrefzjH89ZZ53F//yf/xMpJd/+9rf5t3/7N1772teesLW+6EUv4tOf/jSPfexjufrqq3nEIx5Bt9vln//5n3nDG97An/3Zn3HmmWfya7/2azz72c/mfve739zjb3zjG3nCE56w5LWvueYavvjFL3L++edzzTXX8OAHP5gkSfjyl7/M61//er7+9a/zwx/+kCuuuIKnP/3p3Pve9yZNU/7u7/6O973vfbzsZS87Ya/DallXQXTBBRcsGzlZLH95wQUXLKp2jxUGuO2AZ+9EHyEE1jh0ojh1IqdXWpCC7UVKqjVaS7z39GtDXVu0FAyMxXuBELCtnZEoCQTxlGm/4pvBUoLHe0/ZWErjsKNPWrmW5ImKM4cikciGIk8UAKVxVMahpKCdqbn7NzMPf/jDede73sVVV13F7//+73PxxRfz4he/mHe+851zx1x88cX8zd/8Da95zWt4wxveQJIk3POe9+Q5z3nO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dHyHcNZliDo6Ojo6Ojo67koXEHV0dHR0dHSc9XQBUUdHR0dHR8dZTxcQdXR0dHR0dJz1nHUB0e/+7u/ykIc8hDRNufzyy/nUpz51pnfpu46/+qu/4kd/9Ec599xzUUrx/ve/f8fzIQRe/epXc84555BlGVdeeSX/+I//uGOb9fV1rrnmGkajEcvLy7zgBS9gOp2exqP47uC6667j+77v+xgOh+zZs4fnPOc53HzzzTu2KYqCF7/4xezatYvBYMCP//iPc/DgwR3b3HbbbTzzmc+k1+uxZ88efv7nf56maU7noXzH86Y3vYnHPe5xC4G//fv386EPfWjxfHcdzhy//uu/jlKKn/3Zn1081l2P08NrX/talFI7fh75yEcunj+t1yGcRbzrXe8KcRyH//W//lf44he/GF74wheG5eXlcPDgwTO9a99VfPCDHwy/9Eu/FN773vcGILzvfe/b8fyv//qvh6WlpfD+978//MM//EP4sR/7sfDQhz405Hm+2ObpT396uOSSS8InPvGJ8Nd//dfh4Q9/eHje8553mo/kO5+rrroqvPWtbw1f+MIXwk033RR+5Ed+JFx44YVhOp0utnnRi14ULrjggnD99deHT3/60+H7v//7w5Of/OTF803ThMc+9rHhyiuvDDfeeGP44Ac/GNbW1sIrX/nKM3FI37H8yZ/8SfjTP/3T8P/+3/8LN998c/jFX/zFEEVR+MIXvhBC6K7DmeJTn/pUeMhDHhIe97jHhZe+9KWLx7vrcXp4zWteEx7zmMeEO++8c/Fz+PDhxfOn8zqcVQHRk570pPDiF7948f/OuXDuueeG66677gzu1Xc3dw2IvPdh37594fWvf/3isc3NzZAkSfg//+f/hBBC+NKXvhSA8Pd///eLbT70oQ8FpVS44447Ttu+fzdy6NChAISPf/zjIQQ591EUhfe85z2Lbb785S8HINxwww0hBAlwtdbhwIEDi23e9KY3hdFoFMqyPL0H8F3GyspK+P3f//3uOpwhJpNJuPjii8OHP/zh8JSnPGUREHXX4/Txmte8JlxyySUnfO50X4ezpmRWVRWf+cxnuPLKKxePaa258sorueGGG87gnp1d3HLLLRw4cGDHdVhaWuLyyy9fXIcbbriB5eVlnvjEJy62ufLKK9Fa88lPfvK07/N3E1tbW8Axk+PPfOYz1HW943o88pGP5MILL9xxPf7ZP/tn7N27d7HNVVddxXg85otf/OJp3PvvHpxzvOtd72I2m7F///7uOpwhXvziF/PMZz5zx3mH7nNxuvnHf/xHzj33XB72sIdxzTXXcNtttwGn/zqcNeauR44cwTm346QB7N27l6985StnaK/OPg4cOABwwuuw/dyBAwfYs2fPjuettayuri626bjveO/52Z/9WX7gB36Axz72sYCc6ziOWV5e3rHtXa/Hia7X9nMdp87nP/959u/fT1EUDAYD3ve+9/HoRz+am266qbsOp5l3vetdfPazn+Xv//7v7/Zc97k4fVx++eW87W1v4xGPeAR33nknr3vd6/ihH/ohvvCFL5z263DWBEQdHWc7L37xi/nCF77A3/zN35zpXTlrecQjHsFNN93E1tYWf/RHf8S1117Lxz/+8TO9W2cdt99+Oy996Uv58Ic/TJqmZ3p3zmqe8YxnLP79uMc9jssvv5yLLrqIP/zDPyTLstO6L2dNyWxtbQ1jzN260w8ePMi+ffvO0F6dfWyf65Ndh3379nHo0KEdzzdNw/r6enetvkVe8pKX8IEPfICPfvSjnH/++YvH9+3bR1VVbG5u7tj+rtfjRNdr+7mOUyeOYx7+8Idz2WWXcd1113HJJZfw3//7f++uw2nmM5/5DIcOHeIJT3gC1lqstXz84x/nt37rt7DWsnfv3u56nCGWl5f53u/9Xr761a+e9s/FWRMQxXHMZZddxvXXX794zHvP9ddfz/79+8/gnp1dPPShD2Xfvn07rsN4POaTn/zk4jrs37+fzc1NPvOZzyy2+chHPoL3nssvv/y07/N3MiEEXvKSl/C+972Pj3zkIzz0oQ/d8fxll11GFEU7rsfNN9/MbbfdtuN6fP7zn98RpH74wx9mNBrx6Ec/+vQcyHcp3nvKsuyuw2nmiiuu4POf/zw33XTT4ueJT3wi11xzzeLf3fU4M0ynU772ta9xzjnnnP7PxX1uCf8O5l3veldIkiS87W1vC1/60pfCv/23/zYsLy/v6E7v+PaZTCbhxhtvDDfeeGMAwm/+5m+GG2+8MXz9618PIcjY/fLycvjjP/7j8LnPfS48+9nPPuHY/eMf//jwyU9+MvzN3/xNuPjii7ux+2+Bn/7pnw5LS0vhYx/72I6x1vl8vtjmRS96UbjwwgvDRz7ykfDpT3867N+/P+zfv3/x/PZY69Oe9rRw0003hT/7sz8Lu3fv7saL7yOveMUrwsc//vFwyy23hM997nPhFa94RVBKhb/4i78IIXTX4Uxz/JRZCN31OF383M/9XPjYxz4WbrnllvC3f/u34corrwxra2vh0KFDIYTTex3OqoAohBB++7d/O1x44YUhjuPwpCc9KXziE58407v0XcdHP/rRANzt59prrw0hyOj9q171qrB3796QJEm44oorws0337zjNY4ePRqe97znhcFgEEajUXj+858fJpPJGTia72xOdB2A8Na3vnWxTZ7n4d/9u38XVlZWQq/XC//iX/yLcOedd+54nVtvvTU84xnPCFmWhbW1tfBzP/dzoa7r03w039n863/9r8NFF10U4jgOu3fvDldcccUiGAqhuw5nmrsGRN31OD1cffXV4ZxzzglxHIfzzjsvXH311eGrX/3q4vnTeR1UCCF8y7mtjo6Ojo6Ojo7vAs6aHqKOjo6Ojo6OjnuiC4g6Ojo6Ojo6znq6gKijo6Ojo6PjrKcLiDo6Ojo6OjrOerqAqKOjo6Ojo+OspwuIOjo6Ojo6Os56uoCoo6Ojo6Oj46ynC4g6OjoeVNx6660opbjpppvO9K6cEKUU73//+8/0bnR0dNzPdG73HR0d39X81E/9FJubm/dbEHPnnXeysrJyv7xWR0fHg4cuIOro6HhAqOuaKIrO9G7c73RO5h0d3510JbOOjo5TxnvPf/2v/5WHP/zhJEnChRdeyH/+z/95UeZ697vfzVOe8hTSNOUd73gHAL//+7/Pox71KNI05ZGPfCT/43/8jx2v+alPfYrHP/7xpGnKE5/4RG688cYdz29sbHDNNdewe/dusizj4osv5q1vfevi+dtvv53nPve5LC8vs7q6yrOf/WxuvfVWAF772tfyv//3/+aP//iPUUqhlOJjH/vYSY+xqipe8pKXcM4555CmKRdddBHXXXfd4vnjS2avfe1rF697/M/b3va2xfm67rrreOhDH0qWZVxyySX80R/90bdw5js6Oh5ougxRR0fHKfPKV76St7zlLfy3//bf+MEf/EHuvPNOvvKVryyef8UrXsFv/MZvLAKcd7zjHbz61a/md37nd3j84x/PjTfeyAtf+EL6/T7XXnst0+mUZz3rWTz1qU/lD/7gD7jlllt46UtfuuM9X/WqV/GlL32JD33oQ6ytrfHVr36V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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "# finngen (PICs):\n", + "finngen_index_path=f\"{release_path}/{release_ver}/study_index/finngen\"\n", + "finngen_index=session.spark.read.parquet(finngen_index_path, recursiveFileLookup=True)\n", + "finngen_pics_path=f\"{release_path}/{release_ver}/credible_set/finngen_pics\"\n", + "# Number of CSs.\n", + "finngen_pics=session.spark.read.parquet(finngen_pics_path, recursiveFileLookup=True)\n", + "#gwascat_sumstats.printSchema()\n", + "print(\"Number of unique finngen pics CSs: \", finngen_pics.select(\"studyLocusId\").distinct().count(), \" in \", finngen_pics.select(\"studyId\").distinct().count(), \" studies.\")\n", + "# keep only credible sets snps\n", + "\n", + "finngen_pics_fm=finngen_pics.select(\"studyId\", \"studyLocusId\", \"locus.posteriorProbability\").withColumn(\"top_PP\", f.col(\"posteriorProbability\").getItem(0)).withColumn(\"credset_size\", f.size(f.col(\"posteriorProbability\")))\n", + "finngen_pics_fm.select(\"credset_size\", \"top_PP\").toPandas().plot.scatter(x=\"credset_size\", y=\"top_PP\", alpha=0.05, xlim=[0, 500], label=\"finngen PICS CS\", title=\"finngen_pics CS\")\n", + "print(\"Number of finngen_pics CS with top SNP PP > 0.9: \", finngen_pics_fm.filter(f.col(\"top_PP\") > 0.9).distinct().count())\n", + "sample_size_quartiles = finngen_index.stat.approxQuantile(\"nSamples\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of finngen_pics sample sizes: L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])\n", + "\n", + "sample_size_quartiles = finngen_pics_fm.stat.approxQuantile(\"credset_size\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of finngen_pics credset sizes: Mean: \", finngen_pics_fm.select(f.mean(finngen_pics_fm[\"credset_size\"])).collect()[0][0], \"L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "There are 9966 common loci between finngen susie and finngen pics\n" + ] + } + ], + "source": [ + "print(\"There are \", finngen_susie.join(finngen_pics, on=[\"studyId\", \"studyLocusId\"], how=\"inner\").count(), \" common loci between finngen susie and finngen pics\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "correlation coef: 0.6244595901320829\n" + ] + }, + { + "data": { + "image/png": "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9Et505vexAte8AK+8iu/km/6pm86tn0uX77MX/trf41nPetZPPe5z+Xf/Jt/w/d93/fxuZ/7uXzVV33VwndP0i8/9VM/xXd+53fyJV/yJbziFa/g7rvv5uu//uvZ2trizjvvnH0vxsjXfu3X8iu/8it827d9G49//OP5/d//fV7zmtfwp3/6p/zCL/zCwr1PM3YPw9X02WG4//77edrTnsatt97K3/t7f4/NzU3uvvtu3vGOdxz5u9POhXm8613vwnvPC17wghM946Me9Sh+7dd+jT/4gz/gcz7nc07zeis8lHCzrasVVjgtuhP12972toXPD/PcZFm24Hn4vd/7vQSkn/zJnzzw25e85CULv3/mM5+Zzp8/P/v7b//2bycgffd3f/fC9170ohcdOK1+8zd/c3rYwx6WLly4sPDd5z//+WljYyNNJpOF93n84x+fqqqafe///X//3wSk3//93z9Js6SU9k7aT3ziE1Nd17PPf+RHfiQB6d/+2387+2y/V+Ff/It/kYD0Yz/2YweuG2NMKaX08pe/PK2vryfv/YmfKaWU3vOe9yQg/eIv/uLC53/9r//19NjHPnb296/7uq9LT3jCE0517Q60no55HOa5AdIb3/jG2WdVVaU77rgjPfvZzz7w2+P6paqqdP78+fSkJz0pNU0z+94b3vCGBc9iSim96U1vSlrr9N/+239beM5/+k//aQLSr/7qry68z0nG7nE4SZ+d1HPzzne+MwHpAx/4wJH3vNq5sAyveMUrEpD+x//4H0fes8N//I//MRljkjEmfeEXfmH63u/93vSe97xnYT6s8NDHimG3wkMeT33qU3nc4x43+/tf+At/gfX1df7X//pfB7777d/+7Qt//5Iv+RIuXrzIzs4OAO9+97sBeOlLX7rwve/6ru9a+HtKibe//e084xnPIKXEhQsXZn+e/vSns729ze/8zu8s/ObFL37xglfjS77kSwCWPudx+LZv+zacc7O//x//x/+BtZZf+qVfOvQ3b3/727nlllsOvAsw8/Zsbm4yHo9573vfe6rnecpTnsItt9zCW97yltlnly9f5r3vfS/Pe97zZp9tbm7ysY99jA984AOnuv5pMRwO+Vt/62/N/p5lGZ//+Z+/tK2P65ff+q3f4uLFi3zrt37rAufrG7/xG9na2lq41tve9jYe//jH81mf9VkLY+Ip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73vfzPPf/e53XRAE7pOf/KT78Y9/7C655BK5Cj5PC53ryy67zEVR5L7yla+4HTt2zPyanJxcqW/huLDQeT6Q3Jaan4XO80MPPeRarZZ75zvf6e699173ta99za1bt859/OMfX6lv4biw0Hm+5JJLXKvVcl/+8pfd/fff777xjW+4LVu2uDe+8Y0r9S0cFyYnJ92dd97p7rzzTge4T33qU+7OO+90P//5z51zzr3vfe9z559//szz01fB3/Oe97gf//jH7qqrrpKr4MeaT3/60+7Xfu3XXBRF7vnPf7777//+75mPvfSlL3UXXHDBfs//y7/8i9u6dauLosg9/elPd1//+teXecTHr4XM9ebNmx1w0K9LLrlk+Qd+nFnon+nZJLiZv4XO86233uq2b9/u4jh2J598svvrv/5rV1XVMo/6+LOQeS7L0n34wx92W7ZscUmSuE2bNrl3vOMdbu/evcs/8OPIf/3Xf8359+303F5wwQXupS996UHvefazn+2iKHInn3yyu/rqq5d8nMo52X8TQgghxOohOTdCCCGEWFUkuBFCCCHEqiLBjRBCCCFWFQluhBBCCLGqSHAjhBBCiFVFghshhBBCrCoS3AghhBBiVZHgRghx3Pr1X/91/vzP/3ylhyGEOMZIcCOEOG5dd911i9bF+ZZbbkEpNfNrbGyM3/3d3+X++++feeakk06a+Xij0eA5z3kO11577aJ8fSHE4pHgRghx3BoZGaHVai3q57z33nt5+OGHufbaa/nRj37Ea1/7Wuq6nvn4Rz/6UXbs2MGdd97J8573PM477zxuvfXWRR2DEOLoSHAjhFhyX/nKV9i2bRtpmrJmzRrOPvts2u32nMdKr3vd63jb294289+f+cxnOPXUU0mShLGxMd7whjfMfOzA9+d5zrvf/W5OOOEEGo0G27dv55ZbblnQWNetW8eGDRt4yUtewoc+9CHuuece7rvvvpmPt1ot1q9fz9atW7nqqqtI05R///d/X9DXEEIsrWClByCEWN127NjBm970Ji6//HJe//rXMzk5ybe//W3m09buBz/4AX/6p3/KP/3TP3HWWWexZ88evv3tbx/y+Xe+853cc889XHPNNWzcuJHrr7+eV77yldx9992ceuqpCx57mqYAFEUx58eDICAMw0N+XAixMiS4EUIsqR07dlBVFb/zO7/D5s2bAdi2bdu83vvQQw/RaDR4zWteQ6vVYvPmzZx++umHfPbqq6/moYceYuPGjQC8+93v5sYbb+Tqq6/mE5/4xILH/clPfpITTjiBpz71qQd9vCgKrrjiCsbHx3n5y1++oM8thFhaEtwIIZbUs571LH7jN36Dbdu2cc455/CKV7yCN7zhDQwPDz/he3/zN3+TzZs3c/LJJ/PKV76SV77ylbz+9a8ny7KDnr377rup65qtW7fu93qe56xZs2be4z3xxBNxztHpdHjWs57Fv/7rvxJF0czH3/ve9/LBD36QXq9Hs9nksssu49xzz5335xdCLD0JboQQS8oYw0033cStt97KN77xDT796U9z8cUX873vfQ+t9UHHU2VZzvx7q9Xijjvu4JZbbuEb3/gGH/rQh/jwhz/M//zP/zA0NLTf+6ampjDGcPvtt2OM2e9jzWZz3uP99re/zcDAAOvWrZszWfk973kPb3vb22g2m4yNjaGUmvfnFkIsD0koFkIsOaUUL3zhC/nIRz7CnXfeSRRFXH/99axdu5YdO3bMPFfXNf/3f/+333uDIODss8/m8ssv53//93958MEH+eY3v3nQ1zj99NOp65pHHnmEU045Zb9f69evn/dYn/KUp7Bly5ZD3sIaHR2d+ZwS2AhxbJKdGyHEkvre977HzTffzCte8QrWrVvH9773PR599FGe9rSn0Wg0uOiii/j617/Oli1b+NSnPsW+fftm3vu1r32N+++/n5e85CUMDw9zww03YK2dMwdm69atvOUtb+Gtb30rV1xxBaeffjqPPvooN998M8985jPl6EiIJxEJboQQS2pgYIBvfetbXHnllUxMTLB582auuOIKXvWqV1GWJT/84Q9561vfShAEvOtd7+JlL3vZzHuHhoa47rrr+PCHP0yv1+PUU0/ly1/+Mk9/+tPn/FpXX301H//4x/mLv/gLfvWrXzE6OsoLXvACXvOa1yzXtyuEOAYoN5/7mEIIIYQQxwnJuRFCCCHEqiLBjRDiSeFVr3oVzWZzzl8LrYEjhDi2ybGUEOJJ4Ve/+hXdbnfOj42MjDAyMrLMIxJCLBUJboQQQgixqsixlBBCCCFWFQluhBBCCLGqSHAjhBBCiFVFghshhBBCrCoS3AghhBBiVZHgRgghhBCrigQ3QgghhFhVJLgRQgghxKry/wFTgEOM42+e8AAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "finngen_matching=finngen_pics_fm.withColumnRenamed(\"top_PP\", \"pics_PP\").join(finngen_susie_fm.withColumnRenamed(\"top_PP\", \"susie_PP\"), on=[\"studyId\", \"studyLocusId\"], how=\"inner\")\n", + "finngen_matching.select(\"pics_PP\", \"susie_PP\").toPandas().plot.scatter(x=\"susie_PP\", y=\"pics_PP\", alpha=0.05, title=\"finngen_pics vs finngen_susie CS\")\n", + "print(\"correlation coef: \", finngen_matching.stat.corr(\"pics_PP\", \"susie_PP\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of unique eQTLcat studies: 1801315\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of unqiue eQTLcat tissues: 76\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ingested 2055350 Credible sets from 1801315 eQTL catalog studies\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summary of eQTL catalog sample sizes: Mean: 336.1455965527037 L.quart: 190.0 Median: 322.0 U.quart: 483.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of eQTL catalog studies with at least one CS: 1801315\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of CS with top SNP PP > 0.9: 386227\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 146:===============================================> (32 + 5) / 37]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summary of eQTL credible set sizes: L.quart: 3.0 Median: 10.0 U.quart: 27.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "eqtl_index_path=f\"{release_path}/{release_ver}/study_index/eqtl_catalogue\"\n", + "# eQTLcat:\n", + "# Number of studies\n", + "eqtl_index=session.spark.read.parquet(eqtl_index_path, recursiveFileLookup=True)\n", + "print(\"Number of unique eQTLcat studies: \", eqtl_index.select(f.col(\"studyId\")).distinct().count())\n", + "# Number of tissues, list of tissues\n", + "print(\"Number of unqiue eQTLcat tissues: \", eqtl_index.select(f.col(\"tissueFromSourceId\")).distinct().count())\n", + "#eqtl_index.select(f.col(\"tissueFromSourceId\")).distinct().show(truncate=False)\n", + "\n", + "# Credible_set. Please use Daniels’ notebook as a reference. For each subfolder:\n", + "# eqtl catalog susie:\n", + "eqtlcat_susie_path=f\"{release_path}/{release_ver}/credible_set/eqtl_catalogue_susie\"\n", + "# Number of CSs.\n", + "eqtlcat_susie=session.spark.read.parquet(eqtlcat_susie_path, recursiveFileLookup=True)\n", + "\n", + "\n", + "# Number of CSs, studies.\n", + "print(\"Ingested \", eqtlcat_susie.select(\"studyId\", \"region\", \"credibleSetIndex\").distinct().count(), \" Credible sets from\", eqtl_index.select(f.col(\"studyId\")).distinct().count(), \"eQTL catalog studies\")\n", + "sample_size_quartiles = eqtl_index.stat.approxQuantile(\"nSamples\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of eQTL catalog sample sizes: Mean: \", eqtl_index.select(f.mean(eqtl_index[\"nSamples\"])).collect()[0][0], \"L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])\n", + "# Number of unique studyids with at leas one CS.\n", + "print(\"Number of eQTL catalog studies with at least one CS: \", eqtlcat_susie.select(\"studyId\").distinct().count())\n", + "# Number of CSs with at leas one SNP with PIP>0.9\n", + "print(\"Number of CS with top SNP PP > 0.9: \", eqtlcat_susie.select(\"studyId\", \"region\", \"credibleSetIndex\", \"locus.posteriorProbability\").withColumn(\"top_PP\", f.col(\"posteriorProbability\").getItem(0)).filter(f.col(\"top_PP\") > 0.9).count())\n", + "# The descriptive summary of 99% CS size and histogram/density plot\n", + "\n", + "credset_size_quartiles = eqtlcat_susie.select(\"studyId\", \"region\", \"credibleSetIndex\", \"locus.posteriorProbability\").withColumn(\"credset_size\", f.size(f.col(\"posteriorProbability\"))).stat.approxQuantile(\"credset_size\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of eQTL credible set sizes: L.quart: \", credset_size_quartiles[0], \"Median: \", credset_size_quartiles[1], \"U.quart: \", credset_size_quartiles[2])\n", + "\n", + "# Out of mem error:\n", + "#eqtlcat_susie.select(\"studyId\", \"region\", \"credibleSetIndex\", \"locus.posteriorProbability\").withColumn(\"top_PP\", f.col(\"posteriorProbability\").getItem(0)).withColumn(\"credset_size\", f.size(f.col(\"posteriorProbability\"))).toPandas().plot.scatter(x=\"credset_size\", y=\"top_PP\", xlim=[0, 500], alpha=0.05, label=\"finngen susie CSs\", title=\"finngen susie credsets\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of unique gwascat studies: 79858\n", + "Number of unique SUMSTATS gwascat studies: 18435\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of unique gwas catalog sumstats CSs: 247782 in 9679 studies.\n", + "Summary of SUMSTATS gwas sample sizes: L.quart: 88329.0 Median: 357580.0 U.quart: 445573.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of SUMSTATS CS with top SNP PP > 0.9: 77721\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summary of SUMSTATS gwascat pics credset sizes: Mean: 39.7659733230078 L.quart: 1.0 Median: 8.0 U.quart: 35.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of unique gwas catalog curated CSs: 531198 in 35662 studies.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of CURATED CS with top SNP PP > 0.9: 92000\n", + "Summary of CURATED gwas sample sizes: L.quart: 687.0 Median: 4960.0 U.quart: 21282.0\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summary of CURATED gwascat pics credset sizes: Mean: 35.42119007174911 L.quart: 1.0 Median: 8.0 U.quart: 34.0\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAADywElEQVR4nOzdd5ydVZ348c8552m3TElPKBLAIE0BUfjRdYkiQmxbsCzNVVdFF8WC/FBAdgFdBbuyq4i61h8soCtYAEUBaQJZC006SBLSpt3ylHPO749n5pJJY5JMMpPk+345hnnmufeee5O59/uc8z3fr/Lee4QQQgghthF6ogcghBBCCDGeJLgRQgghxDZFghshhBBCbFMkuBFCCCHENkWCGyGEEEJsUyS4EUIIIcQ2RYIbIYQQQmxTJLgRQgghxDZFghshhBBCbFMkuBFCCCHENkWCGyHEGp555hnOO+88Fi5cONFD2SzG4/ldd911nHfeeeM2JgClVOdLa80OO+zAq1/9am666aZR582dO5fjjz9+jdu3220+97nPcfDBB9PT00OSJOyxxx68733v46GHHhp17i233MKxxx7LjjvuSJIkvOAFL2DBggV8//vfH/N4r776ao499limT59OFEXssMMO/MM//AO/+tWvRp33+OOPc+qpp7L77ruTJAmzZ8/myCOP5Nxzzx37iyPEBlDSW0oIsbrf//73vPzlL+fyyy/nlFNOmejhjLvxeH7ve9/7+MpXvsJ4voUqpXjVq17FSSedhPeexx57jK9+9as8++yzXHvttRx77LFAGdzsu+++/PSnP+3cdtmyZbzmNa/h7rvv5vjjj2f+/PnU63UefPBBfvjDH7J48WKyLAPgiiuu4IQTTmD//ffnzW9+M1OmTOGxxx7jt7/9LWEY8utf/3q94/Te8/a3v51vfetbHHDAAfzd3/0ds2fPZtGiRVx99dXcfffd3HrrrRx66KE8/PDDvPzlL6dSqfD2t7+duXPnsmjRIu655x5+9rOf0W63x+31E2JEMNEDEEII8Zw99tiDf/zHf+x8/8Y3vpGXvOQlfP7zn+8EN2tzyimncO+993LllVfyt3/7t6N+9q//+q+cffbZne/PO+889t57b26//XaiKBp17rPPPvu8Y7z44ov51re+xQc+8AEuueQSlFKdn5199tn813/9F0FQfrx87nOfY2hoiIULF7LLLrts8GMJsVG8EGK9fv3rX/sDDzzQx3Hsd9ttN3/ppZf6c88916/66/PGN77RH3DAAaNud/zxx3vA//jHP+4cu/322z3gr7vuOu+998uXL/cf+tCH/L777utrtZrv6uryr3nNa/zChQvXGMcXv/hFv/fee/tKpeJ7e3v9gQce6L/3ve+NOufpp5/2b3/72/2cOXN8FEV+7ty5/t3vfrdP03TMj/frX//aA2t8XX755et8jQYGBvzpp5/ud9llFx9FkZ8xY4afP3++v/vuuzvn7LLLLv7kk09e47ZHHXWUP+qoo9Z4/B/96Ef+vPPO8zvssIOv1+v+b//2b31fX59vt9v+9NNP9zNmzPC1Ws2fcsopvt1uj7rPX/7yl/6www7zPT09vlar+T322MOfddZZY3p+v/3tb/3f/d3f+Z133tlHUeR32mkn/4EPfMA3m83O/Z988slrvY8RP/jBD/xLX/pSX6/XfVdXl99333395z//+XW+fiMAf9ppp61xfPr06X7evHmjXsvjjjuu8/3Iv6t3vvOdz/sY3nsfx7E/5ZRTxnTu6prNpp86darfc889fVEUz3v+Mccc4+fOnbtRjyXExpKZGyHW49577+U1r3kNc+bM4ZOf/CTWWs4//3xmzJgx6rwjjjiCH//4xwwMDNDd3Y33nltvvRWtNTfffDOve93rALj55pvRWnPYYYcB8Oijj3LNNdfw93//9+y6664sWbKE//iP/+Coo47ivvvuY4cddgDg61//Ov/yL//C3/3d33H66afTbrf5wx/+wB133MFb3/pWoMwjOeigg+jr6+Nd73oXe+65J3/961+58soraTabRFE0psfba6+9OP/88znnnHN417vexRFHHAHAoYceus7X6d3vfjdXXnkl73vf+9h7771Zvnw5t9xyC/fffz8vfelLN+q1v+iii6hUKnzsYx/j4Ycf5ktf+hJhGKK1ZuXKlZx33nncfvvtfOtb32LXXXflnHPOAeDPf/4zxx9/PC95yUs4//zzieOYhx9+mFtvvRXgeZ/fFVdcQbPZ5D3veQ/Tpk3jzjvv5Etf+hJPP/00V1xxBQD//M//zDPPPMP111/Pf/3Xf40a9/XXX89b3vIWjj76aD796U8DcP/993Prrbdy+umnb/DrsHLlSlauXMkLX/jCdZ7zk5/8BIATTzxxTPe5yy67cOONN/L000+z0047bdB4brnlFlasWMEHPvABjDFjeqwbbriBX/3qV/zN3/zNBj2WEBttoqMrISazBQsW+Gq16v/61792jv3lL3/xQRCMulK/6667Rs3I/OEPf/CA//u//3t/8MEHd8573eteN2qGp91ue2vtqMd87LHHfBzH/vzzz+8ce/3rX+/32Wef9Y71pJNO8lprf9ddd63xM+fcBj3eyPNZ32zNqnp6etY647CqDZ252XfffX2WZZ3jb3nLW7xSyh977LGjbn/IIYf4XXbZpfP95z73OQ/4pUuXrnMs63t+q87QjLjooou8Uso/8cQTnWOnnXaaX9tb6Omnn+67u7vHNKuxOsD/0z/9k1+6dKl/9tln/R133OGPPvpoD/iLL764c97qMzdvfOMbPeBXrlw5pse57LLLPOCjKPKvfOUr/Sc+8Ql/8803r/FvY22+8IUveMBfffXVY3qsP/3pT75SqXjA77///v7000/311xzjW80GmO6vRAbQ3ZLCbEO1lpuuOEG3vCGN3RmUABe+MIXrpH7cMABB1Cv1/ntb38LlDM0O+20EyeddBL33HMPzWYT7z233HJLZ6YAII5jtNadx1u+fDn1ep0XvehF3HPPPZ3zent7efrpp7nrrrvWOlbnHNdccw0LFizgZS972Ro/H8mJGOvjbaje3l7uuOMOnnnmmY2+j9WddNJJhGHY+f7ggw/uJLKu6uCDD+app56iKIrOWAB+/OMf45zb4MetVCqd/240GixbtoxDDz0U7z333nvv896+t7eXRqPB9ddfv8GPDXDZZZcxY8YMZs6cycEHH8ytt97KGWecwQc+8IF13mZgYACArq6uMT3G29/+dn7+85/zile8gltuuYV//dd/5YgjjmDevHn87ne/W+9tN/Sx9tlnHxYuXMg//uM/8vjjj/OFL3yBN7zhDcyaNYuvf/3rY7oPITaUBDdCrMOzzz5Lq9Va63LA6seMMRxyyCHcfPPNQBncHHHEERx++OFYa7n99tu57777WLFixajgxjnH5z73OebNm0ccx0yfPp0ZM2bwhz/8gf7+/s55Z555JvV6nYMOOoh58+Zx2mmndZZZAJYuXcrAwAD77rvvep/TWB9vQ/37v/87f/rTn9h555056KCDOO+883j00Uc3+v4AXvCCF4z6vqenB4Cdd955jePOuc74TzjhBA477DDe8Y53MGvWLN785jfz//7f/xtzoPPkk09yyimnMHXqVOr1OjNmzOCoo44CGNNr9N73vpc99tiDY489lp122qkTSIzV61//eq6//npuuOEG7rjjDpYtW8bFF1/cCUrXpru7G4DBwcExP84xxxzDL37xC/r6+vjtb3/LaaedxhNPPMHxxx+/3kTfjXmsPfbYg//6r/9i2bJl/OEPf+DCCy8kCALe9a53ccMNN4z5foQYKwluhBgnhx9+OHfddRftdrsT3PT29rLvvvty8803dwKfVYObCy+8kDPOOIMjjzyS7373u/ziF7/g+uuvZ5999hn1YbzXXnt1tvQefvjh/Pd//zeHH374BtcJGevjbah/+Id/4NFHH+VLX/oSO+ywA5/5zGfYZ599+NnPftY5Z9UdNauy1q71+LryOdZ13A9vya5UKvz2t7/lhhtu4MQTT+QPf/gDJ5xwAq961avW+VirjuVVr3oV1157LWeeeSbXXHMN119/Pd/61rcAxvQazZw5k4ULF/KTn/yE173udfz617/m2GOP5eSTT37e2wLstNNOzJ8/n6OPPpqDDjqIWq32vLfZc889AfjjH/84psdYVbVa5YgjjuDLX/4yH//4x1m5cuWov7fxfCxjDC9+8Ys566yzuPrqqwH43ve+t8H3I8TzkeBGiHWYOXMmSZLw8MMPr/GztR074ogjyLKMH/zgB/z1r3/tBDFHHnlkJ7jZY489mDVrVuc2V155Ja985Su57LLLePOb38yrX/1q5s+fT19f3xr3X6vVOOGEE7j88st58sknOe6447jgggtot9vMmDGD7u5u/vSnP633OY318dYViKzPnDlzeO9738s111zDY489xrRp07jgggs6P58yZcpan9cTTzyxwY/1fLTWHH300VxyySXcd999XHDBBfzqV7/q1G9Z1/P74x//yEMPPcTFF1/MmWeeyetf/3rmz58/allyxPpeoyiKWLBgAV/96ld55JFH+Od//me+853vrPXfzXhYsGABAN/97nc36X5GljQXLVq0znMOP/xwpkyZwg9+8IPnDRY39bGE2FgS3AixDsYY5s+fzzXXXDMql+Thhx9e65XtwQcfTBiGfPrTn2bq1Knss88+QBn03H777fzmN78ZNWsz8hh+tSJwV1xxBX/9619HHVu+fPmo76MoYu+998Z7T57naK15wxvewP/8z//w+9//fo2xjTzGWB9vZLZgbcHI6qy1ayzXzJw5kx122IE0TTvHdt99d26//fZOITmAn/70pzz11FPP+xgbYsWKFWsc23///QE641nX8xuZFVr1NfLe84UvfGGN+1zXfaz+d6W15iUvecmoxx9vhxxyCK95zWv4xje+wTXXXLPGz7Ms48Mf/nDn+xtvvHGt93PdddcB8KIXvWidj1WtVjnzzDO5//77OfPMM9daxPC73/0ud955J1Au0eZ5vlGPJcTGkq3gQqzHeeedxy9/+UsOO+ww3vOe92Ct5ctf/jL77rvvGqX7q9UqBx54ILfffjsLFizoXNkfeeSRNBoNGo3GGsHN8ccfz/nnn8+pp57KoYceyh//+Ee+973vsdtuu40679WvfjWzZ8/msMMOY9asWdx///18+ctf5rjjjuskdl544YX88pe/5KijjuJd73oXe+21F4sWLeKKK67glltuobe3d8yPt/vuu9Pb28ull15KV1cXtVqNgw8+mF133XWN12hwcJCddtqJv/u7v2O//fajXq9zww03cNddd3HxxRd3znvHO97BlVdeyWte8xr+4R/+gUceeYTvfve77L777hv997M2559/Pr/97W857rjj2GWXXXj22Wf56le/yk477cThhx++3ue35557svvuu/PhD3+Yv/71r3R3d/Pf//3frFy5co3HOfDAAwH4l3/5F4455hiMMbz5zW/mHe94BytWrOBv/uZv2GmnnXjiiSf40pe+xP77789ee+01rs91Vd/5znd49atfzZve9CYWLFjA0UcfTa1W4y9/+Qs//OEPWbRoEZ/97GeBMq9n1113ZcGCBey+++40Gg1uuOEG/ud//oeXv/zlnZmgdfnIRz7Cn//8Zy6++GJ+/etfdyoUL168mGuuuYY777yzk5j86U9/mrvvvps3velNnSDvnnvu4Tvf+Q5Tp05db6K0EBttgnZpCbHVuPHGG/0BBxzgoyjyu+++u//GN77hP/ShD/kkSdY49yMf+YgH/Kc//elRx1/4whd6wD/yyCOjjrfbbf+hD33Iz5kzx1cqFX/YYYf52267bY3t0f/xH//hjzzySD9t2jQfx7Hffffd/Uc+8hHf398/6v6eeOIJf9JJJ/kZM2Z0ig6edtppnSJ+Y308773/8Y9/7Pfee+/Otvd1bQtP09R/5CMf8fvtt5/v6urytVrN77fffv6rX/3qGudefPHFfscdd/RxHPvDDjvM//73v1/nVvArrrhi1G0vv/xyD6yx1X2koOLI1u8bb7zRv/71r/c77LCDj6LI77DDDv4tb3mLf+ihh8b0/O677z4/f/58X6/X/fTp0/073/lO/7//+79rvAZFUfj3v//9fsaMGV4p1dkWfuWVV/pXv/rVfubMmT6KIv+CF7zA//M//7NftGjRWl+/VbGOIn6rW30r+Ihms+k/+9nP+pe//OW+Xq/7KIr8vHnz/Pvf/37/8MMPd877wQ9+4N/85jf73Xff3VcqFZ8kid9777392Wef7QcGBp738UeMPNepU6f6IAj8nDlz/AknnOBvuummzjm33nqrP+200/y+++7re3p6fBiG/gUveIE/5ZRT1vh9EGK8SG8pITbCG97wBv785z/zl7/8ZaKHIoQQYjWScyPE82i1WqO+/8tf/sJ1113HK17xiokZkBBCiPWSmRshnsecOXM45ZRT2G233XjiiSf42te+Rpqm3HvvvcybN2+ihyeEEGI1klAsxPN4zWteww9+8AMWL15MHMcccsghXHjhhRLYCCHEJCUzN0IIIYTYpkjOjRBCCCG2KRLcCCGEEGKbst3l3DjneOaZZ+jq6tqoEvNCCCGE2PK89wwODrLDDjust5EsbIfBzTPPPLNGV2EhhBBCbB2eeuopdtppp/Wes90FNyOl6p966im6u7sneDRCCCGEGIuBgQF23nnnzuf4+mx3wc3IUlR3d7cEN0IIIcRWZiwpJZJQLIQQQohtigQ3QgghhNimSHAjhBBCiG3KdpdzI4QQANZa8jyf6GEIIVYRRdHzbvMeCwluhBDbFe89ixcvpq+vb6KHIoRYjdaaXXfdlSiKNul+JLgRQmxXRgKbmTNnUq1WpZinEJPESJHdRYsW8YIXvGCTfjcluBFCbDestZ3AZtq0aRM9HCHEambMmMEzzzxDURSEYbjR9yMJxUKI7cZIjk21Wp3gkQgh1mZkOcpau0n3I8GNEGK7I0tRQkxO4/W7KcGNEEIIIbYpExrc/Pa3v2XBggXssMMOKKW45pprnvc2N910Ey996UuJ45gXvvCFfOtb39rs4xyruR+7tvMlhBBCiIkxocFNo9Fgv/324ytf+cqYzn/sscc47rjjeOUrX8nChQv5wAc+wDve8Q5+8YtfbOaRrt/aAhoJcoQQYu3OO+889t9//4kexgZ7/PHHUUqxcOHCDb7tWC/g12fu3LkopVBKUavVeOlLX8oVV1zR+fnaXteBgQHOPvts9txzT5IkYfbs2cyfP5+rrroK7z1Qfra+9a1vZYcddiBJEnbaaSde//rX88ADD6x3PIsXL+b9738/u+22G3Ecs/POO7NgwQJuvPHGzjn/+7//y+te9zpmzpxJkiTMnTuXE044gWeffXaTXovnM6G7pY499liOPfbYMZ9/6aWXsuuuu3LxxRcDsNdee3HLLbfwuc99jmOOOWZzDVMIIYSYFM4//3ze+c53MjAwwMUXX8wJJ5zAjjvuyKGHHrrGuX19fRx++OH09/fzb//2b7z85S8nCAJ+85vf8NGPfpS/+Zu/oVar8apXvYoXvehFXHXVVcyZM4enn36an/3sZ+utBfX4449z2GGH0dvby2c+8xle/OIXk+c5v/jFLzjttNN44IEHWLp0KUcffTTHH388v/jFL+jt7eXxxx/nJz/5CY1GYzO+SoCfJAB/9dVXr/ecI444wp9++umjjn3zm9/03d3d67xNu932/f39na+nnnrKA76/v38cRu39Lmf+9Hm/hBCTQ6vV8vfdd59vtVqbfF/WOp8X1lvrxmFk6zcwMODf+ta3+mq16mfPnu0vueQSf9RRR3XeD7/0pS/5ffbZp3P+1Vdf7QH/ta99rXPs6KOP9meffbb33vuHH37Yv+51r/MzZ870tVrNv+xlL/PXX3/9qMf8yle+4l/4whf6OI79zJkz/d/+7d92fmat9Z/+9Kf97rvv7qMo8jvvvLP/t3/7t87PP/rRj/p58+b5SqXid911V//xj3/cZ1nmvff+8ssv98Cor8svv3ytz/vXv/61f/nLX+6r1arv6enxhx56qH/88ce9996ffPLJ/vWvf/2o808//XR/1FFHdb4/6qij/Pve9z5/+umn+97eXj9z5kz/n//5n35oaMifcsopvl6v+913391fd911ndusWLHCv/Wtb/XTp0/3SZL4F77whf6b3/ym996vMe6Rx7rzzjv9/Pnz/bRp03x3d7c/8sgj/d133925z1122WXU7XbZZRfvvfcLFy70r3jFK3y9XvddXV3+pS99qb/rrrvW+lqM3M/nPve5zvd5nvtqteo/9rGPee+9P/fcc/1+++3X+fl73vMeX6vV/F//+tc17mtwcNDnee7vvfdeD3Re17E69thj/Y477uiHhobW+NnKlSu99+W/wyAIfJ7nY77f9f2O9vf3j/nze6tKKF68eDGzZs0adWzWrFkMDAzQarXWepuLLrqInp6eztfOO++8JYY6inN+iz/m+jjnKaybdOMSYmvgvaeVFfS3c/paOf3tnFZWdKb4N4czzjiDW2+9lZ/85Cdcf/313Hzzzdxzzz2dnx911FHcd999LF26FIDf/OY3TJ8+nZtuugkot8DfdtttvOIVrwBgaGiI1772tdx4443ce++9vOY1r2HBggU8+eSTAPz+97/nX/7lXzj//PN58MEH+fnPf86RRx7ZebyzzjqLT33qU3ziE5/gvvvu4/vf//6o9+auri6+9a1vcd999/GFL3yBr3/963zuc58D4IQTTuBDH/oQ++yzD4sWLWLRokWccMIJazznoih4wxvewFFHHcUf/vAHbrvtNt71rndt8G6ab3/720yfPp0777yT97///bznPe/h7//+7zn00EO55557ePWrX82JJ55Is9kE6Dynn/3sZ9x///187WtfY/r06QDceeedANxwww0sWrSIq666CoDBwUFOPvlkbrnlFm6//XbmzZvHa1/7WgYHBwG46667ALj88stZtGhR5/u3ve1t7LTTTtx1113cfffdfOxjH9ug2i5BEBCGIVmWrfEz5xw//OEPedvb3sYOO+ywxs/r9TpBEDBjxgy01lx55ZVj3n69YsUKfv7zn3PaaadRq9XW+Hlvby8As2fPpigKrr766s36+7FWYw6nNjPGMHMzb948f+GFF446du2113rAN5vNtd5mMszcrGikvpnm3rnNf4W3Ps4530xzv6KR+qWD7UkzLiG2lPGYuWmmuV86UP7+DLSy8vdpoO2b6divTjfEwMCAD8PQX3HFFZ1jfX19vlqtdmZunHN+2rRpnXP2339/f9FFF/nZs2d7772/5ZZbfBiGvtForPNx9tlnH/+lL33Je+/9f//3f/vu7m4/MDCw1vHEcey//vWvj/k5fOYzn/EHHnhg5/vVZxjWZvny5R7wN91001p/PtaZm8MPP7zzfVEUvlar+RNPPLFzbNGiRR7wt912m/fe+wULFvhTTz11rY/52GOPecDfe++96x27tdZ3dXX5//mf/+kcW9tnXFdXl//Wt7613vta1aozN2ma+gsvvNAD/qc/LVcIVn1dlyxZ4gF/ySWXPO/9fvnLX/bVatV3dXX5V77ylf7888/3jzzyyDrPv+OOOzzgr7rqque97//7f/+vD4LAT5061b/mNa/x//7v/+4XL168zvO3y5mb2bNns2TJklHHlixZQnd3N5VKZa23ieOY7u7uUV9b2tPL+ukbSmmmxYTOmLRzSyMtI/M4KP/qG6mlnW9asaTNQWaXxGTknKddOIxRhEajVPmnMYp2sXn+vT766KPkec5BBx3UOdbT08OLXvSizvdKKY488khuuukm+vr6uO+++3jve99LmqY88MAD/OY3v+HlL395p3jh0NAQH/7wh9lrr73o7e2lXq9z//33d2ZuXvWqV7HLLruw2267ceKJJ/K9732vM7Nx//33k6YpRx999DrH/KMf/YjDDjuM2bNnU6/X+fjHP96577GaOnUqp5xyCscccwwLFizgC1/4AosWLdqg+wB4yUte0vlvYwzTpk3jxS9+cefYyIzTSILre97zHn74wx+y//7789GPfpTf/e53z/sYS5Ys4Z3vfCfz5s2jp6eH7u5uhoaGnvc5n3HGGbzjHe9g/vz5fOpTn+KRRx553sc688wzqdfrVKtVPv3pT/OpT32K4447bo3z/AbMlJx22mksXryY733vexxyyCFcccUV7LPPPlx//fVrPX9D7vuCCy5g8eLFXHrppeyzzz5ceuml7Lnnnvzxj38c831sjK0quDnkkENGZWEDXH/99RxyyCETNKKx+eGtD3PHI8/y0OJ+lg21O9PY1rot9gE+EW/KG8NPwJS/EGPlvMc6T6BHL40EWmGdx03gv9NXvOIV3HTTTdx8880ccMABdHd3dwKe3/zmNxx11FGdcz/84Q9z9dVXc+GFF3LzzTezcOFCXvziF3eWN7q6urjnnnv4wQ9+wJw5czjnnHPYb7/96OvrW+eF5IjbbruNt73tbbz2ta/lpz/9Kffeey9nn332WpdOns/ll1/ObbfdxqGHHsqPfvQj9thjD26//XagbLC4+vvC2rq8r77Mo5QadWxkmcs5B5QbXZ544gk++MEP8swzz3D00Ufz4Q9/eL3jPPnkk1m4cCFf+MIX+N3vfsfChQuZNm3a8z7n8847jz//+c8cd9xx/OpXv2Lvvffm6quvXu9tPvKRj7Bw4UKefvppVq5cyZlnnrnW82bMmEFvb+/z7nga0dXVxYIFC7jgggv43//9X4444gj+7d/+ba3nzps3D6XUmO972rRp/P3f/z2f/exnuf/++9lhhx347Gc/O6bbbqwJDW6GhoZYuHBhZ1vdY489xsKFCzvR7llnncVJJ53UOf/d7343jz76KB/96Ed54IEH+OpXv8r/+3//jw9+8IMTMfwx++UfVnDTA3/lwUUr6W9mWOdYNpjy7GB7i32AT+Y35VVtTbNLYvxN9hk7rRRGK4rVxlc4j9EKvRkqH++2226EYdjJ0wDo7+/noYceGnXeSN7NFVdc0cmtecUrXsENN9zArbfe2jkGcOutt3LKKafwxje+kRe/+MXMnj2bxx9/fNT9BUHA/Pnz+fd//3f+8Ic/8Pjjj/OrX/2KefPmUalU1rjQHPG73/2OXXbZhbPPPpuXvexlzJs3jyeeeGLUOVEUjTm/44ADDuCss87id7/7Hfvuuy/f//73gfLDe/WZnI3Zor02M2bM4OSTT+a73/0un//85/nP//zPzrhhzdYAt956K//yL//Ca1/7WvbZZx/iOGbZsmWjzgnDcK3PeY899uCDH/wgv/zlL3nTm97E5Zdfvt6xTZ8+nRe+8IXMnj17vflHWmve/OY3873vfY9nnnlmjZ8PDQ1RFMVab6uUYs8991znjqapU6dyzDHH8JWvfGWt56xvl1UURey+++6bfbfUhAY3v//97znggAM44IADgHKK7oADDuCcc84BYNGiRaOm9XbddVeuvfZarr/+evbbbz8uvvhivvGNb0z6beBLPfzpmX4eXDTIE8sbLOlvsrKd0s4tBiisY7BVbNYP8Il4U95QW8vskhh/W8uMndaKJNBY68mtw/vyT2s9SaDRevx/j7q6ujj55JP5yEc+wq9//Wv+/Oc/80//9E9orUd9uL3kJS9hypQpfP/73x8V3FxzzTWkacphhx3WOXfevHlcddVVLFy4kP/93//lrW99a2fmAuCnP/0pX/ziF1m4cCFPPPEE3/nOd3DO8aIXvYgkSTjzzDP56Ec/yne+8x0eeeQRbr/9di677LLOfT/55JP88Ic/5JFHHuGLX/ziGrMRc+fO7VzMLlu2jDRN13jejz32GGeddRa33XYbTzzxBL/85S/5y1/+wl577QXA3/zN3/D73/+e73znO/zlL3/h3HPP5U9/+tMmv97nnHMOP/7xj3n44Yf585//zE9/+tPOY86cOZNKpcLPf/5zlixZQn9/f+c5/9d//Rf3338/d9xxB29729vWmOGaO3cuN954I4sXL2blypW0Wi3e9773cdNNN/HEE09w6623ctddd3UeazxccMEF7Lzzzhx88MF85zvf4b777uMvf/kL3/zmNznggAM6Ewyvf/3rufLKK7nvvvt4+OGHueyyy/jmN7/J61//+nXe91e+8hWstRx00EH893//N3/5y1+4//77+eIXv9hZTfnpT3/KP/7jP/LTn/6Uhx56iAcffJDPfvazXHfddeu97/EwoXVuXvGKV6z3zWtt1Ydf8YpXcO+9927GUW0ei1fCo0v7mTWlgveeSmhoBDnWOYwxKMB6R2Q0xox/zDnyplzOijiC4UDHWk8tNpvlTXlDjcwujczYjAi0Ii0czns0Ez9OMf5GZuyMUcSBpnC+M4NXicbnbWpkVmhT46UkNAC0C0daOIxW1GLTOb45XHLJJbz73e/m+OOPp7u7m49+9KM89dRTJEnSOUcpxRFHHMG1117L4YcfDpQBT3d3Ny960YtG7Wq55JJLePvb386hhx7K9OnTOfPMMxkYGOj8vLe3l6uuuorzzjuPdrvNvHnz+MEPfsA+++wDlDuKgiDgnHPO4ZlnnmHOnDm8+93vBuB1r3sdH/zgB3nf+95HmqYcd9xxfOITn+C8887r3P/f/u3fctVVV/HKV76Svr4+Lr/8ck455ZRRz7larfLAAw/w7W9/m+XLlzNnzhxOO+00/vmf/xmAY445hk984hN89KMfpd1u8/a3v52TTjppk3M5oijirLPO4vHHH6dSqXDEEUfwwx/+EChns774xS9y/vnnc84553DEEUdw0003cdlll/Gud72Ll770pey8885ceOGFayxlXXzxxZxxxhl8/etfZ8cdd+Shhx5i+fLlnHTSSSxZsoTp06fzpje9iU9+8pObNP5VTZ06ldtvv51PfepT/Nu//RtPPPEEU6ZM4cUvfjGf+cxn6OnpYaeddmLu3Ll88pOf7BQpHPl+fasiu+22G/fccw8XXHABH/rQh1i0aBEzZszgwAMP5Gtf+xoAe++9N9VqlQ996EM89dRTxHHMvHnz+MY3vsGJJ544bs9zbZSfbJdGm9nAwAA9PT309/ePS3LxhlQhnluHg144jX13mopRCqsUu0/vorcWEQxXnZzTW6GrEm3yuNbG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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAADi20lEQVR4nOzdd5xkVZn4/88J995KHSYPechJASWJCIiiiDoYd1n1B2IOLCqIgS8oiAq66yK+RECR4H7XwNeAiwtGVhQQI6AoCJIESRM7VbjhnPP743YX0xN7hpnp7pnn/XrVC7rqVt1b3VO3nnvOc55HhRACQgghhBBbCD3ZByCEEEIIsTFJcCOEEEKILYoEN0IIIYTYokhwI4QQQogtigQ3QgghhNiiSHAjhBBCiC2KBDdCCCGE2KJIcCOEEEKILYoEN0IIIYTYokhwI4QQG8nDDz+MUoqrr756sg9FiK2aBDdCiPXy+OOPc+6553LnnXdO9qFssEsuuWRSA5CbbroJpVT3FkURu+yyCyeddBIPPvhgd7uxYOlzn/vcKq/x1FNPccYZZ7DXXntRq9Wo1+sceOCBfOpTn2JgYKC7nfee//zP/+TQQw9l5syZ9PT0sMcee3DSSSfx61//ekLH2+l0+PznP8+hhx5KX18flUqFPfbYg3/913/lvvvuG7ftLbfcwnHHHcd2221HpVJhxx13ZOHChXzjG9/YsF+WEBvATvYBCCGml8cff5xPfOITLFiwgAMOOGCyD2eDXHLJJcyePZuTTz55Uo/jfe97HwcffDB5nnP77bfzla98heuvv5677rqLbbfddo3P+93vfsfLX/5yRkZG+P/+v/+PAw88EIDf//73fOYzn+GXv/wlP/nJT7r7+NKXvsSrXvUq3vSmN2Gt5d577+WHP/whu+yyC8973vPWeoxLlizhZS97GX/4wx945StfyRvf+EYajQb33nsv3/rWt/jKV75ClmUAfPvb3+aEE07ggAMO4P3vfz8zZszgoYce4pe//CWXX345b3zjGzfSb06ItZPgRggxrYUQ6HQ6VKvVyT6U9XbEEUfw+te/HoC3vOUt7LHHHrzvfe/ja1/7GmeeeeZqnzMwMMBrXvMajDHccccd7LXXXuMe//SnP83ll18OlKM7l1xyCe94xzv4yle+Mm67iy66iMWLF6/zGE8++WTuuOMOvvOd7/C6171u3GOf/OQnOeuss7o/n3vuueyzzz78+te/Jo7jcdsuWrRonfsSYmORaSkhnoGbbrqJgw46iEqlwq677sqXv/xlzj33XJRS3W1e+9rX8tznPnfc8xYuXIhSiuuuu657329+8xuUUvzwhz8EYNmyZZxxxhk8+9nPptFo0Nvby3HHHccf//jHVY7ji1/8Ivvuuy+1Wo0ZM2Zw0EEHrTIN8Nhjj/G2t72NbbfdliRJ2HnnnXnPe97TveqeyP5uuukmDj74YKD8Mh6bVlnXFM+69r3y72zM1VdfjVKKhx9+uHvfggULeOUrX8mPf/xjDjroIKrVKl/+8pcBuOqqq3jRi17E3LlzSZKEffbZh0svvXTcay5YsIC//OUv/OIXv+ge/wtf+MLu4wMDA3zgAx9ghx12IEkSdtttNz772c/ivR/3OgMDA5x88sn09fXR39/Pm9/85nHTQRviRS96EQAPPfTQGrf58pe/zGOPPcaFF164SmADMG/ePM4+++zu64QQOPzww1fZTinF3Llz13o8v/nNb7j++ut529vetkpgA5AkybgpswceeICDDz54lcAGWOe+hNiYZORGiA10xx138LKXvYxtttmGT3ziEzjnOO+885gzZ8647Y444gj++7//m6GhIXp7ewkhcOutt6K15uabb+b4448H4Oabb0Zr3f0ievDBB/n+97/PP/3TP7Hzzjvz1FNP8eUvf5mjjjqKu+++uzttcfnll/O+972P17/+9bz//e+n0+nwpz/9id/85jfdaYDHH3+cQw45hIGBAd75zney11578dhjj/Gd73yHVqtFHMcT2t/ee+/Neeedx8c//nHe+c53csQRRwDw/Oc/f42/p4nse33de++9vOENb+Bd73oX73jHO9hzzz0BuPTSS9l33305/vjjsdbygx/8gPe+97147znllFOAcsTi1FNPpdFodEcd5s2bB0Cr1eKoo47iscce413vehc77rgjv/rVrzjzzDN54oknuOiii4BytOhVr3oVt9xyC+9+97vZe++9ufbaa3nzm9+83u9lRQ888AAAs2bNWuM21113HdVqtTviszY77bQTUE4X/dM//RO1Wm29jmcs+D7xxBMntP1OO+3EjTfeyD/+8Q+233779dqXEBtVEEJskIULF4ZarRYee+yx7n1/+9vfgrU2rPjR+t3vfheAcMMNN4QQQvjTn/4UgPBP//RP4dBDD+1ud/zxx4fnPOc53Z87nU5wzo3b50MPPRSSJAnnnXde975XvepVYd99913rsZ500klBax1+97vfrfKY93699jf2fq666qq17nN99n3OOeeE1Z2OrrrqqgCEhx56qHvfTjvtFIDwox/9aJXtW63WKvcde+yxYZdddhl337777huOOuqoVbb95Cc/Ger1erjvvvvG3f/Rj340GGPCI488EkII4fvf/34Awr/92791tymKIhxxxBET+t38/Oc/D0C48sorw+LFi8Pjjz8err/++rBgwYKglOr+rh566KEAhH//93/vPnfGjBlh//33X+vrr+ikk04KQJgxY0Z4zWteEz73uc+Fe+65Z0LPfc1rXhOAsHz58gltf8UVVwQgxHEcjj766PCxj30s3Hzzzav8uxJiU5NpKSE2gHOOn/3sZ7z61a8el/i52267cdxxx43b9jnPeQ6NRoNf/vKXQDlCs/3223PSSSdx++2302q1CCFwyy23dEdCoBzy11p397d06VIajQZ77rknt99+e3e7/v5+/vGPf/C73/1utcfqvef73/8+Cxcu5KCDDlrl8bHpoInub31MdN/ra+edd+bYY49d5f4V824GBwdZsmQJRx11FA8++CCDg4PrfN1vf/vbHHHEEcyYMYMlS5Z0b8cccwzOue7f8IYbbsBay3ve857uc40xnHrqqev1Pt761rcyZ84ctt12W17xilfQbDb52te+ttrf1ZihoSF6enomvI+rrrqKiy++mJ133plrr72WM844g7333psXv/jFPPbYY2t97tDQEMCE9/fWt76VH/3oR7zwhS/klltu4ZOf/CRHHHEEu+++O7/61a8mfMxCPFMyLSXEBli0aBHtdpvddtttlcdWvs8Yw2GHHcbNN98MlMHNEUccwQte8AKcc/z6179m3rx5LFu2bFxw473nC1/4ApdccgkPPfQQzrnuYytOW3zkIx/hZz/7GYcccgi77bYbL33pS3njG9/Ynd5avHgxQ0NDPOtZz1rre5ro/tbHRPe9vnbeeefV3n/rrbdyzjnncNttt9FqtcY9Njg4SF9f31pf929/+xt/+tOfVplaHDOWFPv3v/+dbbbZhkajMe7xsemxifr4xz/OEUccgTGG2bNns/fee2Pt2k/Lvb29DA8PT3gfWmtOOeUUTjnlFJYuXcqtt97KZZddxg9/+EP+5V/+pfvvck37AhgeHqa/v39C+zv22GM59thjabVa/OEPf+Caa67hsssu45WvfCV//etfJfdGbBYyciPEZvCCF7yA3/3ud3Q6nW5w09/fz7Oe9Sxuvvnm7hfMisHN+eefz+mnn86RRx7Jf/3Xf/HjH/+Yn/70p+y7777jklv33nvv7rLcF7zgBXz3u9/lBS94Aeecc856HeNE97cprGkEZ8UAa0WrWxn1wAMP8OIXv5glS5Zw4YUXcv311/PTn/6U0047DWBC78F7z0te8hJ++tOfrva2uqTaZ+LZz342xxxzDEcffTTPfvaz1xnYAOy1117cd9993WTs9TFr1iyOP/54brjhBo466ihuueUW/v73v691XwB33XXXeu+rVqtxxBFHcPHFF3P22WezfPnybrK8EJuajNwIsQHmzp1LpVLh/vvvX+Wx1d13xBFHkGUZ3/zmN3nssce6QcyRRx7JzTffzLx589hjjz26ia0A3/nOdzj66KO54oorxr3WwMAAs2fPHndfvV7nhBNO4IQTTiDLMl772tfy6U9/mjPPPJM5c+bQ29vLn//857W+p4nub32mkia67xkzZnT3teIIwdq+eFf2gx/8gDRNue6669hxxx279//85z9fZds1vYddd92VkZERjjnmmLXuayxxdmRkZNzozb333jvh491QCxcu5LbbbuO73/0ub3jDGzb4dQ466CB+8Ytf8MQTT3QTj1e3rwsuuID/+q//Ghd4b8i+AJ544okNfg0h1oeM3AixAYwxHHPMMXz/+9/n8ccf795///33r/bq9NBDDyWKIj772c8yc+ZM9t13X6AMen7961/zi1/8YpUvD2MMIYRx9337299eJU9i6dKl436O45h99tmHEAJ5nqO15tWvfjU/+MEP+P3vf7/KsY3tY6L7q9frABNa9jzRfe+6664A3ZwWoJt/MlHGmHGvCeVU1FVXXbXKtvV6fbXH/8///M/cdttt/PjHP17lsYGBAYqiAODlL385RVGMW2bunOOLX/zihI93Q7373e9mm2224YMf/OAq1YGhnDr71Kc+BcCTTz7J3Xffvco2WZZx4403orVe7dTqmMMOO4yXvexlfPWrX+X73//+al/njDPO6P584403rvZ1brjhBmD9p+2E2FAyciPEBjr33HP5yU9+wuGHH8573vMenHNcfPHFPOtZz1qlNUGtVuPAAw/k17/+dbfGDZQjN81mk2azuUpw88pXvpLzzjuPt7zlLTz/+c/nrrvu4utf/zq77LLLuO1e+tKXMn/+fA4//HDmzZvHPffcw8UXX8wrXvGKbiLo+eefz09+8hOOOuoo3vnOd7L33nvzxBNP8O1vf5tbbrmF/v7+Ce9v1113pb+/n8suu4yenh7q9TqHHnroGvNgJrLvl770pey444687W1v40Mf+hDGGK688krmzJnDI488MqG/x0tf+lLiOGbhwoW8613vYmRkhMsvv5y5c+euMmJw4IEHcumll/KpT32K3Xbbjblz5/KiF72ID33oQ1x33XW88pWv5OSTT+bAAw+k2Wxy11138Z3vfIeHH36Y2bNns3DhQg4//HA++tGP8vDDD7PPPvvwve99b0JJy8/UjBkzuPbaa3n5y1/OAQccMK5C8e233843v/lNDjvsMAD+8Y9/cMghh/CiF72IF7/4xcyfP59FixbxzW9+kz/+8Y984AMfWGUUcGX/+Z//yUtf+lJe+9rXsnDhQl784hdTr9f529/+xre+9S2eeOKJbq2bV73qVey8884sXLiQXXfdlWazyc9+9jN+8IMfcPDBB7Nw4cJN+8sRYswkrtQSYtq78cYbw3Oe85wQx3HYddddw1e/+tXwwQ9+MFQqlVW2/dCHPhSA8NnPfnbc/bvttlsAwgMPPDDu/k6nEz74wQ+GbbbZJlSr1XD44YeH2267LRx11FHjljF/+ctfDkceeWSYNWtWSJIk7LrrruFDH/pQGBwcHPd6f//738NJJ50U5syZE5IkCbvssks45ZRTQpqm67W/EEL47//+77DPPvt0l72va+nzuvYdQgh/+MMfwqGHHhriOA477rhjuPDCC9e4FPwVr3jFavdz3XXXhf322y9UKpWwYMGC8NnPfjZceeWVq7zGk08+GV7xileEnp6eAIx7f8PDw+HMM88Mu+22W4jjOMyePTs8//nPD5/73OdClmXd7ZYuXRpOPPHE0NvbG/r6+sKJJ54Y7rjjjvVaCv7tb397rdutbin4mMcffzycdtppYY899giVSiXUarVw4IEHhk9/+tPdv/3Q0FD4whe+EI499tiw/fbbhyiKQk9PTzjssMPC5Zdf3l2Kvy6tVit87nOfCwcffHBoNBohjuOw++67h1NPPTXcf//93e2++c1vhn/5l38Ju+66a6hWq6FSqYR99tknnHXWWWFoaGhC+xJiY1AhrDQOLYR4Rl796lfzl7/8hb/97W+TfShCCLFVkpwbIZ6Bdrs97ue//e1v3HDDDePK+QshhNi8ZORGiGdgm2224eSTT2aXXXbh73//O5deeilpmnLHHXew++67T/bhCSHEVkkSioV4Bl72spfxzW9+kyeffJIkSTjssMM4//zzJbARQohJJCM3QgghhNiiSM6NEEIIIbYoEtwIIYQQYouy1eXceO95/PHH6enp2eCOxEIIIYTYvEIIDA8Ps+2226L12sdmtrrg5vHHH2eHHXaY7MMQQgghxAZ49NFH2X777de6zVYX3IyVo3/00Ufp7e2d5KMRQgghxEQMDQ2xww47dL/H12arC27GpqJ6e3sluBFCCCGmmYmklEhCsRBCCCG2KBLcCCGEEGKLIsGNEEIIIbYoW13OjRBCTJRzjjzPJ/swhNhqxHG8zmXeEyHBjRBCrCSEwJNPPsnAwMBkH4oQWxWtNTvvvDNxHD+j15HgRgghVjIW2MydO5darSYFP4XYDMaK7D7xxBPsuOOOz+hzJ8GNEEKswDnXDWxmzZo12YcjxFZlzpw5PP744xRFQRRFG/w6klAshBArGMuxqdVqk3wkQmx9xqajnHPP6HUkuBFCiNWQqSghNr+N9bmT4EYIIYQQW5RJDW5++ctfsnDhQrbddluUUnz/+99f53Nuuukmnvvc55IkCbvtthtXX331Jj/OiVrw0eu7NyGEEGJ9LFiwgIsuumiyD2OLMKnBTbPZZP/99+dLX/rShLZ/6KGHeMUrXsHRRx/NnXfeyQc+8AHe/va38+Mf/3gTH+narS6gkSBHCCGemXPPPZcDDjhgsg9jrTZnQHLuueeilEIphbWWBQsWcNpppzEyMgLAww8/jFKKO++8c9zzvvvd7/LCF76Qvr4+Go0G++23H+eddx7Lli0DyvyWz3zmM+y1115Uq1VmzpzJoYceyle/+tW1Hk8Iga985SsceuihNBoN+vv7Oeigg7jooototVoAtFotzjzzTHbddVcqlQpz5szhqKOO4r//+783/i9oBZO6Wuq4447juOOOm/D2l112GTvvvDP/8R//AcDee+/NLbfcwuc//3mOPfbYTXWYQgghtiIhBJxzWDv1FhTvu+++/OxnP6MoCm699Vbe+ta30mq1+PKXv7za7c866yw++9nPctppp3H++eez7bbb8re//Y3LLruM//t//y/vf//7+cQnPsGXv/xlLr74Yg466CCGhob4/e9/z/Lly9d6LCeeeCLf+973OPvss7n44ouZM2cOf/zjH7noootYsGABr371q3n3u9/Nb37zG774xS+yzz77sHTpUn71q1+xdOnSTfHreVqYIoBw7bXXrnWbI444Irz//e8fd9+VV14Zent71/icTqcTBgcHu7dHH300AGFwcHAjHHUIO33kf9Z5E0JMH+12O9x9992h3W5vlNdzzoe8cME5v1Feb22GhobCG9/4xlCr1cL8+fPDhRdeGI466qjuefOLX/xi2HfffbvbX3vttQEIl156afe+F7/4xeGss84KIYRw//33h+OPPz7MnTs31Ov1cNBBB4Wf/vSn4/b5pS99Key2224hSZIwd+7c8LrXva77mHMufPaznw277rpriOM47LDDDuFTn/pU9/EPf/jDYffddw/VajXsvPPO4eyzzw5ZloUQQrjqqqsCMO521VVXrfG9X3HFFWGfffYJcRyH+fPnh1NOOSWEEMJDDz0UgHDHHXd0t12+fHkAws9//vMQQgg///nPAxBuuOGG8NznPjdEURR+/vOfr/P9H3XUUasc45ibb745vOAFLwiVSiVsv/324dRTTw0jIyPdx5966qnwyle+MlQqlbBgwYLwX//1X2GnnXYKn//859f4Hs8555yw//77j7vvHe94R5g/f/5q3+tvfvObAISLLrpota+3fPnyEEII+++/fzj33HPXuN/VueaaawIQvv/976/ymPc+DAwMhBBC6OvrC1dfffWEX3dtn7/BwcEJf39Pq4TiJ598knnz5o27b968eQwNDdFut1f7nAsuuIC+vr7ubYcddtgchzqO92Gz71MIMblCCLSzgsFOzkA7Z7CT084KQth054PTTz+dW2+9leuuu46f/vSn3Hzzzdx+++3dx4866ijuvvtuFi9eDMAvfvELZs+ezU033QSUy+Bvu+02XvjCFwIwMjLCy1/+cm688UbuuOMOXvayl7Fw4UIeeeQRAH7/+9/zvve9j/POO497772XH/3oRxx55JHd/Z155pl85jOf4WMf+xh333033/jGN8adw3t6erj66qu5++67+cIXvsDll1/O5z//eQBOOOEEPvjBD7LvvvvyxBNP8MQTT3DCCSes9n1feumlnHLKKbzzne/krrvu4rrrrmO33XZb79/fRz/6UT7zmc9wzz33sN9++63z/X/ve99j++2357zzzuseI8ADDzzAy172Ml73utfxpz/9iWuuuYZbbrmFf/3Xf+3u6+STT+bRRx/l5z//Od/5zne45JJLWLRo0Xofc7VaJcuy1T729a9/nUajwXvf+97VPt7f3w/A/Pnz+d///d/uv4uJ+PrXv86ee+7Jq171qlUeU0rR19fXfe0bbriB4eHhCb/2RjHhcGoTYwIjN7vvvns4//zzx913/fXXByC0Wq3VPmcqjNzc+9iyMNJOg/eb/spNCPHMbKyRm1aah8VDnbCsmYahdhaWNdOweKgTWmm+kY50vKGhoRBFUfj2t7/dvW9gYCDUarXuyI33PsyaNau7zQEHHBAuuOCC7pX/LbfcEqIoCs1mc4372XfffcMXv/jFEEII3/3ud0Nvb28YGhpa7fEkSRIuv/zyCb+Hf//3fw8HHnhg9+fVjVSszrbbbtsdbVrZ+ozcrG4UYmUrvv8QwmpHW972treFd77znePuu/nmm4PWOrTb7XDvvfcGIPz2t7/tPn7PPfcEYL1Gbn7/+9+H2bNnh9e//vWrfa/HHXdc2G+//db5nv7yl7+EvffeO2itw7Of/ezwrne9K9xwww1rfc7ee+8djj/++HW+9i9+8Yuw/fbbhyiKwkEHHRQ+8IEPhFtuuWWN22+VIzfz58/nqaeeGnffU089RW9vL9VqdbXPSZKE3t7ecbfN7aZ7H+eBpwZpZ8Vm3/dU4X2gcF5GscRWwftAp/AYo4iMRqnyv8YoOsWm+Rw8+OCD5HnOIYcc0r2vr6+PPffcs/uzUoojjzySm266iYGBAe6++27e+973kqYpf/3rX/nFL37BwQcf3C1gODIywhlnnMHee+9Nf38/jUaDe+65pzty8ZKXvISddtqJXXbZhRNPPJGvf/3r3UTSe+65hzRNefGLX7zGY77mmms4/PDDmT9/Po1Gg7PPPrv72hO1aNEiHn/88bXuZ6IOOuigcT+v6/2vyR//+EeuvvpqGo1G93bsscfiveehhx7innvuwVrLgQce2H3OXnvt1R1JWZu77rqLRqNBtVrlkEMO4bDDDuPiiy9e7bZhgqOE++yzD3/+85/59a9/zVvf+lYWLVrEwoULefvb377G50z0tY888kgefPBBbrzxRl7/+tfzl7/8hSOOOIJPfvKTE3r+hppWwc1hhx3GjTfeOO6+n/70pxx22GGTdEQT851bH+bn9zzBP5YO433Yqr7owyQMzQsx2XwIOB+wenxBMqsVzgf8JP77f+ELX8hNN93EzTffzHOe8xx6e3u7Ac8vfvELjjrqqO62Z5xxBtdeey3nn38+N998M3feeSfPfvazu9MgPT093H777Xzzm99km2224eMf/zj7778/AwMDa7zgHHPbbbfxpje9iZe//OX8z//8D3fccQdnnXXWGqdY1mRd+xnrML3iOWdNnd7r9fq4n9f1/tdkZGSEd73rXdx5553d2x//+Ef+9re/seuuu07kba3RnnvuyZ133sk999xDu93muuuuWyVdY8wee+zRDXrXRWvNwQcfzAc+8AG+973vcfXVV3PFFVfw0EMPrfG1//rXv07omKMo4ogjjuAjH/kIP/nJTzjvvPP45Cc/ud5/6/UxqcHNyMhI9w8P5VLvO++8sxsVn3nmmZx00knd7d/97nfz4IMP8uEPf5i//vWvXHLJJfy///f/OO200ybj8CfsvhG4/o5Hue6Ov3PP40tZ1uxsNV/0ndzRTMsy2okt/7k1U0cnf2altYWYyrRSGK0oVrqAKXzAaIXeBNWPd9llF6Io4ne/+133vsHBQe67775x243l3Xz729/u5ta88IUv5Gc/+xm33npr9z6AW2+9lZNPPpnXvOY1PPvZz2b+/Pk8/PDD417PWssxxxzDv/3bv/GnP/2Jhx9+mP/93/9l9913p1qtrnJBOuZXv/oVO+20E2eddRYHHXQQu+++O3//+9/HbRPH8TrL8Pf09LBgwYI17mfOnDkA3XwYYJWl0msykfe/umN87nOfy913381uu+22yi2OY/baay+KouAPf/hD9zn33nvvhLrQx3HMbrvtxoIFC9bZOfuNb3wjIyMjXHLJJat9fG3722effYCyZMuaXvu+++5b7ZLuEAKDg4Nrfe2iKOh0Oms5+mdmUte5/f73v+foo4/u/nz66acD8OY3v5mrr76aJ554Ytzw384778z111/Paaedxhe+8AW23357vvrVr06LZeD3DcLMBxeR2IgX7j2PHWf3kTnPYObIIkc1tlij0XrLKfm+8tA8QGQU4OkUnsSGLer9CjFGa0XF6tHA3mNHAx3nAvXEbJJ/9z09Pbz5zW/mQx/6EDNnzmTu3Lmcc845aK3HlbTfb7/9mDFjBt/4xjf4n//5H6AMbs444wyUUhx++OHdbXfffXe+973vsXDhQpRSfOxjH8N73338f/7nf3jwwQc58sgjmTFjBjfccAPee/bcc08qlQof+chH+PCHP0wcxxx++OEsXryYv/zlL7ztbW9j991355FHHuFb3/oWBx98MNdffz3XXnvtuPe0YMGC7kXv9ttvT09PD0mSrPLezz33XN797nczd+5cjjvuOIaHh7n11ls59dRTqVarPO95z+Mzn/kMO++8M4sWLeLss8+e0O90Xe9/7Bh/+ctf8i//8i8kScLs2bP5yEc+wvOe9zz+9V//lbe//e3U63XuvvtufvrTn3LxxRez55578rKXvYx3vetdXHrppVhr+cAHPrDOUaj1deihh/LhD3+YD37wgzz22GO85jWvYdttt+X+++/nsssu4wUveAHvf//7ef3rX8/hhx/O85//fObPn89DDz3EmWeeyR577MFee+212tf+53/+Z6699lre8IY3cPbZZ/PSl76UOXPmcNddd/H5z3+eU089lVe/+tW88IUv5A1veAMHHXQQs2bN4u677+b//J//w9FHH71p00TWmZWzhVmfhKSJmEhC8djtOR/5n/C+/7wlXPmLe8NdjywJd/9jWfjN/YvCr+9fFP72+EB4bHkzNDvZFpN4nBcuLB7uhKF2FoY7efc21M7C4uFOyAs32YcoxCo2VkKx9z600rxMJB4uE4tbab5JP9+rWwp+yCGHhI9+9KPjtnvVq14VrLVheHg4hFAu2Z4xY0Z43vOeN267hx56KBx99NGhWq2GHXbYIVx88cXjlpbffPPN4aijjgozZswI1Wo17LfffuGaa67pPt85Fz71qU+FnXbaKURRFHbcccdxi0I+9KEPhVmzZoVGoxFOOOGE8PnPfz709fV1H+90OuF1r3td6O/vX+dS8MsuuyzsueeeIYqisM0224RTTz21+9jdd98dDjvssFCtVsMBBxwQfvKTn6w2oXhsafRE338IIdx2221hv/32C0mSjFsK/tvf/ja85CUvCY1GI9Tr9bDffvuFT3/6093Hn3jiifCKV7wiJEkSdtxxx/Cf//mfG7QUfOXjZaXk6RDKZdtHHnlk6Onp6R7Leeed132/X/nKV8LRRx8d5syZE+I4DjvuuGM4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f+ihh1a9x/333++f85zn+Far5Xfv3u1/7Md+zDdNc6mn4r33/sMf/rAHHvZ3++23e+9DOvhP/dRP+X379vksy/zNN9/s77333lXvcezYMf/CF77Qd7td3+/3/fd+7/f6wWCw6ph/+Id/8N/8zd/ssyzzV155pX/jG9+4qXMbj8f+2c9+tt+zZ49PksRfe+21/qUvfenDjOutOre15gX4d7zjHdNjNupa/PCHP+xvuOEGn6apf9SjHrXqMzZjbg888IB/5jOf6efn532WZf7Rj360f+UrX7mqXspWnZv33n/f932fv/baa32apn7Pnj3+5ptvnho23m/f83a2uW3387YWpxo32/ncee+98N77i+8fikQikUgkErk0RM1NJBKJRCKRHUU0biKRSCQSiewoonETiUQikUhkRxGNm0gkEolEIjuKaNxEIpFIJBLZUUTjJhKJRCKRyI4iGjeRSCQSiUR2FNG4iUQiW4r7778fIcS0nP1WQwjB+9///s0eRiQSOQOxK3gkEtnRfM/3fA8LCwsbZpA89NBDW6qPWCQSeTjRuIlEIheFpmlIkmSzh7HhbKXu75FIZG1iWCoSiawb5xy/+Iu/yKMf/WiyLOOaa67hv//3/z4NJb3nPe/hWc96Fnme81u/9VsA/MZv/AaPfexjyfOcxzzmMfzqr/7qqvf82Mc+xpOe9CTyPOepT30qn/rUp1Y9f+LECV784hezZ88eWq0W1113He94xzumz3/lK1/h+c9/PrOzs8zPz/Pc5z6X+++/H4A3vOEN/J//83/4gz/4A4QQCCG46667zjjHuq55+ctfzoEDB8jznGuvvZY77rhj+vzKsNQb3vCG6fuu/HvnO985/b7uuOMOHvnIR9JqtXjiE5/I7/3e753HNx+JRM6JS9LBKhKJ7Ahe9apX+bm5Of/Od77Tf+ELX/B/9Vd/5d/+9rf7++67zwP+EY94hP/93/99/6Uvfcl/9atf9f/3//5ff+DAgeljv//7v+/n5+f9O9/5Tu996Ha+Z88e/6IXvcjfc889/v/9v//nH/WoR3nAf+pTn/Lee/+yl73M33DDDf7v//7v/X333ec/+MEP+j/8wz/03ntf17V/7GMf67/v+77Pf+Yzn/Gf//zn/Yte9CJ//fXX+6qq/GAw8M9//vP9bbfdNu3IXVXVGef4pje9yV999dX+L//yL/3999/v/+qv/sq/613vmj4P+Pe9733T8a/s9v3mN7/Zt9tt/9nPftZ77/3P/dzP+cc85jH+Ax/4gP/iF7/o3/GOd/gsy/xdd921wWcmEomsJBo3kUhkXSwtLfksy/zb3/72hz23bNy85S1vWfX413zN16wyDLz3/md/9mf9TTfd5L33/td//df9rl27fFEU0+ff9ra3rTJuvuM7vsN/7/d+75pj+s3f/E1//fXXe+fc9LGqqnyr1fJ/9md/5r33/vbbb/fPfe5z1z3PH/7hH/b/9t/+21XvuZKVxs1K7r77bp/nuX/Pe97jvfe+LEvfbrf93/7t36467vu///v9C1/4wnWPJxKJnDtRcxOJRNbFP/7jP1JVFTfffPNpj3nqU586/fdoNOKLX/wi3//9389LX/rS6ePGGGZmZqbv+YQnPIE8z6fP33TTTave84d+6If4ru/6Lj75yU/y7Gc/m+c973l84zd+IwD/8A//wBe+8AV6vd6q15RlyRe/+MXzmuf3fM/38C3f8i1cf/313HbbbXz7t387z372s8/4mgceeIDnPe95/PiP/zjPf/7zAfjCF77AeDzmW77lW1YdW9c1T3rSk85rbJFIZH1E4yYSiayLVqt11mM6nc7038PhEIC3v/3t3HjjjauOU0qt+3Of85zn8OUvf5k/+ZM/4YMf/CA333wzL3vZy3jzm9/McDjkKU95ylTfs5I9e/as+zNW8uQnP5n77ruPP/3TP+VDH/oQz3/+87nllltOq5UZjUZ853d+JzfddBM/8zM/M318ef5//Md/zJVXXrnqNVmWndfYIpHI+ojGTSQSWRfXXXcdrVaLO++8k//8n//zWY/ft28fV1xxBV/60pd48YtfvOYxj33sY/nN3/xNyrKcem/+7u/+7mHH7dmzh9tvv53bb7+dZzzjGbzyla/kzW9+M09+8pN5z3vew969e+n3+2t+RpqmWGvPYabQ7/d5wQtewAte8AK++7u/m9tuu43jx48zPz+/6jjvPf/xP/5HnHP85m/+JkKI6XOPe9zjyLKMBx54gGc961nn9PmRSOTCiMZNJBJZF3me8+pXv5pXvepVpGnKN33TN3HkyBE+97nPnTZU9dM//dP81//6X5mZmeG2226jqio+/vGPc+LECV7xilfwohe9iJ/8yZ/kpS99Ka997Wu5//77efOb37zqPV73utfxlKc8ha/7uq+jqir+6I/+iMc+9rEAvPjFL+ZNb3oTz33uc/mZn/kZrrrqKr785S/z3ve+l1e96lVcddVVPOIRj+DP/uzPuPfee9m1axczMzNnTFH/pV/6JQ4cOMCTnvQkpJT87u/+Lvv372d2dvZhx77hDW/gQx/6EH/+53/OcDicemtmZmbo9Xr8+I//OP/tv/03nHN88zd/M4uLi/zN3/wN/X6f22+//TzPRCQSOSubLfqJRCLbB2ut/7mf+zl/7bXX+iRJ/DXXXON//ud/fiooXhYBr+S3fuu3/A033ODTNPVzc3P+mc98pn/ve987ff7uu+/2T3ziE32apv6GG27wv//7v7/qvX72Z3/WP/axj/WtVsvPz8/75z73uf5LX/rS9PUPPfSQf8lLXuJ3797tsyzzj3rUo/xLX/pSv7i46L33/vDhw/5bvuVbfLfb9YD/8Ic/fMY5/q//9b/8DTfc4Dudju/3+/7mm2/2n/zkJ6fPs0JQ/KxnPcsDD/t7xzve4b333jnn3/KWt/jrr7/eJ0ni9+zZ42+99Vb/kY985Ny//Egksm6E995vmmUViUQikUgkssHEIn6RSCQSiUR2FNG4iUQilxU///M/T7fbXfPvOc95zmYPLxKJbAAxLBWJRC4rjh8/zvHjx9d8rtVqPSxtOxKJbD+icROJRCKRSGRHEcNSkUgkEolEdhTRuIlEIpFIJLKjiMZNJBKJRCKRHUU0biKRSCQSiewoonETiUQikUhkRxGNm0gkEolEIjuKaNxEIpFIJBLZUUTjJhKJRCKRyI7i/wcccfopXYV0zgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "gwascat_path=f\"{release_path}/{release_ver}/study_index/gwas_catalog\"\n", + "# Gwas Catalog:\n", + "gwascat_index=session.spark.read.parquet(gwascat_path, recursiveFileLookup=True)\n", + "# Number of GWAS curated studies\n", + "print(\"Number of unique gwascat studies: \", gwascat_index.select(f.col(\"studyId\")).distinct().count())\n", + "# Number of studies with full GWAS sumstats\n", + "print(\"Number of unique SUMSTATS gwascat studies: \", gwascat_index.filter(f.col(\"hasSumstats\") == True).select(f.col(\"studyId\")).distinct().count())\n", + "#gwascat_index\n", + "# The histogram/density plot for total sample size separately for curated studies and full GWAS\n", + "#gwascat_index.filter(f.col(\"hasSumstats\") == True).select(f.col(\"nSamples\")).toPandas().plot.hist(bins=25, alpha=0.5, label=\"Sumstats GWAScat sample size\", title=\"Sumstats GWAScat sample size\")\n", + "#gwascat_index.filter(f.col(\"hasSumstats\") == False).select(f.col(\"nSamples\")).toPandas().plot.hist(bins=25, alpha=0.5, label=\"Sumstats GWAScat sample size\", title=\"Curated GWAScat sample size\")\n", + "\n", + "# Credible_set. Please use Daniels’ notebook as a reference. For each subfolder:\n", + "# gwas catalog sumstats (PICs):\n", + "gwascat_sumstats_path=f\"{release_path}/{release_ver}/credible_set/gwas_catalog_PICSed_summary_statistics\"\n", + "# Number of CSs.\n", + "gwascat_sumstats=session.spark.read.parquet(gwascat_sumstats_path, recursiveFileLookup=True)\n", + "\n", + "print(\"Number of unique gwas catalog sumstats CSs: \", gwascat_sumstats.select(\"studyLocusId\").distinct().count(), \" in \", gwascat_sumstats.select(\"studyId\").distinct().count(), \" studies.\")\n", + "\n", + "\n", + "sample_size_quartiles = gwascat_index.join(gwascat_sumstats, how=\"inner\", on=\"studyId\").stat.approxQuantile(\"nSamples\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of SUMSTATS gwas sample sizes: L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])\n", + "#\n", + "\n", + "\n", + "gwascat_sumstats_fm=gwascat_sumstats.select(\"studyId\", \"studyLocusId\", \"locus.posteriorProbability\").withColumn(\"top_PP\", f.col(\"posteriorProbability\").getItem(0)).withColumn(\"credset_size\", f.size(f.col(\"posteriorProbability\")))\n", + "gwascat_sumstats_fm.select(\"credset_size\", \"top_PP\").toPandas().plot.scatter(x=\"credset_size\", y=\"top_PP\", alpha=0.05, label=\"gwascat sumstats PICS CS\", title=\"gwascat sumstats PICS CS\")\n", + "print(\"Number of SUMSTATS CS with top SNP PP > 0.9: \", gwascat_sumstats_fm.filter(f.col(\"top_PP\") > 0.9).distinct().count())\n", + "\n", + "sample_size_quartiles = gwascat_sumstats_fm.stat.approxQuantile(\"credset_size\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of SUMSTATS gwascat pics credset sizes: Mean: \", gwascat_sumstats_fm.select(f.mean(gwascat_sumstats_fm[\"credset_size\"])).collect()[0][0], \"L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])\n", + "\n", + "\n", + "# gwas catalog curated (PICs):\n", + "gwascat_curated_path=f\"{release_path}/{release_ver}/credible_set/gwas_catalog_PICSed_curated_associations\"\n", + "# Number of CSs.\n", + "gwascat_curated=session.spark.read.parquet(gwascat_curated_path, recursiveFileLookup=True)\n", + "#gwascat_sumstats.printSchema()\n", + "print(\"Number of unique gwas catalog curated CSs: \", gwascat_curated.select(\"studyLocusId\").distinct().count(), \" in \", gwascat_curated.select(\"studyId\").distinct().count(), \" studies.\")\n", + "# keep only credible sets snps\n", + "\n", + "gwascat_curated_fm=gwascat_curated.select(\"studyId\", \"studyLocusId\", \"locus.posteriorProbability\").withColumn(\"top_PP\", f.col(\"posteriorProbability\").getItem(0)).withColumn(\"credset_size\", f.size(f.col(\"posteriorProbability\")))\n", + "gwascat_curated_fm.select(\"credset_size\", \"top_PP\").toPandas().plot.scatter(x=\"credset_size\", y=\"top_PP\", alpha=0.05, label=\"gwascat curated PICS CS\", title=\"gwascat curated PICS CS\")\n", + "print(\"Number of CURATED CS with top SNP PP > 0.9: \", gwascat_curated_fm.filter(f.col(\"top_PP\") > 0.9).distinct().count())\n", + "sample_size_quartiles = gwascat_index.join(gwascat_sumstats, how=\"anti\", on=\"studyId\").stat.approxQuantile(\"nSamples\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of CURATED gwas sample sizes: L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])\n", + "\n", + "sample_size_quartiles = gwascat_curated_fm.stat.approxQuantile(\"credset_size\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of CURATED gwascat pics credset sizes: Mean: \", gwascat_curated_fm.select(f.mean(gwascat_curated_fm[\"credset_size\"])).collect()[0][0], \"L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### 6. Analyze colocalization data:\n", + " - Count the total number of colocalizations and the number with clpp > 0.8.\n", + " - Calculate the average number of overlaps per credible set." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of colocalisations: 46733065 , of which, 4031821 > 0.8 clpp ( 8.6 %)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 360:============================================> (12 + 3) / 15]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average number of overlaps per CS: 90.79159130338489\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "coloc_path=f\"{release_path}/{release_ver}/colocalisation\"\n", + "coloc=session.spark.read.parquet(coloc_path, recursiveFileLookup=True)\n", + "\n", + "print(\"Number of colocalisations: \", coloc.count(), \" , of which, \", coloc.filter(f.col(\"clpp\") > 0.8).count(), \" > 0.8 clpp (\", round((coloc.filter(f.col(\"clpp\") > 0.8).count()/coloc.count()), 3)*100, \"%)\")\n", + "Avg_overlaps=coloc.groupBy(\"leftStudyLocusId\").count().agg(f.avg(\"count\")).collect()[0][0]\n", + "print(\"Average number of overlaps per CS: \", Avg_overlaps)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### 7. Analyze locus-to-gene (L2G) predictions:\n", + " - Histogram of l2g score distribution.\n", + " - Number of CS with at least one gene with L2G>=0.5\n", + " - Number of CS with more than one gene with L2G>=0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A total of 10561869 l2g predictions were computed.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "There are 8591772 UNIQUE locus to gene predictions for 607372 unique studyloci\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Where 357875 studyloci contains at least one gene with score > 0.5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Of these, 122485 studyloci contains more than one gene with score > 0.5\n" + ] + }, + { + "data": { + "image/png": "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lCk7duxQly5dFBMTowULFhS6AnFep06d9NNPP+nzzz/37Dt37pzefvvty54jLy+v0C2T8PBwRUVFKSsrS5LUvHlz1a5dW5MnT9apU6cKjDX//9M6kZGRatasmd5///0CY7Zt26alS5eqc+fOl83Ss2dP+fn56YUXXij0hXbGGP3yyy+SpPT0dOXm5hZ4vnHjxipXrpwnM4Dicc3c+rmUgwcPasaMGTp48KCioqIkSSNGjNDixYs1Y8YMjRs3Tvv27dOBAwc0Z84czZo1S3l5eRo2bJjuu+8+rVixwuF3ABS/jIwMderUSSdPntRzzz2nL774osDzdevWVevWrSVJjz/+uN544w317dtXQ4cOVWRkpD788ENVqFBBkgqtXfn9eWrWrKn77rtPTZs21XXXXafly5dr/fr1mjhxoiSpXLlymjZtmrp27apmzZpp4MCBioyM1I8//qgffvhBS5YskSS98sorio+PV+vWrTVo0CDPx5NDQ0M1ZsyYy77nunXrauzYsRo5cqT279+v7t27Kzg4WCkpKZo3b54ee+wxjRgxQitWrNCQIUPUq1cvxcbGKjc3V//zP/8jPz8//fGPf/RmugFcKYev6BQL/e7Wz4IFC4wkExQUVODh7+9vevfubYwx5tFHHy10CXjDhg1GEreDcE36/a2flJQUI+mij4SEhAKv37dvn+nSpYsJDAw01apVM88++6z59NNPjSSzbt26i543KyvLPPfcc6Zp06YmODjYBAUFmaZNm5o333yz0Ng1a9aYjh07esY1adLETJkypcCY5cuXm7i4OBMYGGhCQkJM165dzfbt2wuMuditn/M+/fRT06ZNG8/fDfXr1zeJiYmevw/27dtnHn74YVO3bl1ToUIFU7lyZdOuXTuzfPnyy00zgKvkMuba+wUeLpdL8+bNU/fu3SX99umFfv366Ycffii0YO66665TRESERo8erXHjxiknJ8fz3NmzZ1WxYkUtXbpUHTt2LMm3AJRKkydP1rBhw3T48GHVqFHD6TgArgFl4tbPzTffrLy8PB0/flxt27a94Ji4uDjl5uZq7969qlu3riRp165dkqRatWqVWFagtDh79myBNSznzp3TW2+9pXr16lFSAPjMNVNUTp8+rT179ni2U1JStHnzZlWuXFmxsbHq16+f+vfvr4kTJ+rmm2/WiRMnlJycrCZNmqhLly7q0KGDmjdvrocffliTJ09Wfn6+EhMT1bFjR8XGxjr4zgA79ezZU9dff72aNWumtLQ0ffDBB/rxxx/14YcfOh0NwDXkmrn1s2rVKrVr167Q/oSEBM2cOVM5OTkaO3asZs2apZ9++klVq1bVf/zHf+iFF15Q48aNJUlHjhzRU089paVLlyooKEjx8fGaOHFigW+9BPCbyZMn65133tH+/fuVl5enBg0a6Pnnn1efPn2cjgbgGnLNFBUAAHDtKTPfowIAAEofigoAALBWqV5Mm5+fryNHjig4OPiSXzAFAADsYYxRRkaGoqKiVK7cpa+ZlOqicuTIEUVHRzsdAwAAeOHQoUOX/aWepbqoBAcHS/rtjYaEhDicBgAAXIn09HRFR0d7fo5fSqkuKudv94SEhFBUAAAoZa5k2QaLaQEAgLUoKgAAwFoUFQAAYK1SvUYFAABfMMYoNzdXeXl5Tke5Jvj5+cnf398nXx1CUQEAlGnZ2dlKTU3VmTNnnI5yTalYsaIiIyMVEBBwVcehqAAAyqz8/HylpKTIz89PUVFRCggI4AtEr5IxRtnZ2Tpx4oRSUlJUr169y36p26VQVAAAZVZ2drby8/MVHR2tihUrOh3nmhEYGKjy5cvrwIEDys7OVoUKFbw+FotpAQBl3tX8Hz8uzFdzyr8ZAABgLYoKAACwFmtUAAC4gNeW7Sqxcw3rGFti5yptuKICAACsRVEBAAAXlZ2d7ej5KSoAAJRCn3zyiRo3bqzAwEBVqVJFHTp0UGZmpiTpvffeU8OGDeV2uxUZGakhQ4Z4Xnfw4EF169ZN1113nUJCQtS7d28dO3bM8/yYMWPUrFkzvfPOO6pdu7bno8WnTp3SI488omrVqikkJER33nmntmzZUuzvkzUql1CS9yd9hfucAHDtS01NVd++fTVhwgT16NFDGRkZ+te//iVjjKZNm6bhw4dr/Pjxio+PV1pamtauXSvpty+4O19SvvzyS+Xm5ioxMVF9+vTRqlWrPMffs2ePPv30U82dO1d+fn6SpF69eikwMFCLFi1SaGio3nrrLbVv3167du1S5cqVi+29UlQAAChlUlNTlZubq549e6pWrVqSpMaNG0uSxo4dq2effVZDhw71jL/lllskScnJydq6datSUlIUHR0tSZo1a5YaNmyo9evXe8ZlZ2dr1qxZqlatmiRpzZo1+vbbb3X8+HG53W5J0quvvqr58+frk08+0WOPPVZs75WiAgBAKdO0aVO1b99ejRs3VqdOnXTXXXfpvvvuU05Ojo4cOaL27dtf8HU7duxQdHS0p6RIUoMGDRQWFqYdO3Z4ikqtWrU8JUWStmzZotOnT6tKlSoFjnf27Fnt3bu3GN7h/6GoAABQyvj5+WnZsmX66quvtHTpUk2ZMkWjRo1ScnKyT44fFBRUYPv06dOKjIwscHvovLCwMJ+c82IoKgAAlEIul0txcXGKi4vT3/72N9WqVUvLli1TTEyMkpOT1a5du0Kvuemmm3To0CEdOnTIc1Vl+/btOnXqlBo0aHDRczVv3lxHjx6Vv7+/YmJiiustXRBFBQCAUuabb75RcnKy7rrrLoWHh+ubb77RiRMndNNNN2nMmDEaPHiwwsPDFR8fr4yMDK1du1ZPPfWUOnTooMaNG6tfv36aPHmycnNz9eSTT+qOO+5Qy5YtL3q+Dh06qHXr1urevbsmTJig2NhYHTlyRF988YV69OhxyddeLYoKAAAXYPOnKENCQrR69WpNnjxZ6enpqlWrliZOnKj4+HhJ0rlz5/Taa69pxIgRqlq1qu677z5Jv12F+eyzz/TUU0/p9ttvV7ly5XT33XdrypQplzyfy+XSwoULNWrUKA0cOFAnTpxQRESEbr/9dlWvXr1Y36vLGGOK9QzFKD09XaGhoUpLS1NISIjPj8/HkwHg2nbu3DmlpKQU+L4Q+Mal5rYoP7/5wjcAAGAtigoAALAWRQUAAFiLogIAAKxFUQEAlHml+HMl1vLVnFJUAABlVvny5SVJZ86ccTjJtef8nJ6fY2/xPSoAgDLLz89PYWFhOn78uCSpYsWKcrlcDqcq3YwxOnPmjI4fP66wsDDPb1/2FkUFAFCmRURESJKnrMA3wsLCPHN7NSgqAIAyzeVyKTIyUuHh4crJyXE6zjWhfPnyV30l5TyKCgAA+u02kK9+uMJ3WEwLAACsRVEBAADWoqgAAABrUVQAAIC1KCoAAMBaFBUAAGAtR4tKTEyMXC5XoUdiYqKTsQAAgCUc/R6V9evXKy8vz7O9bds2dezYUb169XIwFQAAsIWjRaVatWoFtsePH6+6devqjjvucCgRAACwiTXfTJudna0PPvhAw4cPv+gvhMrKylJWVpZnOz09vaTiAQAAB1izmHb+/Pk6deqUBgwYcNExSUlJCg0N9Tyio6NLLiAAAChx1hSVd999V/Hx8YqKirromJEjRyotLc3zOHToUAkmBAAAJc2KWz8HDhzQ8uXLNXfu3EuOc7vdcrvdJZQKAAA4zYorKjNmzFB4eLi6dOnidBQAAGARx4tKfn6+ZsyYoYSEBPn7W3GBBwAAWMLxorJ8+XIdPHhQDz/8sNNRAACAZRy/hHHXXXfJGON0DAAAYCHHr6gAAABcDEUFAABYi6ICAACsRVEBAADWoqgAAABrUVQAAIC1KCoAAMBaFBUAAGAtigoAALAWRQUAAFiLogIAAKxFUQEAANaiqAAAAGtRVAAAgLUoKgAAwFoUFQAAYC2KCgAAsBZFBQAAWIuiAgAArEVRAQAA1qKoAAAAa1FUAACAtSgqAADAWhQVAABgLYoKAACwFkUFAABYi6ICAACsRVEBAADWoqgAAABrUVQAAIC1KCoAAMBaFBUAAGAtigoAALAWRQUAAFiLogIAAKxFUQEAANZyvKj89NNPevDBB1WlShUFBgaqcePG+u6775yOBQAALODv5MlPnjypuLg4tWvXTosWLVK1atW0e/duVapUyclYAADAEo4WlZdfflnR0dGaMWOGZ1/t2rUvOj4rK0tZWVme7fT09GLNBwAAnOXorZ/PP/9cLVu2VK9evRQeHq6bb75Zb7/99kXHJyUlKTQ01POIjo4uwbQAAKCkOVpU9u3bp2nTpqlevXpasmSJnnjiCT399NN6//33Lzh+5MiRSktL8zwOHTpUwokBAEBJcvTWT35+vlq2bKlx48ZJkm6++WZt27ZN06dPV0JCQqHxbrdbbre7pGMCAACHOHpFJTIyUg0aNCiw76abbtLBgwcdSgQAAGziaFGJi4vTzp07C+zbtWuXatWq5VAiAABgE0eLyrBhw7Ru3TqNGzdOe/bs0UcffaS///3vSkxMdDIWAACwhKNF5ZZbbtG8efP0j3/8Q40aNdKLL76oyZMnq1+/fk7GAgAAlnB0Ma0k3XPPPbrnnnucjgEAACzk+FfoAwAAXAxFBQAAWIuiAgAArEVRAQAA1qKoAAAAa1FUAACAtSgqAADAWhQVAABgLYoKAACwFkUFAABYi6ICAACsRVEBAADWoqgAAABrUVQAAIC1KCoAAMBaFBUAAGAtigoAALAWRQUAAFiLogIAAKxFUQEAANaiqAAAAGtRVAAAgLUoKgAAwFoUFQAAYC2KCgAAsBZFBQAAWIuiAgAArEVRAQAA1qKoAAAAa1FUAACAtSgqAADAWhQVAABgLYoKAACwFkUFAABYi6ICAACs5WhRGTNmjFwuV4FH/fr1nYwEAAAs4u90gIYNG2r58uWebX9/xyMBAABLON4K/P39FRER4XQMAABgIcfXqOzevVtRUVGqU6eO+vXrp4MHD150bFZWltLT0ws8AADAtcvRonLrrbdq5syZWrx4saZNm6aUlBS1bdtWGRkZFxyflJSk0NBQzyM6OrqEEwMAgJLkMsYYp0Ocd+rUKdWqVUuTJk3SoEGDCj2flZWlrKwsz3Z6erqio6OVlpamkJAQn+d5bdkunx+zuA3rGOt0BAAALik9PV2hoaFX9PPb8TUq/y4sLEyxsbHas2fPBZ93u91yu90lnAoAADjF8TUq/+706dPau3evIiMjnY4CAAAs4GhRGTFihL788kvt379fX331lXr06CE/Pz/17dvXyVgAAMASjt76OXz4sPr27atffvlF1apVU5s2bbRu3TpVq1bNyVgAAMASjhaV2bNnO3l6AABgOavWqAAAAPw7igoAALAWRQUAAFiLogIAAKxFUQEAANaiqAAAAGtRVAAAgLW8Kir79u3zdQ4AAIBCvCoqN9xwg9q1a6cPPvhA586d83UmAAAASV4WlY0bN6pJkyYaPny4IiIi9Pjjj+vbb7/1dTYAAFDGeVVUmjVrptdff11HjhzRe++9p9TUVLVp00aNGjXSpEmTdOLECV/nBAAAZdBVLab19/dXz549NWfOHL388svas2ePRowYoejoaPXv31+pqam+ygkAAMqgqyoq3333nZ588klFRkZq0qRJGjFihPbu3atly5bpyJEj6tatm69yAgCAMsir3548adIkzZgxQzt37lTnzp01a9Ysde7cWeXK/dZ7ateurZkzZyomJsaXWQEAQBnjVVGZNm2aHn74YQ0YMECRkZEXHBMeHq533333qsIBAICyzauisnv37suOCQgIUEJCgjeHBwAAkOTlGpUZM2Zozpw5hfbPmTNH77///lWHAgAAkLwsKklJSapatWqh/eHh4Ro3btxVhwIAAJC8LCoHDx5U7dq1C+2vVauWDh48eNWhAAAAJC+LSnh4uL7//vtC+7ds2aIqVapcdSgAAADJy6LSt29fPf3001q5cqXy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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "l2g_path=f\"{release_path}/{release_ver}/locus_to_gene_predictions\"\n", + "l2g=session.spark.read.parquet(l2g_path, recursiveFileLookup=True)\n", + "l2g.select(\"score\").toPandas().plot.hist(bins=10, alpha=0.5, title=\"l2g scores\")\n", + "print(\"A total of \", l2g.select(\"studyLocusId\", \"geneId\").count(), \"l2g predictions were computed.\")\n", + "print(\"There are\", l2g.select(\"studyLocusId\", \"geneId\").distinct().count(), \" UNIQUE locus to gene predictions for\", l2g.select(\"studyLocusId\").distinct().count(), \" unique studyloci\")\n", + "print(\"Where \", l2g.filter(f.col(\"score\") > 0.5).select(\"studyLocusId\").distinct().count(), \" studyloci contains at least one gene with score > 0.5\")\n", + "print(\"Of these, \", l2g.filter(f.col(\"score\") > 0.5).groupBy(\"studyLocusId\").count().filter(f.col(\"count\") > 1).count(), \" studyloci contains more than one gene with score > 0.5\")\n", + "\n", + "# There are duplicated l2g predictions studyLocusId with finngen pics and susie" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are definitely duplicated studylocusIDs in the l2g predictions, and still around 20% of studylocus contains more than 1 gene with score>0.5. It is not possible to separate out these predictions based on whether they came from pics or susie, as the l2g outputs only contains the studylocusID (duplicated between pics and susie). \n", + "\n", + "If 20% is too high then it implies finngen pics and susie l2g are pointing (confidently) at different genes for the same studylocus.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### 7. Analyze locus-to-gene (L2G) predictions:\n", + " - Consider only the top gene assignments from l2g:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlUAAAGzCAYAAAAG8+KwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABP2ElEQVR4nO3deVhUZf8G8HsAB5CYQUSWeUVExQUlSUzErRR0VLJIy40UldQSSsQ9TbFMFHPfyMylN/1plpq5oIiapYSKkvtS4pYOWAijqKzP7w8vzusIKOBhGb0/1zVXzXO+c853HtC5PXPmGYUQQoCIiIiInolJZTdARERE9DxgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiqB1atXQ6FQ4PLly5Xdyguhe/fuGDp0aGW3QWUQEREBhUJR2W1UKdHR0ahTpw6ysrIquxUqZwxVRGWQn5+P1atX480334SzszOsrKzQrFkzTJ8+HQ8ePKjs9ozawYMHsXv3bowfP14aO3PmDCIiIhhqqUqbMWMGtmzZUmh80KBByM7OxldffVXxTVGFYqgiKoN79+5h8ODBuHXrFj744APMnz8frVq1wtSpU9GtWzfwKzXLbvbs2fD19UWDBg2ksTNnzmDatGkMVUZg8uTJuH//fmW3USmKC1UWFhYICgrC3Llz+XfDc86sshsgMkZKpRIHDx5EmzZtpLGhQ4eibt26mDp1KuLi4uDn51eJHcorMzMTVlZW5X6c1NRUbN++HdHR0eV+LCofZmZmMDPjS8vjevfujaioKOzbtw+dOnWq7HaonPBMFVEZKJVKg0BV4O233wYAnD171mD8ypUrePPNN2FlZQV7e3uMGjUKu3btgkKhwP79+594rDt37iAsLAx169aFubk57O3t0blzZxw7dsygLiEhAd27d0eNGjVgZWWFl19+GQsWLDCo2bt3L9q3bw8rKyvY2NjgrbfeKtRrwTUxZ86cQf/+/VGjRg20a9dO2v7dd9/By8sLlpaWsLW1Rd++fXHt2jWDfVy8eBG9evWCo6MjLCwsULt2bfTt2xcZGRlPfK7bt29Hbm6uQSBdvXo13n33XQBAx44doVAoCs3b0qVL0bRpU5ibm0Oj0SAkJATp6ekG+3799dfRrFkzJCYmok2bNrC0tISrq2uJA9z9+/fx8ccfw87ODtbW1njzzTfx999/Q6FQICIiwqD277//xpAhQ+Dg4ABzc3M0bdoUK1euNKjZv38/FAoFvv/+e3zxxReoXbs2LCws4Ovriz///LPQ8RMSEtC1a1eo1WpUr14dr732Gg4ePPjUvrOzszFlyhR4eXlBrVbDysoK7du3x759+wrVrl+/Hl5eXrC2toZKpYKHh4fB71BOTg6mTZsGNzc3WFhYoGbNmmjXrh1iY2OlmqKuqSrp3BU89s8//8SgQYNgY2MDtVqNwYMH4969ewb7VCgUCA0NxcaNG+Hu7g5LS0v4+Pjg5MmTAICvvvoKDRo0gIWFBV5//fUiz3KWZE5L2pNCoUBmZibWrFkj/Y4OGjRI2u7l5QVbW1v89NNPxf+wyOjxnxNEMtLpdAAAOzs7aSwzMxOdOnXCzZs3MXLkSDg6OmLdunVFvqgV5YMPPsAPP/yA0NBQuLu7499//8Vvv/2Gs2fPokWLFgCA2NhYvPHGG3BycpKOcfbsWWzbtg0jR44EAOzZswfdunVDvXr1EBERgfv372PRokVo27Ytjh07hrp16xoc991334WbmxtmzJghvWXxxRdf4NNPP0Xv3r3x/vvv49atW1i0aBE6dOiA48ePw8bGBtnZ2dBqtcjKysJHH30ER0dH/P3339i2bRvS09OhVquLfa6HDh1CzZo14eLiIo116NABH3/8MRYuXIhPPvkETZo0AQDpvxEREZg2bRr8/Pzw4Ycf4vz581i2bBmOHDmCgwcPolq1atK+bt++je7du6N3797o168fvv/+e3z44YdQKpUYMmTIE38OgwYNwvfff48BAwagdevW+OWXX+Dv71+oLiUlBa1bt5Ze9GvVqoWdO3ciODgYer0eYWFhBvUzZ86EiYkJxowZg4yMDERFRSEwMBAJCQlSzd69e9GtWzd4eXlh6tSpMDExwapVq9CpUyf8+uuvaNWqVbF96/V6rFixAv369cPQoUNx584dfPPNN9BqtTh8+DA8PT0BPPwd6tevH3x9fTFr1iwAD/9xcPDgQel3KCIiApGRkXj//ffRqlUr6PV6HD16FMeOHUPnzp2fee4K9O7dG66uroiMjMSxY8ewYsUK2NvbS30V+PXXX7F161aEhIQAACIjI/HGG29g3LhxWLp0KUaMGIHbt28jKioKQ4YMwd69e8s8p0/r6b///a80L8OGDQMA1K9f32AfLVq0KFEQJiMmiOipVq1aJQCI5OTkJ9b5+fkJlUolbt++LY3NmTNHABBbtmyRxu7fvy8aN24sAIh9+/Y9cZ9qtVqEhIQUuz03N1e4uroKFxcXg+MKIUR+fr70/56ensLe3l78+++/0tgff/whTExMxMCBA6WxqVOnCgCiX79+Bvu6fPmyMDU1FV988YXB+MmTJ4WZmZk0fvz4cQFAbNy48YnPqyjt2rUTXl5ehcY3btxY5FylpqYKpVIpunTpIvLy8qTxxYsXCwBi5cqV0thrr70mAIg5c+ZIY1lZWdK8ZGdnF9tXYmKiACDCwsIMxgcNGiQAiKlTp0pjwcHBwsnJSfzzzz8GtX379hVqtVrcu3dPCCHEvn37BADRpEkTkZWVJdUtWLBAABAnT54UQjz8Gbq5uQmtVmvw87x3755wdXUVnTt3LrZvIR7+fjy6fyGEuH37tnBwcBBDhgyRxkaOHClUKpXIzc0tdl/NmzcX/v7+Tzxewe9PgdLMXcFjH+1LCCHefvttUbNmTYMxAMLc3Nzgz+RXX30lAAhHR0eh1+ul8YkTJxr8+S3NnJamJysrKxEUFFTs3AwbNkxYWloWu52MH9/+I5LJjBkzsGfPHsycORM2NjbSeExMDP7zn//gzTfflMYsLCxKvGSAjY0NEhIScOPGjSK3Hz9+HMnJyQgLCzM4LgDpbZibN28iKSkJgwYNgq2trbT95ZdfRufOnbFjx45C+/3ggw8M7m/atAn5+fno3bs3/vnnH+nm6OgINzc36cxbwZmoXbt2FXrL5mn+/fdf1KhRo8T1e/bsQXZ2NsLCwmBi8r+/zoYOHQqVSoXt27cb1JuZmWH48OHSfaVSieHDhyM1NRWJiYnFHicmJgYAMGLECIPxjz76yOC+EAI//vgjevToASGEwTxptVpkZGQUett28ODBUCqV0v327dsDAC5dugQASEpKwsWLF9G/f3/8+++/0v4yMzPh6+uLAwcOID8/v9jeTU1Npf3n5+cjLS0Nubm5aNmypUEvNjY2yMzMNHgr73E2NjY4ffo0Ll68WGzN40o6d496/Hevffv2+Pfff6HX6w3GfX19Dc6went7AwB69eoFa2vrQuPPMqcl7elJatSogfv375f6zwUZD4YqIhls2LABkydPRnBwMD788EODbVeuXEH9+vULXWfy6KfbniQqKgqnTp2Cs7MzWrVqhYiICOnFAQD++usvAECzZs2K3ceVK1cAAI0aNSq0rUmTJtILyqNcXV0N7l+8eBFCCLi5uaFWrVoGt7NnzyI1NVV6XHh4OFasWAE7OztotVosWbLkqddTFRCl+HRUcc9LqVSiXr160vYCGo2m0AX3DRs2BIAnfrLwypUrMDExKTQnj/8Mb926hfT0dCxfvrzQHA0ePBgApHkqUKdOHYP7BaHy9u3bACAFmKCgoEL7XLFiBbKysp46t2vWrMHLL78sXQdVq1YtbN++3eBxI0aMQMOGDdGtWzfUrl0bQ4YMkQJRgc8++wzp6elo2LAhPDw8MHbsWJw4ceKJxy7p3JVmToqrKwj0zs7ORY4/y5yWtKcnKfjd5jpezy9eU0X0jGJjYzFw4ED4+/uXy6fWevfujfbt22Pz5s3YvXs3Zs+ejVmzZmHTpk3o1q2b7McrYGlpaXA/Pz8fCoUCO3fuhKmpaaH6l156Sfr/OXPmYNCgQfjpp5+we/dufPzxx4iMjMTvv/+O2rVrF3vMmjVrlupFqqopOLvx3nvvISgoqMial19+2eB+UXMJ/O8FuGCfs2fPlq5/etyjc/+47777DoMGDUJAQADGjh0Le3t7mJqaIjIyUgrkAGBvb4+kpCTs2rULO3fuxM6dO7Fq1SoMHDgQa9asAfDw+ra//vpL+rmuWLEC8+bNQ3R0NN5///1ieyitp83J0+rKY05L2tOT3L59G9WrVy/0Z4ueHwxVRM8gISEBb7/9Nlq2bInvv/++yI+Su7i44MyZMxBCGPwLtahPeBXHyckJI0aMwIgRI5CamooWLVrgiy++QLdu3aSLYU+dOlXsMg4FF36fP3++0LZz587Bzs7uqUsm1K9fH0IIuLq6Smd3nsTDwwMeHh6YPHkyDh06hLZt2yI6OhrTp08v9jGNGzfGjz/+WGi8uH/ZP/q86tWrJ41nZ2cjOTm50HzcuHGj0PIQFy5cAIBCF+o/fpz8/HwkJyfDzc1NGn/8Z1irVi1YW1sjLy9PtiU1Cn6+KpWqTPv84YcfUK9ePWzatMlgHqdOnVqoVqlUokePHujRowfy8/MxYsQIfPXVV/j000+lM0u2trYYPHgwBg8ejLt376JDhw6IiIgoNlSVdO4q0rPOaXGedgYqOTlZ+oAFPZ/49h9RGZ09exb+/v6oW7cutm3bVuy/PrVaLf7++29s3bpVGnvw4AG+/vrrpx4jLy+v0NsQ9vb20Gg00ldetGjRAq6urpg/f36hZQQK/hXt5OQET09PrFmzxqDm1KlT2L17N7p37/7UXnr27AlTU1NMmzat0L/OhRD4999/ATz8tFlubq7Bdg8PD5iYmDz1azp8fHxw+/Ztg7c3AUgh6PHn5+fnB6VSiYULFxr09M033yAjI6PQJ8xyc3MNVrUuWOW6Vq1a8PLyKrYvrVYL4OHSDY9atGiRwX1TU1P06tULP/74I06dOlVoP7du3Sr2GMXx8vJC/fr18eWXX+Lu3bul3mfBGZZH5ychIQHx8fEGdQU/vwImJibSWbWCn9vjNS+99BIaNGjwxJ9rSeeuIj3rnBbHysqq0O/oo44dO1bkUiz0/OCZKqIyuHPnDrRaLW7fvo2xY8cWuiC6fv368PHxAQAMHz4cixcvRr9+/TBy5Eg4OTlh7dq1sLCwAPDkf93euXMHtWvXxjvvvIPmzZvjpZdewp49e3DkyBHMmTMHwMMXv2XLlqFHjx7w9PTE4MGD4eTkhHPnzuH06dPYtWsXgIdvdXTr1g0+Pj4IDg6WllRQq9WF1lkqSv369TF9+nRMnDgRly9fRkBAAKytrZGcnIzNmzdj2LBhGDNmDPbu3YvQ0FC8++67aNiwIXJzc/Hf//5XChxP4u/vDzMzM+zZs0f6WDoAeHp6wtTUFLNmzUJGRgbMzc3RqVMn2NvbY+LEiZg2bRq6du2KN998E+fPn8fSpUvx6quv4r333jPYv0ajwaxZs3D58mU0bNgQGzZsQFJSEpYvX26w9MLjvLy80KtXL8yfPx///vuvtCxAwVmuR3+GM2fOxL59++Dt7Y2hQ4fC3d0daWlpOHbsGPbs2YO0tLSnzvWjTExMsGLFCnTr1g1NmzbF4MGD8Z///Ad///039u3bB5VKhZ9//rnYx7/xxhvYtGkT3n77bfj7+yM5ORnR0dFwd3c3CBTvv/8+0tLS0KlTJ9SuXRtXrlzBokWL4OnpKZ1dcXd3x+uvvy6tuXT06FFpuQ855q6iPOucFsfLywt79uzB3LlzodFo4OrqKl0kn5iYiLS0NLz11ltyPx2qSir+A4dExufxJRWSk5MFgGJvj3+s+tKlS8Lf319YWlqKWrVqidGjR4sff/xRABC///57scfNysoSY8eOFc2bNxfW1tbCyspKNG/eXCxdurRQ7W+//SY6d+4s1b388sti0aJFBjV79uwRbdu2FZaWlkKlUokePXqIM2fOGNQUfIT81q1bRfb0448/inbt2gkrKythZWUlGjduLEJCQsT58+el5zpkyBBRv359YWFhIWxtbUXHjh3Fnj17njbNQggh3nzzTeHr61to/Ouvvxb16tUTpqamhZZXWLx4sWjcuLGoVq2acHBwEB9++GGh5SVee+010bRpU3H06FHh4+MjLCwshIuLi1i8eHGJ+srMzBQhISHC1tZWvPTSSyIgIECcP39eABAzZ840qE1JSREhISHC2dlZVKtWTTg6OgpfX1+xfPlyqaZgSYXHl54o+N1atWqVwfjx48dFz549Rc2aNYW5ublwcXERvXv3FnFxcU/sOz8/X8yYMUO4uLgIc3Nz8corr4ht27aJoKAg4eLiItX98MMPokuXLsLe3l4olUpRp04dMXz4cHHz5k2pZvr06aJVq1bCxsZGWFpaisaNG4svvvjCYDmKx5dUKM3cFfe7V9SSJgAKLTVSMHezZ882GC9urksyp6Xp6dy5c6JDhw7C0tKy0N8D48ePF3Xq1DFYwoGePwoh+EVERJVh/vz5GDVqFK5fv47//Oc/ld1OlfHrr7/i9ddfx7lz5wyuwXlWr7/+Ov75558i35Yrq6SkJLzyyiv47rvvEBgYKNt+XwQv0txlZWWhbt26mDBhgrSQKj2feE0VUQV4/AtmHzx4gK+++gpubm4MVI9p3749unTpgqioqMpuxUBRXxI8f/58mJiYoEOHDpXQkfF40edu1apVqFatWqG1ruj5w2uqiCpAz549UadOHXh6eiIjIwPfffcdzp07h7Vr11Z2a1XSzp07K7uFQqKiopCYmIiOHTvCzMxMWnZg2LBhhdZFIkMv+tx98MEHDFQvCIYqogqg1WqxYsUKrF27Fnl5eXB3d8f69evRp0+fym6NSqhNmzaIjY3F559/jrt376JOnTqIiIjApEmTKru1Ko9zRy8KXlNFREREJANeU0VEREQkA4YqIiIiIhnwmqoKlJ+fjxs3bsDa2ppfqElERGQkhBC4c+cONBoNTEyKPx/FUFWBbty48UJ80oWIiOh5dO3atSd+KTxDVQWytrYG8PCHolKpKrkbIiIiKgm9Xg9nZ2fpdbw4DFUVqOAtP5VKxVBFRERkZJ526Q4vVCciIiKSAUMVERERkQwYqoiIiIhkwGuqqhghBHJzc5GXl1fZrTwXTE1NYWZmxiUsiIio3DFUVSHZ2dm4efMm7t27V9mtPFeqV68OJycnKJXKym6FiIieYwxVVUR+fj6Sk5NhamoKjUYDpVLJsyvPSAiB7Oxs3Lp1C8nJyXBzc3viom1ERETPgqGqisjOzkZ+fj6cnZ1RvXr1ym7nuWFpaYlq1arhypUryM7OhoWFRWW3REREzyn+s72K4ZkU+XFOiYioIvDVhoiIiEgGDFVEREREMuA1VVXcvNgLFXq8UZ0bVujxiIiInhc8U0VEREQkA4YqMhrZ2dmV3QIREVGxGKromf3www/w8PCApaUlatasCT8/P2RmZgIAVq5ciaZNm8Lc3BxOTk4IDQ2VHnf16lW89dZbeOmll6BSqdC7d2+kpKRI2yMiIuDp6YkVK1bA1dVVWg4hPT0d77//PmrVqgWVSoVOnTrhjz/+qNgnTURE9BheU0XP5ObNm+jXrx+ioqLw9ttv486dO/j1118hhMCyZcsQHh6OmTNnolu3bsjIyMDBgwcBPFzstCBQ/fLLL8jNzUVISAj69OmD/fv3S/v/888/8eOPP2LTpk0wNTUFALz77ruwtLTEzp07oVar8dVXX8HX1xcXLlyAra1tZUwDEdFzp6Kv6ZVDZV8XzFBFz+TmzZvIzc1Fz5494eLiAgDw8PAAAEyfPh2jR4/GyJEjpfpXX30VABAXF4eTJ08iOTkZzs7OAIBvv/0WTZs2xZEjR6S67OxsfPvtt6hVqxYA4LfffsPhw4eRmpoKc3NzAMCXX36JLVu24IcffsCwYcMq5okTERE9hqGKnknz5s3h6+sLDw8PaLVadOnSBe+88w5ycnJw48YN+Pr6Fvm4s2fPwtnZWQpUAODu7g4bGxucPXtWClUuLi5SoAKAP/74A3fv3kXNmjUN9nf//n389ddf5fAMiYiISoahip6JqakpYmNjcejQIezevRuLFi3CpEmTEBcXJ8v+raysDO7fvXsXTk5OBm8RFrCxsZHlmERERGVRqReqHzhwAD169IBGo4FCocCWLVuKrf3ggw+gUCgwf/58g/G0tDQEBgZCpVLBxsYGwcHBuHv3rkHNiRMn0L59e1hYWMDZ2RlRUVGF9r9x40Y0btwYFhYW8PDwwI4dOwy2CyEwZcoUODk5wdLSEn5+frh48WKZn/vzRKFQoG3btpg2bRqOHz8OpVKJ2NhY1K1bt9hw1aRJE1y7dg3Xrl2Txs6cOYP09HS4u7sXe6wWLVpAp9PBzMwMDRo0MLjZ2dnJ/tyIiIhKqlJDVWZmJpo3b44lS5Y8sW7z5s34/fffodFoCm0LDAzE6dOnERsbi23btuHAgQMG19Xo9Xp06dIFLi4uSExMxOzZsxEREYHly5dLNYcOHUK/fv0QHByM48ePIyAgAAEBATh16pRUExUVhYULFyI6OhoJCQmwsrKCVqvFgwcPZJgJ45WQkIAZM2bg6NGjuHr1KjZt2oRbt26hSZMmiIiIwJw5c7Bw4UJcvHgRx44dw6JFiwAAfn5+8PDwQGBgII4dO4bDhw9j4MCBeO2119CyZctij+fn5wcfHx8EBARg9+7duHz5Mg4dOoRJkybh6NGjFfW0iYiICqnUt/+6deuGbt26PbHm77//xkcffYRdu3bB39/fYNvZs2cRExODI0eOSC/EixYtQvfu3fHll19Co9Fg7dq1yM7OxsqVK6FUKtG0aVMkJSVh7ty5UvhasGABunbtirFjxwIAPv/8c8TGxmLx4sWIjo6GEALz58/H5MmT8dZbbwF4eFG1g4MDtmzZgr59+8o9NZLK/iTD06hUKhw4cADz58+HXq+Hi4sL5syZI/1cHzx4gHnz5mHMmDGws7PDO++8A+Dh2a2ffvoJH330ETp06AATExN07dpVCl3FUSgU2LFjByZNmoTBgwfj1q1bcHR0RIcOHeDg4FDuz5eIiKg4Vfqaqvz8fAwYMABjx45F06ZNC22Pj4+HjY2NwZkNPz8/mJiYICEhAW+//Tbi4+PRoUMHKJVKqUar1WLWrFm4ffs2atSogfj4eISHhxvsW6vVSm9HJicnQ6fTwc/PT9quVqvh7e2N+Pj4YkNVVlYWsrKypPt6vb5M81CVNWnSBDExMcVuHz58OIYPH17ktjp16uCnn34q9rERERGIiIgoNG5tbY2FCxdi4cKFpe6XiIiovFTpxT9nzZoFMzMzfPzxx0Vu1+l0sLe3NxgzMzODra0tdDqdVPP4GYyC+0+reXT7o48rqqYokZGRUKvV0u3RT7oRERHR86XKhqrExEQsWLAAq1evhkKhqOx2ymTixInIyMiQbo9elE1ERETPlyobqn799VekpqaiTp06MDMzg5mZGa5cuYLRo0ejbt26AABHR0ekpqYaPC43NxdpaWlwdHSUah796hMA0v2n1Ty6/dHHFVVTFHNzc6hUKoMbERERPZ+qbKgaMGAATpw4gaSkJOmm0WgwduxY7Nq1CwDg4+OD9PR0JCYmSo/bu3cv8vPz4e3tLdUcOHAAOTk5Uk1sbCwaNWqEGjVqSDWPf/Q/NjYWPj4+AABXV1c4Ojoa1Oj1eiQkJEg1RERE9GKr1AvV7969iz///FO6n5ycjKSkJNja2qJOnTqFVs2uVq0aHB0d0ahRIwAPL5Lu2rUrhg4diujoaOTk5CA0NBR9+/aVll/o378/pk2bhuDgYIwfPx6nTp3CggULMG/ePGm/I0eOxGuvvYY5c+bA398f69evx9GjR6VlFxQKBcLCwjB9+nS4ubnB1dUVn376KTQaDQICAmSdEyGErPsjzikREVWMSg1VR48eRceOHaX7BZ/ACwoKwurVq0u0j7Vr1yI0NBS+vr4wMTFBr169DD4VplarsXv3boSEhMDLywt2dnaYMmWKwVpWbdq0wbp16zB58mR88skncHNzw5YtW9CsWTOpZty4ccjMzMSwYcOQnp6Odu3aISYmBhYWFs84Cw9Vq1YNAHDv3j1YWlrKsk966N69ewD+N8dERETlQSH4z/gKo9froVarkZGRUeT1VTdv3kR6ejrs7e1RvXp1o71Av6oQQuDevXtITU2FjY0NnJycKrslIiKjMS/2QmW3UGrltbbj016/C1TpdapeNAUXvT9+8T09Gxsbmyd+oICIiEgODFVViEKhgJOTE+zt7Q0urKeyq1atGkxNTSu7DSIiegEwVFVBpqamDAJERERGpsouqUBERERkTBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCSDSg1VBw4cQI8ePaDRaKBQKLBlyxZpW05ODsaPHw8PDw9YWVlBo9Fg4MCBuHHjhsE+0tLSEBgYCJVKBRsbGwQHB+Pu3bsGNSdOnED79u1hYWEBZ2dnREVFFepl48aNaNy4MSwsLODh4YEdO3YYbBdCYMqUKXBycoKlpSX8/Pxw8eJF+SaDiIiIjFqlhqrMzEw0b94cS5YsKbTt3r17OHbsGD799FMcO3YMmzZtwvnz5/Hmm28a1AUGBuL06dOIjY3Ftm3bcODAAQwbNkzartfr0aVLF7i4uCAxMRGzZ89GREQEli9fLtUcOnQI/fr1Q3BwMI4fP46AgAAEBATg1KlTUk1UVBQWLlyI6OhoJCQkwMrKClqtFg8ePCiHmSEiIiJjoxBCiMpuAgAUCgU2b96MgICAYmuOHDmCVq1a4cqVK6hTpw7Onj0Ld3d3HDlyBC1btgQAxMTEoHv37rh+/To0Gg2WLVuGSZMmQafTQalUAgAmTJiALVu24Ny5cwCAPn36IDMzE9u2bZOO1bp1a3h6eiI6OhpCCGg0GowePRpjxowBAGRkZMDBwQGrV69G3759S/Qc9Xo91Go1MjIyoFKpyjJNREREFWJe7IXKbqHURnVuWC77Lenrt1FdU5WRkQGFQgEbGxsAQHx8PGxsbKRABQB+fn4wMTFBQkKCVNOhQwcpUAGAVqvF+fPncfv2banGz8/P4FharRbx8fEAgOTkZOh0OoMatVoNb29vqaYoWVlZ0Ov1BjciIiJ6PhlNqHrw4AHGjx+Pfv36SSlRp9PB3t7eoM7MzAy2trbQ6XRSjYODg0FNwf2n1Ty6/dHHFVVTlMjISKjVaunm7OxcqudMRERExsMoQlVOTg569+4NIQSWLVtW2e2U2MSJE5GRkSHdrl27VtktERERUTkxq+wGnqYgUF25cgV79+41eC/T0dERqampBvW5ublIS0uDo6OjVJOSkmJQU3D/aTWPbi8Yc3JyMqjx9PQstndzc3OYm5uX5ukSERGRkarSZ6oKAtXFixexZ88e1KxZ02C7j48P0tPTkZiYKI3t3bsX+fn58Pb2lmoOHDiAnJwcqSY2NhaNGjVCjRo1pJq4uDiDfcfGxsLHxwcA4OrqCkdHR4MavV6PhIQEqYaIiIhebJUaqu7evYukpCQkJSUBeHhBeFJSEq5evYqcnBy88847OHr0KNauXYu8vDzodDrodDpkZ2cDAJo0aYKuXbti6NChOHz4MA4ePIjQ0FD07dsXGo0GANC/f38olUoEBwfj9OnT2LBhAxYsWIDw8HCpj5EjRyImJgZz5szBuXPnEBERgaNHjyI0NBTAw08mhoWFYfr06di6dStOnjyJgQMHQqPRPPHTikRERPTiqNQlFfbv34+OHTsWGg8KCkJERARcXV2LfNy+ffvw+uuvA3i4+GdoaCh+/vlnmJiYoFevXli4cCFeeuklqf7EiRMICQnBkSNHYGdnh48++gjjx4832OfGjRsxefJkXL58GW5uboiKikL37t2l7UIITJ06FcuXL0d6ejratWuHpUuXomHDkn98k0sqEBGRseCSCv9T0tfvKrNO1YuAoYqIiIwFQ9X/PJfrVBERERFVVQxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkg0oNVQcOHECPHj2g0WigUCiwZcsWg+1CCEyZMgVOTk6wtLSEn58fLl68aFCTlpaGwMBAqFQq2NjYIDg4GHfv3jWoOXHiBNq3bw8LCws4OzsjKiqqUC8bN25E48aNYWFhAQ8PD+zYsaPUvRAREdGLq1JDVWZmJpo3b44lS5YUuT0qKgoLFy5EdHQ0EhISYGVlBa1WiwcPHkg1gYGBOH36NGJjY7Ft2zYcOHAAw4YNk7br9Xp06dIFLi4uSExMxOzZsxEREYHly5dLNYcOHUK/fv0QHByM48ePIyAgAAEBATh16lSpeiEiIqIXl0IIISq7CQBQKBTYvHkzAgICADw8M6TRaDB69GiMGTMGAJCRkQEHBwesXr0affv2xdmzZ+Hu7o4jR46gZcuWAICYmBh0794d169fh0ajwbJlyzBp0iTodDoolUoAwIQJE7BlyxacO3cOANCnTx9kZmZi27ZtUj+tW7eGp6cnoqOjS9RLSej1eqjVamRkZEClUskyb0REROVhXuyFym6h1EZ1blgu+y3p63eVvaYqOTkZOp0Ofn5+0pharYa3tzfi4+MBAPHx8bCxsZECFQD4+fnBxMQECQkJUk2HDh2kQAUAWq0W58+fx+3bt6WaR49TUFNwnJL0UpSsrCzo9XqDGxERET2fqmyo0ul0AAAHBweDcQcHB2mbTqeDvb29wXYzMzPY2toa1BS1j0ePUVzNo9uf1ktRIiMjoVarpZuzs/NTnjUREREZqyobqp4HEydOREZGhnS7du1aZbdERERE5aTKhipHR0cAQEpKisF4SkqKtM3R0RGpqakG23Nzc5GWlmZQU9Q+Hj1GcTWPbn9aL0UxNzeHSqUyuBEREdHzqcqGKldXVzg6OiIuLk4a0+v1SEhIgI+PDwDAx8cH6enpSExMlGr27t2L/Px8eHt7SzUHDhxATk6OVBMbG4tGjRqhRo0aUs2jxymoKThOSXohIiKiF1ulhqq7d+8iKSkJSUlJAB5eEJ6UlISrV69CoVAgLCwM06dPx9atW3Hy5EkMHDgQGo1G+oRgkyZN0LVrVwwdOhSHDx/GwYMHERoair59+0Kj0QAA+vfvD6VSieDgYJw+fRobNmzAggULEB4eLvUxcuRIxMTEYM6cOTh37hwiIiJw9OhRhIaGAkCJeiEiIqIXm1llHvzo0aPo2LGjdL8g6AQFBWH16tUYN24cMjMzMWzYMKSnp6Ndu3aIiYmBhYWF9Ji1a9ciNDQUvr6+MDExQa9evbBw4UJpu1qtxu7duxESEgIvLy/Y2dlhypQpBmtZtWnTBuvWrcPkyZPxySefwM3NDVu2bEGzZs2kmpL0QkRERC+uKrNO1YuA61QREZGx4DpV/2P061QRERERGROGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSQZlC1aVLl+Tug4iIiMiolSlUNWjQAB07dsR3332HBw8eyN0TERERkdEpU6g6duwYXn75ZYSHh8PR0RHDhw/H4cOH5e6NiIiIyGiUKVR5enpiwYIFuHHjBlauXImbN2+iXbt2aNasGebOnYtbt27J3ScRERFRlfZMF6qbmZmhZ8+e2LhxI2bNmoU///wTY8aMgbOzMwYOHIibN2/K1ScRERFRlfZMoero0aMYMWIEnJycMHfuXIwZMwZ//fUXYmNjcePGDbz11lty9UlERERUpZmV5UFz587FqlWrcP78eXTv3h3ffvstunfvDhOThxnN1dUVq1evRt26deXslYiIiKjKKlOoWrZsGYYMGYJBgwbBycmpyBp7e3t88803z9QcERERkbEoU6i6ePHiU2uUSiWCgoLKsnsiIiIio1Oma6pWrVqFjRs3FhrfuHEj1qxZ88xNERERERmbMoWqyMhI2NnZFRq3t7fHjBkznrkpIiIiImNTplB19epVuLq6Fhp3cXHB1atXn7kpIiIiImNTplBlb2+PEydOFBr/448/ULNmzWduioiIiMjYlClU9evXDx9//DH27duHvLw85OXlYe/evRg5ciT69u0rd49EREREVV6ZPv33+eef4/Lly/D19YWZ2cNd5OfnY+DAgbymioiIiF5IZQpVSqUSGzZswOeff44//vgDlpaW8PDwgIuLi9z9ERERERmFMoWqAg0bNkTDhg3l6oWIiIjIaJXpmqq8vDx888036N+/P/z8/NCpUyeDm1zy8vLw6aefwtXVFZaWlqhfvz4+//xzCCGkGiEEpkyZAicnJ1haWsLPz6/Q4qRpaWkIDAyESqWCjY0NgoODcffuXYOaEydOoH379rCwsICzszOioqIK9bNx40Y0btwYFhYW8PDwwI4dO2R7rkRERGTcyhSqRo4ciZEjRyIvLw/NmjVD8+bNDW5ymTVrFpYtW4bFixfj7NmzmDVrFqKiorBo0SKpJioqCgsXLkR0dDQSEhJgZWUFrVaLBw8eSDWBgYE4ffo0YmNjsW3bNhw4cADDhg2Ttuv1enTp0gUuLi5ITEzE7NmzERERgeXLl0s1hw4dQr9+/RAcHIzjx48jICAAAQEBOHXqlGzPl4iIiIyXQjx62qeE7OzspC9RLk9vvPEGHBwcDL5DsFevXrC0tMR3330HIQQ0Gg1Gjx6NMWPGAAAyMjLg4OCA1atXo2/fvjh79izc3d1x5MgRtGzZEgAQExOD7t274/r169BoNFi2bBkmTZoEnU4HpVIJAJgwYQK2bNmCc+fOAQD69OmDzMxMbNu2TeqldevW8PT0RHR0dJH9Z2VlISsrS7qv1+vh7OyMjIwMqFQqeSeLiIhIRvNiL1R2C6U2qnP5XJKk1+uhVquf+vpdpjNVSqUSDRo0KHNzJdWmTRvExcXhwoWHP9g//vgDv/32G7p16wYASE5Ohk6ng5+fn/QYtVoNb29vxMfHAwDi4+NhY2MjBSoA8PPzg4mJCRISEqSaDh06SIEKALRaLc6fP4/bt29LNY8ep6Cm4DhFiYyMhFqtlm7Ozs7PMh1ERERUhZUpVI0ePRoLFixAGU5ylcqECRPQt29fNG7cGNWqVcMrr7yCsLAwBAYGAgB0Oh0AwMHBweBxDg4O0jadTgd7e3uD7WZmZrC1tTWoKWofjx6juJqC7UWZOHEiMjIypNu1a9dK9fyJiIjIeJTp03+//fYb9u3bh507d6Jp06aoVq2awfZNmzbJ0tz333+PtWvXYt26dWjatCmSkpIQFhYGjUaDoKAgWY5RnszNzWFubl7ZbRAREVEFKFOosrGxwdtvvy13L4WMHTtWOlsFAB4eHrhy5QoiIyMRFBQER0dHAEBKSgqcnJykx6WkpMDT0xMA4OjoiNTUVIP95ubmIi0tTXq8o6MjUlJSDGoK7j+tpmA7ERERvdjKFKpWrVoldx9FunfvHkxMDN+hNDU1RX5+PgDA1dUVjo6OiIuLk0KUXq9HQkICPvzwQwCAj48P0tPTkZiYCC8vLwDA3r17kZ+fD29vb6lm0qRJyMnJkc66xcbGolGjRqhRo4ZUExcXh7CwMKmX2NhY+Pj4lNvzJyIiIuNRpmuqgIdne/bs2YOvvvoKd+7cAQDcuHGj0PpPz6JHjx744osvsH37dly+fBmbN2/G3LlzpbNkCoUCYWFhmD59OrZu3YqTJ09i4MCB0Gg0CAgIAAA0adIEXbt2xdChQ3H48GEcPHgQoaGh6Nu3LzQaDQCgf//+UCqVCA4OxunTp7FhwwYsWLAA4eHhUi8jR45ETEwM5syZg3PnziEiIgJHjx5FaGiobM+XiIiIjFeZzlRduXIFXbt2xdWrV5GVlYXOnTvD2toas2bNQlZWVrFLDJTWokWL8Omnn2LEiBFITU2FRqPB8OHDMWXKFKlm3LhxyMzMxLBhw5Ceno527dohJiYGFhYWUs3atWsRGhoKX19fmJiYoFevXli4cKG0Xa1WY/fu3QgJCYGXlxfs7OwwZcoUg7Ws2rRpg3Xr1mHy5Mn45JNP4Obmhi1btqBZs2ayPFciIiIybmVapyogIADW1tb45ptvULNmTfzxxx+oV68e9u/fj6FDhxZa0ZweKuk6F0RERJWN61T9T0lfv8t0purXX3/FoUOHDNZ1AoC6devi77//LssuiYiIiIxama6pys/PR15eXqHx69evw9ra+pmbIiIiIjI2ZQpVXbp0wfz586X7CoUCd+/exdSpU8v9q2uIiIiIqqIyvf03Z84caLVauLu748GDB+jfvz8uXrwIOzs7/N///Z/cPRIRERFVeWUKVbVr18Yff/yB9evX48SJE7h79y6Cg4MRGBgIS0tLuXskIiIiqvLKFKqAh9+f995778nZCxEREZHRKlOo+vbbb5+4feDAgWVqhoiIiMhYlSlUjRw50uB+Tk4O7t27B6VSierVqzNUERER0QunTKHq9u3bhcYuXryIDz/8EGPHjn3mpoiIiJ4nxriQJpVemb/773Fubm6YOXNmobNYRERERC8C2UIV8PDi9Rs3bsi5SyIiIiKjUKa3/7Zu3WpwXwiBmzdvYvHixWjbtq0sjREREREZkzKFqoCAAIP7CoUCtWrVQqdOnTBnzhw5+iIiIiIyKmUKVfn5+XL3Qc/IWC+CLK9vFCciIqposl5TRURERPSiKtOZqvDw8BLXzp07tyyHICIiIjIqZQpVx48fx/Hjx5GTk4NGjRoBAC5cuABTU1O0aNFCqlMoFPJ0SURERFTFlSlU9ejRA9bW1lizZg1q1KgB4OGCoIMHD0b79u0xevRoWZskIiIiqurKdE3VnDlzEBkZKQUqAKhRowamT5/OT/8RERHRC6lMoUqv1+PWrVuFxm/duoU7d+48c1NERERExqZMoertt9/G4MGDsWnTJly/fh3Xr1/Hjz/+iODgYPTs2VPuHomIiIiqvDJdUxUdHY0xY8agf//+yMnJebgjMzMEBwdj9uzZsjZIREREZAzKFKqqV6+OpUuXYvbs2fjrr78AAPXr14eVlZWszREREREZi2da/PPmzZu4efMm3NzcYGVlBSGEXH0RERERGZUyhap///0Xvr6+aNiwIbp3746bN28CAIKDg7mcAhEREb2QyhSqRo0ahWrVquHq1auoXr26NN6nTx/ExMTI1hwRERGRsSjTNVW7d+/Grl27ULt2bYNxNzc3XLlyRZbGiIiIiIxJmUJVZmamwRmqAmlpaTA3N3/mpujFMS/2QmW3UGqjOjes7BaIiKgKKtPbf+3bt8e3334r3VcoFMjPz0dUVBQ6duwoW3NERERExqJMZ6qioqLg6+uLo0ePIjs7G+PGjcPp06eRlpaGgwcPyt0jERERUZVXpjNVzZo1w4ULF9CuXTu89dZbyMzMRM+ePXH8+HHUr19f7h6JiIiIqrxSn6nKyclB165dER0djUmTJpVHT0RERERGp9RnqqpVq4YTJ06URy9ERERERqtMb/+99957+Oabb+TuhYiIiMholelC9dzcXKxcuRJ79uyBl5dXoe/8mzt3rizNERERERmLUoWqS5cuoW7dujh16hRatGgBALhwwXCdIYVCIV93REREREaiVKHKzc0NN2/exL59+wA8/FqahQsXwsHBoVyaIyIiIjIWpbqmSghhcH/nzp3IzMyUtSEiIiIiY1SmC9ULPB6yysPff/+N9957DzVr1oSlpSU8PDxw9OhRgx6mTJkCJycnWFpaws/PDxcvXjTYR1paGgIDA6FSqWBjY4Pg4GDcvXvXoObEiRNo3749LCws4OzsjKioqEK9bNy4EY0bN4aFhQU8PDywY8eO8nnSREREZHRKFaoUCkWha6bK8xqq27dvo23btqhWrRp27tyJM2fOYM6cOahRo4ZUExUVhYULFyI6OhoJCQmwsrKCVqvFgwcPpJrAwECcPn0asbGx2LZtGw4cOIBhw4ZJ2/V6Pbp06QIXFxckJiZi9uzZiIiIwPLly6WaQ4cOoV+/fggODsbx48cREBCAgIAAnDp1qtyePxERERkPhSjF6SYTExN069ZN+tLkn3/+GZ06dSr06b9NmzbJ0tyECRNw8OBB/Prrr0VuF0JAo9Fg9OjRGDNmDAAgIyMDDg4OWL16Nfr27YuzZ8/C3d0dR44cQcuWLQEAMTEx6N69O65fvw6NRoNly5Zh0qRJ0Ol0UCqV0rG3bNmCc+fOAXh4/VhmZia2bdsmHb9169bw9PREdHR0iZ6PXq+HWq1GRkYGVCpVmeelKMb4xcTGil+oTESlxb+jK0Z5/f1c0tfvUp2pCgoKgr29PdRqNdRqNd577z1oNBrpfsFNLlu3bkXLli3x7rvvwt7eHq+88gq+/vpraXtycjJ0Oh38/PykMbVaDW9vb8THxwMA4uPjYWNjIwUqAPDz84OJiQkSEhKkmg4dOkiBCgC0Wi3Onz+P27dvSzWPHqegpuA4RcnKyoJerze4ERER0fOpVJ/+W7VqVXn1UaRLly5h2bJlCA8PxyeffIIjR47g448/hlKpRFBQEHQ6HQAU+vShg4ODtE2n08He3t5gu5mZGWxtbQ1qXF1dC+2jYFuNGjWg0+meeJyiREZGYtq0aWV45kRERGRsnulC9fKWn5+PFi1aYMaMGXjllVcwbNgwDB06tMRvt1W2iRMnIiMjQ7pdu3atslsiIiKiclKlQ5WTkxPc3d0Nxpo0aYKrV68CABwdHQEAKSkpBjUpKSnSNkdHR6Smphpsz83NRVpamkFNUft49BjF1RRsL4q5uTlUKpXBjYiIiJ5PVTpUtW3bFufPnzcYu3DhAlxcXAAArq6ucHR0RFxcnLRdr9cjISEBPj4+AAAfHx+kp6cjMTFRqtm7dy/y8/Ph7e0t1Rw4cAA5OTlSTWxsLBo1aiR90tDHx8fgOAU1BcchIiKiF1uVDlWjRo3C77//jhkzZuDPP//EunXrsHz5coSEhAB4uJxDWFgYpk+fjq1bt+LkyZMYOHAgNBoNAgICADw8s9W1a1cMHToUhw8fxsGDBxEaGoq+fftCo9EAAPr37w+lUong4GCcPn0aGzZswIIFCxAeHi71MnLkSMTExGDOnDk4d+4cIiIicPToUYSGhlb4vBAREVHVU6YvVK4or776KjZv3oyJEyfis88+g6urK+bPn4/AwECpZty4ccjMzMSwYcOQnp6Odu3aISYmBhYWFlLN2rVrERoaCl9fX5iYmKBXr15YuHChtF2tVmP37t0ICQmBl5cX7OzsMGXKFIO1rNq0aYN169Zh8uTJ+OSTT+Dm5oYtW7agWbNmFTMZREREVKWVap0qejZcp+r5wHWqiKi0+Hd0xTCqdaqIiIiIqGgMVUREREQyqNLXVBERUfkyxrel+BY8VVU8U0VEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBvxCZSIiMirG+CXQ9GLgmSoiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikoFZZTdAZGzmxV6o7BZKbVTnhpXdAhHRc8+ozlTNnDkTCoUCYWFh0tiDBw8QEhKCmjVr4qWXXkKvXr2QkpJi8LirV6/C398f1atXh729PcaOHYvc3FyDmv3796NFixYwNzdHgwYNsHr16kLHX7JkCerWrQsLCwt4e3vj8OHD5fE0iYiIyAgZTag6cuQIvvrqK7z88ssG46NGjcLPP/+MjRs34pdffsGNGzfQs2dPaXteXh78/f2RnZ2NQ4cOYc2aNVi9ejWmTJki1SQnJ8Pf3x8dO3ZEUlISwsLC8P7772PXrl1SzYYNGxAeHo6pU6fi2LFjaN68ObRaLVJTU8v/yRMREVGVZxSh6u7duwgMDMTXX3+NGjVqSOMZGRn45ptvMHfuXHTq1AleXl5YtWoVDh06hN9//x0AsHv3bpw5cwbfffcdPD090a1bN3z++edYsmQJsrOzAQDR0dFwdXXFnDlz0KRJE4SGhuKdd97BvHnzpGPNnTsXQ4cOxeDBg+Hu7o7o6GhUr14dK1eurNjJICIioirJKEJVSEgI/P394efnZzCemJiInJwcg/HGjRujTp06iI+PBwDEx8fDw8MDDg4OUo1Wq4Ver8fp06elmsf3rdVqpX1kZ2cjMTHRoMbExAR+fn5STVGysrKg1+sNbkRERPR8qvIXqq9fvx7Hjh3DkSNHCm3T6XRQKpWwsbExGHdwcIBOp5NqHg1UBdsLtj2pRq/X4/79+7h9+zby8vKKrDl37lyxvUdGRmLatGkle6JERERk1Kr0mapr165h5MiRWLt2LSwsLCq7nVKbOHEiMjIypNu1a9cquyUiIiIqJ1U6VCUmJiI1NRUtWrSAmZkZzMzM8Msvv2DhwoUwMzODg4MDsrOzkZ6ebvC4lJQUODo6AgAcHR0LfRqw4P7TalQqFSwtLWFnZwdTU9Miawr2URRzc3OoVCqDGxERET2fqnSo8vX1xcmTJ5GUlCTdWrZsicDAQOn/q1Wrhri4OOkx58+fx9WrV+Hj4wMA8PHxwcmTJw0+pRcbGwuVSgV3d3ep5tF9FNQU7EOpVMLLy8ugJj8/H3FxcVINERERvdiq9DVV1tbWaNasmcGYlZUVatasKY0HBwcjPDwctra2UKlU+Oijj+Dj44PWrVsDALp06QJ3d3cMGDAAUVFR0Ol0mDx5MkJCQmBubg4A+OCDD7B48WKMGzcOQ4YMwd69e/H9999j+/bt0nHDw8MRFBSEli1bolWrVpg/fz4yMzMxePDgCpoNIiIiqsqqdKgqiXnz5sHExAS9evVCVlYWtFotli5dKm03NTXFtm3b8OGHH8LHxwdWVlYICgrCZ599JtW4urpi+/btGDVqFBYsWIDatWtjxYoV0Gq1Uk2fPn1w69YtTJkyBTqdDp6enoiJiSl08ToRERG9mBRCCFHZTbwo9Ho91Go1MjIyZL++yhi/OoUqDr+mhorDvzvoeVJef9eV9PXb6M9UEdHzyRhf7BleiV5sVfpCdSIiIiJjwVBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIB16kiIpKJMa6tRUTy4ZkqIiIiIhkwVBERERHJgG//Eb0A+LYUEVH545kqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJoEqHqsjISLz66quwtraGvb09AgICcP78eYOaBw8eICQkBDVr1sRLL72EXr16ISUlxaDm6tWr8Pf3R/Xq1WFvb4+xY8ciNzfXoGb//v1o0aIFzM3N0aBBA6xevbpQP0uWLEHdunVhYWEBb29vHD58WPbnTERERMapSoeqX375BSEhIfj9998RGxuLnJwcdOnSBZmZmVLNqFGj8PPPP2Pjxo345ZdfcOPGDfTs2VPanpeXB39/f2RnZ+PQoUNYs2YNVq9ejSlTpkg1ycnJ8Pf3R8eOHZGUlISwsDC8//772LVrl1SzYcMGhIeHY+rUqTh27BiaN28OrVaL1NTUipkMIiIiqtIUQghR2U2U1K1bt2Bvb49ffvkFHTp0QEZGBmrVqoV169bhnXfeAQCcO3cOTZo0QXx8PFq3bo2dO3fijTfewI0bN+Dg4AAAiI6Oxvjx43Hr1i0olUqMHz8e27dvx6lTp6Rj9e3bF+np6YiJiQEAeHt749VXX8XixYsBAPn5+XB2dsZHH32ECRMmlKh/vV4PtVqNjIwMqFQqOacG82IvyLo/IiIiYzOqc8Ny2W9JX7+r9Jmqx2VkZAAAbG1tAQCJiYnIycmBn5+fVNO4cWPUqVMH8fHxAID4+Hh4eHhIgQoAtFot9Ho9Tp8+LdU8uo+CmoJ9ZGdnIzEx0aDGxMQEfn5+Uk1RsrKyoNfrDW5ERET0fDKaUJWfn4+wsDC0bdsWzZo1AwDodDoolUrY2NgY1Do4OECn00k1jwaqgu0F255Uo9frcf/+ffzzzz/Iy8srsqZgH0WJjIyEWq2Wbs7OzqV/4kRERGQUjCZUhYSE4NSpU1i/fn1lt1JiEydOREZGhnS7du1aZbdERERE5cSsshsoidDQUGzbtg0HDhxA7dq1pXFHR0dkZ2cjPT3d4GxVSkoKHB0dpZrHP6VX8OnAR2se/8RgSkoKVCoVLC0tYWpqClNT0yJrCvZRFHNzc5ibm5f+CRMREZHRqdJnqoQQCA0NxebNm7F37164uroabPfy8kK1atUQFxcnjZ0/fx5Xr16Fj48PAMDHxwcnT540+JRebGwsVCoV3N3dpZpH91FQU7APpVIJLy8vg5r8/HzExcVJNURERPRiq9JnqkJCQrBu3Tr89NNPsLa2lq5fUqvVsLS0hFqtRnBwMMLDw2FrawuVSoWPPvoIPj4+aN26NQCgS5cucHd3x4ABAxAVFQWdTofJkycjJCREOov0wQcfYPHixRg3bhyGDBmCvXv34vvvv8f27dulXsLDwxEUFISWLVuiVatWmD9/PjIzMzF48OCKnxgiIiKqcqp0qFq2bBkA4PXXXzcYX7VqFQYNGgQAmDdvHkxMTNCrVy9kZWVBq9Vi6dKlUq2pqSm2bduGDz/8ED4+PrCyskJQUBA+++wzqcbV1RXbt2/HqFGjsGDBAtSuXRsrVqyAVquVavr06YNbt25hypQp0Ol08PT0RExMTKGL14mIiOjFZFTrVBk7rlNFRERUfrhOFREREdFzgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBFREREJAOGKiIiIiIZMFQRERERyYChioiIiEgGDFVEREREMmCoIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCQDhioiIiIiGTBUEREREcmAoYqIiIhIBgxVRERERDJgqCIiIiKSAUMVERERkQwYqoiIiIhkwFBVSkuWLEHdunVhYWEBb29vHD58uLJbIiIioiqAoaoUNmzYgPDwcEydOhXHjh1D8+bNodVqkZqaWtmtERERUSVjqCqFuXPnYujQoRg8eDDc3d0RHR2N6tWrY+XKlZXdGhEREVUys8puwFhkZ2cjMTEREydOlMZMTEzg5+eH+Pj4Ih+TlZWFrKws6X5GRgYAQK/Xy97fg8y7su+TiIjImJTH6+uj+xVCPLGOoaqE/vnnH+Tl5cHBwcFg3MHBAefOnSvyMZGRkZg2bVqhcWdn53LpkYiI6EX2STnv/86dO1Cr1cVuZ6gqRxMnTkR4eLh0Pz8/H2lpaahZsyYUCoVsx9Hr9XB2dsa1a9egUqlk2y8VxrmuGJznisF5rhic54pRnvMshMCdO3eg0WieWMdQVUJ2dnYwNTVFSkqKwXhKSgocHR2LfIy5uTnMzc0NxmxsbMqrRahUKv6BrSCc64rBea4YnOeKwXmuGOU1z086Q1WAF6qXkFKphJeXF+Li4qSx/Px8xMXFwcfHpxI7IyIioqqAZ6pKITw8HEFBQWjZsiVatWqF+fPnIzMzE4MHD67s1oiIiKiSMVSVQp8+fXDr1i1MmTIFOp0Onp6eiImJKXTxekUzNzfH1KlTC73VSPLjXFcMznPF4DxXDM5zxagK86wQT/t8IBERERE9Fa+pIiIiIpIBQxURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBmJJUuWoG7durCwsIC3tzcOHz78xPqNGzeicePGsLCwgIeHB3bs2FFBnRq30szz119/jfbt26NGjRqoUaMG/Pz8nvpzof8p7e90gfXr10OhUCAgIKB8G3xOlHae09PTERISAicnJ5ibm6Nhw4b8+6MESjvP8+fPR6NGjWBpaQlnZ2eMGjUKDx48qKBujdOBAwfQo0cPaDQaKBQKbNmy5amP2b9/P1q0aAFzc3M0aNAAq1evLt8mBVV569evF0qlUqxcuVKcPn1aDB06VNjY2IiUlJQi6w8ePChMTU1FVFSUOHPmjJg8ebKoVq2aOHnyZAV3blxKO8/9+/cXS5YsEcePHxdnz54VgwYNEmq1Wly/fr2COzc+pZ3rAsnJyeI///mPaN++vXjrrbcqplkjVtp5zsrKEi1bthTdu3cXv/32m0hOThb79+8XSUlJFdy5cSntPK9du1aYm5uLtWvXiuTkZLFr1y7h5OQkRo0aVcGdG5cdO3aISZMmiU2bNgkAYvPmzU+sv3TpkqhevboIDw8XZ86cEYsWLRKmpqYiJiam3HpkqDICrVq1EiEhIdL9vLw8odFoRGRkZJH1vXv3Fv7+/gZj3t7eYvjw4eXap7Er7Tw/Ljc3V1hbW4s1a9aUV4vPjbLMdW5urmjTpo1YsWKFCAoKYqgqgdLO87Jly0S9evVEdnZ2RbX4XCjtPIeEhIhOnToZjIWHh4u2bduWa5/Pk5KEqnHjxommTZsajPXp00dotdpy64tv/1Vx2dnZSExMhJ+fnzRmYmICPz8/xMfHF/mY+Ph4g3oA0Gq1xdZT2eb5cffu3UNOTg5sbW3Lq83nQlnn+rPPPoO9vT2Cg4Mrok2jV5Z53rp1K3x8fBASEgIHBwc0a9YMM2bMQF5eXkW1bXTKMs9t2rRBYmKi9BbhpUuXsGPHDnTv3r1Cen5RVMZrIb+mpor7559/kJeXV+ircBwcHHDu3LkiH6PT6Yqs1+l05dansSvLPD9u/Pjx0Gg0hf4Qk6GyzPVvv/2Gb775BklJSRXQ4fOhLPN86dIl7N27F4GBgdixYwf+/PNPjBgxAjk5OZg6dWpFtG10yjLP/fv3xz///IN27dpBCIHc3Fx88MEH+OSTTyqi5RdGca+Fer0e9+/fh6WlpezH5JkqIhnMnDkT69evx+bNm2FhYVHZ7TxX7ty5gwEDBuDrr7+GnZ1dZbfzXMvPz4e9vT2WL18OLy8v9OnTB5MmTUJ0dHRlt/Zc2b9/P2bMmIGlS5fi2LFj2LRpE7Zv347PP/+8slujZ8QzVVWcnZ0dTE1NkZKSYjCekpICR0fHIh/j6OhYqnoq2zwX+PLLLzFz5kzs2bMHL7/8cnm2+Vwo7Vz/9ddfuHz5Mnr06CGN5efnAwDMzMxw/vx51K9fv3ybNkJl+Z12cnJCtWrVYGpqKo01adIEOp0O2dnZUCqV5dqzMSrLPH/66acYMGAA3n//fQCAh4cHMjMzMWzYMEyaNAkmJjzfIYfiXgtVKlW5nKUCeKaqylMqlfDy8kJcXJw0lp+fj7i4OPj4+BT5GB8fH4N6AIiNjS22nso2zwAQFRWFzz//HDExMWjZsmVFtGr0SjvXjRs3xsmTJ5GUlCTd3nzzTXTs2BFJSUlwdnauyPaNRll+p9u2bYs///xTCq0AcOHCBTg5OTFQFaMs83zv3r1CwakgyD68BpvkUCmvheV2CTzJZv369cLc3FysXr1anDlzRgwbNkzY2NgInU4nhBBiwIABYsKECVL9wYMHhZmZmfjyyy/F2bNnxdSpU7mkQgmUdp5nzpwplEql+OGHH8TNmzel2507dyrrKRiN0s714/jpv5Ip7TxfvXpVWFtbi9DQUHH+/Hmxbds2YW9vL6ZPn15ZT8EolHaep06dKqytrcX//d//iUuXLondu3eL+vXri969e1fWUzAKd+7cEcePHxfHjx8XAMTcuXPF8ePHxZUrV4QQQkyYMEEMGDBAqi9YUmHs2LHi7NmzYsmSJVxSgR5atGiRqFOnjlAqlaJVq1bi999/l7a99tprIigoyKD++++/Fw0bNhRKpVI0bdpUbN++vYI7Nk6lmWcXFxcBoNBt6tSpFd+4ESrt7/SjGKpKrrTzfOjQIeHt7S3Mzc1FvXr1xBdffCFyc3MruGvjU5p5zsnJEREREaJ+/frCwsJCODs7ixEjRojbt29XfONGZN++fUX+nVswt0FBQeK1114r9BhPT0+hVCpFvXr1xKpVq8q1R4UQPNdIRERE9Kx4TRURERGRDBiqiIiIiGTAUEVEREQkA4YqIiIiIhkwVBERERHJgKGKiIiISAYMVUREREQyYKgiIiIikgFDFREREZEMGKqIiIiIZMBQRURERCSD/wfDOkMSo5jcmQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pyspark.sql import Window\n", + "\n", + "window = Window.partitionBy(l2g['studyLocusId']).orderBy(l2g['score'].desc())\n", + "l2g = l2g.withColumn('rn', f.row_number().over(window))\n", + "l2g_max_scores = l2g.filter(l2g['rn'] == 1).drop('rn')\n", + "l2g_max_scores.select(\"score\").toPandas().plot.hist(bins=10, alpha=0.5, title=\"l2g scores (top gene assignment)\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### 7. Analyze locus-to-gene (L2G) predictions:\n", + " - Consider only the top gene assignments from l2g:\n", + " - How does this look when separated by datasource?" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summary of finngen PICS l2g scores: mean: 0.5615633023783144 L.quart: 0.2371208220720291 Median: 0.6145811676979065 U.quart: 0.8626531362533569\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAGzCAYAAADOnwhmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPpUlEQVR4nO3deXxM5/4H8M9kmckikwiyVUTEGoIritQukYjYqbUEQREtorgpl9QWorZStFeJ3nJtpe2VWpLYitAKse9CtLIokkmCrM/vD6+cn5GFRJJJnM/79ZoX55xnzvmeZyYznznznDMKIYQAERERkYzp6boAIiIiIl1jICIiIiLZYyAiIiIi2WMgIiIiItljICIiIiLZYyAiIiIi2WMgIiIiItljICIiIiLZYyAiIiIi2WMgkrHQ0FAoFArcvXtX16XIQvfu3TF27Fhdl0ElEBQUBIVCoesyKpT169ejVq1ayMjIeKv13Lx5E56enjA3N4dCocBPP/3E16ZiGjlyJGrXrq3rMio9BiKS5ObmIjQ0FL169YK9vT1MTU3RpEkTLFiwAM+fP9d1eZXaiRMncPDgQcycOVOad+XKFQQFBfFFnyq0RYsW4aeffso3f+TIkcjMzMQ333zzVuv39fXFxYsXsXDhQvznP/9By5Yt32p9RCWl4G+ZyVdoaChGjRqF2NhY1K5dG2lpaTAzM0ObNm3Qo0cPWFlZISoqCps3b0aHDh1w6NAhfkouoT59+uDZs2c4cOCANG/Xrl348MMPcfjwYXTq1El3xdFrZWdnIzs7G0ZGRroupdxVqVIFAwYMQGhoaL5lM2fOxPbt2xEbG1ui14Znz57BxMQEs2bNwoIFC6T5OTk5yMrKgkql4mvOG8jKykJubi5UKpWuS6nUDHRdAFUcSqUSJ06cwAcffCDNGzt2LGrXro25c+ciMjISHh4eOqywdKWnp8PU1LTMt5OUlISwsDCsX7++zLdFZcPAwAAGBny5fNXAgQMREhKCw4cPo0uXLsW+/8OHDwEAFhYWWvP19fWhr69fGiXKgqGhoa5LeCfwKzOSKJVKrTCUp2/fvgCAq1evas2/d+8eevXqBVNTU1hZWWHq1Kk4cOAAFAoFjhw5UuS2UlNTMWXKFNSuXRsqlQpWVlbo2rUrzp49q9Xu9OnT6N69O6pWrQpTU1M0bdoUq1at0mpz6NAhtG/fHqamprCwsEDv3r3z1Zo3BuTKlSsYOnQoqlatinbt2knLf/jhB7i6usLY2BiWlpYYPHgw7t+/r7WOmzdvon///rCxsYGRkRFq1qyJwYMHIyUlpch9DQsLQ3Z2tlaYDA0NxYcffggA6Ny5MxQKRb5+W7t2LRo3bgyVSgU7Ozv4+/sjOTlZa92dOnVCkyZNEB0djQ8++ADGxsZwdHR84/D17NkzfPrpp6hevTrMzMzQq1cv/PXXX1AoFAgKCtJq+9dff2H06NGwtraGSqVC48aNsXHjRq02R44cgUKhwI4dO7Bw4ULUrFkTRkZGcHd3x61bt/Jt//Tp0+jWrRvMzc1hYmKCjh074sSJE6+tOzMzE3PmzIGrqyvMzc1hamqK9u3b4/Dhw/nabtu2Da6urjAzM4NarYaLi4vWcygrKwtffPEF6tWrByMjI1SrVg3t2rVDeHi41KagMURv2nd597116xZGjhwJCwsLmJubY9SoUXj69KnWOhUKBSZNmoSdO3fC2dkZxsbGcHNzw8WLFwEA33zzDerWrQsjIyN06tSpwK9b36RP37QmhUKB9PR0bN68WXqOjhw5Ulru6uoKS0tL/Pzzz4U/WIUICgqCg4MDAGD69OlQKBTSOJiCxhDVrl0bPXr0wPHjx9GqVSsYGRmhTp06+P7777XWm3ffEydOICAgADVq1ICpqSn69u0rBbA8ubm5CAoKgp2dHUxMTNC5c2dcuXIFtWvX1tpPAEhOTsaUKVNgb28PlUqFunXrYsmSJcjNzZXa3L17FwqFAl9++SW+/fZbODk5QaVS4f3338cff/xRrP7J+1vavn07Pv/8c9jY2MDU1BS9evXK99pU0Bii3NxcrFq1Ci4uLjAyMkKNGjXQrVs3nDlzRmoTHh6Odu3awcLCAlWqVEGDBg3w+eefF6vOdwk/8tBrJSQkAACqV68uzUtPT0eXLl0QHx+PyZMnw8bGBlu3bi3wDakg48ePx65duzBp0iQ4Ozvj0aNHOH78OK5evYoWLVoAePHH2qNHD9ja2krbuHr1Kvbu3YvJkycDACIiIuDt7Y06deogKCgIz549w+rVq9G2bVucPXs234vEhx9+iHr16mHRokXI+7Z44cKF+Ne//oWBAwdizJgxePjwIVavXo0OHTrg3LlzsLCwQGZmJry8vJCRkYFPPvkENjY2+Ouvv7B3714kJyfD3Ny80H09efIkqlWrJr34A0CHDh3w6aef4quvvsLnn3+ORo0aAYD0b1BQEL744gt4eHhgwoQJuH79OtatW4c//vgDJ06c0PpE+OTJE3Tv3h0DBw7EkCFDsGPHDkyYMAFKpRKjR48u8nEYOXIkduzYgeHDh6NNmzY4evQofHx88rVLTExEmzZtpDfsGjVqYN++ffDz84NGo8GUKVO02i9evBh6enr47LPPkJKSgpCQEAwbNgynT5+W2hw6dAje3t5wdXXF3Llzoaenh02bNqFLly747bff0KpVq0Lr1mg02LBhA4YMGYKxY8ciNTUV3333Hby8vPD777+jefPmAF48h4YMGQJ3d3csWbIEwItgf+LECek5FBQUhODgYIwZMwatWrWCRqPBmTNncPbsWXTt2vWt+y7PwIED4ejoiODgYJw9exYbNmyAlZWVVFee3377Db/88gv8/f0BAMHBwejRowdmzJiBtWvXYuLEiXjy5AlCQkIwevRoHDp0qMR9+rqa/vOf/0j9Mm7cOACAk5OT1jpatGjxRiH2Vf369YOFhQWmTp2KIUOGoHv37qhSpUqR97l16xYGDBgAPz8/+Pr6YuPGjRg5ciRcXV3RuHFjrbaffPIJqlatirlz5+Lu3btYuXIlJk2ahO3bt0ttAgMDERISgp49e8LLywvnz5+Hl5dXvjGTT58+RceOHfHXX3/h448/Rq1atXDy5EkEBgYiPj4eK1eu1Gq/detWpKam4uOPP4ZCoUBISAj69euHO3fuFPtozsKFC6FQKDBz5kwkJSVh5cqV8PDwQExMDIyNjQu9n5+fH0JDQ+Ht7Y0xY8YgOzsbv/32G06dOoWWLVvi8uXL6NGjB5o2bYp58+ZBpVLh1q1bJXos3xmCZGvTpk0CgIiNjS2ynYeHh1Cr1eLJkyfSvGXLlgkA4qeffpLmPXv2TDRs2FAAEIcPHy5ynebm5sLf37/Q5dnZ2cLR0VE4ODhobVcIIXJzc6X/N2/eXFhZWYlHjx5J886fPy/09PTEiBEjpHlz584VAMSQIUO01nX37l2hr68vFi5cqDX/4sWLwsDAQJp/7tw5AUDs3LmzyP0qSLt27YSrq2u++Tt37iywr5KSkoRSqRSenp4iJydHmr9mzRoBQGzcuFGa17FjRwFALFu2TJqXkZEh9UtmZmahdUVHRwsAYsqUKVrzR44cKQCIuXPnSvP8/PyEra2t+Pvvv7XaDh48WJibm4unT58KIYQ4fPiwACAaNWokMjIypHarVq0SAMTFixeFEC8ew3r16gkvLy+tx/Pp06fC0dFRdO3atdC6hXjx/Hh5/UII8eTJE2FtbS1Gjx4tzZs8ebJQq9UiOzu70HU1a9ZM+Pj4FLm9vOdPnuL0Xd59X65LCCH69u0rqlWrpjUPgFCpVFp/k998840AIGxsbIRGo5HmBwYGav39FqdPi1OTqamp8PX1LbRvxo0bJ4yNjQtdXpTY2FgBQCxdulRrfkGvTQ4ODgKAOHbsmDQvKSlJqFQqMW3atHz39fDw0OqHqVOnCn19fZGcnCyEECIhIUEYGBiIPn36aG07KChIANDa5/nz5wtTU1Nx48YNrbb//Oc/hb6+voiLi9Pan2rVqonHjx9L7X7++WcBQPzvf/97477J+1t67733tB73HTt2CABi1apV0jxfX1/h4OAgTR86dEgAEJ9++mm+9eb1yYoVKwQA8fDhwzeu6V3Hr8yoSIsWLUJERAQWL16s9T3//v378d5776FXr17SPCMjozc+rdzCwgKnT5/GgwcPClx+7tw5xMbGYsqUKfnGF+R9dREfH4+YmBiMHDkSlpaW0vKmTZuia9eu+PXXX/Otd/z48VrTu3fvRm5uLgYOHIi///5butnY2KBevXrSEa+8I0AHDhzI9zXH6zx69AhVq1Z94/YRERHIzMzElClToKf3/3+iY8eOhVqtRlhYmFZ7AwMDfPzxx9K0UqnExx9/jKSkJERHRxe6nf379wMAJk6cqDX/k08+0ZoWQuDHH39Ez549IYTQ6icvLy+kpKTk+6pz1KhRUCqV0nT79u0BAHfu3AEAxMTE4ObNmxg6dCgePXokrS89PR3u7u44duyY1lcRr9LX15fWn5ubi8ePHyM7OxstW7bUqsXCwgLp6elaX3+9ysLCApcvX8bNmzcLbfOqN+27l7363Gvfvj0ePXoEjUajNd/d3V3ryGbr1q0BAP3794eZmVm++W/Tp29aU1GqVq2KZ8+eFfvvoiScnZ2l5xIA1KhRAw0aNJD64GXjxo3T+pqzffv2yMnJwb179wAAkZGRyM7OfqPHcOfOnWjfvj2qVq2q9fz38PBATk4Ojh07ptV+0KBBWn/zrz7/i2PEiBFaj/uAAQNga2tb4Otbnh9//BEKhQJz587NtyyvT/JeV3/++eci/9bkhIGICrV9+3bMnj0bfn5+mDBhgtaye/fuwcnJKd+4irp1677RukNCQnDp0iXY29ujVatWCAoK0nqxuH37NgCgSZMmha4j74WtQYMG+ZY1atRIejN4maOjo9b0zZs3IYRAvXr1UKNGDa3b1atXkZSUJN0vICAAGzZsQPXq1eHl5YWvv/76teOH8ohinMxZ2H4plUrUqVNHWp7Hzs4u3+Dw+vXrA0CRp/Tfu3cPenp6+frk1cfw4cOHSE5Oxrfffpuvj0aNGgUAUj/lqVWrltZ03pvDkydPAEAKH76+vvnWuWHDBmRkZLy2bzdv3oymTZtK435q1KiBsLAwrftNnDgR9evXh7e3N2rWrInRo0dLYSbPvHnzkJycjPr168PFxQXTp0/HhQsXitz2m/ZdcfqksHZ5Ydze3r7A+W/Tp29aU1HyntvlcTbYq/UCL2ouqN7X7Vve39Grj5mlpWW+DzA3b97E/v378/Vr3rjA4j7/i6NevXpa0wqFAnXr1i3yb/v27duws7PT+qD4qkGDBqFt27YYM2YMrK2tMXjwYOzYsUPW4YhjiKhA4eHhGDFiBHx8fMrk7KiBAweiffv22LNnDw4ePIilS5diyZIl2L17N7y9vUt9e3le/c49NzcXCoUC+/btK/CslpfHNCxbtgwjR47Ezz//jIMHD+LTTz9FcHAwTp06hZo1axa6zWrVqpXohbCiyHuB/Oijj+Dr61tgm6ZNm2pNF3aGUN6bZ946ly5dKo33eVVR40l++OEHjBw5En369MH06dNhZWUFfX19BAcHS2EaAKysrBATE4MDBw5g37592LdvHzZt2oQRI0Zg8+bNAF6M57p9+7b0uG7YsAErVqzA+vXrMWbMmEJrKK7X9cnr2pVFn75pTUV58uQJTExMihzPUlqKU29p7Fue3NxcdO3aFTNmzChwed4HkLLYdlkxNjbGsWPHcPjwYYSFhWH//v3Yvn07unTpgoMHD8ryLD8GIsrn9OnT6Nu3L1q2bIkdO3YUeLqxg4MDrly5AiGE1ifDgs4kKoytrS0mTpyIiRMnIikpCS1atMDChQvh7e0tDdy8dOlSoaf65w1Svn79er5l165dQ/Xq1V97Wr2TkxOEEHB0dMz3olYQFxcXuLi4YPbs2Th58iTatm2L9evXa11D5VUNGzbEjz/+mG9+YZ+oX96vOnXqSPMzMzMRGxubrz8ePHiQ7xICN27cAIAir17r4OCA3NxcxMbGan0KffUxrFGjBszMzJCTk1Nql13Ie3zVanWJ1rlr1y7UqVMHu3fv1urHgr4iUCqV6NmzJ3r27Inc3FxMnDgR33zzDf71r39JRwcsLS0xatQojBo1CmlpaejQoQOCgoIKDURv2nfl6W37tDCvO/ITGxsrnQxQmeT9nd26dUvrSN+jR4/yfYBxcnJCWlqaTi478upXuUII3Lp1K9+HkJc5OTnhwIEDePz4cZFHifT09ODu7g53d3csX74cixYtwqxZs3D48OF36hIrb4pfmZGWq1evwsfHB7Vr18bevXsL/dTn5eWFv/76C7/88os07/nz5/j3v//92m3k5OTkO3RvZWUFOzs76WcAWrRoAUdHR6xcuTLfqeZ5n7JsbW3RvHlzbN68WavNpUuXcPDgQXTv3v21tfTr1w/6+vr44osv8n16E0Lg0aNHAF6c1ZSdna213MXFBXp6eq/96QI3Nzc8efIk3/iBvADz6v55eHhAqVTiq6++0qrpu+++Q0pKSr4zmbKzs7WuFpx39eAaNWrA1dW10Lq8vLwAvDi9/2WrV6/WmtbX10f//v3x448/4tKlS/nW8+qpzG/C1dUVTk5O+PLLL5GWllbsdeZ9en25f06fPo2oqCitdnmPXx49PT3pjSTvcXu1TZUqVVC3bt0iH9c37bvy9LZ9WhhTU9N8z9GXnT17tsDLdVR07u7uMDAwwLp167Tmr1mzJl/bgQMHIioqSuvCqnmSk5PzvTaUpu+//x6pqanS9K5duxAfH1/kkfT+/ftDCIEvvvgi37K8v5nHjx/nW5Z3ZPFtf46lsuIRIpKkpqbCy8sLT548wfTp0/MN3nVycoKbmxsA4OOPP8aaNWswZMgQTJ48Gba2ttiyZYt0Jd+iPlWmpqaiZs2aGDBgAJo1a4YqVaogIiICf/zxB5YtWwbgxRvXunXr0LNnTzRv3hyjRo2Cra0trl27hsuXL0svTEuXLoW3tzfc3Nzg5+cnnXZvbm6e7zo6BXFycsKCBQsQGBiIu3fvok+fPjAzM0NsbCz27NmDcePG4bPPPsOhQ4cwadIkfPjhh6hfvz6ys7Pxn//8RwoLRfHx8YGBgQEiIiKkU5eBFy8++vr6WLJkCVJSUqBSqdClSxdYWVkhMDAQX3zxBbp164ZevXrh+vXrWLt2Ld5//3189NFHWuu3s7PDkiVLcPfuXdSvXx/bt29HTEwMvv322yJP8XV1dUX//v2xcuVKPHr0SDp1PO/o0suP4eLFi3H48GG0bt0aY8eOhbOzMx4/foyzZ88iIiKiwBfXoujp6WHDhg3w9vZG48aNMWrUKLz33nv466+/cPjwYajVavzvf/8r9P49evTA7t270bdvX/j4+CA2Nhbr16+Hs7OzVhgYM2YMHj9+jC5duqBmzZq4d+8eVq9ejebNm0tHNZydndGpUyfpmjpnzpyRLglRGn1XXt62Twvj6uqKiIgILF++HHZ2dnB0dJQGdEdHR+Px48fo3bu31n3yLhtRka/Cbm1tjcmTJ2PZsmXo1asXunXrhvPnz2Pfvn2oXr261mM4ffp0/PLLL+jRo4d0mn96ejouXryIXbt24e7du1qXJSlNlpaWaNeuHUaNGoXExESsXLkSdevWLfIEls6dO2P48OH46quvcPPmTXTr1g25ubn47bff0LlzZ0yaNAnz5s3DsWPH4OPjAwcHByQlJWHt2rWoWbOm1jXaZKU8T2mjiuXVU1vzThkt7Pbqqbd37twRPj4+wtjYWNSoUUNMmzZN/PjjjwKAOHXqVKHbzcjIENOnTxfNmjUTZmZmwtTUVDRr1kysXbs2X9vjx4+Lrl27Su2aNm0qVq9erdUmIiJCtG3bVhgbGwu1Wi169uwprly5otUm7zTjwk4x/fHHH0W7du2EqampMDU1FQ0bNhT+/v7i+vXr0r6OHj1aODk5CSMjI2FpaSk6d+4sIiIiXtfNQgghevXqJdzd3fPN//e//y3q1Kkj9PX1852Cv2bNGtGwYUNhaGgorK2txYQJE/JdgqBjx46icePG4syZM8LNzU0YGRkJBwcHsWbNmjeqKz09Xfj7+wtLS0tRpUoV0adPH3H9+nUBQCxevFirbWJiovD39xf29vbC0NBQ2NjYCHd3d/Htt99KbfJOFX718gR5z61NmzZpzT937pzo16+fqFatmlCpVMLBwUEMHDhQREZGFll3bm6uWLRokXBwcBAqlUr84x//EHv37s13+vGuXbuEp6ensLKyEkqlUtSqVUt8/PHHIj4+XmqzYMEC0apVK2FhYSGMjY1Fw4YNxcKFC7UuWfDqaffF6bvCnnsFnVoOIN/lKAo7Nb2wvn6TPi1OTdeuXRMdOnQQxsbG+V4HZs6cKWrVqqV1ersQQkybNk0oFApx9epVUZTinnZf0OUROnbsKDp27Jjvvn/88YdWu7z+evlvLDs7W/zrX/8SNjY2wtjYWHTp0kVcvXpVVKtWTYwfP17r/qmpqSIwMFDUrVtXKJVKUb16dfHBBx+IL7/8UnquFLY/Qoh8l2N4nbx6//vf/4rAwEBhZWUljI2NhY+Pj7h3755W21ef93n7tnTpUtGwYUOhVCpFjRo1hLe3t4iOjhZCCBEZGSl69+4t7OzshFKpFHZ2dmLIkCH5Li0gJwxEVKryrm3x559/6rqUCuXYsWNCT0+v1F9s8gJRacq75tIPP/xQquuVAzn13fPnz4WNjY1YuXJlvmXvv/++GDBggA6qentPnjwRAMSCBQt0WkdhgZfKDscQUYk9e/ZMa/r58+f45ptvUK9ePbz33ns6qqpiat++PTw9PRESEqLrUrS8+hgCwMqVK6Gnp4cOHTrooKLKQ+59t2nTJhgaGua7lpFGo8H58+cxb948HVX25gp7DAFU2K/6qOxwDBGVWL9+/VCrVi00b94cKSkp+OGHH3Dt2jVs2bJF16VVSPv27dN1CfmEhIQgOjoanTt3hoGBgXRq+rhx4/Jd94a0yb3vxo8fny8MAS/Ocqssg3K3b9+O0NBQ6WdDjh8/jv/+97/w9PRE27Zty2SbmZmZrx1zV9RPAVHZYSCiEvPy8sKGDRuwZcsW5OTkwNnZGdu2bcOgQYN0XRq9oQ8++ADh4eGYP38+0tLSUKtWLQQFBWHWrFm6Lq3CY99Vfk2bNoWBgQFCQkKg0WikgdZFXUbjbZ08eRKdO3cuss2mTZuKvGQGlQ2FEBXoSlFERETvsCdPnhT5kzoA0LhxY9ja2pZTRZSHgYiIiIhkj4OqiYiISPY4hugN5Obm4sGDBzAzM9PJBdeIiIio+IQQSE1NhZ2dHfT0ij4GxED0Bh48eCCLs0aIiIjeRffv3y/yR7gBBqI3YmZmBuBFh6rVah1XQ0RERG9Co9HA3t5eeh8vCgPRG8j7mkytVjMQERERVTJvMtyFg6qJiIhI9hiIiIiISPYYiIiIiEj2OIaolAghkJ2djZycHF2X8s7Q19eHgYEBL3VARERljoGoFGRmZiI+Ph5Pnz7VdSnvHBMTE9ja2kKpVOq6FCIieocxEL2l3NxcxMbGQl9fH3Z2dlAqlTyiUQqEEMjMzMTDhw8RGxuLevXqvfaiWkRERCXFQPSWMjMzkZubC3t7e5iYmOi6nHeKsbExDA0Nce/ePWRmZsLIyEjXJRER0TuKH7lLCY9elA32KxERlQe+2xAREZHsMRARERGR7HEMURlaEX6jXLc3tWv9ct0eERHRu4JHiIiIiEj2GIiozGVmZuq6BCIioiIxEMnYrl274OLiAmNjY1SrVg0eHh5IT08HAGzcuBGNGzeGSqWCra0tJk2aJN0vLi4OvXv3RpUqVaBWqzFw4EAkJiZKy4OCgtC8eXNs2LABjo6O0unyycnJGDNmDGrUqAG1Wo0uXbrg/Pnz5bvTREREBeAYIpmKj4/HkCFDEBISgr59+yI1NRW//fYbhBBYt24dAgICsHjxYnh7eyMlJQUnTpwA8OJClHlh6OjRo8jOzoa/vz8GDRqEI0eOSOu/desWfvzxR+zevRv6+voAgA8//BDGxsbYt28fzM3N8c0338Dd3R03btyApaWlLrqBiOidVN5jWEuDrsfBMhDJVHx8PLKzs9GvXz84ODgAAFxcXAAACxYswLRp0zB58mSp/fvvvw8AiIyMxMWLFxEbGwt7e3sAwPfff4/GjRvjjz/+kNplZmbi+++/R40aNQAAx48fx++//46kpCSoVCoAwJdffomffvoJu3btwrhx48pnx4mIiArAQCRTzZo1g7u7O1xcXODl5QVPT08MGDAAWVlZePDgAdzd3Qu839WrV2Fvby+FIQBwdnaGhYUFrl69KgUiBwcHKQwBwPnz55GWloZq1appre/Zs2e4fft2GewhERHRm2Mgkil9fX2Eh4fj5MmTOHjwIFavXo1Zs2YhMjKyVNZvamqqNZ2WlgZbW1utr9XyWFhYlMo2iYiISoqBSMYUCgXatm2Ltm3bYs6cOXBwcEB4eDhq166NyMhIdO7cOd99GjVqhPv37+P+/fvSUaIrV64gOTkZzs7OhW6rRYsWSEhIgIGBAWrXrl1Wu0RERFQiDEQydfr0aURGRsLT0xNWVlY4ffo0Hj58iEaNGiEoKAjjx4+HlZUVvL29kZqaihMnTuCTTz6Bh4cHXFxcMGzYMKxcuRLZ2dmYOHEiOnbsiJYtWxa6PQ8PD7i5uaFPnz4ICQlB/fr18eDBA4SFhaFv375F3peIiKisMRCVIV2PmC+KWq3GsWPHsHLlSmg0Gjg4OGDZsmXw9vYGADx//hwrVqzAZ599hurVq2PAgAEAXhxV+vnnn/HJJ5+gQ4cO0NPTQ7du3bB69eoit6dQKPDrr79i1qxZGDVqFB4+fAgbGxt06NAB1tbWZb6/RERERVEIIYSuNr5u3TqsW7cOd+/eBQA0btwYc+bMkd6UO3XqhKNHj2rd5+OPP8b69eul6bi4OEyYMAGHDx9GlSpV4Ovri+DgYBgY/H/WO3LkCAICAnD58mXY29tj9uzZGDly5BvXqdFoYG5ujpSUFKjVaq1lz58/R2xsrNb1dqj0sH+JiIqPp92/UNT796t0eoSoZs2aWLx4MerVqwchBDZv3ozevXvj3LlzaNy4MQBg7NixmDdvnnQfExMT6f85OTnw8fGBjY0NTp48ifj4eIwYMQKGhoZYtGgRACA2NhY+Pj4YP348tmzZgsjISIwZMwa2trbw8vIq3x0mIiKiCkmngahnz55a0wsXLsS6detw6tQpKRCZmJjAxsamwPsfPHgQV65cQUREBKytrdG8eXPMnz8fM2fORFBQEJRKJdavXw9HR0csW7YMwItBwcePH8eKFSsKDUQZGRnIyMiQpjUaTWnsLhEREVVQFeanO3JycrBt2zakp6fDzc1Nmr9lyxZUr14dTZo0QWBgIJ4+fSoti4qKgouLi9YYFC8vL2g0Gly+fFlq4+HhobUtLy8vREVFFVpLcHAwzM3NpdvL19whIiKid4/OB1VfvHgRbm5ueP78OapUqYI9e/ZIp28PHToUDg4OsLOzw4ULFzBz5kxcv34du3fvBgAkJCTkG5CbN52QkFBkG41Gg2fPnsHY2DhfTYGBgQgICJCmNRoNQxEREdE7TOeBqEGDBoiJiUFKSgp27doFX19fHD16FM7Ozlo/5+Di4gJbW1u4u7vj9u3bcHJyKrOaVCqV9PMSb0qHY9PfaexXIiIqDzr/ykypVKJu3bpwdXVFcHAwmjVrhlWrVhXYtnXr1gBe/HAoANjY2Gj9yjoAaTpv3FFhbdRqdYFHh4rL0NAQALS+yqPSk9evef1MRERUFnR+hOhVubm5WgOaXxYTEwMAsLW1BQC4ublh4cKFSEpKgpWVFQAgPDwcarVa+trNzc0Nv/76q9Z6wsPDtcYpvQ19fX1YWFggKSkJwItB4AqFolTWLWdCCDx9+hRJSUmwsLCAvr6+rksiIqJ3mE4DUWBgILy9vVGrVi2kpqZi69atOHLkCA4cOIDbt29j69at6N69O6pVq4YLFy5g6tSp6NChA5o2bQoA8PT0hLOzM4YPH46QkBAkJCRg9uzZ8Pf3l77yGj9+PNasWYMZM2Zg9OjROHToEHbs2IGwsLBS24+8o1F5oYhKj4WFRaFnGRIREZUWnQaipKQkjBgxAvHx8TA3N0fTpk1x4MABdO3aFffv30dERARWrlyJ9PR02Nvbo3///pg9e7Z0f319fezduxcTJkyAm5sbTE1N4evrq3XdIkdHR4SFhWHq1KlYtWoVatasiQ0bNpTqNYgUCgVsbW1hZWWFrKysUluv3BkaGvLIEBERlQudXqm6sijOlS6JiIh0jVeqfqE47986H1RNREREpGsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHs6DUTr1q1D06ZNoVaroVar4ebmhn379knLnz9/Dn9/f1SrVg1VqlRB//79kZiYqLWOuLg4+Pj4wMTEBFZWVpg+fTqys7O12hw5cgQtWrSASqVC3bp1ERoaWh67R0RERJWETgNRzZo1sXjxYkRHR+PMmTPo0qULevfujcuXLwMApk6div/973/YuXMnjh49igcPHqBfv37S/XNycuDj44PMzEycPHkSmzdvRmhoKObMmSO1iY2NhY+PDzp37oyYmBhMmTIFY8aMwYEDB8p9f4mIiKhiUgghhK6LeJmlpSWWLl2KAQMGoEaNGti6dSsGDBgAALh27RoaNWqEqKgotGnTBvv27UOPHj3w4MEDWFtbAwDWr1+PmTNn4uHDh1AqlZg5cybCwsJw6dIlaRuDBw9GcnIy9u/f/0Y1aTQamJubIyUlBWq1uvR3moiIqBStCL+h6xKKbWrX+qW+zuK8f1eYMUQ5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YSgiIiJ6h1XoI0SvqlOnDqpXr45bt24BAGxsbJCUlKTVJjs7G48fP5bGHdnY2CAxMVGrTd50YWOTVCoV1Gq11o2IiIjeXZUqEP3555949OgRbG1tAQBubm5ITk5GdHS01ObQoUPIzc1F69atpTbHjh1DVlaW1CY8PBwNGjQocPwQERERyY9OA1FaWhpiYmIQExMDAIiNjUVMTAzi4uKQlpaG6dOn49SpU7h79y4iIyPRu3dv1K1bF15eXgCARo0aoVu3bhg7dix+//13nDhxApMmTcLgwYNhZ2cHABg6dCiUSiX8/Pxw+fJlbN++HatWrdL6SoyIiIjkTaeB6MyZM/jHP/6Bf/zjHwCAgIAA/OMf/8CcOXOgr6+PCxcuoFevXqhfvz78/Pzg6uqK3377TetaRFu2bEHDhg3h7u6O7t27o127dvj222+l5ebm5jh48CBiY2Ph6uqKadOmYc6cOTzlnoiIiCQ6HVTdqVOnIn/+48CBA69dh6WlpXQRxsI0bdoUv/32W7HrIyIiInmoVGOIiIiIiMoCAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREclehf5xV6LStCL8hq5LKLapXevrugQiIlngESIiIiKSPQYiIiIikj0GIiIiIpI9BiIiIiKSPQ6qJqJSxcHrRFQZ8QgRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyZ6BrgsgosKtCL+h6xKIiGSBgYiIZI/Bk4j4lRkRERHJnk4D0bFjx9CzZ0/Y2dlBoVDgp59+0louhMCcOXNga2sLY2NjeHh44ObNm1ptHj9+jGHDhkGtVsPCwgJ+fn5IS0vTanPhwgW0b98eRkZGsLe3R0hISFnvGhEREVUiOg1E6enpaNasGb7++usCl4eEhOCrr77C+vXrcfr0aZiamsLLywvPnz+X2gwbNgyXL19GeHg49u7di2PHjmHcuHHSco1GA09PTzg4OCA6OhpLly5FUFAQvv322zLfPyIiIqocFEIIoesiAEChUGDPnj3o06cPgBdHh+zs7DBt2jR89tlnAICUlBRYW1sjNDQUgwcPxtWrV+Hs7Iw//vgDLVu2BADs378f3bt3x59//gk7OzusW7cOs2bNQkJCApRKJQDgn//8J3766Sdcu3btjWrTaDQwNzdHSkoK1Gp1qe87xy8QEZHcTe1av9TXWZz37wo7hig2NhYJCQnw8PCQ5pmbm6N169aIiooCAERFRcHCwkIKQwDg4eEBPT09nD59WmrToUMHKQwBgJeXF65fv44nT54UuO2MjAxoNBqtGxEREb27KmwgSkhIAABYW1trzbe2tpaWJSQkwMrKSmu5gYEBLC0ttdoUtI6Xt/Gq4OBgmJubSzd7e/u33yEiIiKqsCpsINKlwMBApKSkSLf79+/ruiQiIiIqQxU2ENnY2AAAEhMTteYnJiZKy2xsbJCUlKS1PDs7G48fP9ZqU9A6Xt7Gq1QqFdRqtdaNiIiI3l0VNhA5OjrCxsYGkZGR0jyNRoPTp0/Dzc0NAODm5obk5GRER0dLbQ4dOoTc3Fy0bt1aanPs2DFkZWVJbcLDw9GgQQNUrVq1nPaGiIiIKjKdBqK0tDTExMQgJiYGwIuB1DExMYiLi4NCocCUKVOwYMEC/PLLL7h48SJGjBgBOzs76Uy0Ro0aoVu3bhg7dix+//13nDhxApMmTcLgwYNhZ2cHABg6dCiUSiX8/Pxw+fJlbN++HatWrUJAQICO9pqIiIgqGp3+dMeZM2fQuXNnaTovpPj6+iI0NBQzZsxAeno6xo0bh+TkZLRr1w779++HkZGRdJ8tW7Zg0qRJcHd3h56eHvr374+vvvpKWm5ubo6DBw/C398frq6uqF69OubMmaN1rSIiIiKStwpzHaKKjNchIiIiKlu8DhERERGRjjEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkexV6EAUFBQEhUKhdWvYsKG0/Pnz5/D390e1atVQpUoV9O/fH4mJiVrriIuLg4+PD0xMTGBlZYXp06cjOzu7vHeFiIiIKjADXRfwOo0bN0ZERIQ0bWDw/yVPnToVYWFh2LlzJ8zNzTFp0iT069cPJ06cAADk5OTAx8cHNjY2OHnyJOLj4zFixAgYGhpi0aJF5b4vREREVDFV+EBkYGAAGxubfPNTUlLw3XffYevWrejSpQsAYNOmTWjUqBFOnTqFNm3a4ODBg7hy5QoiIiJgbW2N5s2bY/78+Zg5cyaCgoKgVCoL3GZGRgYyMjKkaY1GUzY7R0RERBVChf7KDABu3rwJOzs71KlTB8OGDUNcXBwAIDo6GllZWfDw8JDaNmzYELVq1UJUVBQAICoqCi4uLrC2tpbaeHl5QaPR4PLly4VuMzg4GObm5tLN3t6+jPaOiIiIKoIKHYhat26N0NBQ7N+/H+vWrUNsbCzat2+P1NRUJCQkQKlUwsLCQus+1tbWSEhIAAAkJCRohaG85XnLChMYGIiUlBTpdv/+/dLdMSIiIqpQKvRXZt7e3tL/mzZtitatW8PBwQE7duyAsbFxmW1XpVJBpVKV2fqJiIioYqnQR4heZWFhgfr16+PWrVuwsbFBZmYmkpOTtdokJiZKY45sbGzynXWWN13QuCQiIiKSp0oViNLS0nD79m3Y2trC1dUVhoaGiIyMlJZfv34dcXFxcHNzAwC4ubnh4sWLSEpKktqEh4dDrVbD2dm53OsnIiKiiqlCf2X22WefoWfPnnBwcMCDBw8wd+5c6OvrY8iQITA3N4efnx8CAgJgaWkJtVqNTz75BG5ubmjTpg0AwNPTE87Ozhg+fDhCQkKQkJCA2bNnw9/fn1+JERERkaRCB6I///wTQ4YMwaNHj1CjRg20a9cOp06dQo0aNQAAK1asgJ6eHvr374+MjAx4eXlh7dq10v319fWxd+9eTJgwAW5ubjA1NYWvry/mzZunq10iIiKiCkghhBC6LqKi02g0MDc3R0pKCtRqdamvf0X4jVJfJxERUWUytWv9Ul9ncd6/K9UYIiIiIqKywEBEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyJ6tA9PXXX6N27dowMjJC69at8fvvv+u6JCIiIqoAZBOItm/fjoCAAMydOxdnz55Fs2bN4OXlhaSkJF2XRkRERDomm0C0fPlyjB07FqNGjYKzszPWr18PExMTbNy4UdelERERkY4Z6LqA8pCZmYno6GgEBgZK8/T09ODh4YGoqKh87TMyMpCRkSFNp6SkAAA0Gk2Z1Pc8Pa1M1ktERFRZlMV7bN46hRCvbSuLQPT3338jJycH1tbWWvOtra1x7dq1fO2Dg4PxxRdf5Jtvb29fZjUSERHJ2edluO7U1FSYm5sX2UYWgai4AgMDERAQIE3n5ubi8ePHqFatGhQKRaluS6PRwN7eHvfv34darS7VddP/Yz+XD/Zz+WFflw/2c/koq34WQiA1NRV2dnavbSuLQFS9enXo6+sjMTFRa35iYiJsbGzytVepVFCpVFrzLCwsyrJEqNVq/rGVA/Zz+WA/lx/2dflgP5ePsujn1x0ZyiOLQdVKpRKurq6IjIyU5uXm5iIyMhJubm46rIyIiIgqAlkcIQKAgIAA+Pr6omXLlmjVqhVWrlyJ9PR0jBo1StelERERkY7JJhANGjQIDx8+xJw5c5CQkIDmzZtj//79+QZalzeVSoW5c+fm+4qOShf7uXywn8sP+7p8sJ/LR0XoZ4V4k3PRiIiIiN5hshhDRERERFQUBiIiIiKSPQYiIiIikj0GIiIiIpI9BiIiIiKSPQaicvD111+jdu3aMDIyQuvWrfH7778X2X7nzp1o2LAhjIyM4OLigl9//bWcKq3citPP//73v9G+fXtUrVoVVatWhYeHx2sfF3qhuM/nPNu2bYNCoUCfPn3KtsB3SHH7Ojk5Gf7+/rC1tYVKpUL9+vX5+vEGitvPK1euRIMGDWBsbAx7e3tMnToVz58/L6dqK6djx46hZ8+esLOzg0KhwE8//fTa+xw5cgQtWrSASqVC3bp1ERoaWrZFCipT27ZtE0qlUmzcuFFcvnxZjB07VlhYWIjExMQC2584cULo6+uLkJAQceXKFTF79mxhaGgoLl68WM6VVy7F7eehQ4eKr7/+Wpw7d05cvXpVjBw5Upibm4s///yznCuvXIrbz3liY2PFe++9J9q3by969+5dPsVWcsXt64yMDNGyZUvRvXt3cfz4cREbGyuOHDkiYmJiyrnyyqW4/bxlyxahUqnEli1bRGxsrDhw4ICwtbUVU6dOLefKK5dff/1VzJo1S+zevVsAEHv27Cmy/Z07d4SJiYkICAgQV65cEatXrxb6+vpi//79ZVYjA1EZa9WqlfD395emc3JyhJ2dnQgODi6w/cCBA4WPj4/WvNatW4uPP/64TOus7Irbz6/Kzs4WZmZmYvPmzWVV4juhJP2cnZ0tPvjgA7Fhwwbh6+vLQPSGitvX69atE3Xq1BGZmZnlVeI7obj97O/vL7p06aI1LyAgQLRt27ZM63yXvEkgmjFjhmjcuLHWvEGDBgkvL68yq4tfmZWhzMxMREdHw8PDQ5qnp6cHDw8PREVFFXifqKgorfYA4OXlVWh7Klk/v+rp06fIysqCpaVlWZVZ6ZW0n+fNmwcrKyv4+fmVR5nvhJL09S+//AI3Nzf4+/vD2toaTZo0waJFi5CTk1NeZVc6JennDz74ANHR0dLXanfu3MGvv/6K7t27l0vNcqGL90LZ/HSHLvz999/IycnJ9/Mg1tbWuHbtWoH3SUhIKLB9QkJCmdVZ2ZWkn181c+ZM2NnZ5fsDpP9Xkn4+fvw4vvvuO8TExJRDhe+OkvT1nTt3cOjQIQwbNgy//vorbt26hYkTJyIrKwtz584tj7IrnZL089ChQ/H333+jXbt2EEIgOzsb48ePx+eff14eJctGYe+FGo0Gz549g7Gxcalvk0eISPYWL16Mbdu2Yc+ePTAyMtJ1Oe+M1NRUDB8+HP/+979RvXp1XZfzzsvNzYWVlRW+/fZbuLq6YtCgQZg1axbWr1+v69LeKUeOHMGiRYuwdu1anD17Frt370ZYWBjmz5+v69LoLfEIURmqXr069PX1kZiYqDU/MTERNjY2Bd7HxsamWO2pZP2c58svv8TixYsRERGBpk2blmWZlV5x+/n27du4e/cuevbsKc3Lzc0FABgYGOD69etwcnIq26IrqZI8p21tbWFoaAh9fX1pXqNGjZCQkIDMzEwolcoyrbkyKkk//+tf/8Lw4cMxZswYAICLiwvS09Mxbtw4zJo1C3p6PM5QGgp7L1Sr1WVydAjgEaIypVQq4erqisjISGlebm4uIiMj4ebmVuB93NzctNoDQHh4eKHtqWT9DAAhISGYP38+9u/fj5YtW5ZHqZVacfu5YcOGuHjxImJiYqRbr1690LlzZ8TExMDe3r48y69USvKcbtu2LW7duiWFTgC4ceMGbG1tGYYKUZJ+fvr0ab7QkxdCBX8rvdTo5L2wzIZrkxDixSmdKpVKhIaGiitXrohx48YJCwsLkZCQIIQQYvjw4eKf//yn1P7EiRPCwMBAfPnll+Lq1ati7ty5PO3+DRS3nxcvXiyUSqXYtWuXiI+Pl26pqam62oVKobj9/CqeZfbmitvXcXFxwszMTEyaNElcv35d7N27V1hZWYkFCxboahcqheL289y5c4WZmZn473//K+7cuSMOHjwonJycxMCBA3W1C5VCamqqOHfunDh37pwAIJYvXy7OnTsn7t27J4QQ4p///KcYPny41D7vtPvp06eLq1eviq+//pqn3b8LVq9eLWrVqiWUSqVo1aqVOHXqlLSsY8eOwtfXV6v9jh07RP369YVSqRSNGzcWYWFh5Vxx5VScfnZwcBAA8t3mzp1b/oVXMsV9Pr+Mgah4itvXJ0+eFK1btxYqlUrUqVNHLFy4UGRnZ5dz1ZVPcfo5KytLBAUFCScnJ2FkZCTs7e3FxIkTxZMnT8q/8Erk8OHDBb7m5vWtr6+v6NixY777NG/eXCiVSlGnTh2xadOmMq1RIQSP8REREZG8cQwRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREcne/wHVGBQtmGPHqwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "l2g_finngen_pics=l2g_max_scores.join(finngen_pics.select(\"studyLocusId\", \"studyId\"), on=\"studyLocusId\", how=\"inner\")\n", + "l2g_finngen_pics.select(\"score\").toPandas().plot.hist(bins=10, alpha=0.5, title=\"l2g scores (top gene assignment), finngen_pics\")\n", + "\n", + "sample_size_quartiles = l2g_finngen_pics.stat.approxQuantile(\"score\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of finngen PICS l2g scores: mean:\", l2g_finngen_pics.select(f.mean(l2g_finngen_pics[\"score\"])).collect()[0][0], \"L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summary of l2g_finngen_susie: mean: 0.5593829938336615 L.quart: 0.2241434007883072 Median: 0.6244931817054749 U.quart: 0.8736903071403503\n" + ] + }, + { + "data": { + "image/png": "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qqlly5Z67bXXtH37dm3evFkDBw5U586d5efnJ0nq0qWLLBaL+vTpo/379+vHH3/Up59+qqFDh9rpqAEAQH5j14/MduzYoWbNmlnvp4eUHj16KCIiQsOHD9f169fVr18/XblyRc8++6xWrlypwoULW9eZN2+eBg4cqODgYDk6Oqpjx46aNm2adbmHh4dWr16tsLAwBQYGqlSpUho9ejSX3AMAACsHwzAMexeR3yUkJMjDw0Px8fFyd3fP8e0XxLktyBvMIcL98LqBx01uvN5l5f07384hAgAAyCsEIgAAYHoEIgAAYHoEIgAAYHoEIgAAYHoEIgAAYHoEIgAAYHoEIgAAYHoEIgAAYHoEIgAAYHoEIgAAYHoEIgAAYHoEIgAAYHrO9i4AAOyNX44HQCACkKMIFwAKIj4yAwAApkcgAgAApkcgAgAApsccIiAfYz4OAOQNzhABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTIxABAADTy9eBaOzYsXJwcLC5Va1a1br81q1bCgsLU8mSJVW0aFF17NhRcXFxNtuIiYlRmzZt5ObmJi8vL7399ttKSUnJ60MBAAD5mLO9C3iYGjVqaM2aNdb7zs7/V/KQIUO0fPlyLVy4UB4eHho4cKA6dOigzZs3S5JSU1PVpk0b+fj4aMuWLTp79qy6d++uQoUK6cMPP8zzYwEAAPlTvg9Ezs7O8vHxydAeHx+vb7/9VvPnz1fz5s0lSbNnz1a1atW0bds2NWjQQKtXr9aBAwe0Zs0aeXt7q06dOho/frxGjBihsWPHymKx5PXhAACAfChff2QmSUePHpWfn58qVqyorl27KiYmRpK0c+dOJScnKyQkxNq3atWqKlu2rLZu3SpJ2rp1q2rVqiVvb29rn9DQUCUkJGj//v333WdiYqISEhJsbgAA4PGVrwNR/fr1FRERoZUrV2rGjBmKjo5Wo0aNdPXqVcXGxspiscjT09NmHW9vb8XGxkqSYmNjbcJQ+vL0ZfczYcIEeXh4WG/+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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "l2g_finngen_susie=l2g_max_scores.join(finngen_susie.select(\"studyLocusId\", \"studyId\"), on=\"studyLocusId\", how=\"inner\")\n", + "l2g_finngen_susie.select(\"score\").toPandas().plot.hist(bins=10, alpha=0.5, title=\"(top gene assignment), l2g_finngen_susie\")\n", + "\n", + "sample_size_quartiles = l2g_finngen_susie.stat.approxQuantile(\"score\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of l2g_finngen_susie: mean:\", l2g_finngen_susie.select(f.mean(l2g_finngen_susie[\"score\"])).collect()[0][0], \"L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summary of l2g_gwas_curated PICS l2g scores: mean: 0.5761322645683256 L.quart: 0.22704362869262695 Median: 0.653652012348175 U.quart: 0.8937538862228394\n" + ] + }, + { + "data": { + "image/png": "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/361a9dO7u7ucnNzU4kSJfTiiy9K+t/rNSAgQOHh4frqq6/k6empkJAQTZo0KVPXU6UGYqvvkrxzbFItWrRIdevWlYuLi4oVK2Ze2pCRmjPzmj116pTKlSuX5nWW3nEyo+48bhYuXFi+vr73PG4eO3ZMFStWtPnP1J2yckx5FHBNFSxRvHhxJSUl6erVq+a1L9nN6je4lJQUVa9eXWPGjEl3+Z1v+Le/+d0u9Q04dQLUF1980ebsw+1Sry9Lz7Fjx9SsWTNVqlRJY8aMkb+/v5ycnLRkyRKNHTvW3L6dnZ2+//57/f777/r111+1fPlyvfzyyxo9erR+//13FS5cWF5eXtq1a5eWL1+upUuXaunSpZoxY4a6detm6V1t9xuT+/XLjjHNaE33khrAPD09M7xORsTExKhFixa6cuWKNmzYID8/P0u3n1W1atWSi4uL1q9fr1KlSsnLy0sVKlRQw4YNNXnyZMXHx2vDhg1q166duc6VK1fUuHFjubm56T//+Y/Kli0rFxcX7dixQwMGDLCZEHj06NHq0aOHfv75Z61YsUJvvvmmea1ketfqZdW9rhlKz+1npFJt2LBBbdq0UaNGjTR58mT5+vqqQIECmjFjhubMmXPfGh70OJBX5dQxJb8hVMESlSpVknTrLsDbDxB3O6iVLl1aknT48OE0yw4dOiRPT08VKlTIpv3o0aM2/5P8888/lZKSctezJrfv588//1STJk3M9qSkJJ08edKm1rJly2r37t1q1qyZJYGtRIkSKlKkiJKTk23uisyoX3/9VfHx8frll19szrbc+TFkqrp166pu3br6+OOPNWfOHHXt2lVz587VK6+8IunWbdOtW7dW69atlZKSor59++qLL77QBx98kO7ZisyMXU550DG9m/v9vk+cOCF7e3vzrKUVbt68qdatW+vIkSNauXJluh873f47uP21/88//2TqTFvqtlJSUnTixAmbsxd33p0p3XqtpN7pWapUKfMj04YNGyo+Pl6zZ89WdHS0GjVqZK6zdu1a/fPPP/rxxx9t2k+cOJFuPdWrV1f16tU1ePBgbdq0SfXr19fUqVP10Ucf3fe5PPbYY5J035nuixYtqitXrqRpTz0DmBE//PCDXFxctHz5cjk7O5vtM2bMSNM3vddRZl6zpUuX1r59+2QYhs220jtOZtTRo0dt/n6vXbumc+fO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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "l2g_gwas_curated=l2g_max_scores.join(gwascat_curated.select(\"studyLocusId\", \"studyId\"), on=\"studyLocusId\", how=\"inner\")\n", + "l2g_gwas_curated.select(\"score\").toPandas().plot.hist(bins=10, alpha=0.5, title=\"(top gene assignment), l2g_gwas_curated_pics\")\n", + "\n", + "sample_size_quartiles = l2g_gwas_curated.stat.approxQuantile(\"score\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of l2g_gwas_curated PICS l2g scores: mean:\", l2g_gwas_curated.select(f.mean(l2g_gwas_curated[\"score\"])).collect()[0][0], \"L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Summary of l2g_gwas_sumstats PICS l2g scores: mean: 0.5751686123272477 L.quart: 0.23706066608428955 Median: 0.647024929523468 U.quart: 0.8808161020278931\n" + ] + }, + { + "data": { + "image/png": "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ah8yZIjGjBmjjh07Kjw8XNu3b1d4eLguXLiQ63088cQTmj9/vnr06KEWLVpo7dq1ioiIcOrToEED+fn5ad26dbrvvvskSevXr5erq6u2b99uzUFmZqY2btyop59+2npsTEyMvL29FR0dLW9vb61atUrDhg1TSkqKxo4dK0lKS0tTeHi4UlNT1b9/fwUEBOh///ufFi1apFOnTsnX19fWc+nSpYt27typ/v37q2bNmjp27JiWL1+ugwcPZvvdYVdWPa+//ro2bdqk9957T35+ftq4caOqV6+ut99+W99++63Gjh2rBg0a6PHHH5d0/Z+v1q1b67nnntPkyZP1yiuvKCgoSJKs/9qZt2u9TmfOnKnnnntODz74oAYMGKALFy7o559/1g8//KBHH300T3Pxt1fUqQ03tqFDhxpJ5vTp007tSUlJV/1rr3HjxqZy5crmzz//tNq2b99uXF1dzeOPP261Za003XfffU6P79u3r5Fktm/fftW6UlNTTYUKFcxtt91mLl68aLXHxMQYSU6rJf/973+Nq6urWb9+vdMYM2bMMJLMhg0brDZJxuFwmP379zvVLsm88847VluvXr1MlSpVzPHjx53G7Natm/H19TXnzp27au3GmBy3h4eHm5tuusm6/8UXXxhJ5qeffrrqOAMGDDA+Pj7Z/uK/3JUrTbmZu6zHBgUFmdTUVKt90qRJRpLZsWOH1Zb1F/OcOXOstj179hhJxtXV1WzatMlqX7ZsmZFkZs2aZbXZndPc1BQREZFtdelyc+bMMZLMDz/8cNU+13K1n4HL/fe//zWSnFbMEhISjLu7u3nggQec+o4YMcJIytVKU1xcnJFkBg4c6NT+xBNPZKsvIiLCaQWpc+fOpnPnzsbNzc1aTd2yZUu2FamcXq/PPPOMKV26tLVau3XrViPJWlnMi5MnTxpJZuzYsdfsd7V5v9pKU3h4uNMKUmhoqHFxcTF9+vSx2tLT0021atWcXv92fr4WLFiQ40quMfbmzZirv07vv/9+U79+/avuG7nHQQooUH/++afc3d2z/YV+NUePHtW2bdv0xBNPqHz58lZ7o0aNdOedd+rbb7/N9pislZUs/fv3l6Qc+2bZvHmz/vzzTz311FNyd///C67du3dXuXLlnPouWLBAQUFBqlevno4fP27d2rVrJ0lavXq1U/+wsDDVrl3bqXYfHx8dOHBA0qWVg88//1wdO3aUMcZpzPDwcCUnJ2vLli3XnCcvLy/r/5OTk3X8+HG1adNGBw4cUHJysiTJz89PkrRo0SJdvHgxx3H8/Px09uxZLV++/Jr7u1xu5i5Lz5495XA4rPutWrWSJGtOsnh7e6tbt27W/VtuuUV+fn4KCgpS8+bNrfas//8rc2q3pmvJer7Hjx+3/Zjc2LNnj6KiohQaGqrIyEirfeXKlUpPT1ffvn2d+me99nNj6dKlkmRrrFatWmnLli06e/aspEurqvfcc48aN26s9evXS7q0+uTi4qI77rjDetzlr9fTp0/r+PHjatWqlc6dO6c9e/ZIkrWStGzZMp07dy7XzyNrPw6HQ2vWrNHJkyfzNEZOevXqJRcXF+t+8+bNZYxRr169rDY3Nzc1bdrU6fWTl5+vy9mZt2vx8/PT4cOH9dNPP+Vp/8iO0IRi5Y8//pB06c3ySkFBQTp+/Lj1CztLnTp1nO7Xrl1brq6u1zwbJWs/N998s1O7u7t7tiX8X3/9VTt37lSlSpWcbnXr1pV06WOwy1WvXj3b/sqVK2f9Ek9KStKpU6f03nvvZRuzZ8+eOY55pQ0bNigsLExlypSRn5+fKlWqpFdeeUWSrNDUpk0bdenSRa+//roqVqyo+++/X7NmzVJqaqo1Tt++fVW3bl3dfffdqlatmp588knrTTQ/5u5qc5IVNq58Y6tWrZrTm5N06c00MDAwW9vlj8/LnNqt6VqMMZKUreb8kJCQoIiICPn6+uqzzz6Tm5ubte1q/wbly5e/anC9mj/++EOurq6qVauWU/uVY0uXQlN6erpiY2O1d+9eHTt2TK1atVLr1q2dQlNwcLDTHz07d+5Up06d5OvrKx8fH1WqVEmPPfaYpP//eq1Vq5aio6P1/vvvq2LFigoPD9fUqVOt7XZ4eHho9OjRWrJkifz9/dW6dWuNGTNGCQkJuZqTK135Wsl6/eX0urz89ZOXn6/L2Zm3axk8eLC8vb3VrFkz1alTR1FRUdqwYYPt/SM7jmlCgapQoYLS09N1+vRp69iTgpbfb2CZmZlq2LChxo8fn+P2K39xXv7mdrmsN9isC3w+9thjTqsHl8s6visnv/32m9q3b6969epp/PjxCgwMlMPh0LfffqsJEyZY47u4uOizzz7Tpk2b9M0332jZsmV68sknNW7cOG3atEne3t6qXLmytm3bpmXLlmnJkiVasmSJZs2apccffzxfzwq73pxcr19BzKndmq4l6w2yYsWKth9jR3Jysu6++26dOnVK69evV9WqVfN1/Lxq2rSpPD09tW7dOlWvXl2VK1dW3bp11apVK02bNk2pqalav369OnXqZD3m1KlTatOmjXx8fPTGG2+odu3a8vT01JYtWzR48GCnC96OGzdOTzzxhL766it99913eu6556xjFXM6Vi4nAwcOVMeOHfXll19q2bJleu211zRy5EitWrVK//znP6/52IyMjBzbc/O6vPz181d+vnIzb1cTFBSkvXv3atGiRVq6dKk+//xzTZs2TcOGDdPrr79+3ccjO0ITClS9evUkSfHx8U5vWlcLNjVq1JAk7d27N9u2PXv2qGLFiipTpoxT+6+//ur0V/L+/fuVmZl5zYM+s/azf/9+tW3b1mpPT0/X77//7lRr7dq1tX37drVv3z5fAlmlSpVUtmxZZWRkKCwsLNeP/+abb5Samqqvv/7a6S/gKz8mzNKiRQu1aNFC//73vzVnzhx1795dc+fOVe/evSVJDodDHTt2VMeOHZWZmam+ffvq3Xff1WuvvZbjakNu5q6w/NU5vZrr/XvHx8fL1dXVWnXMDxcuXFDHjh21b98+rVixQsHBwdn6XP5vcPlr/88//8z1x1I1atRQZmam4uPjnVZt9+/fn62vw+FQs2bNtH79elWvXt36SLNVq1ZKTU3VJ598osTERKdreq1Zs0Z//vmnFi5c6NQeHx+fYz0NGzZUw4YNNXToUG3cuFEtW7bUjBkz9NZbb9l+TrVr19bzzz+v559/Xr/++qsaN26scePG6eOPP5Z0aVXx1KlTTo9JS0vT0aNHbe/Druv9fF3tNZabebvW67RMmTLq2rWrunbtqrS0NHXu3Fn//ve/NWTIEC4Dkwd8PIcCFRoaKunScTCXK126tCRl+8VVpUoVNW7cWLNnz3ba9ssvv+i7777TPffck20fU6dOdbr/zjvvSJLuvvvuq9bVtGlTVahQQTNnzlR6errV/sknn2R703n44Yf1v//9TzNnzsw2zvnz57N9XHg9bm5u6tKliz7//PMcL1iYlJR03cdLzn/RJicna9asWU79Tp48mW3VpHHjxpJkfUT3559/Om13dXW1Qs/lH+NdLjdzV1j+6pxeTZkyZa75MUhcXJzq169v+8yu68nIyFDXrl0VGxurBQsWWD8/V2rfvr3c3d01ffp0p/YpU6bkep/h4eGSpGnTpjm1Z/0cXalVq1b64YcftHr1ais0VaxYUUFBQdYZYlntUs6v17S0tGz7S0lJcXo9SZcClKur61Vfi1c6d+5ctrMHa9eurbJlyzqNUbt2ba1bt86p33vvvXfVlaa8svPzlfVH4JW/C+3OW9YYOb1Or9y/w+FQcHCwjDFXPc4R18ZKEwrUTTfdpAYNGmjFihV68sknrXYvLy8FBwdr3rx5qlu3rsqXL68GDRqoQYMGGjt2rO6++26FhoaqV69e1iUHfH19c/yervj4eN1333266667FBsbq48//liPPvqobr311qvW5XA4NGLECPXv31/t2rXTww8/rN9//10xMTGqXbu2019uPXr00Pz589WnTx+tXr1aLVu2VEZGhvbs2aP58+dr2bJlatq0aa7mZdSoUVq9erWaN2+up556SsHBwTpx4oS2bNmiFStW6MSJE1d9bIcOHay/Xp955hmdOXNGM2fOVOXKlZ3+Up49e7amTZumTp06qXbt2jp9+rRmzpwpHx8fK3z27t1bJ06cULt27VStWjX98ccfeuedd9S4cWPrtOe/MneF6a/M6dWEhIRo3rx5io6O1m233SZvb2917NhRknTx4kWtXbs22wHUa9asUdu2bTV8+PBcf6/c888/r6+//lodO3bUiRMnrJWRLFnHs/j7+2vAgAEaN26c9drfvn27lixZoooVK+bq3yAkJERdunTRxIkT9eeff1qXHMj66pYrx2rVqpX+/e9/69ChQ07hqHXr1nr33XdVs2ZNp4/Sbr/9dpUrV06RkZF67rnn5OLiov/+97/ZAv2qVavUr18/PfTQQ6pbt67S09P13//+1wrEduzbt0/t27fXww8/rODgYLm7u+uLL75QYmKi0wkGvXv3Vp8+fdSlSxfdeeed2r59u5YtW5bvH7Pa+flq3Lix3NzcNHr0aCUnJ8vDw0Pt2rWzPW/S1V+nHTp0UEBAgFq2bCl/f3/t3r1bU6ZMUURERKEdLnHDKezT9fD3M378eOPt7Z3t9NmNGzeakJAQ43A4sp0CvGLFCtOyZUvj5eVlfHx8TMeOHa96cctdu3aZBx980JQtW9aUK1fO9OvXz/bFLSdPnmxq1KhhPDw8TLNmzcyGDRtMSEiIueuuu5z6paWlmdGjR5v69esbDw8PU65cORMSEmJef/11k5ycbPXT/13c8ko5XXAwMTHRREVFmcDAQFOqVCkTEBBg2rdvb957773r1v3111+bRo0aWResHD16tPnwww+NJOsiflu2bDGPPPKIqV69uvHw8DCVK1c29957r9m8ebM1zmeffWY6dOhgXQyyevXq5plnnjFHjx61+lzt4pZ25i7rsVeeRp51gdPLLxmQdXHLnOYuIiIiW3tOc21nTnNT05kzZ8yjjz5q/Pz8sl00cMmSJUZStot0fvPNN0aSmTFjRraac3oOl7/uc7pQ4eW3y6Wnp5vXXnvNBAQEGC8vL9OuXTuze/duU6FCBadT4e04e/asiYqKMuXLlzfe3t7mgQceMHv37jWSzKhRo5z6pqSkGDc3N1O2bFmnU+k//vhjI8n06NEj2/gbNmwwLVq0MF5eXqZq1armpZdesi4bkfW6OnDggHnyySdN7dq1jaenpylfvrxp27atWbFihe3ncfz4cRMVFWXq1atnypQpY3x9fU3z5s3N/PnznfplZGSYwYMHm4oVK5rSpUub8PBws3///qtecuDKy3Zk/e5JSkpyao+MjDRlypSx7tv5+TLGmJkzZ5qbbrrJuLm5Oc2JnXkz5uqv03fffde0bt3aVKhQwXh4eJjatWubF1980el3FnKH0IQCd+rUKVO+fHnz/vvv5+u4V/vF9VdkZGSY8uXLm969e+fbmH8Xf7e5u//++7NdJ8kYY1588UVTrVq1bFeLLwxZ1yl66623/vJYWddN+vjjj/OhMuDGwDFNKHC+vr566aWXNHbsWFtnfBSWCxcuZFvq/uijj3TixAn961//KpqiSoi/+9zt3r1bixYt0ptvvplt2+rVq/Xaa6/Jw8OjQGs4f/58trasL23N7b/B1cZydXX9W35RM3A1HNOEQjF48GANHjy4qMtwsmnTJg0aNEgPPfSQKlSooC1btuiDDz5QgwYN9NBDDxV1ecXa333ugoKCsh20nKWwLiQ4b948xcTE6J577pG3t7e+//57ffrpp+rQoYNatmwpSde9PpGXl5d8fX01ZswYxcXFqW3btnJ3d7dOj3/66aezXVKjqCQnJ+cY7i4XEBBQSNXgb6uol7qAvPqrH8/Fx8ebjh07Gn9/f1OqVCnj7+9vevbsaRITE/O50hsPc1f04uLiTPv27U2FChVMqVKlTLVq1cyAAQOcvrJI1zg+Spd93cp3331nWrZsacqVK2dKlSplateubUaMGOH0NTlFLTIy8rrPByhoLsbk4kpuAIASY8WKFdfcXrVq1RyvA1Uc7dq1S0eOHLlmn/y8RheQE0ITAACADRwIDgAAYAMHgueTzMxMHTlyRGXLli2yi/sBAIDcMcbo9OnTqlq1qlxdr72WRGjKJ0eOHCk2Z5kAAIDcOXTo0HW/GJrQlE+yLkl/6NAh+fj4FHE1AADAjpSUFAUGBtr6ahlCUz7J+kjOx8eH0AQAQAlj59AaDgQHAACwgdAEAABgA6EJAADABo5pKkTGGKWnpysjI6OoS7lhlCpVSm5ubkVdBgDgb4DQVEjS0tJ09OhRnTt3rqhLuaG4uLioWrVq8vb2LupSAAA3OEJTIcjMzFR8fLzc3NxUtWpVORwOLoCZD4wxSkpK0uHDh1WnTh1WnAAABYrQVAjS0tKUmZmpwMBAlS5duqjLuaFUqlRJv//+uy5evEhoAgAUKA4EL0TXuzw7co8VOwBAYeFdHAAAwAZCEwAAgA0c01TEJizfV2j7GnRn3ULbFwAANxpWmgAAAGwgNKFYSEtLK+oSAAC4JkITrumzzz5Tw4YN5eXlpQoVKigsLExnz56VJH344YeqX7++PDw8VKVKFfXr18963MGDB3X//ffL29tbPj4+evjhh5WYmGhtHzFihBo3bqz3339ftWrVkqenpyTp1KlT6t27typVqiQfHx+1a9dO27dvL9wnDQBADjimCVd19OhRPfLIIxozZow6deqk06dPa/369TLGaPr06YqOjtaoUaN09913Kzk5WRs2bJB06WKeWYFp7dq1Sk9PV1RUlLp27ao1a9ZY4+/fv1+ff/65Fi5caF1j6aGHHpKXl5eWLFkiX19fvfvuu2rfvr327dun8uXLF8U0AMANqTCPqc0vRX1sbpGuNI0YMUIuLi5Ot3r16lnbL1y4oKioKFWoUEHe3t7q0qWL02qFdGlFIyIiQqVLl1blypX14osvKj093anPmjVr1KRJE3l4eOjmm29WTExMtlqmTp2qmjVrytPTU82bN9ePP/5YIM+5JDl69KjS09PVuXNn1axZUw0bNlTfvn3l7e2tt956S88//7wGDBigunXr6rbbbtPAgQMlSStXrtSOHTs0Z84chYSEqHnz5vroo4+0du1a/fTTT9b4aWlp+uijj/TPf/5TjRo10vfff68ff/xRCxYsUNOmTVWnTh395z//kZ+fnz777LMimgUAAC4p8o/n6tevr6NHj1q377//3to2aNAgffPNN1qwYIHWrl2rI0eOqHPnztb2jIwMRUREKC0tTRs3btTs2bMVExOjYcOGWX3i4+MVERGhtm3batu2bRo4cKB69+6tZcuWWX3mzZun6OhoDR8+XFu2bNGtt96q8PBwHTt2rHAmoZi69dZb1b59ezVs2FAPPfSQZs6cqZMnT+rYsWM6cuSI2rdvn+Pjdu/ercDAQAUGBlptwcHB8vPz0+7du622GjVqqFKlStb97du368yZM1ZIzrrFx8frt99+K7gnCgCADUX+8Zy7u7sCAgKytScnJ+uDDz7QnDlz1K5dO0nSrFmzFBQUpE2bNqlFixb67rvvtGvXLq1YsUL+/v5q3Lix3nzzTQ0ePFgjRoyQw+HQjBkzVKtWLY0bN06SFBQUpO+//14TJkxQeHi4JGn8+PF66qmn1LNnT0nSjBkztHjxYn344Yd6+eWXC2kmih83NzctX75cGzdu1Hfffad33nlHr776qlauXJkv45cpU8bp/pkzZ1SlShWnj/Cy+Pn55cs+AQDIqyJfafr1119VtWpV3XTTTerevbsOHjwoSYqLi9PFixcVFhZm9a1Xr56qV6+u2NhYSVJsbKwaNmwof39/q094eLhSUlK0c+dOq8/lY2T1yRojLS1NcXFxTn1cXV0VFhZm9clJamqqUlJSnG43IhcXF7Vs2VKvv/66tm7dKofDoeXLl6tmzZpXDU9BQUE6dOiQDh06ZLXt2rVLp06dUnBw8FX31aRJEyUkJMjd3V0333yz061ixYr5/twAAMiNIg1NzZs3V0xMjJYuXarp06crPj5erVq10unTp5WQkCCHw5FthcHf318JCQmSpISEBKfAlLU9a9u1+qSkpOj8+fM6fvy4MjIycuyTNUZORo4cKV9fX+t2+UdRN4offvhBb7/9tjZv3qyDBw9q4cKFSkpKUlBQkEaMGKFx48Zp8uTJ+vXXX7Vlyxa98847kqSwsDA1bNhQ3bt315YtW/Tjjz/q8ccfV5s2bdS0adOr7i8sLEyhoaF64IEH9N133+n333/Xxo0b9eqrr2rz5s2F9bQBAMhRkX48d/fdd1v/36hRIzVv3lw1atTQ/Pnz5eXlVYSVXd+QIUMUHR1t3U9JSclTcCrqMwGuxcfHR+vWrdPEiROVkpKiGjVqaNy4cda/24ULFzRhwgS98MILqlixoh588EFJl1anvvrqK/Xv31+tW7eWq6ur7rrrLitUXY2Li4u+/fZbvfrqq+rZs6eSkpIUEBCg1q1bZwu1AAAUtiI/pulyfn5+qlu3rvbv368777xTaWlpOnXqlNNqU2JionUMVEBAQLaz3LLOrru8z5Vn3CUmJsrHx0deXl5yc3OTm5tbjn1yOtYqi4eHhzw8PPL8XEuCoKAgLV269Krbn3nmGT3zzDM5bqtevbq++uqrqz52xIgRGjFiRLb2smXLavLkyZo8eXKu6wUAoCAV+TFNlztz5ox+++03ValSRSEhISpVqpTTcTN79+7VwYMHFRoaKkkKDQ3Vjh07nM5yW758uXx8fKxjZ0JDQ7Mde7N8+XJrDIfDoZCQEKc+mZmZWrlypdUHAACgSEPTCy+8oLVr11rHrnTq1Elubm565JFH5Ovrq169eik6OlqrV69WXFycevbsqdDQULVo0UKS1KFDBwUHB6tHjx7avn27li1bpqFDhyoqKspaBerTp48OHDigl156SXv27NG0adM0f/58DRo0yKojOjpaM2fO1OzZs7V79249++yzOnv2rHU2HQAAQJF+PHf48GE98sgj+vPPP1WpUiXdcccd2rRpk3XtngkTJsjV1VVdunRRamqqwsPDNW3aNOvxbm5uWrRokZ599lmFhoaqTJkyioyM1BtvvGH1qVWrlhYvXqxBgwZp0qRJqlatmt5//33rcgOS1LVrVyUlJWnYsGFKSEhQ48aNtXTpUo6jAQAAFhdjjCnqIm4EKSkp8vX1VXJysnx8fJy2XbhwQfHx8U7fsYb8wdwCQN7wNSqXXOv9+0rF6pimGx35NP8xpwCAwkJoKgSlSpWSJJ07d66IK7nxpKWlSZL1hb8AABSUYnXJgRuVm5ub/Pz8rLP8SpcuLRcXlyKuquTLzMxUUlKSSpcuLXd3XsoAgILFO00hybrm09/9S4Dzm6urq6pXr04IBQAUOEJTIXFxcVGVKlVUuXJlXbx4sajLuWE4HA65uvIpMwCg4BGaClnWFcgBAEDJwp/oAAAANhCaAAAAbCA0AQAA2EBoAgAAsIHQBAAAYAOhCQAAwAZCEwAAgA2EJgAAABsITQAAADYQmgAAAGwgNAEAANhAaAIAALCB0AQAAGADoQkAAMAGQhMAAIANhCYAAAAbCE0AAAA2EJoAAABsIDQBAADYQGgCAACwgdAEAABgA6EJAADABkITAACADYQmAAAAGwhNAAAANhCaAAAAbCA0AQAA2EBoAgAAsIHQBAAAYAOhCQAAwAZCEwAAgA2EJgAAABsITQAAADYQmgAAAGwgNAEAANhAaAIAALCB0AQAAGADoQkAAMAGQhMAAIANhCYAAAAbCE0AAAA2EJoAAABsIDQBAADYQGgCAACwgdAEAABgA6EJAADABkITAACADYQmAAAAGwhNAAAANhCaAAAAbCA0AQAA2EBoAgAAsKHYhKZRo0bJxcVFAwcOtNouXLigqKgoVahQQd7e3urSpYsSExOdHnfw4EFFRESodOnSqly5sl588UWlp6c79VmzZo2aNGkiDw8P3XzzzYqJicm2/6lTp6pmzZry9PRU8+bN9eOPPxbE0wQAACVUsQhNP/30k9599101atTIqX3QoEH65ptvtGDBAq1du1ZHjhxR586dre0ZGRmKiIhQWlqaNm7cqNmzZysmJkbDhg2z+sTHxysiIkJt27bVtm3bNHDgQPXu3VvLli2z+sybN0/R0dEaPny4tmzZoltvvVXh4eE6duxYwT95AABQIrgYY0xRFnDmzBk1adJE06ZN01tvvaXGjRtr4sSJSk5OVqVKlTRnzhw9+OCDkqQ9e/YoKChIsbGxatGihZYsWaJ7771XR44ckb+/vyRpxowZGjx4sJKSkuRwODR48GAtXrxYv/zyi7XPbt266dSpU1q6dKkkqXnz5rrttts0ZcoUSVJmZqYCAwPVv39/vfzyy7aeR0pKinx9fZWcnCwfH5/8nCIAAPLdhOX7irqEXBt0Z918HzM3799FvtIUFRWliIgIhYWFObXHxcXp4sWLTu316tVT9erVFRsbK0mKjY1Vw4YNrcAkSeHh4UpJSdHOnTutPleOHR4ebo2RlpamuLg4pz6urq4KCwuz+uQkNTVVKSkpTjcAAHDjci/Knc+dO1dbtmzRTz/9lG1bQkKCHA6H/Pz8nNr9/f2VkJBg9bk8MGVtz9p2rT4pKSk6f/68Tp48qYyMjBz77Nmz56q1jxw5Uq+//rq9JwoAAEq8IltpOnTokAYMGKBPPvlEnp6eRVVGng0ZMkTJycnW7dChQ0VdEgAAKEBFFpri4uJ07NgxNWnSRO7u7nJ3d9fatWs1efJkubu7y9/fX2lpaTp16pTT4xITExUQECBJCggIyHY2Xdb96/Xx8fGRl5eXKlasKDc3txz7ZI2REw8PD/n4+DjdAADAjavIQlP79u21Y8cObdu2zbo1bdpU3bt3t/6/VKlSWrlypfWYvXv36uDBgwoNDZUkhYaGaseOHU5nuS1fvlw+Pj4KDg62+lw+RlafrDEcDodCQkKc+mRmZmrlypVWHwAAgCI7pqls2bJq0KCBU1uZMmVUoUIFq71Xr16Kjo5W+fLl5ePjo/79+ys0NFQtWrSQJHXo0EHBwcHq0aOHxowZo4SEBA0dOlRRUVHy8PCQJPXp00dTpkzRSy+9pCeffFKrVq3S/PnztXjxYmu/0dHRioyMVNOmTdWsWTNNnDhRZ8+eVc+ePQtpNgAAQHFXpAeCX8+ECRPk6uqqLl26KDU1VeHh4Zo2bZq13c3NTYsWLdKzzz6r0NBQlSlTRpGRkXrjjTesPrVq1dLixYs1aNAgTZo0SdWqVdP777+v8PBwq0/Xrl2VlJSkYcOGKSEhQY0bN9bSpUuzHRwOAAD+vor8Ok03Cq7TBAAoSbhO0yUl6jpNAAAAJQGhCQAAwAZCEwAAgA2EJgAAABsITQAAADYQmgAAAGwgNAEAANhAaAIAALCB0AQAAGADoQkAAMAGQhMAAIANhCYAAAAbCE0AAAA2EJoAAABsIDQBAADYQGgCAACwgdAEAABgA6EJAADABkITAACADYQmAAAAGwhNAAAANhCaAAAAbCA0AQAA2EBoAgAAsIHQBAAAYAOhCQAAwAZCEwAAgA2EJgAAABsITQAAADYQmgAAAGwgNAEAANhAaAIAALCB0AQAAGADoQkAAMAGQhMAAIANhCYAAAAbCE0AAAA2EJoAAABsIDQBAADYQGgCAACwgdAEAABgA6EJAADABkITAACADYQmAAAAGwhNAAAANhCaAAAAbCA0AQAA2EBoAgAAsIHQBAAAYAOhCQAAwAZCEwAAgA2EJgAAABsITQAAADYQmgAAAGzIU2g6cOBAftcBAABQrOUpNN18881q27atPv74Y124cCG/awIAACh28hSatmzZokaNGik6OloBAQF65pln9OOPP+Z3bQAAAMVGnkJT48aNNWnSJB05ckQffvihjh49qjvuuEMNGjTQ+PHjlZSUlN91AgAAFKm/dCC4u7u7OnfurAULFmj06NHav3+/XnjhBQUGBurxxx/X0aNH86tOAACAIvWXQtPmzZvVt29fValSRePHj9cLL7yg3377TcuXL9eRI0d0//33X/Px06dPV6NGjeTj4yMfHx+FhoZqyZIl1vYLFy4oKipKFSpUkLe3t7p06aLExESnMQ4ePKiIiAiVLl1alStX1osvvqj09HSnPmvWrFGTJk3k4eGhm2++WTExMdlqmTp1qmrWrClPT081b96cjxsBAICTPIWm8ePHq2HDhrr99tt15MgRffTRR/rjjz/01ltvqVatWmrVqpViYmK0ZcuWa45TrVo1jRo1SnFxcdq8ebPatWun+++/Xzt37pQkDRo0SN98840WLFigtWvX6siRI+rcubP1+IyMDEVERCgtLU0bN27U7NmzFRMTo2HDhll94uPjFRERobZt22rbtm0aOHCgevfurWXLlll95s2bp+joaA0fPlxbtmzRrbfeqvDwcB07diwv0wMAAG5ALsYYk9sH1alTR08++aSeeOIJValSJcc+aWlp+vTTTxUZGZmrscuXL6+xY8fqwQcfVKVKlTRnzhw9+OCDkqQ9e/YoKChIsbGxatGihZYsWaJ7771XR44ckb+/vyRpxowZGjx4sJKSkuRwODR48GAtXrxYv/zyi7WPbt266dSpU1q6dKkkqXnz5rrttts0ZcoUSVJmZqYCAwPVv39/vfzyy7bqTklJka+vr5KTk+Xj45Or5wwAQGGbsHxfUZeQa4PurJvvY+bm/TtPK02//vqrhgwZctXAJEkOhyNXgSkjI0Nz587V2bNnFRoaqri4OF28eFFhYWFWn3r16ql69eqKjY2VJMXGxqphw4ZWYJKk8PBwpaSkWKtVsbGxTmNk9ckaIy0tTXFxcU59XF1dFRYWZvXJSWpqqlJSUpxuAADgxpWn0DRr1iwtWLAgW/uCBQs0e/bsXI21Y8cOeXt7y8PDQ3369NEXX3yh4OBgJSQkyOFwyM/Pz6m/v7+/EhISJEkJCQlOgSlre9a2a/VJSUnR+fPndfz4cWVkZOTYJ2uMnIwcOVK+vr7WLTAwMFfPGwAAlCx5Ck0jR45UxYoVs7VXrlxZb7/9dq7GuuWWW7Rt2zb98MMPevbZZxUZGaldu3blpaxCNWTIECUnJ1u3Q4cOFXVJAACgALnn5UEHDx5UrVq1srXXqFFDBw8ezNVYDodDN998syQpJCREP/30kyZNmqSuXbsqLS1Np06dclptSkxMVEBAgCQpICAg21luWWfXXd7nyjPuEhMT5ePjIy8vL7m5ucnNzS3HPllj5MTDw0MeHh65eq4AAKDkytNKU+XKlfXzzz9na9++fbsqVKjwlwrKzMxUamqqQkJCVKpUKa1cudLatnfvXh08eFChoaGSpNDQUO3YscPpLLfly5fLx8dHwcHBVp/Lx8jqkzWGw+FQSEiIU5/MzEytXLnS6gMAAJCnlaZHHnlEzz33nMqWLavWrVtLktauXasBAwaoW7dutscZMmSI7r77blWvXl2nT5/WnDlztGbNGi1btky+vr7q1auXoqOjVb58efn4+Kh///4KDQ1VixYtJEkdOnRQcHCwevTooTFjxighIUFDhw5VVFSUtQrUp08fTZkyRS+99JKefPJJrVq1SvPnz9fixYutOqKjoxUZGammTZuqWbNmmjhxos6ePauePXvmZXoAAMANKE+h6c0339Tvv/+u9u3by9390hCZmZl6/PHHc3VM07Fjx6wrh/v6+qpRo0ZatmyZ7rzzTknShAkT5Orqqi5duig1NVXh4eGaNm2a9Xg3NzctWrRIzz77rEJDQ1WmTBlFRkbqjTfesPrUqlVLixcv1qBBgzRp0iRVq1ZN77//vsLDw60+Xbt2VVJSkoYNG6aEhAQ1btxYS5cuzXZwOAAA+PvK03Wasuzbt0/bt2+Xl5eXGjZsqBo1auRnbSUK12kCAJQkXKfpkty8f+dppSlL3bp1Vbdu/j8BAACA4iZPoSkjI0MxMTFauXKljh07pszMTKftq1atypfiAAAAios8haYBAwYoJiZGERERatCggVxcXPK7LgAAgGIlT6Fp7ty5mj9/vu655578rgcAAKBYytN1mi6/ICUAAMDfQZ5C0/PPP69JkybpL5x4BwAAUKLk6eO577//XqtXr9aSJUtUv359lSpVymn7woUL86U4AACA4iJPocnPz0+dOnXK71oAAChxSuL1jpA3eQpNs2bNyu86AAAAirU8HdMkSenp6VqxYoXeffddnT59WpJ05MgRnTlzJt+KAwAAKC7ytNL0xx9/6K677tLBgweVmpqqO++8U2XLltXo0aOVmpqqGTNm5HedAAAARSpPK00DBgxQ06ZNdfLkSXl5eVntnTp10sqVK/OtOAAAgOIiTytN69ev18aNG+VwOJzaa9asqf/973/5UhgAAEBxkqeVpszMTGVkZGRrP3z4sMqWLfuXiwIAAChu8hSaOnTooIkTJ1r3XVxcdObMGQ0fPpyvVgEAADekPH08N27cOIWHhys4OFgXLlzQo48+ql9//VUVK1bUp59+mt81AgAAFLk8haZq1app+/btmjt3rn7++WedOXNGvXr1Uvfu3Z0ODAcAALhR5Ck0SZK7u7see+yx/KwFAACg2MpTaProo4+uuf3xxx/PUzEAAADFVZ5C04ABA5zuX7x4UefOnZPD4VDp0qUJTQAA4IaTp7PnTp486XQ7c+aM9u7dqzvuuIMDwQEAwA0pz989d6U6depo1KhR2VahAAAAbgT5FpqkSweHHzlyJD+HBAAAKBbydEzT119/7XTfGKOjR49qypQpatmyZb4UBgAAUJzkKTQ98MADTvddXFxUqVIltWvXTuPGjcuPugAAAIqVPIWmzMzM/K4DAACgWMvXY5oAAABuVHlaaYqOjrbdd/z48XnZBQAAQLGSp9C0detWbd26VRcvXtQtt9wiSdq3b5/c3NzUpEkTq5+Li0v+VAkAAFDE8hSaOnbsqLJly2r27NkqV66cpEsXvOzZs6datWql559/Pl+LBAAAKGp5OqZp3LhxGjlypBWYJKlcuXJ66623OHsOAADckPIUmlJSUpSUlJStPSkpSadPn/7LRQEAABQ3eQpNnTp1Us+ePbVw4UIdPnxYhw8f1ueff65evXqpc+fO+V0jAABAkcvTMU0zZszQCy+8oEcffVQXL168NJC7u3r16qWxY8fma4EAAADFQZ5CU+nSpTVt2jSNHTtWv/32mySpdu3aKlOmTL4WBwAAUFz8pYtbHj16VEePHlWdOnVUpkwZGWPyqy4AAIBiJU+h6c8//1T79u1Vt25d3XPPPTp69KgkqVevXlxuAAAA3JDyFJoGDRqkUqVK6eDBgypdurTV3rVrVy1dujTfigMAACgu8nRM03fffadly5apWrVqTu116tTRH3/8kS+FAQAAFCd5Ck1nz551WmHKcuLECXl4ePzlopDdhOX7irqEv4VBd9Yt6hIAAMVUnj6ea9WqlT766CPrvouLizIzMzVmzBi1bds234oDAAAoLvK00jRmzBi1b99emzdvVlpaml566SXt3LlTJ06c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4uKigQMH6q233tLXX3+tHTt26PHHH1fVqlWtM+yCgoJ011136amnntKPP/6oDRs2qF+/furWrZuqVq0qSXr00UflcDjUq1cv7dy5U/PmzdOkSZMUHR1t1TFgwAAtXbpU48aN0549ezRixAht3rxZ/fr1K+wpAQAAxZR7Ue588+bNatu2rXU/K8hERkYqJiZGL730ks6ePaunn35ap06d0h133KGlS5fK09PTeswnn3yifv36qX379nJ1dVWXLl00efJka7uvr6++++47RUVFKSQkRBUrVtSwYcOcruV0++23a86cORo6dKheeeUV1alTR19++aUaNGhQCLMAAABKgmJznaaSjus0AQBQsLhOEwAAQAlAaAIAALCB0AQAAGADoQkAAMAGQhMAAIANhCYAAAAbCE0AAAA2EJoAAABsIDQBAADYQGgCAACwgdAEAABgA6EJAADABkITAACADYQmAAAAGwhNAAAANhCaAAAAbCA0AQAA2EBoAgAAsIHQBAAAYAOhCQAAwAZCEwAAgA2EJgAAABsITQAAADYQmgAAAGwgNAEAANhAaAIAALCB0AQAAGADoQkAAMAGQhMAAIANhCYAAAAbCE0AAAA2EJoAAABsIDQBAADYQGgCAACwgdAEAABgA6EJAADABkITAACADYQmAAAAGwhNAAAANhCaAAAAbCA0AQAA2EBoAgAAsIHQBAAAYAOhCQAAwAZCEwAAgA2EJgAAABsITQAAADYQmgAAAGwgNAEAANhAaAIAALCB0AQAAGADoQkAAMAGQhMAAIANhCYAAAAbCE0AAAA2EJoAAABsIDQBAADYQGgCAACwgdB0halTp6pmzZry9PRU8+bN9eOPPxZ1SQAAoBggNF1m3rx5io6O1vDhw7VlyxbdeuutCg8P17Fjx4q6NAAAUMQITZcZP368nnrqKfXs2VPBwcGaMWOGSpcurQ8//LCoSwMAAEXMvagLKC7S0tIUFxenIUOGWG2urq4KCwtTbGxstv6pqalKTU217icnJ0uSUlJSCqS+C2fPFMi4AACUFAXxHps1pjHmun0JTf/n+PHjysjIkL+/v1O7v7+/9uzZk63/yJEj9frrr2drDwwMLLAaAQD4O3ulAMc+ffq0fH19r9mH0JRHQ4YMUXR0tHU/MzNTJ06cUIUKFeTi4pJv+0lJSVFgYKAOHTokHx+ffBsX2THX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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "l2g_gwas_sumstats=l2g_max_scores.join(gwascat_sumstats.select(\"studyLocusId\", \"studyId\"), on=\"studyLocusId\", how=\"inner\")\n", + "l2g_gwas_sumstats.select(\"score\").toPandas().plot.hist(bins=10, alpha=0.5, title=\"(top gene assignment), l2g_gwas_sumstats\")\n", + "\n", + "sample_size_quartiles = l2g_gwas_sumstats.stat.approxQuantile(\"score\", [0.25, 0.5, 0.75], 0.01)\n", + "print(\"Summary of l2g_gwas_sumstats PICS l2g scores: mean:\", l2g_gwas_sumstats.select(f.mean(l2g_gwas_sumstats[\"score\"])).collect()[0][0], \"L.quart: \", sample_size_quartiles[0], \"Median: \", sample_size_quartiles[1], \"U.quart: \", sample_size_quartiles[2])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "gentropy-NMtW8s8F-py3.10", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From dee3085f56a2aeb2c6870b3ea8ca263ed0892e1d Mon Sep 17 00:00:00 2001 From: Yakov Date: Thu, 21 Mar 2024 09:30:38 +0000 Subject: [PATCH 38/86] fix: small fixes in susie defaults (#552) --- src/gentropy/method/susie_inf.py | 4 ++-- tests/gentropy/method/test_susie_inf.py | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/gentropy/method/susie_inf.py b/src/gentropy/method/susie_inf.py index d493285a0..522f77193 100644 --- a/src/gentropy/method/susie_inf.py +++ b/src/gentropy/method/susie_inf.py @@ -34,7 +34,7 @@ def susie_inf( # noqa: C901 ssq_range: tuple[float, float] = (0, 1), pi0: np.ndarray | None = None, est_sigmasq: bool = True, - est_tausq: bool = True, + est_tausq: bool = False, sigmasq: float = 1, tausq: float = 0, sigmasq_range: tuple[float, float] | None = None, @@ -399,7 +399,7 @@ def g(x: float) -> float: def cred_inf( PIP: np.ndarray, n: int = 100_000, - coverage: float = 0.9, + coverage: float = 0.99, purity: float = 0.5, LD: np.ndarray | None = None, V: np.ndarray | None = None, diff --git a/tests/gentropy/method/test_susie_inf.py b/tests/gentropy/method/test_susie_inf.py index d8e855a5b..b671bf274 100644 --- a/tests/gentropy/method/test_susie_inf.py +++ b/tests/gentropy/method/test_susie_inf.py @@ -16,7 +16,7 @@ def test_SUSIE_inf_lbf_moments( ld = sample_data_for_susie_inf[0] z = sample_data_for_susie_inf[1] lbf_moments = sample_data_for_susie_inf[2] - susie_output = SUSIE_inf.susie_inf(z=z, LD=ld, method="moments") + susie_output = SUSIE_inf.susie_inf(z=z, LD=ld, est_tausq=True, method="moments") lbf_calc = susie_output["lbf_variable"][:, 0] assert np.allclose( lbf_calc, lbf_moments @@ -29,7 +29,7 @@ def test_SUSIE_inf_lbf_mle( ld = sample_data_for_susie_inf[0] z = sample_data_for_susie_inf[1] lbf_mle = sample_data_for_susie_inf[3] - susie_output = SUSIE_inf.susie_inf(z=z, LD=ld, method="MLE") + susie_output = SUSIE_inf.susie_inf(z=z, LD=ld, est_tausq=True, method="MLE") lbf_calc = susie_output["lbf_variable"][:, 0] assert np.allclose( lbf_calc, lbf_mle, atol=1e-1 @@ -41,6 +41,10 @@ def test_SUSIE_inf_cred( """Test of SuSiE-inf credible set generator.""" ld = sample_data_for_susie_inf[0] z = sample_data_for_susie_inf[1] - susie_output = SUSIE_inf.susie_inf(z=z, LD=ld) + susie_output = SUSIE_inf.susie_inf( + z=z, + LD=ld, + est_tausq=True, + ) cred = SUSIE_inf.cred_inf(susie_output["PIP"], LD=ld) assert cred[0] == [5] From 512a80aa13de404ead7940b0fe95e035241e8dc7 Mon Sep 17 00:00:00 2001 From: xyg123 <33658607+xyg123@users.noreply.github.com> Date: Thu, 21 Mar 2024 11:23:52 +0000 Subject: [PATCH 39/86] test(method): improved performance in coloc tests (#536) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: pytest for coloc unit tests * fix: removed unused coloc tests * test(coloc): add coloc semantic test (#538) * test(coloc): define fixtures and parametrise coloc tests * test(coloc): compare dfs with assert_frame_equal * fix: remove unused threshold variable --------- Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> Co-authored-by: David Ochoa --- .../coloc_test_data.snappy.parquet | Bin 11927 -> 0 bytes .../method/test_colocalisation_method.py | 233 ++++++------------ 2 files changed, 81 insertions(+), 152 deletions(-) delete mode 100644 tests/gentropy/data_samples/coloc_test_data.snappy.parquet diff --git a/tests/gentropy/data_samples/coloc_test_data.snappy.parquet b/tests/gentropy/data_samples/coloc_test_data.snappy.parquet deleted file mode 100644 index 71b3913ebfc68e1bc5e0425b3915d59e66406684..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11927 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 diff --git a/tests/gentropy/method/test_colocalisation_method.py b/tests/gentropy/method/test_colocalisation_method.py index f90d54b3f..37613354c 100644 --- a/tests/gentropy/method/test_colocalisation_method.py +++ b/tests/gentropy/method/test_colocalisation_method.py @@ -2,11 +2,14 @@ from __future__ import annotations +from typing import Any + +import pytest from gentropy.dataset.colocalisation import Colocalisation from gentropy.dataset.study_locus_overlap import StudyLocusOverlap from gentropy.method.colocalisation import Coloc, ECaviar +from pandas.testing import assert_frame_equal from pyspark.sql import SparkSession -from pyspark.sql import functions as f def test_coloc(mock_study_locus_overlap: StudyLocusOverlap) -> None: @@ -14,165 +17,91 @@ def test_coloc(mock_study_locus_overlap: StudyLocusOverlap) -> None: assert isinstance(Coloc.colocalise(mock_study_locus_overlap), Colocalisation) -def test_coloc_colocalise( - spark: SparkSession, - threshold: float = 1e-5, -) -> None: - """Compare COLOC results with R implementation, using provided sample dataset from R package (StudyLocusOverlap).""" - test_overlap_df = spark.read.parquet( - "tests/gentropy/data_samples/coloc_test_data.snappy.parquet", header=True - ) - test_overlap = StudyLocusOverlap(test_overlap_df, StudyLocusOverlap.get_schema()) - test_result = Coloc.colocalise(test_overlap) - - expected = spark.createDataFrame( - [ - { - "h0": 1.3769995397857477e-18, - "h1": 2.937336451601565e-10, - "h2": 8.593226431647826e-12, - "h3": 8.338916748775843e-4, - "h4": 0.9991661080227981, - } - ] - ) - difference = test_result.df.select("h0", "h1", "h2", "h3", "h4").subtract(expected) - for col in difference.columns: - assert difference.filter(f.abs(f.col(col)) > threshold).count() == 0 - - -def test_single_snp_coloc( - spark: SparkSession, - threshold: float = 1e-5, -) -> None: - """Test edge case of coloc where only one causal SNP is present in the StudyLocusOverlap.""" - test_overlap_df = spark.createDataFrame( - [ - { - "leftStudyLocusId": 1, - "rightStudyLocusId": 2, - "chromosome": "1", - "tagVariantId": "snp", - "left_logBF": 10.3, - "right_logBF": 10.5, - } - ] - ) - test_overlap = StudyLocusOverlap( - test_overlap_df.select( - "leftStudyLocusId", - "rightStudyLocusId", - "chromosome", - "tagVariantId", - f.struct(f.col("left_logBF"), f.col("right_logBF")).alias("statistics"), +@pytest.mark.parametrize( + "observed_data, expected_data", + [ + # associations with a single overlapping SNP + ( + # observed overlap + [ + { + "leftStudyLocusId": 1, + "rightStudyLocusId": 2, + "chromosome": "1", + "tagVariantId": "snp", + "statistics": {"left_logBF": 10.3, "right_logBF": 10.5}, + }, + ], + # expected coloc + [ + { + "h0": 9.254841951638903e-5, + "h1": 2.7517068829182966e-4, + "h2": 3.3609423764447284e-4, + "h3": 9.254841952564387e-13, + "h4": 0.9992961866536217, + }, + ], ), - StudyLocusOverlap.get_schema(), - ) - test_result = Coloc.colocalise(test_overlap) - - expected = spark.createDataFrame( - [ - { - "h0": 9.254841951638903e-5, - "h1": 2.7517068829182966e-4, - "h2": 3.3609423764447284e-4, - "h3": 9.254841952564387e-13, - "h4": 0.9992961866536217, - } - ] - ) - difference = test_result.df.select("h0", "h1", "h2", "h3", "h4").subtract(expected) - for col in difference.columns: - assert difference.filter(f.abs(f.col(col)) > threshold).count() == 0 - - -def test_single_snp_coloc_one_negative( + # associations with multiple overlapping SNPs + ( + # observed overlap + [ + { + "leftStudyLocusId": 1, + "rightStudyLocusId": 2, + "chromosome": "1", + "tagVariantId": "snp1", + "statistics": {"left_logBF": 10.3, "right_logBF": 10.5}, + }, + { + "leftStudyLocusId": 1, + "rightStudyLocusId": 2, + "chromosome": "1", + "tagVariantId": "snp2", + "statistics": {"left_logBF": 10.3, "right_logBF": 10.5}, + }, + ], + # expected coloc + [ + { + "h0": 4.6230151407950416e-5, + "h1": 2.749086942648107e-4, + "h2": 3.357742374172504e-4, + "h3": 9.983447421747411e-4, + "h4": 0.9983447421747356, + }, + ], + ), + ], +) +def test_coloc_semantic( spark: SparkSession, - threshold: float = 1e-5, + observed_data: list[Any], + expected_data: list[Any], ) -> None: - """Test edge case of coloc where only one causal SNP is present (On one side!) in the StudyLocusOverlap.""" - test_overlap_df = spark.createDataFrame( - [ - { - "leftStudyLocusId": 1, - "rightStudyLocusId": 2, - "chromosome": "1", - "tagVariantId": "snp", - "left_logBF": 18.3, - "right_logBF": 0.01, - } - ] + """Test our COLOC with the implementation in R.""" + observed_overlap = StudyLocusOverlap( + _df=spark.createDataFrame(observed_data, schema=StudyLocusOverlap.get_schema()), + _schema=StudyLocusOverlap.get_schema(), ) - test_overlap = StudyLocusOverlap( - test_overlap_df.select( - "leftStudyLocusId", - "rightStudyLocusId", - "chromosome", - "tagVariantId", - f.struct(f.col("left_logBF"), f.col("right_logBF")).alias("statistics"), - ), - StudyLocusOverlap.get_schema(), + observed_coloc_pdf = ( + Coloc.colocalise(observed_overlap) + .df.select("h0", "h1", "h2", "h3", "h4") + .toPandas() ) - test_result = Coloc.colocalise(test_overlap) - test_result.df.show(1, False) - expected = spark.createDataFrame( - [ - { - "h0": 1.0246538505087709e-4, - "h1": 0.9081680002273896, - "h2": 1.0349517929098209e-8, - "h3": 1.0246538506112363e-12, - "h4": 0.09172952403701702, - } - ] + expected_coloc_pdf = ( + spark.createDataFrame(expected_data) + .select("h0", "h1", "h2", "h3", "h4") + .toPandas() ) - difference = test_result.df.select("h0", "h1", "h2", "h3", "h4").subtract(expected) - for col in difference.columns: - assert difference.filter(f.abs(f.col(col)) > threshold).count() == 0 - -def test_single_snp_coloc_both_negative( - spark: SparkSession, - threshold: float = 1e-5, -) -> None: - """Test edge case of coloc where only one non-causal SNP overlaps in the StudyLocusOverlap.""" - test_overlap_df = spark.createDataFrame( - [ - { - "leftStudyLocusId": 1, - "rightStudyLocusId": 2, - "chromosome": "1", - "tagVariantId": "snp", - "left_logBF": 0.03, - "right_logBF": 0.01, - } - ] - ) - test_overlap = StudyLocusOverlap( - test_overlap_df.select( - "leftStudyLocusId", - "rightStudyLocusId", - "chromosome", - "tagVariantId", - f.struct(f.col("left_logBF"), f.col("right_logBF")).alias("statistics"), - ), - StudyLocusOverlap.get_schema(), - ) - test_result = Coloc.colocalise(test_overlap) - expected = spark.createDataFrame( - [ - { - "h0": 0.9997855774090624, - "h1": 1.0302335812225042e-4, - "h2": 1.0098335895103664e-4, - "h3": 9.9978557750904e-9, - "h4": 1.0405876008495098e-5, - } - ] + assert_frame_equal( + observed_coloc_pdf, + expected_coloc_pdf, + check_exact=False, + check_dtype=True, ) - difference = test_result.df.select("h0", "h1", "h2", "h3", "h4").subtract(expected) - for col in difference.columns: - assert difference.filter(f.abs(f.col(col)) > threshold).count() == 0 def test_ecaviar(mock_study_locus_overlap: StudyLocusOverlap) -> None: From 232b1e0b3685a5af842191b5a6c871d51630a04b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Irene=20L=C3=B3pez?= <45119610+ireneisdoomed@users.noreply.github.com> Date: Fri, 22 Mar 2024 13:59:05 +0000 Subject: [PATCH 40/86] perf(l2g): optimise extraction of features from colocalisation results (#553) * perf(l2g): rewrite ColocalisationFactory._get_max_coloc_per_credible_set * perf(l2g): more elegant rewrite ColocalisationFactory._get_max_coloc_per_credible_set * chore: adapt tests to changes * refactor: import colocalisation attributes --- src/gentropy/dataset/l2g_feature_matrix.py | 15 +- src/gentropy/method/colocalisation.py | 9 +- src/gentropy/method/l2g/feature_factory.py | 185 +++++++++----------- tests/gentropy/method/test_locus_to_gene.py | 20 +-- 4 files changed, 94 insertions(+), 135 deletions(-) diff --git a/src/gentropy/dataset/l2g_feature_matrix.py b/src/gentropy/dataset/l2g_feature_matrix.py index 948477600..e5be1a019 100644 --- a/src/gentropy/dataset/l2g_feature_matrix.py +++ b/src/gentropy/dataset/l2g_feature_matrix.py @@ -5,8 +5,6 @@ from functools import reduce from typing import TYPE_CHECKING, Type -from pyspark.sql.functions import col - from gentropy.common.schemas import parse_spark_schema from gentropy.common.spark_helpers import convert_from_long_to_wide from gentropy.dataset.dataset import Dataset @@ -62,22 +60,13 @@ def generate_features( Raises: ValueError: If the feature matrix is empty """ - coloc_methods = ( - colocalisation.df.select("colocalisationMethod") - .distinct() - .toPandas()["colocalisationMethod"] - .tolist() - ) if features_dfs := [ # Extract features ColocalisationFactory._get_max_coloc_per_credible_set( + colocalisation, credible_set, study_index, - colocalisation.filter(col("colocalisationMethod") == method), - method, - ).df - for method in coloc_methods - ] + [ + ).df, StudyLocusFactory._get_tss_distance_features(credible_set, variant_gene).df, StudyLocusFactory._get_vep_features(credible_set, variant_gene).df, ]: diff --git a/src/gentropy/method/colocalisation.py b/src/gentropy/method/colocalisation.py index 3e4e91c74..eaf5b9de6 100644 --- a/src/gentropy/method/colocalisation.py +++ b/src/gentropy/method/colocalisation.py @@ -26,6 +26,9 @@ class ECaviar: It extends [CAVIAR](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5142122/#bib18) framework to explicitly estimate the posterior probability that the same variant is causal in 2 studies while accounting for the uncertainty of LD. eCAVIAR computes the colocalization posterior probability (**CLPP**) by utilizing the marginal posterior probabilities. This framework allows for **multiple variants to be causal** in a single locus. """ + METHOD_NAME: str = "eCAVIAR" + METHOD_METRIC: str = "clpp" + @staticmethod def _get_clpp(left_pp: Column, right_pp: Column) -> Column: """Calculate the colocalisation posterior probability (CLPP). @@ -81,7 +84,7 @@ def colocalise( f.count("*").alias("numberColocalisingVariants"), f.sum(f.col("clpp")).alias("clpp"), ) - .withColumn("colocalisationMethod", f.lit("eCAVIAR")) + .withColumn("colocalisationMethod", f.lit(cls.METHOD_NAME)) ), _schema=Colocalisation.get_schema(), ) @@ -108,6 +111,8 @@ class Coloc: PSEUDOCOUNT (float): Pseudocount to avoid log(0). Defaults to 1e-10. """ + METHOD_NAME: str = "COLOC" + METHOD_METRIC: str = "llr" PSEUDOCOUNT: float = 1e-10 @staticmethod @@ -253,7 +258,7 @@ def colocalise( "lH3bf", "lH4bf", ) - .withColumn("colocalisationMethod", f.lit("COLOC")) + .withColumn("colocalisationMethod", f.lit(cls.METHOD_NAME)) ), _schema=Colocalisation.get_schema(), ) diff --git a/src/gentropy/method/l2g/feature_factory.py b/src/gentropy/method/l2g/feature_factory.py index 5373be108..f037b57b4 100644 --- a/src/gentropy/method/l2g/feature_factory.py +++ b/src/gentropy/method/l2g/feature_factory.py @@ -2,6 +2,7 @@ from __future__ import annotations from functools import reduce +from itertools import chain from typing import TYPE_CHECKING import pyspark.sql.functions as f @@ -12,6 +13,7 @@ ) from gentropy.dataset.l2g_feature import L2GFeature from gentropy.dataset.study_locus import CredibleInterval, StudyLocus +from gentropy.method.colocalisation import Coloc, ECaviar if TYPE_CHECKING: from pyspark.sql import Column, DataFrame @@ -24,164 +26,135 @@ class ColocalisationFactory: """Feature extraction in colocalisation.""" + @classmethod + def _add_colocalisation_metric(cls: type[ColocalisationFactory]) -> Column: + """Expression that adds a `colocalisationMetric` column to the colocalisation dataframe in preparation for feature extraction. + + Returns: + Column: The expression that adds a `colocalisationMetric` column with the derived metric + """ + method_metric_map = { + ECaviar.METHOD_NAME: ECaviar.METHOD_METRIC, + Coloc.METHOD_NAME: Coloc.METHOD_METRIC, + } + map_expr = f.create_map(*[f.lit(x) for x in chain(*method_metric_map.items())]) + return map_expr[f.col("colocalisationMethod")].alias("colocalisationMetric") + @staticmethod def _get_max_coloc_per_credible_set( + colocalisation: Colocalisation, credible_set: StudyLocus, studies: StudyIndex, - colocalisation: Colocalisation, - colocalisation_method: str, ) -> L2GFeature: """Get the maximum colocalisation posterior probability for each pair of overlapping study-locus per type of colocalisation method and QTL type. Args: + colocalisation (Colocalisation): Colocalisation dataset credible_set (StudyLocus): Study locus dataset studies (StudyIndex): Study index dataset - colocalisation (Colocalisation): Colocalisation dataset - colocalisation_method (str): Colocalisation method to extract the max from Returns: L2GFeature: Stores the features with the max coloc probabilities for each pair of study-locus - - Raises: - ValueError: If the colocalisation method is not supported """ - if colocalisation_method not in ["COLOC", "eCAVIAR"]: - raise ValueError( - f"Colocalisation method {colocalisation_method} not supported" - ) - if colocalisation_method == "COLOC": - coloc_score_col_name = "log2h4h3" - coloc_feature_col_template = "ColocLlrMaximum" - - elif colocalisation_method == "eCAVIAR": - coloc_score_col_name = "clpp" - coloc_feature_col_template = "ColocClppMaximum" + colocalisation_df = colocalisation.df.select( + f.col("leftStudyLocusId").alias("studyLocusId"), + "rightStudyLocusId", + f.coalesce("log2h4h3", "clpp").alias("score"), + ColocalisationFactory._add_colocalisation_metric(), + ) colocalising_credible_sets = ( credible_set.df.select("studyLocusId", "studyId") # annotate studyLoci with overlapping IDs on the left - to just keep GWAS associations .join( - colocalisation.df.selectExpr( - "leftStudyLocusId as studyLocusId", - "rightStudyLocusId", - "colocalisationMethod", - f"{coloc_score_col_name} as coloc_score", - ), + colocalisation_df, on="studyLocusId", how="inner", ) # bring study metadata to just keep QTL studies on the right .join( - credible_set.df.selectExpr( - "studyLocusId as rightStudyLocusId", "studyId as right_studyId" + credible_set.df.join( + studies.df.select("studyId", "studyType", "geneId"), "studyId" + ).selectExpr( + "studyLocusId as rightStudyLocusId", + "studyType as right_studyType", + "geneId", ), on="rightStudyLocusId", how="inner", ) - .join( - f.broadcast( - studies.df.selectExpr( - "studyId as right_studyId", - "studyType as right_studyType", - "geneId", - ) - ), - on="right_studyId", - how="inner", - ) - .filter( - (f.col("colocalisationMethod") == colocalisation_method) - & (f.col("right_studyType") != "gwas") + .filter(f.col("right_studyType") != "gwas") + .select( + "studyLocusId", + "right_studyType", + "geneId", + "score", + "colocalisationMetric", ) - .select("studyLocusId", "right_studyType", "geneId", "coloc_score") ) - # Max PP calculation per studyLocus AND type of QTL - local_max = get_record_with_maximum_value( - colocalising_credible_sets, - ["studyLocusId", "right_studyType", "geneId"], - "coloc_score", + # Max PP calculation per credible set AND type of QTL AND colocalisation method + local_max = ( + get_record_with_maximum_value( + colocalising_credible_sets, + ["studyLocusId", "right_studyType", "geneId", "colocalisationMetric"], + "score", + ) + .select( + "*", + f.col("score").alias("max_score"), + f.lit("Local").alias("score_type"), + ) + .drop("score") ) - intercept = 0.0001 neighbourhood_max = ( local_max.selectExpr( - "studyLocusId", "coloc_score as coloc_local_max", "geneId" + "studyLocusId", "max_score as local_max_score", "geneId" ) .join( # Add maximum in the neighborhood get_record_with_maximum_value( colocalising_credible_sets.withColumnRenamed( - "coloc_score", "coloc_neighborhood_max" + "score", "tmp_nbh_max_score" ), - ["studyLocusId", "right_studyType"], - "coloc_neighborhood_max", + ["studyLocusId", "right_studyType", "colocalisationMetric"], + "tmp_nbh_max_score", ).drop("geneId"), on="studyLocusId", ) + .withColumn("score_type", f.lit("Neighborhood")) .withColumn( - f"{coloc_feature_col_template}Neighborhood", + "max_score", f.log10( f.abs( - f.col("coloc_local_max") - - f.col("coloc_neighborhood_max") - + f.lit(intercept) + f.col("local_max_score") + - f.col("tmp_nbh_max_score") + + f.lit(0.0001) # intercept ) ), ) - ).drop("coloc_neighborhood_max", "coloc_local_max") - - # Split feature per molQTL - local_dfs = [] - nbh_dfs = [] - qtl_types: list[str] = ( - colocalising_credible_sets.select("right_studyType") - .distinct() - .toPandas()["right_studyType"] - .tolist() - ) - for qtl_type in qtl_types: - filtered_local_max = ( - local_max.filter(f.col("right_studyType") == qtl_type) - .withColumnRenamed( - "coloc_score", - f"{qtl_type}{coloc_feature_col_template}", - ) - .drop("right_studyType") - ) - local_dfs.append(filtered_local_max) - - filtered_neighbourhood_max = ( - neighbourhood_max.filter(f.col("right_studyType") == qtl_type) - .withColumnRenamed( - f"{coloc_feature_col_template}Neighborhood", - f"{qtl_type}{coloc_feature_col_template}Neighborhood", - ) - .drop("right_studyType") - ) - nbh_dfs.append(filtered_neighbourhood_max) - - wide_dfs = reduce( - lambda x, y: x.unionByName(y, allowMissingColumns=True), - local_dfs + nbh_dfs, - ) + ).drop("tmp_nbh_max_score", "local_max_score") return L2GFeature( - _df=convert_from_wide_to_long( - wide_dfs.groupBy("studyLocusId", "geneId").agg( - *( - f.first(f.col(c), ignorenulls=True).alias(c) - for c in wide_dfs.columns - if c - not in [ - "studyLocusId", - "geneId", - ] - ) - ), - id_vars=("studyLocusId", "geneId"), - var_name="featureName", - value_name="featureValue", + _df=( + # Combine local and neighborhood metrics + local_max.unionByName( + neighbourhood_max, allowMissingColumns=True + ).select( + "studyLocusId", + "geneId", + # Feature name is a concatenation of the QTL type, colocalisation metric and if it's local or in the vicinity + f.concat_ws( + "", + f.col("right_studyType"), + f.lit("Coloc"), + f.initcap(f.col("colocalisationMetric")), + f.lit("Maximum"), + f.regexp_replace(f.col("score_type"), "Local", ""), + ).alias("featureName"), + f.col("max_score").cast("float").alias("featureValue"), + ) ), _schema=L2GFeature.get_schema(), ) diff --git a/tests/gentropy/method/test_locus_to_gene.py b/tests/gentropy/method/test_locus_to_gene.py index 3976406c9..898252f9f 100644 --- a/tests/gentropy/method/test_locus_to_gene.py +++ b/tests/gentropy/method/test_locus_to_gene.py @@ -80,30 +80,21 @@ def test_train( class TestColocalisationFactory: """Test the ColocalisationFactory methods.""" - @pytest.mark.parametrize( - "colocalisation_method", - [ - "COLOC", - "eCAVIAR", - ], - ) def test_get_max_coloc_per_credible_set( self: TestColocalisationFactory, mock_study_locus: StudyLocus, mock_study_index: StudyIndex, mock_colocalisation: Colocalisation, - colocalisation_method: str, ) -> None: """Test the function that extracts the maximum log likelihood ratio for each pair of overlapping study-locus returns the right data type.""" coloc_features = ColocalisationFactory._get_max_coloc_per_credible_set( + mock_colocalisation, mock_study_locus, mock_study_index, - mock_colocalisation, - colocalisation_method, ) assert isinstance( coloc_features, L2GFeature - ), "Unexpected model type returned from _get_max_coloc_per_credible_set" + ), "Unexpected type returned from _get_max_coloc_per_credible_set" def test_get_max_coloc_per_credible_set_semantic( self: TestColocalisationFactory, @@ -169,8 +160,10 @@ def test_get_max_coloc_per_credible_set_semantic( "colocalisationMethod": "eCAVIAR", "numberColocalisingVariants": 1, "clpp": 0.81, # 0.9*0.9 + "log2h4h3": None, } - ] + ], + schema=Colocalisation.get_schema(), ), _schema=Colocalisation.get_schema(), ) @@ -183,10 +176,9 @@ def test_get_max_coloc_per_credible_set_semantic( ) # Test coloc_features = ColocalisationFactory._get_max_coloc_per_credible_set( + coloc, credset, studies, - coloc, - "eCAVIAR", ) assert coloc_features.df.collect() == expected_coloc_features_df.collect() From 8f9d2680edb25545f71d9df518989f6e817ac233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Irene=20L=C3=B3pez?= <45119610+ireneisdoomed@users.noreply.github.com> Date: Fri, 22 Mar 2024 18:01:05 +0000 Subject: [PATCH 41/86] fix(coloc): handle cases when the bayes factors are null (#556) * fix(coloc): fillna doesnt fill nested data * test(coloc): added test_coloc_no_logbf (semantic) * revert(ecaviar): revert accidental changes --- src/gentropy/method/colocalisation.py | 18 +++---- .../method/test_colocalisation_method.py | 52 +++++++++++++++++++ 2 files changed, 61 insertions(+), 9 deletions(-) diff --git a/src/gentropy/method/colocalisation.py b/src/gentropy/method/colocalisation.py index eaf5b9de6..18d97fdf8 100644 --- a/src/gentropy/method/colocalisation.py +++ b/src/gentropy/method/colocalisation.py @@ -159,24 +159,24 @@ def colocalise( posteriors = f.udf(Coloc._get_posteriors, VectorUDT()) return Colocalisation( _df=( - overlapping_signals.df + overlapping_signals.df.select("*", "statistics.*") # Before summing log_BF columns nulls need to be filled with 0: - .fillna(0, subset=["statistics.left_logBF", "statistics.right_logBF"]) + .fillna(0, subset=["left_logBF", "right_logBF"]) # Sum of log_BFs for each pair of signals .withColumn( "sum_log_bf", - f.col("statistics.left_logBF") + f.col("statistics.right_logBF"), + f.col("left_logBF") + f.col("right_logBF"), ) # Group by overlapping peak and generating dense vectors of log_BF: .groupBy("chromosome", "leftStudyLocusId", "rightStudyLocusId") .agg( f.count("*").alias("numberColocalisingVariants"), - fml.array_to_vector( - f.collect_list(f.col("statistics.left_logBF")) - ).alias("left_logBF"), - fml.array_to_vector( - f.collect_list(f.col("statistics.right_logBF")) - ).alias("right_logBF"), + fml.array_to_vector(f.collect_list(f.col("left_logBF"))).alias( + "left_logBF" + ), + fml.array_to_vector(f.collect_list(f.col("right_logBF"))).alias( + "right_logBF" + ), fml.array_to_vector(f.collect_list(f.col("sum_log_bf"))).alias( "sum_log_bf" ), diff --git a/tests/gentropy/method/test_colocalisation_method.py b/tests/gentropy/method/test_colocalisation_method.py index 37613354c..e58b0e562 100644 --- a/tests/gentropy/method/test_colocalisation_method.py +++ b/tests/gentropy/method/test_colocalisation_method.py @@ -10,6 +10,7 @@ from gentropy.method.colocalisation import Coloc, ECaviar from pandas.testing import assert_frame_equal from pyspark.sql import SparkSession +from pyspark.sql.types import DoubleType, LongType, StringType, StructField, StructType def test_coloc(mock_study_locus_overlap: StudyLocusOverlap) -> None: @@ -104,6 +105,57 @@ def test_coloc_semantic( ) +def test_coloc_no_logbf( + spark: SparkSession, + minimum_expected_h0: float = 0.99, + maximum_expected_h4: float = 1e-5, +) -> None: + """Test COLOC output when the input data has irrelevant logBF.""" + observed_overlap = StudyLocusOverlap( + ( + spark.createDataFrame( + [ + { + "leftStudyLocusId": 1, + "rightStudyLocusId": 2, + "chromosome": "1", + "tagVariantId": "snp", + "statistics": { + "left_logBF": None, + "right_logBF": None, + }, # irrelevant for COLOC + } + ], + schema=StructType( + [ + StructField("leftStudyLocusId", LongType(), False), + StructField("rightStudyLocusId", LongType(), False), + StructField("chromosome", StringType(), False), + StructField("tagVariantId", StringType(), False), + StructField( + "statistics", + StructType( + [ + StructField("left_logBF", DoubleType(), True), + StructField("right_logBF", DoubleType(), True), + ] + ), + ), + ] + ), + ) + ), + StudyLocusOverlap.get_schema(), + ) + observed_coloc_df = Coloc.colocalise(observed_overlap).df + assert ( + observed_coloc_df.select("h0").collect()[0]["h0"] > minimum_expected_h0 + ), "COLOC should return a high h0 (no association) when the input data has irrelevant logBF." + assert ( + observed_coloc_df.select("h4").collect()[0]["h4"] < maximum_expected_h4 + ), "COLOC should return a low h4 (traits are associated) when the input data has irrelevant logBF." + + def test_ecaviar(mock_study_locus_overlap: StudyLocusOverlap) -> None: """Test eCAVIAR.""" assert isinstance(ECaviar.colocalise(mock_study_locus_overlap), Colocalisation) From 255c42d4b6ad7cbf86a5fa0090bbbe7aaef4e53b Mon Sep 17 00:00:00 2001 From: Joris Louwen <62542407+louwenjjr@users.noreply.github.com> Date: Tue, 26 Mar 2024 17:24:03 +0100 Subject: [PATCH 42/86] fix(sumstats): correct study id for dir of finngen studies (#551) --- src/gentropy/datasource/finngen/summary_stats.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gentropy/datasource/finngen/summary_stats.py b/src/gentropy/datasource/finngen/summary_stats.py index 0d77f7d5c..08403bed5 100644 --- a/src/gentropy/datasource/finngen/summary_stats.py +++ b/src/gentropy/datasource/finngen/summary_stats.py @@ -50,7 +50,6 @@ def from_source( Returns: SummaryStatistics: Processed summary statistics dataset """ - study_id = raw_file.split("/")[-1].split(".")[0].upper() processed_summary_stats_df = ( spark.read.schema(cls.raw_schema) .option("delimiter", "\t") @@ -59,7 +58,11 @@ def from_source( .filter(f.col("pos").cast(t.IntegerType()).isNotNull()) .select( # From the full path, extracts just the filename, and converts to upper case to get the study ID. - f.lit(study_id).alias("studyId"), + f.upper( + f.regexp_extract( + f.input_file_name(), r"([^/]+)(\.tsv\.gz|\.gz|\.tsv)", 1 + ) + ).alias("studyId"), # Add variant information. f.concat_ws( "_", From d76ebbef03a130a43d9d89a5daa21c24f9a88907 Mon Sep 17 00:00:00 2001 From: Yakov Date: Tue, 2 Apr 2024 14:52:29 +0100 Subject: [PATCH 43/86] feat: add the step class for fine-mapping (#554) * feat: add the step class for fine-mapping * test: adding test for susie to studylocus converter * chore: fix the class description * chore: answering comments --------- Co-authored-by: Daniel Suveges --- src/gentropy/susie_finemapper.py | 140 ++++++++++++++++++++++++ tests/gentropy/method/test_susie_inf.py | 29 +++++ 2 files changed, 169 insertions(+) create mode 100644 src/gentropy/susie_finemapper.py diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py new file mode 100644 index 000000000..bd02716c2 --- /dev/null +++ b/src/gentropy/susie_finemapper.py @@ -0,0 +1,140 @@ +"""Step to run a finemapping using.""" + +from __future__ import annotations + +from typing import Any + +import numpy as np +import pyspark.sql.functions as f +from pyspark.sql import DataFrame, Window + +from gentropy.common.session import Session +from gentropy.dataset.study_locus import StudyLocus + + +class SusieFineMapperStep: + """SuSie finemaping. It has generic methods to run SuSie fine mapping for a study locus. + + This class/step is the temporary solution of the fine-mapping warpper for the development purposes. + In the future this step will be refactored and moved to the methods module. + """ + + @staticmethod + def susie_inf_to_studylocus( + susie_output: dict[str, Any], + session: Session, + _studyId: str, + _region: str, + variant_index: DataFrame, + cs_lbf_thr: float = 2, + ) -> StudyLocus: + """Convert SuSiE-inf output to studyLocus DataFrame. + + Args: + susie_output (dict[str, Any]): SuSiE-inf output dictionary + session (Session): Spark session + _studyId (str): study ID + _region (str): region + variant_index (DataFrame): DataFrame with variant information + cs_lbf_thr (float): credible set logBF threshold, default is 2 + + Returns: + StudyLocus: StudyLocus object with fine-mapped credible sets + """ + variants = np.array( + [row["variantId"] for row in variant_index.select("variantId").collect()] + ).reshape(-1, 1) + PIPs = susie_output["PIP"] + lbfs = susie_output["lbf_variable"] + mu = susie_output["mu"] + susie_result = np.hstack((variants, PIPs, lbfs, mu)) + + L_snps = PIPs.shape[1] + + # Extracting credible sets + order_creds = list(enumerate(susie_output["lbf"])) + order_creds.sort(key=lambda x: x[1], reverse=True) + cred_sets = None + counter = 0 + for i, cs_lbf_value in order_creds: + if counter > 0 and cs_lbf_value < cs_lbf_thr: + counter += 1 + continue + counter += 1 + sorted_arr = susie_result[ + susie_result[:, i + 1].astype(float).argsort()[::-1] + ] + cumsum_arr = np.cumsum(sorted_arr[:, i + 1].astype(float)) + filter_row = np.argmax(cumsum_arr >= 0.99) + if filter_row == 0 and cumsum_arr[0] < 0.99: + filter_row = len(cumsum_arr) + filter_row += 1 + filtered_arr = sorted_arr[:filter_row] + cred_set = filtered_arr[:, [0, i + 1, i + L_snps + 1, i + 2 * L_snps + 1]] + win = Window.rowsBetween( + Window.unboundedPreceding, Window.unboundedFollowing + ) + cred_set = ( + session.spark.createDataFrame( + cred_set.tolist(), + ["variantId", "posteriorProbability", "logBF", "beta"], + ) + .join( + variant_index.select( + "variantId", + "chromosome", + "position", + ), + "variantId", + ) + .sort(f.desc("posteriorProbability")) + .withColumn( + "locus", + f.collect_list( + f.struct( + f.col("variantId").cast("string").alias("variantId"), + f.col("posteriorProbability") + .cast("double") + .alias("posteriorProbability"), + f.col("logBF").cast("double").alias("logBF"), + f.col("beta").cast("double").alias("beta"), + ) + ).over(win), + ) + .limit(1) + .withColumns( + { + "studyId": f.lit(_studyId), + "region": f.lit(_region), + "credibleSetIndex": f.lit(counter), + "credibleSetlog10BF": f.lit(cs_lbf_value * 0.4342944819), + "finemappingMethod": f.lit("SuSiE-inf"), + } + ) + .withColumn( + "studyLocusId", + StudyLocus.assign_study_locus_id( + f.col("studyId"), f.col("variantId") + ), + ) + .select( + "studyLocusId", + "studyId", + "region", + "credibleSetIndex", + "locus", + "variantId", + "chromosome", + "position", + "finemappingMethod", + "credibleSetlog10BF", + ) + ) + if cred_sets is None: + cred_sets = cred_set + else: + cred_sets = cred_sets.unionByName(cred_set) + return StudyLocus( + _df=cred_sets, + _schema=StudyLocus.get_schema(), + ) diff --git a/tests/gentropy/method/test_susie_inf.py b/tests/gentropy/method/test_susie_inf.py index b671bf274..393f786d7 100644 --- a/tests/gentropy/method/test_susie_inf.py +++ b/tests/gentropy/method/test_susie_inf.py @@ -3,7 +3,11 @@ from __future__ import annotations import numpy as np +from gentropy.common.session import Session +from gentropy.dataset.study_locus import StudyLocus +from gentropy.dataset.summary_statistics import SummaryStatistics from gentropy.method.susie_inf import SUSIE_inf +from gentropy.susie_finemapper import SusieFineMapperStep class TestSUSIE_inf: @@ -48,3 +52,28 @@ def test_SUSIE_inf_cred( ) cred = SUSIE_inf.cred_inf(susie_output["PIP"], LD=ld) assert cred[0] == [5] + + def test_SUSIE_inf_convert_to_study_locus( + self: TestSUSIE_inf, + sample_data_for_susie_inf: list[np.ndarray], + sample_summary_statistics: SummaryStatistics, + session: Session, + ) -> None: + """Test of SuSiE-inf credible set generator.""" + ld = sample_data_for_susie_inf[0] + z = sample_data_for_susie_inf[1] + susie_output = SUSIE_inf.susie_inf( + z=z, + LD=ld, + est_tausq=False, + ) + gwas_df = sample_summary_statistics._df.limit(21) + L1 = SusieFineMapperStep.susie_inf_to_studylocus( + susie_output=susie_output, + session=session, + _studyId="sample_id", + _region="sample_region", + variant_index=gwas_df, + cs_lbf_thr=2, + ) + assert isinstance(L1, StudyLocus), "L1 is not an instance of StudyLocus" From 56067e7562e3369dcee8e109093519ba66512567 Mon Sep 17 00:00:00 2001 From: Daniel-Considine <113430683+Daniel-Considine@users.noreply.github.com> Date: Wed, 3 Apr 2024 13:37:46 +0100 Subject: [PATCH 44/86] feat: LD index and block matrix extraction for a studyLocus (#463) * test: adding test for pairwiseLD * feat: adding ld matrix extraction * chore: merge from dev * feat: index and block matrix extraction for studyLocus * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * chore: updating some test files to gentropy * chore: updating tests * chore: updating pairwise_ld_schema for tests * chore: updating pairwise_ld tests * chore: fix ld_pairwise tests * chore: fix pairwise_ld tests * chore: fix tests * chore: fix tests * chore: fixing typing for tests * chore: fixing tests * chore: fixing ld tests * Update src/gentropy/dataset/study_index.py Co-authored-by: Daniel Suveges * feat: moving functions to their appropriate locations and improving logic * fix: optimise conversion of BM to NumPy * feat: updating get_locus_index to allow for just chromosome and position inputs * fix: suggested changes * Update study_index.py * fix: changes to datasource/gnomad/ld.py * feat: updated method for ld_index extraction * fix: sorting idx in hail --------- Co-authored-by: Daniel Suveges Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/gentropy/assets/schemas/pairwise_ld.json | 23 ++++ src/gentropy/dataset/pairwise_ld.py | 104 ++++++++++++++ src/gentropy/datasource/gnomad/ld.py | 135 ++++++++++++++----- tests/gentropy/dataset/test_pairwise_ld.py | 102 ++++++++++++++ 4 files changed, 332 insertions(+), 32 deletions(-) create mode 100644 src/gentropy/assets/schemas/pairwise_ld.json create mode 100644 src/gentropy/dataset/pairwise_ld.py create mode 100644 tests/gentropy/dataset/test_pairwise_ld.py diff --git a/src/gentropy/assets/schemas/pairwise_ld.json b/src/gentropy/assets/schemas/pairwise_ld.json new file mode 100644 index 000000000..bac781ac3 --- /dev/null +++ b/src/gentropy/assets/schemas/pairwise_ld.json @@ -0,0 +1,23 @@ +{ + "fields": [ + { + "metadata": {}, + "name": "variantIdI", + "nullable": false, + "type": "string" + }, + { + "metadata": {}, + "name": "variantIdJ", + "nullable": false, + "type": "string" + }, + { + "metadata": {}, + "name": "r", + "nullable": false, + "type": "double" + } + ], + "type": "struct" +} diff --git a/src/gentropy/dataset/pairwise_ld.py b/src/gentropy/dataset/pairwise_ld.py new file mode 100644 index 000000000..9650efa32 --- /dev/null +++ b/src/gentropy/dataset/pairwise_ld.py @@ -0,0 +1,104 @@ +"""Pairwise LD dataset.""" +from __future__ import annotations + +from dataclasses import dataclass, field +from math import sqrt +from typing import TYPE_CHECKING + +import numpy as np +from pyspark.sql import functions as f +from pyspark.sql import types as t + +from gentropy.common.schemas import parse_spark_schema +from gentropy.dataset.dataset import Dataset + +if TYPE_CHECKING: + from pyspark.sql.types import StructType + + +@dataclass +class PairwiseLD(Dataset): + """Pairwise variant correlation dataset. + + This class captures logic applied on pairwise linkage data + by validation ensuring data quality. + """ + + dimension: tuple[int, int] = field(init=False) + + def __post_init__(self: PairwiseLD) -> None: + """Validating the dataset upon creation. + + - Besides the schema, a pairwise LD table is expected have rows being a square number. + """ + row_count = self.df.count() + + assert ( + int(sqrt(row_count)) == sqrt(row_count) + ), f"The number of rows in a pairwise LD table has to be square. Got: {row_count}" + + self.dimension = (int(sqrt(row_count)), int(sqrt(row_count))) + + @classmethod + def get_schema(cls: type[PairwiseLD]) -> StructType: + """Provide the schema for the StudyIndex dataset. + + Returns: + StructType: The schema of the StudyIndex dataset. + """ + return parse_spark_schema("pairwise_ld.json") + + def overlap_with_locus(self: PairwiseLD, locus_variants: list[str]) -> PairwiseLD: + """Subset pairwise LD table with locus. + + Args: + locus_variants (list[str]): List of variants found in the locus. + + Returns: + PairwiseLD: _description_ + """ + return PairwiseLD( + _df=( + self.df.filter( + f.col("variantIdI").isin(locus_variants) + & f.col("variantIdJ").isin(locus_variants) + ) + ), + _schema=PairwiseLD.get_schema(), + ) + + def r_to_numpy_matrix(self) -> np.ndarray: + """Convert pairwise LD to a numpy square matrix. + + Returns: + np.ndarray: 2D square matrix with r values. + """ + return np.array( + self.df.select( + f.split("variantIdI", "_")[1].cast(t.IntegerType()).alias("position_i"), + f.split("variantIdJ", "_")[1].cast(t.IntegerType()).alias("position_j"), + "r", + ) + .orderBy(f.col("position_i").asc(), f.col("position_j").asc()) + .select("r") + .collect() + ).reshape(self.dimension) + + def get_variant_list(self) -> list[str]: + """Return a list of unique variants from the dataset. + + Returns: + list[str]: list of variant identifiers sorted by position. + """ + return [ + row["variantId"] + for row in ( + self.df.select( + f.col("variantIdI").alias("variantId"), + f.split(f.col("variantIdI"), "_")[1] + .cast(t.IntegerType()) + .alias("position"), + ) + .orderBy(f.col("position").asc()) + .collect() + ) + ] diff --git a/src/gentropy/datasource/gnomad/ld.py b/src/gentropy/datasource/gnomad/ld.py index 1d2d6c18f..a19cbb06b 100644 --- a/src/gentropy/datasource/gnomad/ld.py +++ b/src/gentropy/datasource/gnomad/ld.py @@ -7,6 +7,7 @@ from typing import TYPE_CHECKING import hail as hl +import numpy as np import pyspark.sql.functions as f from hail.linalg import BlockMatrix from pyspark.sql import Window @@ -16,7 +17,7 @@ from gentropy.dataset.ld_index import LDIndex if TYPE_CHECKING: - from pyspark.sql import DataFrame + from pyspark.sql import DataFrame, Row @dataclass @@ -34,6 +35,7 @@ class GnomADLDMatrix: ld_matrix_template: str = "gs://gcp-public-data--gnomad/release/2.1.1/ld/gnomad.genomes.r2.1.1.{POP}.common.adj.ld.bm" ld_index_raw_template: str = "gs://gcp-public-data--gnomad/release/2.1.1/ld/gnomad.genomes.r2.1.1.{POP}.common.ld.variant_indices.ht" + liftover_ht_path: str = "gs://gcp-public-data--gnomad/release/2.1.1/liftover_grch38/ht/genomes/gnomad.genomes.r2.1.1.sites.liftover_grch38.ht" grch37_to_grch38_chain_path: str = ( "gs://hail-common/references/grch37_to_grch38.over.chain.gz" ) @@ -218,9 +220,9 @@ def _resolve_variant_indices( DataFrame: Dataframe with variant IDs instead of `i` and `j` indices """ ld_index_i = ld_index.selectExpr( - "idx as i", "variantId as variantId_i", "chromosome" + "idx as i", "variantId as variantIdI", "chromosome" ) - ld_index_j = ld_index.selectExpr("idx as j", "variantId as variantId_j") + ld_index_j = ld_index.selectExpr("idx as j", "variantId as variantIdJ") return ( ld_matrix.join(ld_index_i, on="i", how="inner") .join(ld_index_j, on="j", how="inner") @@ -238,35 +240,35 @@ def _transpose_ld_matrix(ld_matrix: DataFrame) -> DataFrame: DataFrame: Square LD matrix without diagonal duplicates Examples: - >>> df = spark.createDataFrame( - ... [ - ... (1, 1, 1.0, "1", "AFR"), - ... (1, 2, 0.5, "1", "AFR"), - ... (2, 2, 1.0, "1", "AFR"), - ... ], - ... ["variantId_i", "variantId_j", "r", "chromosome", "population"], - ... ) - >>> GnomADLDMatrix._transpose_ld_matrix(df).show() - +-----------+-----------+---+----------+----------+ - |variantId_i|variantId_j| r|chromosome|population| - +-----------+-----------+---+----------+----------+ - | 1| 2|0.5| 1| AFR| - | 1| 1|1.0| 1| AFR| - | 2| 1|0.5| 1| AFR| - | 2| 2|1.0| 1| AFR| - +-----------+-----------+---+----------+----------+ - + >>> df = spark.createDataFrame( + ... [ + ... (1, 1, 1.0, "1", "AFR"), + ... (1, 2, 0.5, "1", "AFR"), + ... (2, 2, 1.0, "1", "AFR"), + ... ], + ... ["variantIdI", "variantIdJ", "r", "chromosome", "population"], + ... ) + >>> GnomADLDMatrix._transpose_ld_matrix(df).show() + +----------+----------+---+----------+----------+ + |variantIdI|variantIdJ| r|chromosome|population| + +----------+----------+---+----------+----------+ + | 1| 2|0.5| 1| AFR| + | 1| 1|1.0| 1| AFR| + | 2| 1|0.5| 1| AFR| + | 2| 2|1.0| 1| AFR| + +----------+----------+---+----------+----------+ + """ ld_matrix_transposed = ld_matrix.selectExpr( - "variantId_i as variantId_j", - "variantId_j as variantId_i", + "variantIdI as variantIdJ", + "variantIdJ as variantIdI", "r", "chromosome", "population", ) - return ld_matrix.filter( - f.col("variantId_i") != f.col("variantId_j") - ).unionByName(ld_matrix_transposed) + return ld_matrix.filter(f.col("variantIdI") != f.col("variantIdJ")).unionByName( + ld_matrix_transposed + ) def as_ld_index( self: GnomADLDMatrix, @@ -307,8 +309,8 @@ def as_ld_index( GnomADLDMatrix._transpose_ld_matrix( reduce(lambda df1, df2: df1.unionByName(df2), ld_indices_unaggregated) ) - .withColumnRenamed("variantId_i", "variantId") - .withColumnRenamed("variantId_j", "tagVariantId") + .withColumnRenamed("variantIdI", "variantId") + .withColumnRenamed("variantIdJ", "tagVariantId") ) return LDIndex( _df=self._aggregate_ld_index_across_populations(ld_index_unaggregated), @@ -345,7 +347,6 @@ def get_ld_variants( & (f.col("position") <= end) ) .select("chromosome", "position", "variantId", "idx") - .persist() ) if ld_index_df.limit(1).count() == 0: @@ -395,7 +396,7 @@ def _extract_square_matrix( .join( ld_index_df.select( f.col("idx").alias("idx_i"), - f.col("variantId").alias("variantId_i"), + f.col("variantId").alias("variantIdI"), ), on="idx_i", how="inner", @@ -403,12 +404,12 @@ def _extract_square_matrix( .join( ld_index_df.select( f.col("idx").alias("idx_j"), - f.col("variantId").alias("variantId_j"), + f.col("variantId").alias("variantIdJ"), ), on="idx_j", how="inner", ) - .select("variantId_i", "variantId_j", "r") + .select("variantIdI", "variantIdJ", "r") ) def get_ld_matrix_slice( @@ -448,3 +449,73 @@ def get_ld_matrix_slice( .alias("r"), ) ) + + def get_locus_index( + self: GnomADLDMatrix, + study_locus_row: Row, + window_size: int = 1_000_000, + major_population: str = "nfe", + ) -> DataFrame: + """Extract hail matrix index from StudyLocus rows. + + Args: + study_locus_row (Row): Study-locus row + window_size (int): Window size to extract from gnomad matrix + major_population (str): Major population to extract from gnomad matrix, default is "nfe" + + Returns: + DataFrame: Returns the index of the gnomad matrix for the locus + + """ + chromosome = str("chr" + study_locus_row["chromosome"]) + start = study_locus_row["position"] - window_size // 2 + end = study_locus_row["position"] + window_size // 2 + + liftover_ht = hl.read_table(self.liftover_ht_path) + liftover_ht = ( + liftover_ht.filter( + (liftover_ht.locus.contig == chromosome) + & (liftover_ht.locus.position >= start) + & (liftover_ht.locus.position <= end) + ) + .key_by() + .select("locus", "alleles", "original_locus") + .key_by("original_locus", "alleles") + .naive_coalesce(20) + ) + + hail_index = hl.read_table( + self.ld_index_raw_template.format(POP=major_population) + ) + + joined_index = ( + liftover_ht.join(hail_index, how="inner").order_by("idx").to_spark() + ) + + return joined_index + + @staticmethod + def get_numpy_matrix( + locus_index: DataFrame, + gnomad_ancestry: str = "nfe", + ) -> np.ndarray: + """Extract the LD block matrix for a locus. + + Args: + locus_index (DataFrame): hail matrix variant index table + gnomad_ancestry (str): GnomAD major ancestry label eg. `nfe` + + Returns: + np.ndarray: LD block matrix for the locus + """ + idx = [row["idx"] for row in locus_index.select("idx").collect()] + + half_matrix = ( + BlockMatrix.read( + GnomADLDMatrix.ld_matrix_template.format(POP=gnomad_ancestry) + ) + .filter(idx, idx) + .to_numpy() + ) + + return (half_matrix + half_matrix.T) - np.diag(np.diag(half_matrix)) diff --git a/tests/gentropy/dataset/test_pairwise_ld.py b/tests/gentropy/dataset/test_pairwise_ld.py new file mode 100644 index 000000000..11ebf75ca --- /dev/null +++ b/tests/gentropy/dataset/test_pairwise_ld.py @@ -0,0 +1,102 @@ +"""Testing pairwise LD dataset.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +import numpy as np +import pytest +from gentropy.dataset.pairwise_ld import PairwiseLD +from pyspark.sql import functions as f +from pyspark.sql.window import Window + +if TYPE_CHECKING: + from pyspark.sql import SparkSession + + +class TestPairwiseLD: + """Test suit for pairwise LD dataset and associated methods.""" + + variants = [ + "1_8_A_C", + "1_9_A_C", + "1_10_A_C", + "1_99_A_C", + ] + + @pytest.fixture(scope="class") + def mock_pairwise_ld(self: TestPairwiseLD, spark: SparkSession) -> PairwiseLD: + """Generate a mock pairwise LD dataset. + + Args: + spark (SparkSession): _description_ + + Returns: + PairwiseLD: _description_ + """ + spark = spark.builder.getOrCreate() + + data = [(v1, v2) for v1 in self.variants for v2 in self.variants] + return PairwiseLD( + _df=( + spark.createDataFrame(data, ["variantIdI", "variantIdJ"]) + .withColumn( + "r", + f.row_number() + .over(Window.partitionBy(f.lit("x")).orderBy("variantIdI")) + .cast("double"), + ) + .withColumn( + "r", + f.when(f.col("variantIdI") == f.col("variantIdJ"), 1.0).otherwise( + f.col("r") + ), + ) + .persist() + ), + _schema=PairwiseLD.get_schema(), + ) + + @staticmethod + def test_pairwise_ld__type(mock_pairwise_ld: PairwiseLD) -> None: + """Testing type.""" + assert isinstance(mock_pairwise_ld, PairwiseLD) + + def test_pariwise_ld__get_variants( + self: TestPairwiseLD, mock_pairwise_ld: PairwiseLD + ) -> None: + """Testing function that returns list of variants from the LD table. + + Args: + mock_pairwise_ld (PairwiseLD): _description_ + """ + variant_set_expected = set(self.variants) + variant_set_from_data = set(mock_pairwise_ld.get_variant_list()) + + assert variant_set_from_data == variant_set_expected + + def test_pairwise_ld__r_to_numpy_matrix__type( + self: TestPairwiseLD, mock_pairwise_ld: PairwiseLD + ) -> None: + """Testing the returned numpy array.""" + assert isinstance(mock_pairwise_ld.r_to_numpy_matrix(), np.ndarray) + + def test_pairwise_ld__r_to_numpy_matrix__dimensions( + self: TestPairwiseLD, mock_pairwise_ld: PairwiseLD + ) -> None: + """Testing the returned numpy array.""" + assert mock_pairwise_ld.r_to_numpy_matrix().shape == ( + len(self.variants), + len(self.variants), + ) + + def test_pairwise_ld__overlap_with_locus( + self: TestPairwiseLD, mock_pairwise_ld: PairwiseLD + ) -> None: + """Testing the returned numpy array.""" + variant_subset = self.variants[1:3] + + assert ( + mock_pairwise_ld.overlap_with_locus(variant_subset).df.count() + == len(variant_subset) ** 2 + ) From e1d20f38e3a470d3b7340d054cee717640bd6870 Mon Sep 17 00:00:00 2001 From: Yakov Date: Fri, 5 Apr 2024 12:50:51 +0100 Subject: [PATCH 45/86] feat: the FineMapper function for one locus (#564) * test: adding test for pairwiseLD * feat: adding ld matrix extraction * chore: merge from dev * feat: index and block matrix extraction for studyLocus * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * chore: updating some test files to gentropy * chore: updating tests * chore: updating pairwise_ld_schema for tests * chore: updating pairwise_ld tests * chore: fix ld_pairwise tests * chore: fix pairwise_ld tests * chore: fix tests * chore: fix tests * chore: fixing typing for tests * chore: fixing tests * chore: fixing ld tests * Update src/gentropy/dataset/study_index.py Co-authored-by: Daniel Suveges * feat: moving functions to their appropriate locations and improving logic * fix: optimise conversion of BM to NumPy * feat: updating get_locus_index to allow for just chromosome and position inputs * fix: suggested changes * Update study_index.py * fix: changes to datasource/gnomad/ld.py * feat: add the draft of finemapper fucntion * feat: updated method for ld_index extraction * fix: changing input * fix: adding fillter by studyId * fix: sorting idx in hail * feat: add fine-mapping of one study_locus_row * fix: small fix in majpop * fix: small fixes in function * fix: using more spark before converting to pandas * fix: fix in test --------- Co-authored-by: Daniel Suveges Co-authored-by: Daniel Considine Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Daniel-Considine <113430683+Daniel-Considine@users.noreply.github.com> --- src/gentropy/susie_finemapper.py | 139 ++++++++++++++++++++++-- tests/gentropy/method/test_susie_inf.py | 5 +- 2 files changed, 135 insertions(+), 9 deletions(-) diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index bd02716c2..03e1c2a0b 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -5,11 +5,17 @@ from typing import Any import numpy as np +import pandas as pd import pyspark.sql.functions as f -from pyspark.sql import DataFrame, Window +from pyspark.sql import DataFrame, Row, Window +from pyspark.sql.types import IntegerType, StringType, StructField, StructType from gentropy.common.session import Session +from gentropy.dataset.study_index import StudyIndex from gentropy.dataset.study_locus import StudyLocus +from gentropy.dataset.summary_statistics import SummaryStatistics +from gentropy.datasource.gnomad.ld import GnomADLDMatrix +from gentropy.method.susie_inf import SUSIE_inf class SusieFineMapperStep: @@ -19,12 +25,129 @@ class SusieFineMapperStep: In the future this step will be refactored and moved to the methods module. """ + @staticmethod + def susie_finemapper_one_studylocus_row( + GWAS: SummaryStatistics, + session: Session, + study_locus_row: Row, + study_index: StudyIndex, + window: int = 1_000_000, + L: int = 10, + ) -> StudyLocus: + """Susie fine-mapper function that uses Summary Statstics, chromosome and position as inputs. + + Args: + GWAS (SummaryStatistics): GWAS summary statistics + session (Session): Spark session + study_locus_row (Row): StudyLocus row + study_index (StudyIndex): StudyIndex object + window (int): window size for fine-mapping + L (int): number of causal variants + + Returns: + StudyLocus: StudyLocus object with fine-mapped credible sets + """ + # PLEASE DO NOT REMOVE THIS LINE + pd.DataFrame.iteritems = pd.DataFrame.items + + chromosome = study_locus_row["chromosome"] + position = study_locus_row["position"] + studyId = study_locus_row["studyId"] + + study_index_df = study_index._df + study_index_df = study_index_df.filter(f.col("studyId") == studyId) + major_population = study_index_df.select( + "studyId", + f.array_max(f.col("ldPopulationStructure")) + .getItem("ldPopulation") + .alias("majorPopulation"), + ).collect()[0]["majorPopulation"] + + region = ( + chromosome + + ":" + + str(int(position - window / 2)) + + "-" + + str(int(position + window / 2)) + ) + + gwas_df = ( + GWAS.df.withColumn("z", f.col("beta") / f.col("standardError")) + .withColumn("chromosome", f.split(f.col("variantId"), "_")[0]) + .withColumn("position", f.split(f.col("variantId"), "_")[1]) + .filter(f.col("studyId") == studyId) + .filter(f.col("z").isNotNull()) + ) + + ld_index = ( + GnomADLDMatrix() + .get_locus_index( + study_locus_row=study_locus_row, + window_size=window, + major_population=major_population, + ) + .withColumn( + "variantId", + f.concat( + f.lit(chromosome), + f.lit("_"), + f.col("`locus.position`"), + f.lit("_"), + f.col("alleles").getItem(0), + f.lit("_"), + f.col("alleles").getItem(1), + ).cast("string"), + ) + ) + + # Filtering out the variants that are not in the LD matrix, we don't need them + gwas_index = gwas_df.join( + ld_index.select("variantId", "alleles", "idx"), on="variantId" + ).sort("idx") + + gnomad_ld = GnomADLDMatrix.get_numpy_matrix( + gwas_index, gnomad_ancestry=major_population + ) + + pd_df = gwas_index.toPandas() + z_to_fm = np.array(pd_df["z"]) + ld_to_fm = gnomad_ld + + susie_output = SUSIE_inf.susie_inf(z=z_to_fm, LD=ld_to_fm, L=L) + + schema = StructType( + [ + StructField("variantId", StringType(), True), + StructField("chromosome", StringType(), True), + StructField("position", IntegerType(), True), + ] + ) + pd_df["position"] = pd_df["position"].astype(int) + variant_index = session.spark.createDataFrame( + pd_df[ + [ + "variantId", + "chromosome", + "position", + ] + ], + schema=schema, + ) + + return SusieFineMapperStep.susie_inf_to_studylocus( + susie_output=susie_output, + session=session, + studyId=studyId, + region=region, + variant_index=variant_index, + ) + @staticmethod def susie_inf_to_studylocus( susie_output: dict[str, Any], session: Session, - _studyId: str, - _region: str, + studyId: str, + region: str, variant_index: DataFrame, cs_lbf_thr: float = 2, ) -> StudyLocus: @@ -33,8 +156,8 @@ def susie_inf_to_studylocus( Args: susie_output (dict[str, Any]): SuSiE-inf output dictionary session (Session): Spark session - _studyId (str): study ID - _region (str): region + studyId (str): study ID + region (str): region variant_index (DataFrame): DataFrame with variant information cs_lbf_thr (float): credible set logBF threshold, default is 2 @@ -44,6 +167,7 @@ def susie_inf_to_studylocus( variants = np.array( [row["variantId"] for row in variant_index.select("variantId").collect()] ).reshape(-1, 1) + PIPs = susie_output["PIP"] lbfs = susie_output["lbf_variable"] mu = susie_output["mu"] @@ -74,6 +198,7 @@ def susie_inf_to_studylocus( win = Window.rowsBetween( Window.unboundedPreceding, Window.unboundedFollowing ) + cred_set = ( session.spark.createDataFrame( cred_set.tolist(), @@ -104,8 +229,8 @@ def susie_inf_to_studylocus( .limit(1) .withColumns( { - "studyId": f.lit(_studyId), - "region": f.lit(_region), + "studyId": f.lit(studyId), + "region": f.lit(region), "credibleSetIndex": f.lit(counter), "credibleSetlog10BF": f.lit(cs_lbf_value * 0.4342944819), "finemappingMethod": f.lit("SuSiE-inf"), diff --git a/tests/gentropy/method/test_susie_inf.py b/tests/gentropy/method/test_susie_inf.py index 393f786d7..0129a5934 100644 --- a/tests/gentropy/method/test_susie_inf.py +++ b/tests/gentropy/method/test_susie_inf.py @@ -68,11 +68,12 @@ def test_SUSIE_inf_convert_to_study_locus( est_tausq=False, ) gwas_df = sample_summary_statistics._df.limit(21) + L1 = SusieFineMapperStep.susie_inf_to_studylocus( susie_output=susie_output, session=session, - _studyId="sample_id", - _region="sample_region", + studyId="sample_id", + region="sample_region", variant_index=gwas_df, cs_lbf_thr=2, ) From b76fd07909a717572e9038a5b02a53f907c61f43 Mon Sep 17 00:00:00 2001 From: Daniel-Considine <113430683+Daniel-Considine@users.noreply.github.com> Date: Fri, 5 Apr 2024 20:43:59 +0100 Subject: [PATCH 46/86] feat: susie_finemapper_ss_gathered() (#567) * feat: susie_finemapper_ss_gathered() * fix: docstring updates --- src/gentropy/susie_finemapper.py | 119 ++++++++++++++++++++++++++++++- 1 file changed, 117 insertions(+), 2 deletions(-) diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index 03e1c2a0b..c5d86b1a8 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -34,7 +34,7 @@ def susie_finemapper_one_studylocus_row( window: int = 1_000_000, L: int = 10, ) -> StudyLocus: - """Susie fine-mapper function that uses Summary Statstics, chromosome and position as inputs. + """Susie fine-mapper for StudyLocus row with SummaryStatistics object. Args: GWAS (SummaryStatistics): GWAS summary statistics @@ -151,7 +151,7 @@ def susie_inf_to_studylocus( variant_index: DataFrame, cs_lbf_thr: float = 2, ) -> StudyLocus: - """Convert SuSiE-inf output to studyLocus DataFrame. + """Convert SuSiE-inf output to StudyLocus DataFrame. Args: susie_output (dict[str, Any]): SuSiE-inf output dictionary @@ -263,3 +263,118 @@ def susie_inf_to_studylocus( _df=cred_sets, _schema=StudyLocus.get_schema(), ) + + @staticmethod + def susie_finemapper_ss_gathered( + session: Session, + study_locus_row: Row, + study_index: StudyIndex, + window: int = 1_000_000, + L: int = 10, + ) -> StudyLocus: + """Susie fine-mapper for StudyLocus row with locus annotated summary statistics. + + Args: + session (Session): Spark session + study_locus_row (Row): StudyLocus row + study_index (StudyIndex): StudyIndex object + window (int): window size for fine-mapping + L (int): number of causal variants + + Returns: + StudyLocus: StudyLocus object with fine-mapped credible sets + """ + # PLEASE DO NOT REMOVE THIS LINE + pd.DataFrame.iteritems = pd.DataFrame.items + + chromosome = study_locus_row["chromosome"] + position = study_locus_row["position"] + studyId = study_locus_row["studyId"] + + study_index_df = study_index._df + study_index_df = study_index_df.filter(f.col("studyId") == studyId) + major_population = study_index_df.select( + "studyId", + f.array_max(f.col("ldPopulationStructure")) + .getItem("ldPopulation") + .alias("majorPopulation"), + ).collect()[0]["majorPopulation"] + + region = ( + chromosome + + ":" + + str(int(position - window / 2)) + + "-" + + str(int(position + window / 2)) + ) + + gwas_df = ( + session.spark.createDataFrame(study_locus_row.locus) + .withColumn("z", f.col("beta") / f.col("standardError")) + .withColumn("chromosome", f.split(f.col("variantId"), "_")[0]) + .withColumn("position", f.split(f.col("variantId"), "_")[1]) + .filter(f.col("z").isNotNull()) + ) + + ld_index = ( + GnomADLDMatrix() + .get_locus_index( + study_locus_row=study_locus_row, + window_size=window, + major_population=major_population, + ) + .withColumn( + "variantId", + f.concat( + f.lit(chromosome), + f.lit("_"), + f.col("`locus.position`"), + f.lit("_"), + f.col("alleles").getItem(0), + f.lit("_"), + f.col("alleles").getItem(1), + ).cast("string"), + ) + ) + + # Filtering out the variants that are not in the LD matrix, we don't need them + gwas_index = gwas_df.join( + ld_index.select("variantId", "alleles", "idx"), on="variantId" + ).sort("idx") + + gnomad_ld = GnomADLDMatrix.get_numpy_matrix( + gwas_index, gnomad_ancestry=major_population + ) + + pd_df = gwas_index.toPandas() + z_to_fm = np.array(pd_df["z"]) + ld_to_fm = gnomad_ld + + susie_output = SUSIE_inf.susie_inf(z=z_to_fm, LD=ld_to_fm, L=L) + + schema = StructType( + [ + StructField("variantId", StringType(), True), + StructField("chromosome", StringType(), True), + StructField("position", IntegerType(), True), + ] + ) + pd_df["position"] = pd_df["position"].astype(int) + variant_index = session.spark.createDataFrame( + pd_df[ + [ + "variantId", + "chromosome", + "position", + ] + ], + schema=schema, + ) + + return SusieFineMapperStep.susie_inf_to_studylocus( + susie_output=susie_output, + session=session, + studyId=studyId, + region=region, + variant_index=variant_index, + ) From 86600b0df666f4ed2874f446c3831fe2baa8ff13 Mon Sep 17 00:00:00 2001 From: Yakov Date: Tue, 9 Apr 2024 12:24:09 +0100 Subject: [PATCH 47/86] feat: add FM step with carma and sumstat imputation (#568) * feat: add fm step with carma and sumstat imputation * fix: adding log * fix: fixing carma * fix: resolving conflict * fix: resolve conflicts with dev v2 * fix: siliencing FutureWarning in Carma --- src/gentropy/method/carma.py | 19 +- src/gentropy/susie_finemapper.py | 296 ++++++++++++++++++++++++++++++- 2 files changed, 310 insertions(+), 5 deletions(-) diff --git a/src/gentropy/method/carma.py b/src/gentropy/method/carma.py index 75cb32c79..af8816706 100644 --- a/src/gentropy/method/carma.py +++ b/src/gentropy/method/carma.py @@ -2,6 +2,7 @@ from __future__ import annotations import concurrent.futures +import warnings from itertools import combinations from math import floor, lgamma from typing import Any @@ -32,6 +33,8 @@ def time_limited_CARMA_spike_slab_noEM( - B_list: A dataframe containing the marginal likelihoods and the corresponding model space or None. - Outliers: A list of outlier SNPs or None. """ + # Ignore pandas future warnings + warnings.simplefilter(action="ignore", category=FutureWarning) try: # Execute CARMA.CARMA_spike_slab_noEM with a timeout with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor: @@ -854,9 +857,19 @@ def _MCS_modified( # noqa: C901 sec_sample = np.random.choice( range(0, 3), 1, p=np.exp(aa) / np.sum(np.exp(aa)) ) - S = set_gamma[sec_sample[0]][ - int(set_star["gamma_set_index"][sec_sample[0]]) - ].tolist() + if set_gamma[sec_sample[0]] is not None: + S = set_gamma[sec_sample[0]][ + int(set_star["gamma_set_index"][sec_sample[0]]) + ].tolist() + else: + sec_sample = np.random.choice( + range(1, 3), + 1, + p=np.exp(aa)[[1, 2]] / np.sum(np.exp(aa)[[1, 2]]), + ) + S = set_gamma[sec_sample[0]][ + int(set_star["gamma_set_index"][sec_sample[0]]) + ].tolist() for item in conditional_S: if item not in S: diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index c5d86b1a8..aba5b4c40 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -2,6 +2,7 @@ from __future__ import annotations +import time from typing import Any import numpy as np @@ -15,6 +16,8 @@ from gentropy.dataset.study_locus import StudyLocus from gentropy.dataset.summary_statistics import SummaryStatistics from gentropy.datasource.gnomad.ld import GnomADLDMatrix +from gentropy.method.carma import CARMA +from gentropy.method.sumstat_imputation import SummaryStatisticsImputation from gentropy.method.susie_inf import SUSIE_inf @@ -150,6 +153,7 @@ def susie_inf_to_studylocus( region: str, variant_index: DataFrame, cs_lbf_thr: float = 2, + sum_pips: float = 0.99, ) -> StudyLocus: """Convert SuSiE-inf output to StudyLocus DataFrame. @@ -160,6 +164,7 @@ def susie_inf_to_studylocus( region (str): region variant_index (DataFrame): DataFrame with variant information cs_lbf_thr (float): credible set logBF threshold, default is 2 + sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) Returns: StudyLocus: StudyLocus object with fine-mapped credible sets @@ -189,8 +194,8 @@ def susie_inf_to_studylocus( susie_result[:, i + 1].astype(float).argsort()[::-1] ] cumsum_arr = np.cumsum(sorted_arr[:, i + 1].astype(float)) - filter_row = np.argmax(cumsum_arr >= 0.99) - if filter_row == 0 and cumsum_arr[0] < 0.99: + filter_row = np.argmax(cumsum_arr >= sum_pips) + if filter_row == 0 and cumsum_arr[0] < sum_pips: filter_row = len(cumsum_arr) filter_row += 1 filtered_arr = sorted_arr[:filter_row] @@ -378,3 +383,290 @@ def susie_finemapper_ss_gathered( region=region, variant_index=variant_index, ) + + @staticmethod + def susie_finemapper_from_prepared_dataframes( + GWAS_df: DataFrame, + ld_index: DataFrame, + gnomad_ld: np.ndarray, + L: int, + session: Session, + studyId: str, + region: str, + susie_est_tausq: bool = False, + run_carma: bool = False, + run_sumstat_imputation: bool = False, + carma_time_limit: int = 600, + imputed_r2_threshold: float = 0.8, + ld_score_threshold: float = 4, + sum_pips: float = 0.99, + ) -> dict[str, Any]: + """Susie fine-mapper function that uses LD, z-scores, variant info and other options for Fine-Mapping. + + Args: + GWAS_df (DataFrame): GWAS DataFrame with mandotary columns: z, variantId + ld_index (DataFrame): LD index DataFrame + gnomad_ld (np.ndarray): GnomAD LD matrix + L (int): number of causal variants + session (Session): Spark session + studyId (str): study ID + region (str): region + susie_est_tausq (bool): estimate tau squared, default is False + run_carma (bool): run CARMA, default is False + run_sumstat_imputation (bool): run summary statistics imputation, default is False + carma_time_limit (int): CARMA time limit, default is 600 seconds + imputed_r2_threshold (float): imputed R2 threshold, default is 0.8 + ld_score_threshold (float): LD score threshold ofr imputation, default is 4 + sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) + + Returns: + dict[str, Any]: dictionary with study locus, number of GWAS variants, number of LD variants, number of variants after merge, number of outliers, number of imputed variants, number of variants to fine-map + """ + # PLEASE DO NOT REMOVE THIS LINE + pd.DataFrame.iteritems = pd.DataFrame.items + + start_time = time.time() + GWAS_df = GWAS_df.toPandas() + ld_index = ld_index.toPandas() + ld_index = ld_index.reset_index() + + N_gwas = len(GWAS_df) + N_ld = len(ld_index) + + # Filtering out the variants that are not in the LD matrix, we don't need them + df_columns = ["variantId", "z"] + GWAS_df = GWAS_df.merge(ld_index, on="variantId", how="inner") + GWAS_df = GWAS_df[df_columns].reset_index() + N_after_merge = len(GWAS_df) + + merged_df = GWAS_df.merge( + ld_index, left_on="variantId", right_on="variantId", how="inner" + ) + indices = merged_df["index_y"].values + + ld_to_fm = gnomad_ld[indices][:, indices] + z_to_fm = GWAS_df["z"].values + + if run_carma: + carma_output = CARMA.time_limited_CARMA_spike_slab_noEM( + z=z_to_fm, ld=ld_to_fm, sec_threshold=carma_time_limit + ) + if carma_output["Outliers"] != [] and carma_output["Outliers"] is not None: + GWAS_df.drop(carma_output["Outliers"], inplace=True) + GWAS_df = GWAS_df.reset_index() + ld_index = ld_index.reset_index() + merged_df = GWAS_df.merge( + ld_index, left_on="variantId", right_on="variantId", how="inner" + ) + indices = merged_df["index_y"].values + + ld_to_fm = gnomad_ld[indices][:, indices] + z_to_fm = GWAS_df["z"].values + N_outliers = len(carma_output["Outliers"]) + else: + N_outliers = 0 + else: + N_outliers = 0 + + if run_sumstat_imputation: + known = indices + unknown = [ + index for index in list(range(len(gnomad_ld))) if index not in known + ] + sig_t = gnomad_ld[known, :][:, known] + sig_i_t = gnomad_ld[unknown, :][:, known] + zt = z_to_fm + + sumstat_imp_res = SummaryStatisticsImputation.raiss_model( + z_scores_known=zt, + ld_matrix_known=sig_t, + ld_matrix_known_missing=sig_i_t, + lamb=0.01, + rtol=0.01, + ) + + bool_index = (sumstat_imp_res["imputation_r2"] >= imputed_r2_threshold) * ( + sumstat_imp_res["ld_score"] >= ld_score_threshold + ) + if sum(bool_index) >= 1: + indices = np.where(bool_index)[0] + index_to_add = [unknown[i] for i in indices] + index_to_fm = np.concatenate((known, index_to_add)) + + ld_to_fm = gnomad_ld[index_to_fm][:, index_to_fm] + + snp_info_to_add = pd.DataFrame( + { + "variantId": ld_index.iloc[index_to_add, :]["variantId"], + "z": sumstat_imp_res["mu"][indices], + } + ) + GWAS_df = pd.concat([GWAS_df, snp_info_to_add], ignore_index=True) + z_to_fm = GWAS_df["z"].values + + N_imputed = len(indices) + else: + N_imputed = 0 + else: + N_imputed = 0 + + susie_output = SUSIE_inf.susie_inf( + z=z_to_fm, LD=ld_to_fm, L=L, est_tausq=susie_est_tausq + ) + + schema = StructType([StructField("variantId", StringType(), True)]) + variant_index = ( + session.spark.createDataFrame( + GWAS_df[["variantId"]], + schema=schema, + ) + .withColumn( + "chromosome", f.split(f.col("variantId"), "_")[0].cast("string") + ) + .withColumn("position", f.split(f.col("variantId"), "_")[1].cast("int")) + ) + + study_locus = SusieFineMapperStep.susie_inf_to_studylocus( + susie_output=susie_output, + session=session, + studyId=studyId, + region=region, + variant_index=variant_index, + sum_pips=sum_pips, + ) + + end_time = time.time() + + log_df = pd.DataFrame( + { + "N_gwas": N_gwas, + "N_ld": N_ld, + "N_overlap": N_after_merge, + "N_outliers": N_outliers, + "N_imputed": N_imputed, + "N_final_to_fm": len(ld_to_fm), + "eleapsed_time": end_time - start_time, + }, + index=[0], + ) + + return { + "study_locus": study_locus, + "log": log_df, + } + + @staticmethod + def susie_finemapper_one_studylocus_row_v2_dev( + GWAS: SummaryStatistics, + session: Session, + study_locus_row: Row, + study_index: StudyIndex, + window: int = 1_000_000, + L: int = 10, + susie_est_tausq: bool = False, + run_carma: bool = False, + run_sumstat_imputation: bool = False, + carma_time_limit: int = 600, + imputed_r2_threshold: float = 0.8, + ld_score_threshold: float = 4, + sum_pips: float = 0.99, + ) -> dict[str, Any]: + """Susie fine-mapper function that uses Summary Statstics, chromosome and position as inputs. + + Args: + GWAS (SummaryStatistics): GWAS summary statistics + session (Session): Spark session + study_locus_row (Row): StudyLocus row + study_index (StudyIndex): StudyIndex object + window (int): window size for fine-mapping + L (int): number of causal variants + susie_est_tausq (bool): estimate tau squared, default is False + run_carma (bool): run CARMA, default is False + run_sumstat_imputation (bool): run summary statistics imputation, default is False + carma_time_limit (int): CARMA time limit, default is 600 seconds + imputed_r2_threshold (float): imputed R2 threshold, default is 0.8 + ld_score_threshold (float): LD score threshold ofr imputation, default is 4 + sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) + + Returns: + dict[str, Any]: dictionary with study locus, number of GWAS variants, number of LD variants, number of variants after merge, number of outliers, number of imputed variants, number of variants to fine-map + """ + # PLEASE DO NOT REMOVE THIS LINE + pd.DataFrame.iteritems = pd.DataFrame.items + + chromosome = study_locus_row["chromosome"] + position = study_locus_row["position"] + studyId = study_locus_row["studyId"] + + study_index_df = study_index._df + study_index_df = study_index_df.filter(f.col("studyId") == studyId) + major_population = study_index_df.select( + "studyId", + f.array_max(f.col("ldPopulationStructure")) + .getItem("ldPopulation") + .alias("majorPopulation"), + ).collect()[0]["majorPopulation"] + + region = ( + chromosome + + ":" + + str(int(position - window / 2)) + + "-" + + str(int(position + window / 2)) + ) + gwas_df = ( + GWAS.df.withColumn("z", f.col("beta") / f.col("standardError")) + .withColumn( + "chromosome", f.split(f.col("variantId"), "_")[0].cast("string") + ) + .withColumn("position", f.split(f.col("variantId"), "_")[1].cast("int")) + .filter(f.col("studyId") == studyId) + .filter(f.col("z").isNotNull()) + .filter(f.col("chromosome") == chromosome) + .filter(f.col("position") >= position - window / 2) + .filter(f.col("position") <= position + window / 2) + ) + + ld_index = ( + GnomADLDMatrix() + .get_locus_index( + study_locus_row=study_locus_row, + window_size=window, + major_population=major_population, + ) + .withColumn( + "variantId", + f.concat( + f.lit(chromosome), + f.lit("_"), + f.col("`locus.position`"), + f.lit("_"), + f.col("alleles").getItem(0), + f.lit("_"), + f.col("alleles").getItem(1), + ).cast("string"), + ) + ) + + gnomad_ld = GnomADLDMatrix.get_numpy_matrix( + ld_index, gnomad_ancestry=major_population + ) + + out = SusieFineMapperStep.susie_finemapper_from_prepared_dataframes( + GWAS_df=gwas_df, + ld_index=ld_index, + gnomad_ld=gnomad_ld, + L=L, + session=session, + studyId=studyId, + region=region, + susie_est_tausq=susie_est_tausq, + run_carma=run_carma, + run_sumstat_imputation=run_sumstat_imputation, + carma_time_limit=carma_time_limit, + imputed_r2_threshold=imputed_r2_threshold, + ld_score_threshold=ld_score_threshold, + sum_pips=sum_pips, + ) + + return out From dc4e3674d30baf736fd540871c1fc00179777290 Mon Sep 17 00:00:00 2001 From: Yakov Date: Wed, 10 Apr 2024 13:23:44 +0100 Subject: [PATCH 48/86] fix: adding deduplication for GWAS in locus (#573) --- src/gentropy/susie_finemapper.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index aba5b4c40..db62fe359 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -427,6 +427,11 @@ def susie_finemapper_from_prepared_dataframes( start_time = time.time() GWAS_df = GWAS_df.toPandas() + N_gwas_before_dedupl = len(GWAS_df) + + GWAS_df = GWAS_df.drop_duplicates(subset="variantId", keep=False) + GWAS_df = GWAS_df.reset_index() + ld_index = ld_index.toPandas() ld_index = ld_index.reset_index() @@ -539,6 +544,7 @@ def susie_finemapper_from_prepared_dataframes( log_df = pd.DataFrame( { + "N_gwas_before_dedupl": N_gwas_before_dedupl, "N_gwas": N_gwas, "N_ld": N_ld, "N_overlap": N_after_merge, From a5b62f2359aa8285ce638329400c39a55101d622 Mon Sep 17 00:00:00 2001 From: Yakov Date: Wed, 10 Apr 2024 14:02:51 +0100 Subject: [PATCH 49/86] feat: add benchmarking for fine-mapping using Alzheimer as example (#572) * feat: add benchmarking for fine-mapping using Alzheimer as example * fix: small fix in notebook --- notebooks/FineMapping_AlzheimierDisease.ipynb | 1734 +++++++++++++++++ 1 file changed, 1734 insertions(+) create mode 100644 notebooks/FineMapping_AlzheimierDisease.ipynb diff --git a/notebooks/FineMapping_AlzheimierDisease.ipynb b/notebooks/FineMapping_AlzheimierDisease.ipynb new file mode 100644 index 000000000..8a785cc3f --- /dev/null +++ b/notebooks/FineMapping_AlzheimierDisease.ipynb @@ -0,0 +1,1734 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fine-mapping of Alzheimer's disease GWAS summary statistics using GentroPy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook presents an example of fine-mapping of the GWAS catalog study for Alzheimer's disease ([link to study](https://genetics.opentargets.org/Study/GCST90012877/associations)). The study itself is a good benchmarking example for fine-mapping - relatively large number of SNPs, very strong signal on the 19th chromosome (APOE). It's worth noting that usually very strong signals are excluded from fine-mapping due to instability.\n", + "\n", + "Also, we excluded MHC region (6:28M-34M) from fine-mapping because it has a huge density of the variants.\n", + "\n", + "To execute it on your local machine (not dataproc) you need to install https://github.com/broadinstitute/install-gcs-connector." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialization" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Your browser has been opened to visit:\n", + "\n", + " https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=2Jvk4c7unAsigRvEKhceIxcrpGmeK8&access_type=offline&code_challenge=84guS6MmOY7qgvNpHLxoJbhRDBUAEUS93teMwQboD3Q&code_challenge_method=S256\n", + "\n", + "\n", + "Credentials saved to file: [/Users/yt4/.config/gcloud/application_default_credentials.json]\n", + "\n", + "These credentials will be used by any library that requests Application Default Credentials (ADC).\n", + "\n", + "Quota project \"open-targets-genetics-dev\" was added to ADC which can be used by Google client libraries for billing and quota. Note that some services may still bill the project owning the resource.\n", + "\n", + "\n", + "Updates are available for some Google Cloud CLI components. To install them,\n", + "please run:\n", + " $ gcloud components update\n", + "\n" + ] + } + ], + "source": [ + "!gcloud auth application-default login" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n function drop(id) {\n const view = Bokeh.index.get_by_id(id)\n if (view != null) {\n view.model.document.clear()\n Bokeh.index.delete(view)\n }\n }\n\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n\n // Clean up Bokeh references\n if (id != null) {\n drop(id)\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim()\n drop(id)\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"a8e9a6a6-96f7-4efd-a426-b2299499ef03\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.3.0.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"a8e9a6a6-96f7-4efd-a426-b2299499ef03\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));", + "application/vnd.bokehjs_load.v0+json": "" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "24/04/09 10:40:45 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Setting default log level to \"WARN\".\n", + "To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).\n", + "pip-installed Hail requires additional configuration options in Spark referring\n", + " to the path to the Hail Python module directory HAIL_DIR,\n", + " e.g. /path/to/python/site-packages/hail:\n", + " spark.jars=HAIL_DIR/backend/hail-all-spark.jar\n", + " spark.driver.extraClassPath=HAIL_DIR/backend/hail-all-spark.jar\n", + " spark.executor.extraClassPath=./hail-all-spark.jarRunning on Apache Spark version 3.3.4\n", + "SparkUI available at http://192.168.0.232:4040\n", + "Welcome to\n", + " __ __ <>__\n", + " / /_/ /__ __/ /\n", + " / __ / _ `/ / /\n", + " /_/ /_/\\_,_/_/_/ version 0.2.127-bb535cd096c5\n", + "LOGGING: writing to /dev/null\n" + ] + } + ], + "source": [ + "import os\n", + "import hail as hl\n", + "import pyspark.sql.functions as f\n", + "import pandas as pd\n", + "pd.set_option('display.max_colwidth', None)\n", + "pd.set_option('display.expand_frame_repr', False)\n", + "\n", + "from gentropy.common.session import Session\n", + "from gentropy.dataset.study_index import StudyIndex\n", + "from gentropy.dataset.summary_statistics import SummaryStatistics\n", + "from gentropy.dataset.study_index import StudyIndex\n", + "from gentropy.method.window_based_clumping import WindowBasedClumping\n", + "from gentropy.susie_finemapper import SusieFineMapperStep\n", + "\n", + "hail_dir = os.path.dirname(hl.__file__)\n", + "session = Session(hail_home=hail_dir, start_hail=True, extended_spark_conf={\"spark.driver.memory\": \"12g\",\n", + " \"spark.kryoserializer.buffer.max\": \"500m\",\"spark.driver.maxResultSize\":\"3g\"})\n", + "hl.init(sc=session.spark.sparkContext, log=\"/dev/null\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading the data and clumping" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of SNPs in GWAS: 10607272\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 7:> (0 + 1) / 1]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of clumps: 33\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "path_gwas1=\"gs://gwas_catalog_data/harmonised_summary_statistics/GCST90012877.parquet\"\n", + "path_si=\"gs://gwas_catalog_data/study_index\"\n", + "\n", + "gwas1 = SummaryStatistics.from_parquet(session, path_gwas1)\n", + "study_index = StudyIndex.from_parquet(session, path_si)\n", + "\n", + "slt=WindowBasedClumping.clump(gwas1,gwas_significance=5e-8,distance=1e6)\n", + "slt_df=slt._df\n", + "\n", + "print(\"Number of SNPs in GWAS: \",gwas1._df.count())\n", + "print(\"Number of clumps: \",slt_df.count())" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 15:===================================================> (9 + 1) / 10]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+------------+----------------+----------+---------+----------------+----------+--------------+--------------+-------------------------------+----------------+--------------------+---------------+\n", + "| studyId| variantId|chromosome| position| beta|sampleSize|pValueMantissa|pValueExponent|effectAlleleFrequencyFromSource| standardError| studyLocusId|qualityControls|\n", + "+------------+----------------+----------+---------+----------------+----------+--------------+--------------+-------------------------------+----------------+--------------------+---------------+\n", + "|GCST90012877| 1_161185602_G_A| 1|161185602| 0.0609052805639| null| 4.302| -8| 0.23499| 0.0111181765833| 6360456299763482946| []|\n", + "|GCST90012877| 1_207577223_T_C| 1|207577223| -0.122752564739| null| 1.403| -23| 0.822818| 0.0122652043685|-6742466305250328444| []|\n", + "|GCST90012877| 10_11678309_A_G| 10| 11678309| 0.0668997305692| null| 1.085| -11| 0.380517|0.00984571382836| 3672202482976347473| []|\n", + "|GCST90012877| 10_59886075_G_T| 10| 59886075|-0.0523916765294| null| 3.802| -8| 0.480668|0.00952612570169| 760299597568413738| []|\n", + "|GCST90012877| 10_80520381_T_G| 10| 80520381| 0.0701098772587| null| 2.736| -9| 0.793475| 0.0117897597766|-6168361428432361140| []|\n", + "|GCST90012877|11_121564878_T_C| 11|121564878| -0.186386086749| null| 5.586| -14| 0.037005| 0.0247938672944|-7548659272243096830| []|\n", + "|GCST90012877| 11_47370397_G_A| 11| 47370397| 0.0634588530202| null| 6.911| -11| 0.387521| 0.0097291000298| 1916491992423016132| []|\n", + "|GCST90012877| 11_60328267_T_C| 11| 60328267|-0.0892048800109| null| 9.335| -20| 0.371215|0.00980658024905| 3318332793803757311| []|\n", + "|GCST90012877| 11_86156833_A_G| 11| 86156833| 0.103281644827| null| 5.214| -26| 0.629462|0.00979200684254| 3806751464721795080| []|\n", + "|GCST90012877| 14_52924962_A_G| 14| 52924962| 0.102404628268| null| 3.69| -10| 0.092233| 0.0163413709974|-8640267085448358001| []|\n", + "|GCST90012877| 14_92472511_G_A| 14| 92472511|-0.0762776811698| null| 7.454| -14| 0.339674| 0.0101980809801| 8895835730818824947| []|\n", + "|GCST90012877| 15_50707194_C_G| 15| 50707194|-0.0722934881552| null| 1.639| -9| 0.197469| 0.0119888249532|-4585712009512019667| []|\n", + "|GCST90012877| 15_58730416_T_C| 15| 58730416|-0.0675867539589| null| 2.674| -11| 0.319058| 0.010142839928|-9173595866829505633| []|\n", + "|GCST90012877| 15_63277703_C_T| 15| 63277703| 0.0849598934189| null| 1.052| -8| 0.139487| 0.0148475601067|-6181511576673508209| []|\n", + "|GCST90012877| 16_31115000_C_A| 16| 31115000|-0.0620662164665| null| 4.466| -9| 0.281382| 0.0105807514538|-3612515273077152914| []|\n", + "|GCST90012877| 17_5229833_T_C| 17| 5229833|-0.0849787931131| null| 1.352| -9| 0.875068| 0.0140203927902|-7070596043624425654| []|\n", + "|GCST90012877| 17_63483402_T_C| 17| 63483402| 0.0542810764988| null| 1.215| -8| 0.529632|0.00952697587266| 7171154626284587162| []|\n", + "|GCST90012877| 19_1050875_A_G| 19| 1050875|-0.0772974277902| null| 2.415| -13| 0.674169| 0.0105546077307| 6109438569946056978| []|\n", + "|GCST90012877| 19_44892009_G_A| 19| 44892009| 0.352722374032| null| 1.995| -277| 0.605067|0.00991069396551| 6814727764900576662| []|\n", + "|GCST90012877| 19_51224706_C_A| 19| 51224706|-0.0582180344342| null| 1.295| -8| 0.325551| 0.010237506551|-8288099943480320096| []|\n", + "+------------+----------------+----------+---------+----------------+----------+--------------+--------------+-------------------------------+----------------+--------------------+---------------+\n", + "only showing top 20 rows\n", + "\n", + "None\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "print(slt_df.show())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fine-mapping without outliers detection and imputation using 2M as window size" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-04-09 10:41:57.354 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 10:42:15.499 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:42:28.284 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:44:41.305 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 10:44:51.854 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:45:03.059 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:47:04.871 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 10:47:17.310 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:47:29.113 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:50:32.790 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 10:50:46.191 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:50:57.958 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:53:22.698 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 10:53:34.535 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:53:45.816 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:57:23.189 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 10:57:34.563 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:57:43.988 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 10:59:39.834 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 10:59:52.878 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:00:06.629 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:02:11.433 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:02:22.101 Hail: INFO: Ordering unsorted dataset with network shuffle\n", + "2024-04-09 11:02:32.320 Hail: INFO: wrote table with 175330 rows in 8 partitions to /tmp/__iruid_20813-EyC6kjgQ1hAjFSiH1Xp7sB\n", + "2024-04-09 11:02:35.350 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:04:16.225 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:04:27.837 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:04:41.879 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:07:09.950 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:07:21.139 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:07:33.197 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:09:56.240 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:10:08.288 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:10:20.802 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:14:07.114 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:14:20.204 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:14:32.464 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:16:41.133 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:16:53.191 Hail: INFO: Ordering unsorted dataset with network shuffle\n", + "2024-04-09 11:17:03.328 Hail: INFO: wrote table with 211068 rows in 9 partitions to /tmp/__iruid_35318-By6CsozcY2JvH6dhwjdBPU\n", + "2024-04-09 11:17:10.133 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:19:10.141 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:19:21.964 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:19:34.636 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:21:47.445 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:21:59.127 Hail: INFO: Ordering unsorted dataset with network shuffle\n", + "2024-04-09 11:22:15.902 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:23:18.294 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:23:32.131 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:23:48.719 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:26:51.703 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:27:02.820 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:27:18.412 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:29:02.997 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:29:19.516 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:29:41.224 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:33:19.553 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:33:32.903 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:33:49.144 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:36:16.552 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:36:28.952 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:36:46.964 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:40:40.837 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:40:51.976 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:41:04.014 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:43:54.259 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:44:05.534 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:44:20.087 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:46:45.605 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:46:59.301 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:47:13.181 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:49:50.219 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:50:02.311 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:50:16.072 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:52:34.864 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:52:46.513 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:53:00.919 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:55:50.580 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:56:02.124 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:56:16.907 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:59:15.457 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 11:59:27.380 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 11:59:40.184 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 12:03:31.055 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 12:03:42.554 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 12:03:53.915 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 12:06:33.123 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 12:06:45.813 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 12:06:58.340 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 12:09:23.153 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 12:09:33.531 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 12:09:43.693 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 12:11:13.739 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 12:11:26.087 Hail: INFO: Ordering unsorted dataset with network shuffle\n", + "2024-04-09 12:11:38.950 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 12:13:17.020 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 12:13:29.727 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 12:13:45.213 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 12:20:03.844 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-09 12:20:13.834 Hail: INFO: Coerced sorted dataset\n", + "2024-04-09 12:20:24.282 Hail: INFO: Coerced sorted dataset\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 1:160185602-162185602 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/p5/4t9crp1563l792qz8xz_3x5h0000gq/T/ipykernel_46905/1319014212.py:29: FutureWarning:\n", + "\n", + "The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + "\n", + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 1:206577223-208577223 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 10:10678309-12678309 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 10:58886075-60886075 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 10:79520381-81520381 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 11:120564878-122564878 ; number of CSs: 2 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 11:46370397-48370397 ; number of CSs: 6 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 11:59328267-61328267 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 11:85156833-87156833 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 14:51924962-53924962 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 14:91472511-93472511 ; number of CSs: 2 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 15:49707194-51707194 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 15:57730416-59730416 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 15:62277703-64277703 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 16:30115000-32115000 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 17:4229833-6229833 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 17:62483402-64483402 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 19:50875-2050875 ; number of CSs: 2 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 19:43892009-45892009 ; number of CSs: 10 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 19:50224706-52224706 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 2:104749599-106749599 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 2:126135234-128135234 ; number of CSs: 2 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 2:232117202-234117202 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 2:64381229-66381229 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 20:55423488-57423488 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 1199:=====================> (3 + 5) / 8]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 21:25775872-27775872 ; number of CSs: 2 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 4:10025995-12025995 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 6:39974457-41974457 ; number of CSs: 2 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 6:46627419-48627419 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 1403:===================================> (5 + 3) / 8]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 7:142410495-144410495 ; number of CSs: 2 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 7:99374211-101374211 ; number of CSs: 1 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 1505:> (0 + 8) / 8]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Region: 8:26610986-28610986 ; number of CSs: 3 ; log:\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "df = slt_df.withColumn(\"row_index\", f.monotonically_increasing_id())\n", + "\n", + "columns = ['N_gwas', 'N_ld', 'N_overlap', 'N_outliers', 'N_imputed', 'N_final_to_fm', 'eleapsed_time']\n", + "logs = pd.DataFrame(columns=columns)\n", + "\n", + "for i in range(0,df.count()):\n", + " if i!=27:\n", + " one_row = df.filter(df.row_index == i).first()\n", + "\n", + " res=SusieFineMapperStep.susie_finemapper_one_studylocus_row_v2_dev(\n", + " GWAS=gwas1,\n", + " session=session,\n", + " study_locus_row=one_row,\n", + " study_index=study_index,\n", + " window= 2_000_000,\n", + " L=10,\n", + " susie_est_tausq=False,\n", + " run_carma=False,\n", + " run_sumstat_imputation=False,\n", + " carma_time_limit=600,\n", + " imputed_r2_threshold=0.8,\n", + " ld_score_threshold=4\n", + " )\n", + "\n", + " sl=res[\"study_locus\"]\n", + " #print(sl._df.withColumn(\"size\", f.size(sl._df[\"locus\"])).show())\n", + " print(\"Region: \",sl._df.collect()[0]['region'], \"; number of CSs: \",sl._df.count(), \"; log:\")\n", + " #print(res[\"log\"])\n", + " logs=pd.concat([logs,res[\"log\"]])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " N_gwas N_ld N_overlap N_outliers N_imputed N_final_to_fm eleapsed_time\n", + "0 7120 10431 6456 0 0 6456 56.839336\n", + "0 7128 8657 5769 0 0 5769 46.149004\n", + "0 9203 12106 7930 0 0 7930 93.531924\n", + "0 8351 10014 6995 0 0 6995 74.174323\n", + "0 9388 12551 8337 0 0 8337 120.602071\n", + "0 6560 8729 5758 0 0 5758 45.064894\n", + "0 5005 7701 3954 0 0 3954 55.229344\n", + "0 7012 8940 5815 0 0 5815 38.824251\n", + "0 8661 10303 7291 0 0 7291 68.802810\n", + "0 8081 9966 6771 0 0 6771 64.327746\n", + "0 8375 11213 7467 0 0 7467 141.808555\n", + "0 7377 9622 6369 0 0 6369 51.198955\n", + "0 8181 10864 7116 0 0 7116 49.033224\n", + "0 7976 10135 6704 0 0 6704 58.357743\n", + "0 3369 6542 2972 0 0 2972 17.138722\n", + "0 9006 12776 7969 0 0 7969 83.551872\n", + "0 4565 7018 3887 0 0 3887 37.801989\n", + "0 8278 13741 7852 0 0 7852 105.623508\n", + "0 7582 10448 6100 0 0 6100 58.572944\n", + "0 9145 12706 8242 0 0 8242 129.442009\n", + "0 8795 11311 7584 0 0 7584 86.336201\n", + "0 7852 10028 7041 0 0 7041 67.886754\n", + "0 8393 10850 7195 0 0 7195 72.375809\n", + "0 7639 10031 6520 0 0 6520 61.900982\n", + "0 8899 11509 7922 0 0 7922 86.535298\n", + "0 8908 11309 7889 0 0 7889 93.595320\n", + "0 10654 12663 8990 0 0 8990 133.390712\n", + "0 9073 10228 7398 0 0 7398 79.774280\n", + "0 8033 9785 6822 0 0 6822 63.950340\n", + "0 4570 5516 3162 0 0 3162 27.943313\n", + "0 5716 8785 4760 0 0 4760 30.024706\n", + "0 9243 10989 7869 0 0 7869 108.898056\n" + ] + } + ], + "source": [ + "pd.set_option('display.max_rows', None)\n", + "print(logs)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6653.3125\n" + ] + } + ], + "source": [ + "summary = logs['N_overlap'].mean()\n", + "print(summary)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fine-mapping of APOE locus" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "Row(studyId='GCST90012877', variantId='19_44892009_G_A', chromosome='19', position=44892009, beta=0.352722374032, sampleSize=None, pValueMantissa=1.9950000047683716, pValueExponent=-277, effectAlleleFrequencyFromSource=0.6050670146942139, standardError=0.00991069396551, studyLocusId=6814727764900576662, qualityControls=[], row_index=18)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = slt_df.withColumn(\"row_index\", f.monotonically_increasing_id())\n", + "one_row = df.filter(df.row_index == 18).first()\n", + "one_row" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Without CARMA, without imputation" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-04-08 21:34:03.208 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + "2024-04-08 21:34:19.253 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 21:34:34.941 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 21:37:16.576 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + "2024-04-08 21:37:28.867 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 21:37:44.733 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 21:52:03.198 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + "2024-04-08 21:52:15.100 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 21:52:30.553 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 22:21:27.877 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + "2024-04-08 22:21:40.137 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 22:21:55.249 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 22:23:21.795 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + "2024-04-08 22:23:35.031 Hail: INFO: Coerced sorted dataset\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "| studyLocusId| studyId| region|credibleSetIndex| locus| variantId|chromosome|position|finemappingMethod|credibleSetlog10BF|size|\n", + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "|-6417720984991662128|GCST90012877|19:43892009-45892009| 1|[{19_44908684_T_C...|19_44908684_T_C| 19|44908684| SuSiE-inf| 2135.710824756712| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 2|[{19_44921094_A_T...|19_44921094_A_T| 19|44921094| SuSiE-inf| 955.4948390766739| 1|\n", + "| 8324745608044585165|GCST90012877|19:43892009-45892009| 3|[{19_44917947_C_T...|19_44917947_C_T| 19|44917947| SuSiE-inf| 690.0307437138443| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 4|[{19_44921094_A_T...|19_44921094_A_T| 19|44921094| SuSiE-inf|425.33378303492805| 1|\n", + "| 2240477384494621278|GCST90012877|19:43892009-45892009| 5|[{19_44891079_T_C...|19_44891079_T_C| 19|44891079| SuSiE-inf|395.31055398960274| 1|\n", + "| 1029535804909934921|GCST90012877|19:43892009-45892009| 6|[{19_44894695_T_C...|19_44894695_T_C| 19|44894695| SuSiE-inf| 333.9497424582455| 1|\n", + "|-6417720984991662128|GCST90012877|19:43892009-45892009| 7|[{19_44908684_T_C...|19_44908684_T_C| 19|44908684| SuSiE-inf| 261.573648706883| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 8|[{19_44921094_A_T...|19_44921094_A_T| 19|44921094| SuSiE-inf|186.66554412409607| 1|\n", + "|-7370952295217410456|GCST90012877|19:43892009-45892009| 9|[{19_44922505_T_G...|19_44922505_T_G| 19|44922505| SuSiE-inf| 78.06352464083552| 1|\n", + "| 3925446284512644964|GCST90012877|19:43892009-45892009| 10|[{19_44913574_T_G...|19_44913574_T_G| 19|44913574| SuSiE-inf|55.346197523194675| 1|\n", + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "\n", + "None\n", + " N_gwas N_ld N_overlap N_outliers N_imputed N_final_to_fm eleapsed_time\n", + "0 7582 10448 6100 0 0 6100 66.112839\n" + ] + } + ], + "source": [ + "res=SusieFineMapperStep.susie_finemapper_one_studylocus_row_v2_dev(\n", + " GWAS=gwas1,\n", + " session=session,\n", + " study_locus_row=one_row,\n", + " study_index=study_index,\n", + " window= 2_000_000,\n", + " L=10,\n", + " susie_est_tausq=False,\n", + " run_carma=False,\n", + " run_sumstat_imputation=False,\n", + " carma_time_limit=1000,\n", + " imputed_r2_threshold=0.8,\n", + " ld_score_threshold=4\n", + ")\n", + "sl=res[\"study_locus\"]\n", + "print(sl._df.withColumn(\"size\", f.size(sl._df[\"locus\"])).show())\n", + "print(res[\"log\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### With CARMA, without imputation" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "| studyLocusId| studyId| region|credibleSetIndex| locus| variantId|chromosome|position|finemappingMethod|credibleSetlog10BF|size|\n", + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "|-6417720984991662128|GCST90012877|19:43892009-45892009| 1|[{19_44908684_T_C...|19_44908684_T_C| 19|44908684| SuSiE-inf|1995.6574121818223| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 2|[{19_44921094_A_T...|19_44921094_A_T| 19|44921094| SuSiE-inf| 721.2637360279233| 1|\n", + "| 7760477027903907683|GCST90012877|19:43892009-45892009| 3|[{19_44911142_C_A...|19_44911142_C_A| 19|44911142| SuSiE-inf|248.39159334060017| 1|\n", + "|-1172224975892516254|GCST90012877|19:43892009-45892009| 4|[{19_44894255_A_C...|19_44894255_A_C| 19|44894255| SuSiE-inf| 96.16160678286879| 1|\n", + "| 8852802213660052283|GCST90012877|19:43892009-45892009| 5|[{19_44862190_G_A...|19_44862190_G_A| 19|44862190| SuSiE-inf| 55.80518621838019| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 6|[{19_44921094_A_T...|19_44921094_A_T| 19|44921094| SuSiE-inf| 53.24772075097935| 1|\n", + "|-6417720984991662128|GCST90012877|19:43892009-45892009| 7|[{19_44908684_T_C...|19_44908684_T_C| 19|44908684| SuSiE-inf| 45.65754067281976| 1|\n", + "|-6417720984991662128|GCST90012877|19:43892009-45892009| 8|[{19_44908684_T_C...|19_44908684_T_C| 19|44908684| SuSiE-inf| 39.3840804563262| 1|\n", + "| 6986973025714240626|GCST90012877|19:43892009-45892009| 9|[{19_44873060_C_G...|19_44873060_C_G| 19|44873060| SuSiE-inf| 38.54912041595975| 1|\n", + "| 3640651426400620880|GCST90012877|19:43892009-45892009| 10|[{19_44845920_G_C...|19_44845920_G_C| 19|44845920| SuSiE-inf|35.378479810047224| 2|\n", + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "\n", + "None\n", + " N_gwas N_ld N_overlap N_outliers N_imputed N_final_to_fm eleapsed_time\n", + "0 7582 10448 6100 151 0 5949 783.939477\n" + ] + } + ], + "source": [ + "res=SusieFineMapperStep.susie_finemapper_one_studylocus_row_v2_dev(\n", + " GWAS=gwas1,\n", + " session=session,\n", + " study_locus_row=one_row,\n", + " study_index=study_index,\n", + " window= 2_000_000,\n", + " L=10,\n", + " susie_est_tausq=False,\n", + " run_carma=True,\n", + " run_sumstat_imputation=False,\n", + " carma_time_limit=1000,\n", + " imputed_r2_threshold=0.8,\n", + " ld_score_threshold=4\n", + ")\n", + "sl=res[\"study_locus\"]\n", + "print(sl._df.withColumn(\"size\", f.size(sl._df[\"locus\"])).show())\n", + "print(res[\"log\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Without CARMA, with imputation" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-04-08 22:25:15.739 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-08 22:25:30.625 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 22:25:46.020 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 22:32:35.094 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-08 22:32:47.616 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 22:33:02.484 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 22:51:33.149 Hail: INFO: Table.join: renamed the following fields on the right to avoid name conflicts:\n", + " 'age_index_dict' -> 'age_index_dict_1'\n", + " 'freq_index_dict' -> 'freq_index_dict_1'\n", + " 'faf_index_dict' -> 'faf_index_dict_1'\n", + " 'freq_meta' -> 'freq_meta_1'\n", + " 'rf' -> 'rf_1'\n", + " 'age_distribution' -> 'age_distribution_1'\n", + " 'popmax_index_dict' -> 'popmax_index_dict_1'\n", + "2024-04-08 22:51:45.708 Hail: INFO: Coerced sorted dataset\n", + "2024-04-08 22:52:00.731 Hail: INFO: Coerced sorted dataset\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+------------+--------------------+----------------+--------------------+-----------------+----------+--------+-----------------+------------------+----+\n", + "| studyLocusId| studyId| region|credibleSetIndex| locus| variantId|chromosome|position|finemappingMethod|credibleSetlog10BF|size|\n", + "+--------------------+------------+--------------------+----------------+--------------------+-----------------+----------+--------+-----------------+------------------+----+\n", + "|-1350283509846281677|GCST90012877|19:43892009-45892009| 1|[{19_44909967_TGG...|19_44909967_TGG_T| 19|44909967| SuSiE-inf| 2310.665662473933| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 2|[{19_44921094_A_T...| 19_44921094_A_T| 19|44921094| SuSiE-inf| 903.6138342773536| 1|\n", + "| 8324745608044585165|GCST90012877|19:43892009-45892009| 3|[{19_44917947_C_T...| 19_44917947_C_T| 19|44917947| SuSiE-inf| 700.3080514793324| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 4|[{19_44921094_A_T...| 19_44921094_A_T| 19|44921094| SuSiE-inf|431.79459690536703| 1|\n", + "| 1029535804909934921|GCST90012877|19:43892009-45892009| 5|[{19_44894695_T_C...| 19_44894695_T_C| 19|44894695| SuSiE-inf|402.50010763388156| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 6|[{19_44921094_A_T...| 19_44921094_A_T| 19|44921094| SuSiE-inf|225.93101254172214| 1|\n", + "| -60207296485035224|GCST90012877|19:43892009-45892009| 7|[{19_44888997_C_T...| 19_44888997_C_T| 19|44888997| SuSiE-inf| 191.4947272198485| 1|\n", + "|-1350283509846281677|GCST90012877|19:43892009-45892009| 8|[{19_44909967_TGG...|19_44909967_TGG_T| 19|44909967| SuSiE-inf|105.04460057482835| 1|\n", + "|-4078755027603845519|GCST90012877|19:43892009-45892009| 9|[{19_44918393_G_A...| 19_44918393_G_A| 19|44918393| SuSiE-inf| 63.30243818120949| 1|\n", + "| 3925446284512644964|GCST90012877|19:43892009-45892009| 10|[{19_44913574_T_G...| 19_44913574_T_G| 19|44913574| SuSiE-inf|54.079307276192694| 1|\n", + "+--------------------+------------+--------------------+----------------+--------------------+-----------------+----------+--------+-----------------+------------------+----+\n", + "\n", + "None\n", + " N_gwas N_ld N_overlap N_outliers N_imputed N_final_to_fm eleapsed_time\n", + "0 7582 10448 6100 0 681 6781 334.328722\n" + ] + } + ], + "source": [ + "res=SusieFineMapperStep.susie_finemapper_one_studylocus_row_v2_dev(\n", + " GWAS=gwas1,\n", + " session=session,\n", + " study_locus_row=one_row,\n", + " study_index=study_index,\n", + " window= 2_000_000,\n", + " L=10,\n", + " susie_est_tausq=False,\n", + " run_carma=False,\n", + " run_sumstat_imputation=True,\n", + " carma_time_limit=10000,\n", + " imputed_r2_threshold=0.8,\n", + " ld_score_threshold=4\n", + ")\n", + "sl=res[\"study_locus\"]\n", + "print(sl._df.withColumn(\"size\", f.size(sl._df[\"locus\"])).show())\n", + "print(res[\"log\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### With CARMA, with imputation" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "| studyLocusId| studyId| region|credibleSetIndex| locus| variantId|chromosome|position|finemappingMethod|credibleSetlog10BF|size|\n", + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "| 3030414938485808431|GCST90012877|19:43892009-45892009| 1|[{19_44895007_C_T...|19_44895007_C_T| 19|44895007| SuSiE-inf|2680.9099711333456| 1|\n", + "|-2201142982564351776|GCST90012877|19:43892009-45892009| 2|[{19_44900601_A_G...|19_44900601_A_G| 19|44900601| SuSiE-inf| 2103.873956796136| 1|\n", + "|-6417720984991662128|GCST90012877|19:43892009-45892009| 3|[{19_44908684_T_C...|19_44908684_T_C| 19|44908684| SuSiE-inf|1968.8126348567705| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 4|[{19_44921094_A_T...|19_44921094_A_T| 19|44921094| SuSiE-inf|1089.9033376410644| 1|\n", + "| 7760477027903907683|GCST90012877|19:43892009-45892009| 5|[{19_44911142_C_A...|19_44911142_C_A| 19|44911142| SuSiE-inf|188.55568384844716| 1|\n", + "|-6417720984991662128|GCST90012877|19:43892009-45892009| 6|[{19_44908684_T_C...|19_44908684_T_C| 19|44908684| SuSiE-inf| 83.57344085238768| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 7|[{19_44921094_A_T...|19_44921094_A_T| 19|44921094| SuSiE-inf| 82.01732099119907| 1|\n", + "| 8852802213660052283|GCST90012877|19:43892009-45892009| 8|[{19_44862190_G_A...|19_44862190_G_A| 19|44862190| SuSiE-inf| 45.92126992319222| 1|\n", + "|-1611304699666037367|GCST90012877|19:43892009-45892009| 9|[{19_44821259_C_T...|19_44821259_C_T| 19|44821259| SuSiE-inf|37.363613067645254| 1|\n", + "| 3556335645959991344|GCST90012877|19:43892009-45892009| 10|[{19_45017701_G_T...|19_45017701_G_T| 19|45017701| SuSiE-inf|30.736039473626658| 4|\n", + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "\n", + "None\n", + " N_gwas N_ld N_overlap N_outliers N_imputed N_final_to_fm eleapsed_time\n", + "0 7582 10448 6100 152 715 6663 1036.467428\n" + ] + } + ], + "source": [ + "res=SusieFineMapperStep.susie_finemapper_one_studylocus_row_v2_dev(\n", + " GWAS=gwas1,\n", + " session=session,\n", + " study_locus_row=one_row,\n", + " study_index=study_index,\n", + " window= 2_000_000,\n", + " L=10,\n", + " susie_est_tausq=False,\n", + " run_carma=True,\n", + " run_sumstat_imputation=True,\n", + " carma_time_limit=10000,\n", + " imputed_r2_threshold=0.8,\n", + " ld_score_threshold=4\n", + ")\n", + "sl=res[\"study_locus\"]\n", + "print(sl._df.withColumn(\"size\", f.size(sl._df[\"locus\"])).show())\n", + "print(res[\"log\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### With CARMA, with imputation, with estimation of infinitisimal effects (susie_est_tausq=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "| studyLocusId| studyId| region|credibleSetIndex| locus| variantId|chromosome|position|finemappingMethod|credibleSetlog10BF|size|\n", + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "|-6417720984991662128|GCST90012877|19:43892009-45892009| 1|[{19_44908684_T_C...|19_44908684_T_C| 19|44908684| SuSiE-inf| 1105.297844890198| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 2|[{19_44921094_A_T...|19_44921094_A_T| 19|44921094| SuSiE-inf|1042.0949995382389| 1|\n", + "|-2201142982564351776|GCST90012877|19:43892009-45892009| 3|[{19_44900601_A_G...|19_44900601_A_G| 19|44900601| SuSiE-inf| 760.0654878716481| 1|\n", + "| 3030414938485808431|GCST90012877|19:43892009-45892009| 4|[{19_44895007_C_T...|19_44895007_C_T| 19|44895007| SuSiE-inf| 388.8928142354868| 1|\n", + "| -251577639520141451|GCST90012877|19:43892009-45892009| 5|[{19_44899220_C_T...|19_44899220_C_T| 19|44899220| SuSiE-inf| 259.5645544847559| 1|\n", + "| 7760477027903907683|GCST90012877|19:43892009-45892009| 6|[{19_44911142_C_A...|19_44911142_C_A| 19|44911142| SuSiE-inf|231.66277856324325| 1|\n", + "| 4133344777320628094|GCST90012877|19:43892009-45892009| 7|[{19_44904531_G_A...|19_44904531_G_A| 19|44904531| SuSiE-inf|143.22657752219786| 1|\n", + "|-1764089385585984368|GCST90012877|19:43892009-45892009| 8|[{19_44893642_T_C...|19_44893642_T_C| 19|44893642| SuSiE-inf| 87.72507299242906| 1|\n", + "|-1158278093713046158|GCST90012877|19:43892009-45892009| 9|[{19_44921094_A_T...|19_44921094_A_T| 19|44921094| SuSiE-inf| 71.4171763690986| 1|\n", + "|-6417720984991662128|GCST90012877|19:43892009-45892009| 10|[{19_44908684_T_C...|19_44908684_T_C| 19|44908684| SuSiE-inf| 43.36071977593145| 1|\n", + "+--------------------+------------+--------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "\n", + "None\n", + " N_gwas N_ld N_overlap N_outliers N_imputed N_final_to_fm eleapsed_time\n", + "0 7582 10448 6100 151 720 6669 1229.515921\n" + ] + } + ], + "source": [ + "res=SusieFineMapperStep.susie_finemapper_one_studylocus_row_v2_dev(\n", + " GWAS=gwas1,\n", + " session=session,\n", + " study_locus_row=one_row,\n", + " study_index=study_index,\n", + " window= 2_000_000,\n", + " L=10,\n", + " susie_est_tausq=True,\n", + " run_carma=True,\n", + " run_sumstat_imputation=True,\n", + " carma_time_limit=10000,\n", + " imputed_r2_threshold=0.8,\n", + " ld_score_threshold=4\n", + ")\n", + "sl=res[\"study_locus\"]\n", + "print(sl._df.withColumn(\"size\", f.size(sl._df[\"locus\"])).show())\n", + "print(res[\"log\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fine-mapping of MHC region using 1Mb window" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "Row(studyId='GCST90012877', variantId='6_32592248_A_G', chromosome='6', position=32592248, beta=-0.103604380043, sampleSize=None, pValueMantissa=2.877000093460083, pValueExponent=-15, effectAlleleFrequencyFromSource=0.21086899936199188, standardError=0.0131209374957, studyLocusId=5718491981995302674, qualityControls=[], row_index=27)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = slt_df.withColumn(\"row_index\", f.monotonically_increasing_id())\n", + "one_row = df.filter(df.row_index == 27).first()\n", + "one_row" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 1541:==========================================> (6 + 2) / 8]\r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+------------+-------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "| studyLocusId| studyId| region|credibleSetIndex| locus| variantId|chromosome|position|finemappingMethod|credibleSetlog10BF|size|\n", + "+--------------------+------------+-------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "|-3446214959021623473|GCST90012877|6:32092248-33092248| 1|[{6_32557997_G_A,...| 6_32557997_G_A| 6|32557997| SuSiE-inf| 4323.908142062261| 1|\n", + "| -439738150050389281|GCST90012877|6:32092248-33092248| 2|[{6_32558002_G_T,...| 6_32558002_G_T| 6|32558002| SuSiE-inf|3428.8321277074765| 1|\n", + "| 5831857384024844796|GCST90012877|6:32092248-33092248| 3|[{6_32557987_C_A,...| 6_32557987_C_A| 6|32557987| SuSiE-inf|1699.8680349563335| 1|\n", + "|-1087057043201011402|GCST90012877|6:32092248-33092248| 4|[{6_32557977_T_C,...| 6_32557977_T_C| 6|32557977| SuSiE-inf| 965.9753305300063| 1|\n", + "| 6919234179916081233|GCST90012877|6:32092248-33092248| 5|[{6_32649735_C_T,...| 6_32649735_C_T| 6|32649735| SuSiE-inf| 369.9698233117616| 1|\n", + "| 7781006900918060896|GCST90012877|6:32092248-33092248| 6|[{6_32652962_C_T,...| 6_32652962_C_T| 6|32652962| SuSiE-inf| 328.6834447478274| 1|\n", + "|-7512794333418509403|GCST90012877|6:32092248-33092248| 7|[{6_32591896_T_G,...| 6_32591896_T_G| 6|32591896| SuSiE-inf|326.52393082050276| 1|\n", + "| 4056478719932360430|GCST90012877|6:32092248-33092248| 8|[{6_32621456_GC_G...|6_32621456_GC_G| 6|32621456| SuSiE-inf|263.48518383939836| 1|\n", + "| 8380896542014789747|GCST90012877|6:32092248-33092248| 9|[{6_32648039_G_A,...| 6_32648039_G_A| 6|32648039| SuSiE-inf|176.62947310155317| 1|\n", + "| 9053545161380162736|GCST90012877|6:32092248-33092248| 10|[{6_32700030_C_T,...| 6_32700030_C_T| 6|32700030| SuSiE-inf| 69.83226092797517| 2|\n", + "+--------------------+------------+-------------------+----------------+--------------------+---------------+----------+--------+-----------------+------------------+----+\n", + "\n", + "None\n", + " N_gwas N_ld N_overlap N_outliers N_imputed N_final_to_fm eleapsed_time\n", + "0 19311 22318 13188 0 0 13188 298.784288\n" + ] + } + ], + "source": [ + "res=SusieFineMapperStep.susie_finemapper_one_studylocus_row_v2_dev(\n", + " GWAS=gwas1,\n", + " session=session,\n", + " study_locus_row=one_row,\n", + " study_index=study_index,\n", + " window= 1_000_000,\n", + " L=10,\n", + " susie_est_tausq=False,\n", + " run_carma=False,\n", + " run_sumstat_imputation=False,\n", + " carma_time_limit=10000,\n", + " imputed_r2_threshold=0.8,\n", + " ld_score_threshold=4\n", + ")\n", + "sl=res[\"study_locus\"]\n", + "print(sl._df.withColumn(\"size\", f.size(sl._df[\"locus\"])).show())\n", + "print(res[\"log\"])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "gentropy-krNFZEZg-py3.10", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From ecd806331813bb28eada4d4a56c983e5a419b833 Mon Sep 17 00:00:00 2001 From: Daniel-Considine <113430683+Daniel-Considine@users.noreply.github.com> Date: Wed, 10 Apr 2024 14:41:07 +0100 Subject: [PATCH 50/86] fix: removing all duplicated variants in sumstats for finemapping functions (#574) --- src/gentropy/susie_finemapper.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index db62fe359..d37298436 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -81,6 +81,10 @@ def susie_finemapper_one_studylocus_row( .filter(f.col("studyId") == studyId) .filter(f.col("z").isNotNull()) ) + # Remove ALL duplicated variants from GWAS DataFrame - we don't know which is correct + variant_counts = gwas_df.groupBy("variantId").count() + unique_variants = variant_counts.filter(f.col("count") == 1) + gwas_df = gwas_df.join(unique_variants, on="variantId", how="left_semi") ld_index = ( GnomADLDMatrix() @@ -320,6 +324,10 @@ def susie_finemapper_ss_gathered( .withColumn("position", f.split(f.col("variantId"), "_")[1]) .filter(f.col("z").isNotNull()) ) + # Remove ALL duplicated variants from GWAS DataFrame - we don't know which is correct + variant_counts = gwas_df.groupBy("variantId").count() + unique_variants = variant_counts.filter(f.col("count") == 1) + gwas_df = gwas_df.join(unique_variants, on="variantId", how="left_semi") ld_index = ( GnomADLDMatrix() From 7ed4703fcb3589af82f9fc76425f0691a080dee4 Mon Sep 17 00:00:00 2001 From: Yakov Date: Sun, 14 Apr 2024 16:42:34 +0100 Subject: [PATCH 51/86] feat: adding notebook for mapping EFOs for the FinnGen study index (#575) --- notebooks/Mapping_EFO_finngen.ipynb | 768 ++++++++++++++++++++++++++++ 1 file changed, 768 insertions(+) create mode 100644 notebooks/Mapping_EFO_finngen.ipynb diff --git a/notebooks/Mapping_EFO_finngen.ipynb b/notebooks/Mapping_EFO_finngen.ipynb new file mode 100644 index 000000000..9bd82d8d4 --- /dev/null +++ b/notebooks/Mapping_EFO_finngen.ipynb @@ -0,0 +1,768 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Mapping EFOs for the FinnGen study index using old study index from the previos prod" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook adds EFOs from previos prod version of study_index to the new FinnGen study_index using trait name as a matching key.\n", + "\n", + "The rsulting study index has 1542 rows with not null EFOs (out of 2408 rows).\n", + "\n", + "The new study index is saved here:\n", + "\"gs://genetics-portal-dev-analysis/yt4/study_index_finngen_with_efo\"" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Your browser has been opened to visit:\n", + "\n", + " https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8085%2F&scope=openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fsqlservice.login+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faccounts.reauth&state=XHb8Uk43SsVjvFRqwgrX4Tgg2tTOHS&access_type=offline&code_challenge=OkiqDAkHXDGEgJQbX8r0ZYKfZ7gcgfXS8mfZc5a913Y&code_challenge_method=S256\n", + "\n", + "\n", + "Credentials saved to file: [/Users/yt4/.config/gcloud/application_default_credentials.json]\n", + "\n", + "These credentials will be used by any library that requests Application Default Credentials (ADC).\n", + "\n", + "Quota project \"open-targets-genetics-dev\" was added to ADC which can be used by Google client libraries for billing and quota. Note that some services may still bill the project owning the resource.\n" + ] + } + ], + "source": [ + "!gcloud auth application-default login" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " Loading BokehJS ...\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\nconst JS_MIME_TYPE = 'application/javascript';\n const HTML_MIME_TYPE = 'text/html';\n const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n const CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n const script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n function drop(id) {\n const view = Bokeh.index.get_by_id(id)\n if (view != null) {\n view.model.document.clear()\n Bokeh.index.delete(view)\n }\n }\n\n const cell = handle.cell;\n\n const id = cell.output_area._bokeh_element_id;\n const server_id = cell.output_area._bokeh_server_id;\n\n // Clean up Bokeh references\n if (id != null) {\n drop(id)\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd_clean, {\n iopub: {\n output: function(msg) {\n const id = msg.content.text.trim()\n drop(id)\n }\n }\n });\n // Destroy server and session\n const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd_destroy);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n const output_area = handle.output_area;\n const output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n return\n }\n\n const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n const bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n const script_attrs = bk_div.children[0].attributes;\n for (let i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n const toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n const events = require('base/js/events');\n const OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"c92e22c1-acc6-4a9b-8a5a-529fec6e60ae\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.3.0.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"c92e22c1-acc6-4a9b-8a5a-529fec6e60ae\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));", + "application/vnd.bokehjs_load.v0+json": "" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "24/04/14 16:03:28 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Setting default log level to \"WARN\".\n", + "To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).\n", + "pip-installed Hail requires additional configuration options in Spark referring\n", + " to the path to the Hail Python module directory HAIL_DIR,\n", + " e.g. /path/to/python/site-packages/hail:\n", + " spark.jars=HAIL_DIR/backend/hail-all-spark.jar\n", + " spark.driver.extraClassPath=HAIL_DIR/backend/hail-all-spark.jar\n", + " spark.executor.extraClassPath=./hail-all-spark.jarRunning on Apache Spark version 3.3.4\n", + "SparkUI available at http://192.168.0.232:4040\n", + "Welcome to\n", + " __ __ <>__\n", + " / /_/ /__ __/ /\n", + " / __ / _ `/ / /\n", + " /_/ /_/\\_,_/_/_/ version 0.2.127-bb535cd096c5\n", + "LOGGING: writing to /dev/null\n" + ] + } + ], + "source": [ + "import os\n", + "import hail as hl\n", + "import pyspark.sql.functions as f\n", + "import pandas as pd\n", + "pd.set_option('display.max_colwidth', None)\n", + "pd.set_option('display.expand_frame_repr', False)\n", + "\n", + "from gentropy.common.session import Session\n", + "from gentropy.dataset.study_index import StudyIndex\n", + "\n", + "\n", + "hail_dir = os.path.dirname(hl.__file__)\n", + "session = Session(hail_home=hail_dir, start_hail=True, extended_spark_conf={\"spark.driver.memory\": \"12g\",\n", + " \"spark.kryoserializer.buffer.max\": \"500m\",\"spark.driver.maxResultSize\":\"3g\"})\n", + "hl.init(sc=session.spark.sparkContext, log=\"/dev/null\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "path_si=\"gs://genetics_etl_python_playground/releases/24.03/study_index/finngen/study_index\"\n", + "path_si_old=\"gs://genetics-portal-dev-analysis/yt4/study_index.csv\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "si_old=session.spark.read.csv(path_si_old, header=True,sep=\"\\t\")\n", + "si_new=StudyIndex.from_parquet(session=session, path=path_si)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+-------------------+--------------------+-------+---------+-------------+----+----------+----------+-----------+---------+------------+--------------+-------+--------------------+-----------------+--------------------+\n", + "| study_id| ancestry_initial|ancestry_replication|n_cases|n_initial|n_replication|pmid|pub_author| pub_date|pub_journal|pub_title|has_sumstats|num_assoc_loci| source| trait_reported| trait_efos| trait_category|\n", + "+--------------------+-------------------+--------------------+-------+---------+-------------+----+----------+----------+-----------+---------+------------+--------------+-------+--------------------+-----------------+--------------------+\n", + "|FINNGEN_R6_M13_MU...|['European=253458']| []| 108.0| 253458| 0.0|null|FINNGEN_R6|2022-01-24| null| null| True| 0|FINNGEN|Multifocal fibros...|['MONDO_0009230']|immune system dis...|\n", + "|FINNGEN_R6_M13_MU...|['European=199528']| []| 1804.0| 199528| 0.0|null|FINNGEN_R6|2022-01-24| null| null| True| 0|FINNGEN|Disorders of muscles| ['EFO_0002970']|musculoskeletal o...|\n", + "|FINNGEN_R6_M13_MU...|['European=197821']| []| 97.0| 197821| 0.0|null|FINNGEN_R6|2022-01-24| null| null| True| 0|FINNGEN|\"\"\"Muscle wasting...| ['EFO_0009851']| biological process|\n", + "|FINNGEN_R6_M13_MU...|['European=198253']| []| 529.0| 198253| 0.0|null|FINNGEN_R6|2022-01-24| null| null| True| 0|FINNGEN|Other specified d...| ['EFO_0002970']|musculoskeletal o...|\n", + "|FINNGEN_R6_M13_MU...|['European=198179']| []| 455.0| 198179| 0.0|null|FINNGEN_R6|2022-01-24| null| null| True| 1|FINNGEN| Muscle strain| ['EFO_0010686']|injury, poisoning...|\n", + "+--------------------+-------------------+--------------------+-------+---------+-------------+----+----------+----------+-----------+---------+------------+--------------+-------+--------------------+-----------------+--------------------+\n", + "only showing top 5 rows\n", + "\n" + ] + } + ], + "source": [ + "si_old.show(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "| studyId| projectId|studyType| traitFromSource|traitFromSourceMappedIds|geneId|tissueFromSourceId|pubmedId|publicationTitle|publicationFirstAuthor|publicationDate|publicationJournal|backgroundTraitFromSourceMappedIds| initialSampleSize|nCases|nControls|nSamples| cohorts|ldPopulationStructure| discoverySamples|replicationSamples|qualityControls|analysisFlags|summarystatsLocation|hasSumstats|\n", + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Actinomycosis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 101| 363227| 363328|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Amoebiasis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 160| 367214| 367374|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas|Anogenital herpes...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 1986| 400197| 402183|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Aspergillosis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 211| 403213| 403424|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas|Atypical virus in...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 282| 409849| 410131|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "only showing top 5 rows\n", + "\n" + ] + } + ], + "source": [ + "si_new_df=si_new.df\n", + "si_new_df.show(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "57246\n", + "2408\n" + ] + } + ], + "source": [ + "print(si_old.count())\n", + "print(si_new_df.count())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+-----------------+\n", + "| trait_reported| trait_efos|\n", + "+--------------------+-----------------+\n", + "|Multifocal fibros...|['MONDO_0009230']|\n", + "|Disorders of muscles| ['EFO_0002970']|\n", + "|\"\"\"Muscle wasting...| ['EFO_0009851']|\n", + "|Other specified d...| ['EFO_0002970']|\n", + "| Muscle strain| ['EFO_0010686']|\n", + "+--------------------+-----------------+\n", + "only showing top 5 rows\n", + "\n" + ] + } + ], + "source": [ + "si_old=si_old.select(\"trait_reported\",\"trait_efos\")\n", + "si_old.show(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from pyspark.sql.functions import lower\n", + "\n", + "si_old = si_old.withColumn(\"trait_reported_low\", lower(si_old[\"trait_reported\"])).select(\"trait_reported_low\",\"trait_efos\")\n", + "si_new_df= si_new_df.withColumn(\"trait_reported_low\", lower(si_new_df[\"traitFromSource\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "2408" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si_old = si_old.dropDuplicates(['trait_reported_low'])\n", + "joined_df = si_new_df.join(si_old, \"trait_reported_low\", how='left')\n", + "joined_df.count()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+--------------------+\n", + "| trait_reported_low| studyId| projectId|studyType| traitFromSource|traitFromSourceMappedIds|geneId|tissueFromSourceId|pubmedId|publicationTitle|publicationFirstAuthor|publicationDate|publicationJournal|backgroundTraitFromSourceMappedIds| initialSampleSize|nCases|nControls|nSamples| cohorts|ldPopulationStructure| discoverySamples|replicationSamples|qualityControls|analysisFlags|summarystatsLocation|hasSumstats| trait_efos|\n", + "+--------------------+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+--------------------+\n", + "| actinomycosis|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Actinomycosis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 101| 363227| 363328|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| null|\n", + "| amoebiasis|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Amoebiasis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 160| 367214| 367374|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['EFO_0007144']|\n", + "|anogenital herpes...|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas|Anogenital herpes...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 1986| 400197| 402183|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['EFO_0007282']|\n", + "| aspergillosis|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Aspergillosis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 211| 403213| 403424|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['EFO_0007157']|\n", + "|atypical virus in...|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas|Atypical virus in...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 282| 409849| 410131|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['MONDO_0024318']|\n", + "|bacterial infecti...|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Bacterial infecti...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 20226| 363227| 383453|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| null|\n", + "|bacterial, viral ...|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Bacterial, viral ...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2852| 409329| 412181|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| null|\n", + "|other bacterial i...|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Other bacterial i...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 6145| 367214| 373359|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['EFO_0000771']|\n", + "| candidiasis|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas| Candidiasis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 4306| 403213| 407519|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['MONDO_0002026']|\n", + "|other sexually tr...|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas|Other sexually tr...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2186| 400197| 402383|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|['MONDO_0021681',...|\n", + "| cholera|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas| Cholera| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 1385| 367214| 368599|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['EFO_1001235']|\n", + "|dengue fever [cla...|FINNGEN_R10_AB1_D...|FINNGEN_R10| gwas|Dengue fever [cla...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 53| 409137| 409190|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| null|\n", + "| dermatophytosis|FINNGEN_R10_AB1_D...|FINNGEN_R10| gwas| Dermatophytosis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 3921| 403213| 407134|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['MONDO_0004678']|\n", + "| early syphilis|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Early syphilis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 308| 400197| 400505|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['EFO_0007504']|\n", + "|infectious mononu...| FINNGEN_R10_AB1_EBV|FINNGEN_R10| gwas|Infectious mononu...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2979| 400974| 403953|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['EFO_0007326']|\n", + "| enterobiasis|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Enterobiasis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 112| 411658| 411770|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| null|\n", + "| erysipelas|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Erysipelas| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 22261| 363227| 385488|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['EFO_1001462']|\n", + "|diarrhoea and gas...|FINNGEN_R10_AB1_G...|FINNGEN_R10| gwas|Diarrhoea and gas...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 32210| 367214| 399424|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['MONDO_0045031']|\n", + "|gonococcal infection|FINNGEN_R10_AB1_G...|FINNGEN_R10| gwas|Gonococcal infection| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 954| 400197| 401151|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true| ['DOID_7551']|\n", + "| helminthiases|FINNGEN_R10_AB1_H...|FINNGEN_R10| gwas| Helminthiases| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 523| 411658| 412181|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|['EFO_0007245', '...|\n", + "+--------------------+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+--------------------+\n", + "only showing top 20 rows\n", + "\n" + ] + } + ], + "source": [ + "joined_df.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1542\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Stage 22:===========================================> (3 + 1) / 4]\r" + ] + } + ], + "source": [ + "num_non_null_rows = joined_df.filter(joined_df.trait_efos.isNotNull()).count()\n", + "print(num_non_null_rows)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+------------+---------+---------+--------------------+------------------------+------+------------------+--------+--------------------+----------------------+---------------+--------------------+----------------------------------+--------------------+------+---------+--------+--------------------+---------------------+--------------------+--------------------+---------------+-------------+--------------------+-----------+\n", + "| studyId|projectId|studyType| traitFromSource|traitFromSourceMappedIds|geneId|tissueFromSourceId|pubmedId| publicationTitle|publicationFirstAuthor|publicationDate| publicationJournal|backgroundTraitFromSourceMappedIds| initialSampleSize|nCases|nControls|nSamples| cohorts|ldPopulationStructure| discoverySamples| replicationSamples|qualityControls|analysisFlags|summarystatsLocation|hasSumstats|\n", + "+------------+---------+---------+--------------------+------------------------+------+------------------+--------+--------------------+----------------------+---------------+--------------------+----------------------------------+--------------------+------+---------+--------+--------------------+---------------------+--------------------+--------------------+---------------+-------------+--------------------+-----------+\n", + "| GCST000102| GCST| gwas|Endothelial funct...| [EFO_0004298]| null| null|17903301|Genome-wide assoc...| Vasan RS| 2007-09-19| BMC Med Genet| null|Up to 1,238 Europ...| 0| 0| 1238| [null]| [{nfe, 1.0}]| [{1238, European}]| []| null| null| null| false|\n", + "| GCST000272| GCST| gwas| Height| [EFO_0004339]| null| null|19030899|Genome-wide assoc...| Lei SF| 2008-11-23| Hum Genet| null|618 Chinese ances...| 0| 0| 618| [null]| [{eas, 1.0}]| [{618, East Asian}]|[{2953, East Asian}]| null| null| null| false|\n", + "| GCST000436| GCST| gwas|Acenocoumarol mai...| [GO_0061476]| null| null|19578179|A genome-wide ass...| Teichert M| 2009-07-04| Hum Mol Genet| null|1,451 European an...| 0| 0| 1451| [null]| [{nfe, 1.0}]| [{1451, European}]| [{287, NR}]| null| null| null| false|\n", + "| GCST000514| GCST| gwas|Response to antip...| [GO_0097332]| null| null|19875103|Genomewide associ...| Aberg K| 2009-10-27| Biol Psychiatry| null|421 European ance...| 738| 0| 738| [null]| [{afr, 0.28997289...|[{214, African Am...| []| null| null| null| false|\n", + "| GCST000550| GCST| gwas| Metabolite levels| [EFO_0004725]| null| null|20037589|A genome-wide per...| Illig T| 2009-12-27| Nat Genet| null|1,029 European an...| 0| 0| 1029| [null]| [{nfe, 1.0}]| [{1029, European}]| [{1202, European}]| null| null| null| false|\n", + "| GCST000708| GCST| gwas| Freckling| [EFO_0003963]| null| null|20585627|Web-based, partic...| Eriksson N| 2010-06-24| PLoS Genet| null|9,126 European an...| 0| 0| 9126| [null]| [{nfe, 1.0}]| [{9126, European}]| []| null| null| null| false|\n", + "| GCST000754| GCST| gwas|Personality dimen...| [EFO_0004365]| null| null|20691247|A genome-wide ass...| Verweij KJ| 2010-08-04| Biol Psychol| null|5,117 European an...| 0| 0| 5117| [null]| [{nfe, 1.0}]| [{5117, European}]| []| null| null| null| false|\n", + "| GCST000880| GCST| gwas|Menarche (age at ...| [EFO_0004703]| null| null|21102462|Thirty new loci f...| Elks CE| 2010-11-21| Nat Genet| null|86,142 European a...| 0| 0| 87802| [null]| [{nfe, 1.0}]| [{87802, European}]| [{14731, European}]| null| null| null| false|\n", + "| GCST001031| GCST| gwas|Large B-cell lymp...| [EFO_0000403]| null| null|21471979|Common variants o...| Kumar V| 2011-04-07| J Hum Genet| null|74 Japanese ances...| 74| 934| 1008| [null]| [{eas, 1.0}]|[{1008, East Asian}]|[{3634, East Asian}]| null| null| null| false|\n", + "| GCST001032| GCST| gwas|Caffeine consumption| [EFO_0004330]| null| null|21490707|Genome-wide meta-...| Cornelis MC| 2011-04-07| PLoS Genet| null|47,431 European a...| 0| 0| 47431| [null]| [{nfe, 1.0}]| [{47431, European}]| []| null| null| null| false|\n", + "| GCST001059| GCST| gwas| Neutrophil count| [EFO_0004833]| null| null|21507922|Duffy-null-associ...| Ramsuran V| 2011-05-01| Clin Infect Dis| null|115 African ances...| 0| 0| 115| [null]| [{afr, 1.0}]|[{115, Sub-Sahara...| []| null| null| null| false|\n", + "| GCST002187| GCST| gwas|Systolic blood pr...| [EFO_0006335]| null| null|24058526|Genome-wide meta-...| Bhatnagar P| 2013-09-13| PLoS One| [MONDO_0011382]|1617 African Amer...| 1617| 0| 1617| [null]| [{afr, 1.0}]|[{1617, African A...| []| null| null| null| false|\n", + "| GCST002623| GCST| gwas| L-arginine levels| [EFO_0006524]| null| null|25245031|Genome-wide assoc...| Luneburg N| 2014-09-21|Circ Cardiovasc G...| null|3,747 European an...| 0| 0| 6739| [null]| [{nfe, 1.0}]|[{3747, European}...| [{1159, European}]| null| null| null| false|\n", + "| GCST003261| GCST| gwas|Ischemic stroke (...| [HP_0002140]| null| null|26708676|Loci associated w...| Pulit SL| 2015-12-18| Lancet Neurol| null|up to 8,062 Europ...| 9510| 32473| 41983| [null]| [{amr, 0.06647928...|[{2791, Hispanic ...|[{256, African Am...| null| null| null| false|\n", + "| GCST003427| GCST| gwas|Alzheimer disease...| [EFO_0004847, MON...| null| null|26830138|Family-based asso...| Herold C| 2016-02-02| Mol Psychiatry| null|2,478 European an...| 2478| 979| 3457| [null]| [{nfe, 1.0}]| [{3524, European}]| []| null| null| null| false|\n", + "| GCST003665| GCST| gwas|Free cholesterol ...| [EFO_0004611, EFO...| null| null|27005778|Genome-wide study...| Kettunen J| 2016-03-23| Nat Commun| null|21,555 European a...| 0| 0| 21555|[EGCUT, ERF, FTC,...| [{nfe, 1.0}]| [{21555, European}]| []| null| null| null| false|\n", + "| GCST003773| GCST| gwas|Loneliness (multi...| [EFO_0007865]| null| null|27629369|Genome-Wide Assoc...| Gao J| 2016-09-15|Neuropsychopharma...| null|8,490 European an...| 0| 0| 10760| [null]| [{nfe, 0.80529739...|[{8490, European}...| []| null| null| null| false|\n", + "| GCST003791| GCST| gwas|Response to metfo...| [EFO_0006952, GO_...| null| null|28173075|Metformin pharmac...| Niu N| 2016-09-11| Hum Mol Genet| null|up to 96 African ...| 0| 0| 288| [null]| [{afr, 0.33333333...|[{96, African Ame...| []| null| null| null| false|\n", + "| GCST003824| GCST| gwas|Depression in res...| [EFO_0007006, EFO...| null| null|27723809|Genome-Wide Assoc...| Matsunami K| 2016-10-10| PLoS One| [EFO_0004220]|45 Japanese ances...| 45| 179| 224| [null]| [{eas, 1.0}]| [{224, East Asian}]| [{160, East Asian}]| null| null| null| false|\n", + "| GCST003837| GCST| gwas| Chronotype| [EFO_0004354]| null| null|27494321|Genome-Wide Assoc...| Jones SE| 2016-08-05| PLoS Genet| null|127,898 British i...| 0| 0| 127898| [null]| [{nfe, 1.0}]|[{127898, European}]| [{89283, NR}]| []| []|ftp://ftp.ebi.ac....| true|\n", + "| GCST004678| GCST| gwas|Psychosis pronene...| [EFO_0008337]| null| null|28525603|Genome-Wide Assoc...| Ortega-Alonso A| 2017-05-19| Schizophr Bull| null|3,967 Finnish anc...| 0| 0| 3967| [null]| [{nfe, 1.0}]| [{3967, European}]| []| null| null| null| false|\n", + "| GCST005189| GCST| gwas| Tanning| [EFO_0004279]| null| null|29195075|An Unexpectedly C...| Martin AR| 2017-11-30| Cell| null|216 Sub-Saharan A...| 0| 0| 216| [null]| [{afr, 1.0}]|[{216, Sub-Sahara...|[{240, Sub-Sahara...| null| null| null| false|\n", + "| GCST005437| GCST| gwas|Random C-peptide ...| [EFO_0005187]| null| null|29404672|Meta-genome-wide ...| Roshandel D| 2018-02-05| Diabetologia| [MONDO_0005147]|1,497 European an...| 0| 0| 1497| [null]| [{nfe, 1.0}]| [{1497, European}]| []| null| null| null| false|\n", + "| GCST005503| GCST| gwas|Medium HDL partic...| [EFO_0004612]| null| null|29084231|Common, low-frequ...| Davis JP| 2017-10-30| PLoS Genet| null|8,372 Finnish anc...| 0| 0| 8372| [null]| [{nfe, 1.0}]| [{8372, European}]| []| null| null| null| false|\n", + "| GCST005669| GCST| gwas|Delta-6 desaturas...| [EFO_0007765, EFO...| null| null|29246731|A common variant ...| de Toro-Martin J| 2017-11-02| J Clin Lipidol| null|81 extreme respon...| 0| 0| 141| [null]| [{nfe, 1.0}]| [{141, NR}]| []| null| null| null| false|\n", + "| GCST005749| GCST| gwas|Digit length rati...| [EFO_0004841]| null| null|29659830|Genome-wide assoc...| Warrington NM| 2018-04-12| Hum Mol Genet| null|14,382 European a...| 0| 0| 15661| [null]| [{nfe, 1.0}]|[{14382, European...| []| null| null| null| false|\n", + "| GCST006420| GCST| gwas|Affective disorde...| [EFO_0004247, EFO...| null| null|30116032|Genetics of suici...| Erlangsen A| 2018-08-16| Mol Psychiatry| null|4,302 European an...| 4302| 13294| 17596| [null]| [{nfe, 1.0}]| [{17596, European}]| []| null| null| null| false|\n", + "| GCST006484| GCST| gwas| Type 2 diabetes| [MONDO_0005148]| null| null|30130595|Pilot genome-wide...| Dominguez-Cruz MG| 2018-08-18| Gene| null|45 Maya ancestry ...| 45| 47| 92| [null]| [{amr, 1.0}]|[{92, Native Amer...| []| null| null| null| false|\n", + "| GCST006496| GCST| gwas|Glomerular filtra...| [EFO_0006829, EFO...| null| null|30160337|Genome Wide Assoc...| Asleh R| 2018-08-30| Clin Transplant| null|243 European ance...| 0| 0| 251| [null]| [{nfe, 0.99601593...|[{243, European},...| []| null| null| null| false|\n", + "| GCST006739| GCST| gwas|Proportion of mis...| [EFO_0006923]| null| null|30188897|Detecting past an...| Jeong C| 2018-09-06| PLoS Genet| null|981 Tibetan ances...| 0| 0| 981| [null]| [{nfe, 1.0}]| [{981, NR}]| []| null| null| null| false|\n", + "| GCST006907| GCST| gwas|Ischemic stroke (...| [EFO_0005524]| null| null|29531354|Multiancestry gen...| Malik R| 2018-03-12| Nat Genet| null|4,373 European an...| 4373| 406111| 410484| [null]| [{nfe, 1.0}]|[{150765, European}]| []| []| []|ftp://ftp.ebi.ac....| true|\n", + "| GCST006960| GCST| gwas|Inflammatory bowe...| [EFO_0003767]| null| null|26490195|Inherited determi...| Cleynen I| 2015-10-18| Lancet| null|16,902 European a...| 29838| 0| 29838| [null]| [{nfe, 1.0}]| [{29838, European}]| [{6182, European}]| null| null| null| false|\n", + "| GCST007217| GCST| gwas|RR interval (hear...| [EFO_0004831]| null| null|30679814|Genome-wide assoc...| van Setten J| 2019-01-24| Eur J Hum Genet| null|2,006 Erasmus Ruc...| 0| 0| 28698| [null]| [{nfe, 1.0}]| [{28698, European}]| []| null| null| null| false|\n", + "| GCST008154| GCST| gwas| Trunk fat mass| [EFO_0005409]| null| null|28552196|Whole-Genome Sequ...| Tachmazidou I| 2017-06-01| Am J Hum Genet| null|3,399 whole genom...| 0| 0| 16237| [null]| [{nfe, 1.0}]|[{3538, NR}, {128...| [{10667, European}]| null| null| null| false|\n", + "| GCST008483| GCST| gwas| Ulcerative colitis| [EFO_0000729]| null| null|26398853|Identification of...| Ye BD| 2016-01-01| Inflamm Bowel Dis| null|705 Korean ancest...| 705| 1178| 1883| [null]| [{eas, 1.0}]|[{1883, South Asi...|[{3674, South Asi...| null| null| null| false|\n", + "| GCST008671| GCST| gwas|Phlegm x occupati...| [EFO_0007939, EFO...| null| null|30449631|Genome-wide inter...| Zeng X| 2018-11-15| Environ Int| null|1,702 Dutch ances...| 1702| 6274| 7976| [null]| [{nfe, 1.0}]| [{7976, European}]| [{6789, European}]| null| null| null| false|\n", + "| GCST008675| GCST| gwas|Maximum habitual ...| [EFO_0007878]| null| null|31151762|Genome-wide Assoc...| Gelernter J| 2019-04-08| Biol Psychiatry| null|126,936 European ...| 0| 0| 143965| [null]| [{afr, 0.11828569...|[{17029, African ...| []| null| null| null| false|\n", + "| GCST008775| GCST| gwas|Birth weight or w...| [EFO_0004342, EFO...| null| null|30858448|Genetic overlap b...| Tekola-Ayele F| 2019-03-11| Sci Rep| null|153,781 European ...| 0| 0| 378240| [null]| [{nfe, 1.0}]|[{246502, Europea...| []| null| null| null| false|\n", + "| GCST008870| GCST| gwas|Keratinocyte canc...| [EFO_0010176]| null| null|31174203|Combined analysis...| Liyanage UE| 2019-06-07| Hum Mol Genet| null|at least 18,538 E...| 18538| 340302| 358840| [null]| [{nfe, 1.0}]|[{358840, European}]| []| null| null| null| false|\n", + "| GCST009173| GCST| gwas|Response to (pegy...| [EFO_0007859]| null| null|30715261|Genome Wide Assoc...| Brouwer WP| 2019-02-02| Clin Infect Dis| [EFO_0004239]|121 Asian, Europe...| 0| 0| 509| [null]| [{nfe, 0.5}, {afr...|[{127, European},...| []| null| null| null| false|\n", + "| GCST009364| GCST| gwas|Triglyceride leve...| [EFO_0004530, EFO...| null| null|31719535|Multi-ancestry sl...| Noordam R| 2019-11-12| Nat Commun| null|at least 2,926 Af...| 0| 49886| 61990| [null]| [{eas, 0.03837715...|[{2096, East Asia...|[{12579, Hispanic...| null| null| null| false|\n", + "| GCST009391| GCST| gwas|Metabolite levels...| [EFO_0005132]| null| null|23823483|A genome-wide ass...| Rhee EP| 2013-07-02| Cell Metab| null|2,076 European an...| 0| 0| 2076| [null]| [{nfe, 1.0}]| [{2076, European}]| []| null| null| null| false|\n", + "|GCST009391_2| GCST| gwas| Metabolite levels| []| null| null|23823483|A genome-wide ass...| Rhee EP| 2013-07-02| Cell Metab| null|2,076 European an...| 0| 0| 2076| [null]| [{nfe, 1.0}]| [{2076, European}]| []| null| null| null| false|\n", + "|GCST009391_3| GCST| gwas| Metabolite levels| [EFO_0004468, EFO...| null| null|23823483|A genome-wide ass...| Rhee EP| 2013-07-02| Cell Metab| null|2,076 European an...| 0| 0| 2076| [null]| [{nfe, 1.0}]| [{2076, European}]| []| null| null| null| false|\n", + "|GCST009391_4| GCST| gwas| Metabolite levels| [EFO_0004518]| null| null|23823483|A genome-wide ass...| Rhee EP| 2013-07-02| Cell Metab| null|2,076 European an...| 0| 0| 2076| [null]| [{nfe, 1.0}]| [{2076, European}]| []| null| null| null| false|\n", + "|GCST009391_5| GCST| gwas| Metabolite levels| [EFO_0004761]| null| null|23823483|A genome-wide ass...| Rhee EP| 2013-07-02| Cell Metab| null|2,076 European an...| 0| 0| 2076| [null]| [{nfe, 1.0}]| [{2076, European}]| []| null| null| null| false|\n", + "|GCST009391_6| GCST| gwas| Metabolite levels| [EFO_0004846]| null| null|23823483|A genome-wide ass...| Rhee EP| 2013-07-02| Cell Metab| null|2,076 European an...| 0| 0| 2076| [null]| [{nfe, 1.0}]| [{2076, European}]| []| null| null| null| false|\n", + "|GCST009391_7| GCST| gwas| Metabolite levels| [EFO_0005001]| null| null|23823483|A genome-wide ass...| Rhee EP| 2013-07-02| Cell Metab| null|2,076 European an...| 0| 0| 2076| [null]| [{nfe, 1.0}]| [{2076, European}]| []| null| null| null| false|\n", + "|GCST009391_8| GCST| gwas| Metabolite levels| [EFO_0005002]| null| null|23823483|A genome-wide ass...| Rhee EP| 2013-07-02| Cell Metab| null|2,076 European an...| 0| 0| 2076| [null]| [{nfe, 1.0}]| [{2076, European}]| []| null| null| null| false|\n", + "|GCST009391_9| GCST| gwas| Metabolite levels| [EFO_0005058]| null| null|23823483|A genome-wide ass...| Rhee EP| 2013-07-02| Cell Metab| null|2,076 European an...| 0| 0| 2076| [null]| [{nfe, 1.0}]| [{2076, European}]| []| null| null| null| false|\n", + "+------------+---------+---------+--------------------+------------------------+------+------------------+--------+--------------------+----------------------+---------------+--------------------+----------------------------------+--------------------+------+---------+--------+--------------------+---------------------+--------------------+--------------------+---------------+-------------+--------------------+-----------+\n", + "only showing top 50 rows\n", + "\n" + ] + } + ], + "source": [ + "path_tmp=\"gs://gwas_catalog_data/study_index\"\n", + "tmp=StudyIndex.from_parquet(session=session, path=path_tmp)\n", + "tmp.df.show(50)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "joined_df=joined_df.withColumn(\"traitFromSourceMappedIds\",joined_df[\"trait_efos\"]).drop(\"trait_efos\",\"trait_reported_low\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "| studyId| projectId|studyType| traitFromSource|traitFromSourceMappedIds|geneId|tissueFromSourceId|pubmedId|publicationTitle|publicationFirstAuthor|publicationDate|publicationJournal|backgroundTraitFromSourceMappedIds| initialSampleSize|nCases|nControls|nSamples| cohorts|ldPopulationStructure| discoverySamples|replicationSamples|qualityControls|analysisFlags|summarystatsLocation|hasSumstats|\n", + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Actinomycosis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 101| 363227| 363328|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Amoebiasis| ['EFO_0007144']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 160| 367214| 367374|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas|Anogenital herpes...| ['EFO_0007282']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 1986| 400197| 402183|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Aspergillosis| ['EFO_0007157']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 211| 403213| 403424|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas|Atypical virus in...| ['MONDO_0024318']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 282| 409849| 410131|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Bacterial infecti...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 20226| 363227| 383453|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Bacterial, viral ...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2852| 409329| 412181|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Other bacterial i...| ['EFO_0000771']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 6145| 367214| 373359|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas| Candidiasis| ['MONDO_0002026']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 4306| 403213| 407519|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas|Other sexually tr...| ['MONDO_0021681',...| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2186| 400197| 402383|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas| Cholera| ['EFO_1001235']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 1385| 367214| 368599|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_D...|FINNGEN_R10| gwas|Dengue fever [cla...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 53| 409137| 409190|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_D...|FINNGEN_R10| gwas| Dermatophytosis| ['MONDO_0004678']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 3921| 403213| 407134|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Early syphilis| ['EFO_0007504']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 308| 400197| 400505|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "| FINNGEN_R10_AB1_EBV|FINNGEN_R10| gwas|Infectious mononu...| ['EFO_0007326']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2979| 400974| 403953|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Enterobiasis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 112| 411658| 411770|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Erysipelas| ['EFO_1001462']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 22261| 363227| 385488|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_G...|FINNGEN_R10| gwas|Diarrhoea and gas...| ['MONDO_0045031']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 32210| 367214| 399424|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_G...|FINNGEN_R10| gwas|Gonococcal infection| ['DOID_7551']| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 954| 400197| 401151|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_H...|FINNGEN_R10| gwas| Helminthiases| ['EFO_0007245', '...| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 523| 411658| 412181|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "only showing top 20 rows\n", + "\n" + ] + } + ], + "source": [ + "joined_df.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "string\n" + ] + } + ], + "source": [ + "column_type = dict(joined_df.dtypes)[\"traitFromSourceMappedIds\"]\n", + "print(column_type)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "from pyspark.sql.functions import from_json\n", + "from pyspark.sql.types import ArrayType, StringType\n", + "\n", + "# Assuming joined_df is your DataFrame\n", + "joined_df = joined_df.withColumn(\n", + " \"traitFromSourceMappedIds\",\n", + " from_json(\"traitFromSourceMappedIds\", ArrayType(StringType()))\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "| studyId| projectId|studyType| traitFromSource|traitFromSourceMappedIds|geneId|tissueFromSourceId|pubmedId|publicationTitle|publicationFirstAuthor|publicationDate|publicationJournal|backgroundTraitFromSourceMappedIds| initialSampleSize|nCases|nControls|nSamples| cohorts|ldPopulationStructure| discoverySamples|replicationSamples|qualityControls|analysisFlags|summarystatsLocation|hasSumstats|\n", + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Actinomycosis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 101| 363227| 363328|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Amoebiasis| [EFO_0007144]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 160| 367214| 367374|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas|Anogenital herpes...| [EFO_0007282]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 1986| 400197| 402183|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Aspergillosis| [EFO_0007157]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 211| 403213| 403424|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas|Atypical virus in...| [MONDO_0024318]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 282| 409849| 410131|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Bacterial infecti...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 20226| 363227| 383453|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Bacterial, viral ...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2852| 409329| 412181|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Other bacterial i...| [EFO_0000771]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 6145| 367214| 373359|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas| Candidiasis| [MONDO_0002026]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 4306| 403213| 407519|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas|Other sexually tr...| [MONDO_0021681, E...| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2186| 400197| 402383|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas| Cholera| [EFO_1001235]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 1385| 367214| 368599|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_D...|FINNGEN_R10| gwas|Dengue fever [cla...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 53| 409137| 409190|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_D...|FINNGEN_R10| gwas| Dermatophytosis| [MONDO_0004678]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 3921| 403213| 407134|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Early syphilis| [EFO_0007504]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 308| 400197| 400505|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "| FINNGEN_R10_AB1_EBV|FINNGEN_R10| gwas|Infectious mononu...| [EFO_0007326]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2979| 400974| 403953|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Enterobiasis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 112| 411658| 411770|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Erysipelas| [EFO_1001462]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 22261| 363227| 385488|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_G...|FINNGEN_R10| gwas|Diarrhoea and gas...| [MONDO_0045031]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 32210| 367214| 399424|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_G...|FINNGEN_R10| gwas|Gonococcal infection| [DOID_7551]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 954| 400197| 401151|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_H...|FINNGEN_R10| gwas| Helminthiases| [EFO_0007245, EFO...| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 523| 411658| 412181|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "only showing top 20 rows\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "joined_df.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "array\n" + ] + } + ], + "source": [ + "column_type = dict(joined_df.dtypes)[\"traitFromSourceMappedIds\"]\n", + "print(column_type)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "si=StudyIndex(_df=joined_df, _schema=StudyIndex.get_schema())" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "| studyId| projectId|studyType| traitFromSource|traitFromSourceMappedIds|geneId|tissueFromSourceId|pubmedId|publicationTitle|publicationFirstAuthor|publicationDate|publicationJournal|backgroundTraitFromSourceMappedIds| initialSampleSize|nCases|nControls|nSamples| cohorts|ldPopulationStructure| discoverySamples|replicationSamples|qualityControls|analysisFlags|summarystatsLocation|hasSumstats|\n", + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Actinomycosis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 101| 363227| 363328|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Amoebiasis| [EFO_0007144]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 160| 367214| 367374|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas|Anogenital herpes...| [EFO_0007282]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 1986| 400197| 402183|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas| Aspergillosis| [EFO_0007157]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 211| 403213| 403424|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_A...|FINNGEN_R10| gwas|Atypical virus in...| [MONDO_0024318]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 282| 409849| 410131|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Bacterial infecti...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 20226| 363227| 383453|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Bacterial, viral ...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2852| 409329| 412181|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_B...|FINNGEN_R10| gwas|Other bacterial i...| [EFO_0000771]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 6145| 367214| 373359|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas| Candidiasis| [MONDO_0002026]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 4306| 403213| 407519|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas|Other sexually tr...| [MONDO_0021681, E...| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2186| 400197| 402383|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_C...|FINNGEN_R10| gwas| Cholera| [EFO_1001235]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 1385| 367214| 368599|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_D...|FINNGEN_R10| gwas|Dengue fever [cla...| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 53| 409137| 409190|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_D...|FINNGEN_R10| gwas| Dermatophytosis| [MONDO_0004678]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 3921| 403213| 407134|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Early syphilis| [EFO_0007504]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 308| 400197| 400505|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "| FINNGEN_R10_AB1_EBV|FINNGEN_R10| gwas|Infectious mononu...| [EFO_0007326]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 2979| 400974| 403953|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Enterobiasis| null| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 112| 411658| 411770|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_E...|FINNGEN_R10| gwas| Erysipelas| [EFO_1001462]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 22261| 363227| 385488|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_G...|FINNGEN_R10| gwas|Diarrhoea and gas...| [MONDO_0045031]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 32210| 367214| 399424|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_G...|FINNGEN_R10| gwas|Gonococcal infection| [DOID_7551]| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 954| 400197| 401151|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "|FINNGEN_R10_AB1_H...|FINNGEN_R10| gwas| Helminthiases| [EFO_0007245, EFO...| null| null| null| null| null| null| null| null|377,277 (210,870 ...| 523| 411658| 412181|[FinnGen]| [{fin, 1.0}]|[{377277, Finnish}]| null| null| null|gs://finngen-publ...| true|\n", + "+--------------------+-----------+---------+--------------------+------------------------+------+------------------+--------+----------------+----------------------+---------------+------------------+----------------------------------+--------------------+------+---------+--------+---------+---------------------+-------------------+------------------+---------------+-------------+--------------------+-----------+\n", + "only showing top 20 rows\n", + "\n" + ] + } + ], + "source": [ + "si.df.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + }, + { + "data": { + "text/plain": [ + "2408" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "si.df.count()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \r" + ] + } + ], + "source": [ + "si.df.write.parquet(path=\"gs://genetics-portal-dev-analysis/yt4/study_index_finngen_with_efo\")" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "path_to_study_index=\"gs://genetics-portal-dev-analysis/yt4/study_index_finngen_with_efo\"\n", + "si=StudyIndex.from_parquet(session=session, path=path_to_study_index)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "gentropy-krNFZEZg-py3.10", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 900dd649779c2727e44c30b11671b0e3c7261036 Mon Sep 17 00:00:00 2001 From: Daniel-Considine <113430683+Daniel-Considine@users.noreply.github.com> Date: Tue, 23 Apr 2024 13:33:16 +0100 Subject: [PATCH 52/86] feat: adding init to finemapping step (#577) * feat: adding init to finemapping step * fix: removing some commented lines * chore: fixing indents * fix: schema * feat: changing output path to include studyLocusId mapped --------- Co-authored-by: Yakov --- src/gentropy/susie_finemapper.py | 51 ++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index d37298436..7b6f81b3a 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -28,6 +28,47 @@ class SusieFineMapperStep: In the future this step will be refactored and moved to the methods module. """ + def __init__( + self, + session: Session, + study_locus_to_finemap: str, + study_locus_collected_path: str, + study_index_path: str, + output_path: str, + locus_radius: int = 500_000, + locus_L: int = 10, + ) -> None: + """Run fine-mapping on a studyLocusId from a collected studyLocus table. + + Args: + session (Session): Spark session + study_locus_to_finemap (str): path to the study locus to fine-map + study_locus_collected_path (str): path to the collected study locus + study_index_path (str): path to the study index + output_path (str): path to the output + locus_radius (int): Radius of base-pair window around the locus, default is 500_000 + locus_L (int): Maximum number of causal variants in locus, default is 10 + """ + # Read studyLocus + study_locus = ( + StudyLocus.from_parquet(session, study_locus_collected_path) + .df.filter(f.col("studyLocusId") == study_locus_to_finemap) + .collect()[0] + ) + study_index = StudyIndex.from_parquet(session, study_index_path) + # Run fine-mapping + result = self.susie_finemapper_ss_gathered( + session, + study_locus, + study_index, + locus_radius * 2, + locus_L, + ) + # Write result + result.df.write.mode(session.write_mode).parquet( + output_path + "/" + study_locus_to_finemap + ) + @staticmethod def susie_finemapper_one_studylocus_row( GWAS: SummaryStatistics, @@ -317,9 +358,15 @@ def susie_finemapper_ss_gathered( + str(int(position + window / 2)) ) + schema = StudyLocus.get_schema() + gwas_df = session.spark.createDataFrame([study_locus_row], schema=schema) + exploded_df = gwas_df.select(f.explode("locus").alias("locus")) + + result_df = exploded_df.select( + "locus.variantId", "locus.beta", "locus.standardError" + ) gwas_df = ( - session.spark.createDataFrame(study_locus_row.locus) - .withColumn("z", f.col("beta") / f.col("standardError")) + result_df.withColumn("z", f.col("beta") / f.col("standardError")) .withColumn("chromosome", f.split(f.col("variantId"), "_")[0]) .withColumn("position", f.split(f.col("variantId"), "_")[1]) .filter(f.col("z").isNotNull()) From 78fcf1b85a72751fb6a7a006b3769d8170348aed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Irene=20L=C3=B3pez?= <45119610+ireneisdoomed@users.noreply.github.com> Date: Tue, 23 Apr 2024 13:55:35 +0100 Subject: [PATCH 53/86] feat: dockerise gentropy python package (#579) Co-authored-by: David Ochoa --- Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..1221ec637 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.10 + +RUN pip install poetry==1.7.1 + +COPY . . +RUN poetry install --without dev,docs,tests + +ENTRYPOINT ["poetry", "run", "gentropy"] From 82b8a7c539d6ee669a73c09db1d30783eec41d69 Mon Sep 17 00:00:00 2001 From: Daniel-Considine <113430683+Daniel-Considine@users.noreply.github.com> Date: Tue, 23 Apr 2024 14:27:50 +0100 Subject: [PATCH 54/86] feat: updating step config file (#580) --- src/gentropy/config.py | 19 +++++++++++++++++++ src/gentropy/susie_finemapper.py | 6 +++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/gentropy/config.py b/src/gentropy/config.py index 127d90844..0a76b2c84 100644 --- a/src/gentropy/config.py +++ b/src/gentropy/config.py @@ -328,6 +328,24 @@ class WindowBasedClumpingStep(StepConfig): _target_: str = "gentropy.window_based_clumping.WindowBasedClumpingStep" +@dataclass +class FinemapperConfig(StepConfig): + """SuSiE fine-mapper step configuration.""" + + session: Any = field( + default_factory=lambda: { + "start_hail": True, + } + ) + study_locus_to_finemap: str = MISSING + study_locus_collected_path: str = MISSING + study_index_path: str = MISSING + output_path: str = MISSING + locus_radius: int = MISSING + locus_l: int = MISSING + _target_: str = "gentropy.susie_finemapping.SusieFineMapperStep" + + @dataclass class Config: """Application configuration.""" @@ -385,3 +403,4 @@ def register_config() -> None: cs.store(group="step", name="variant_index", node=VariantIndexConfig) cs.store(group="step", name="variant_to_gene", node=VariantToGeneConfig) cs.store(group="step", name="window_based_clumping", node=WindowBasedClumpingStep) + cs.store(group="step", name="susie_finemapping", node=FinemapperConfig) diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index 7b6f81b3a..5a0fa31f3 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -36,7 +36,7 @@ def __init__( study_index_path: str, output_path: str, locus_radius: int = 500_000, - locus_L: int = 10, + locus_l: int = 10, ) -> None: """Run fine-mapping on a studyLocusId from a collected studyLocus table. @@ -47,7 +47,7 @@ def __init__( study_index_path (str): path to the study index output_path (str): path to the output locus_radius (int): Radius of base-pair window around the locus, default is 500_000 - locus_L (int): Maximum number of causal variants in locus, default is 10 + locus_l (int): Maximum number of causal variants in locus, default is 10 """ # Read studyLocus study_locus = ( @@ -62,7 +62,7 @@ def __init__( study_locus, study_index, locus_radius * 2, - locus_L, + locus_l, ) # Write result result.df.write.mode(session.write_mode).parquet( From b0c4530f8925a3d8123d678623d91e5743368ac2 Mon Sep 17 00:00:00 2001 From: Daniel-Considine <113430683+Daniel-Considine@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:22:38 +0100 Subject: [PATCH 55/86] fix: update error in config.py (#583) --- src/gentropy/config.py | 2 +- src/gentropy/susie_finemapper.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gentropy/config.py b/src/gentropy/config.py index 0a76b2c84..8c876bb6d 100644 --- a/src/gentropy/config.py +++ b/src/gentropy/config.py @@ -343,7 +343,7 @@ class FinemapperConfig(StepConfig): output_path: str = MISSING locus_radius: int = MISSING locus_l: int = MISSING - _target_: str = "gentropy.susie_finemapping.SusieFineMapperStep" + _target_: str = "gentropy.susie_finemapper.SusieFineMapperStep" @dataclass diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index 5a0fa31f3..ceb5fbb34 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -5,6 +5,7 @@ import time from typing import Any +import hail as hl import numpy as np import pandas as pd import pyspark.sql.functions as f @@ -49,6 +50,7 @@ def __init__( locus_radius (int): Radius of base-pair window around the locus, default is 500_000 locus_l (int): Maximum number of causal variants in locus, default is 10 """ + hl.init(sc=session.spark.sparkContext, log="/dev/null") # Read studyLocus study_locus = ( StudyLocus.from_parquet(session, study_locus_collected_path) From 28a067cd19573eaae49078df777fd72dbcd4dcc4 Mon Sep 17 00:00:00 2001 From: Daniel-Considine <113430683+Daniel-Considine@users.noreply.github.com> Date: Tue, 23 Apr 2024 18:01:36 +0100 Subject: [PATCH 56/86] feat: changing locus window to locus radius to be consistent with other functions (#582) --- src/gentropy/datasource/gnomad/ld.py | 8 ++-- src/gentropy/susie_finemapper.py | 55 ++++++++++++++-------------- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/src/gentropy/datasource/gnomad/ld.py b/src/gentropy/datasource/gnomad/ld.py index a19cbb06b..02cb15c7f 100644 --- a/src/gentropy/datasource/gnomad/ld.py +++ b/src/gentropy/datasource/gnomad/ld.py @@ -453,14 +453,14 @@ def get_ld_matrix_slice( def get_locus_index( self: GnomADLDMatrix, study_locus_row: Row, - window_size: int = 1_000_000, + radius: int = 500_000, major_population: str = "nfe", ) -> DataFrame: """Extract hail matrix index from StudyLocus rows. Args: study_locus_row (Row): Study-locus row - window_size (int): Window size to extract from gnomad matrix + radius (int): Locus radius to extract from gnomad matrix major_population (str): Major population to extract from gnomad matrix, default is "nfe" Returns: @@ -468,8 +468,8 @@ def get_locus_index( """ chromosome = str("chr" + study_locus_row["chromosome"]) - start = study_locus_row["position"] - window_size // 2 - end = study_locus_row["position"] + window_size // 2 + start = study_locus_row["position"] - radius + end = study_locus_row["position"] + radius liftover_ht = hl.read_table(self.liftover_ht_path) liftover_ht = ( diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index ceb5fbb34..24635934e 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -37,7 +37,7 @@ def __init__( study_index_path: str, output_path: str, locus_radius: int = 500_000, - locus_l: int = 10, + max_causal_snps: int = 10, ) -> None: """Run fine-mapping on a studyLocusId from a collected studyLocus table. @@ -48,8 +48,9 @@ def __init__( study_index_path (str): path to the study index output_path (str): path to the output locus_radius (int): Radius of base-pair window around the locus, default is 500_000 - locus_l (int): Maximum number of causal variants in locus, default is 10 + max_causal_snps (int): Maximum number of causal variants in locus, default is 10 """ + # Initialise Hail hl.init(sc=session.spark.sparkContext, log="/dev/null") # Read studyLocus study_locus = ( @@ -63,8 +64,8 @@ def __init__( session, study_locus, study_index, - locus_radius * 2, - locus_l, + locus_radius, + max_causal_snps, ) # Write result result.df.write.mode(session.write_mode).parquet( @@ -77,7 +78,7 @@ def susie_finemapper_one_studylocus_row( session: Session, study_locus_row: Row, study_index: StudyIndex, - window: int = 1_000_000, + radius: int = 1_000_000, L: int = 10, ) -> StudyLocus: """Susie fine-mapper for StudyLocus row with SummaryStatistics object. @@ -87,7 +88,7 @@ def susie_finemapper_one_studylocus_row( session (Session): Spark session study_locus_row (Row): StudyLocus row study_index (StudyIndex): StudyIndex object - window (int): window size for fine-mapping + radius (int): window size for fine-mapping L (int): number of causal variants Returns: @@ -112,9 +113,9 @@ def susie_finemapper_one_studylocus_row( region = ( chromosome + ":" - + str(int(position - window / 2)) + + str(int(position - radius)) + "-" - + str(int(position + window / 2)) + + str(int(position + radius)) ) gwas_df = ( @@ -133,7 +134,7 @@ def susie_finemapper_one_studylocus_row( GnomADLDMatrix() .get_locus_index( study_locus_row=study_locus_row, - window_size=window, + radius=radius, major_population=major_population, ) .withColumn( @@ -321,8 +322,8 @@ def susie_finemapper_ss_gathered( session: Session, study_locus_row: Row, study_index: StudyIndex, - window: int = 1_000_000, - L: int = 10, + radius: int = 1_000_000, + max_causal_snps: int = 10, ) -> StudyLocus: """Susie fine-mapper for StudyLocus row with locus annotated summary statistics. @@ -330,8 +331,8 @@ def susie_finemapper_ss_gathered( session (Session): Spark session study_locus_row (Row): StudyLocus row study_index (StudyIndex): StudyIndex object - window (int): window size for fine-mapping - L (int): number of causal variants + radius (int): window size for fine-mapping + max_causal_snps (int): number of causal variants Returns: StudyLocus: StudyLocus object with fine-mapped credible sets @@ -355,9 +356,9 @@ def susie_finemapper_ss_gathered( region = ( chromosome + ":" - + str(int(position - window / 2)) + + str(int(position - radius)) + "-" - + str(int(position + window / 2)) + + str(int(position + radius)) ) schema = StudyLocus.get_schema() @@ -382,7 +383,7 @@ def susie_finemapper_ss_gathered( GnomADLDMatrix() .get_locus_index( study_locus_row=study_locus_row, - window_size=window, + radius=radius, major_population=major_population, ) .withColumn( @@ -412,7 +413,7 @@ def susie_finemapper_ss_gathered( z_to_fm = np.array(pd_df["z"]) ld_to_fm = gnomad_ld - susie_output = SUSIE_inf.susie_inf(z=z_to_fm, LD=ld_to_fm, L=L) + susie_output = SUSIE_inf.susie_inf(z=z_to_fm, LD=ld_to_fm, L=max_causal_snps) schema = StructType( [ @@ -624,8 +625,8 @@ def susie_finemapper_one_studylocus_row_v2_dev( session: Session, study_locus_row: Row, study_index: StudyIndex, - window: int = 1_000_000, - L: int = 10, + radius: int = 1_000_000, + max_causal_snps: int = 10, susie_est_tausq: bool = False, run_carma: bool = False, run_sumstat_imputation: bool = False, @@ -641,8 +642,8 @@ def susie_finemapper_one_studylocus_row_v2_dev( session (Session): Spark session study_locus_row (Row): StudyLocus row study_index (StudyIndex): StudyIndex object - window (int): window size for fine-mapping - L (int): number of causal variants + radius (int): Radius in base-pairs of window for fine-mapping + max_causal_snps (int): maximum number of causal variants susie_est_tausq (bool): estimate tau squared, default is False run_carma (bool): run CARMA, default is False run_sumstat_imputation (bool): run summary statistics imputation, default is False @@ -673,9 +674,9 @@ def susie_finemapper_one_studylocus_row_v2_dev( region = ( chromosome + ":" - + str(int(position - window / 2)) + + str(int(position - radius)) + "-" - + str(int(position + window / 2)) + + str(int(position + radius)) ) gwas_df = ( GWAS.df.withColumn("z", f.col("beta") / f.col("standardError")) @@ -686,15 +687,15 @@ def susie_finemapper_one_studylocus_row_v2_dev( .filter(f.col("studyId") == studyId) .filter(f.col("z").isNotNull()) .filter(f.col("chromosome") == chromosome) - .filter(f.col("position") >= position - window / 2) - .filter(f.col("position") <= position + window / 2) + .filter(f.col("position") >= position - radius) + .filter(f.col("position") <= position + radius) ) ld_index = ( GnomADLDMatrix() .get_locus_index( study_locus_row=study_locus_row, - window_size=window, + radius=radius, major_population=major_population, ) .withColumn( @@ -719,7 +720,7 @@ def susie_finemapper_one_studylocus_row_v2_dev( GWAS_df=gwas_df, ld_index=ld_index, gnomad_ld=gnomad_ld, - L=L, + L=max_causal_snps, session=session, studyId=studyId, region=region, From e2f8e870725b282d430b5e7f2fb140d30d66ecc1 Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Wed, 24 Apr 2024 10:29:22 +0200 Subject: [PATCH 57/86] fix: minor updates and bug fixes (#543) --- config/step/ot_variant_index.yaml | 2 +- src/airflow/dags/genetics_etl.py | 8 ++++---- src/airflow/dags/gwas_catalog_preprocess.py | 8 ++------ src/gentropy/pics.py | 8 ++++++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/config/step/ot_variant_index.yaml b/config/step/ot_variant_index.yaml index 1625c7126..3834196b2 100644 --- a/config/step/ot_variant_index.yaml +++ b/config/step/ot_variant_index.yaml @@ -2,5 +2,5 @@ defaults: - variant_index variant_annotation_path: ${datasets.variant_annotation} -credible_set_path: ${datasets.study_locus} +credible_set_path: ${datasets.credible_set} variant_index_path: ${datasets.variant_index} diff --git a/src/airflow/dags/genetics_etl.py b/src/airflow/dags/genetics_etl.py index 55f343648..ae510131c 100644 --- a/src/airflow/dags/genetics_etl.py +++ b/src/airflow/dags/genetics_etl.py @@ -35,16 +35,16 @@ # PICS credible sets from GWAS Catalog curated associations: "gwas_catalog_curated_credible_set": { "source_bucket": GWAS_CATALOG_BUCKET_NAME, - "source_object": "credible_set_datasets/gwas_catalog_curated", + "source_object": "credible_set_datasets/gwas_catalog_PICSed_curated_associations", "destination_bucket": RELEASE_BUCKET_NAME, - "destination_object": f"releases/{RELEASE_VERSION}/credible_set/gwas_catalog_pics_from_curation", + "destination_object": f"releases/{RELEASE_VERSION}/credible_set/gwas_catalog_PICSed_curated_associations", }, # PICS credible sets from GWAS Catalog summary statistics: "gwas_catalog_sumstats_credible_set": { "source_bucket": GWAS_CATALOG_BUCKET_NAME, - "source_object": "credible_set_datasets/gwas_catalog_summary_stats", + "source_object": "credible_set_datasets/gwas_catalog_PICSed_summary_statistics", "destination_bucket": RELEASE_BUCKET_NAME, - "destination_object": f"releases/{RELEASE_VERSION}/credible_set/gwas_catalog_pics_from_summary_statistics", + "destination_object": f"releases/{RELEASE_VERSION}/credible_set/gwas_catalog_PICSed_summary_statistics", }, # GWAS Catalog manifest files: "gwas_catalog_manifests": { diff --git a/src/airflow/dags/gwas_catalog_preprocess.py b/src/airflow/dags/gwas_catalog_preprocess.py index 36130c87e..1814ddf2d 100644 --- a/src/airflow/dags/gwas_catalog_preprocess.py +++ b/src/airflow/dags/gwas_catalog_preprocess.py @@ -45,12 +45,8 @@ WINDOW_BASED_CLUMPED = f"gs://{GWAS_CATALOG_BUCKET_NAME}/study_locus_datasets/gwas_catalog_summary_stats_window_clumped" LD_BASED_CLUMPED = f"gs://{GWAS_CATALOG_BUCKET_NAME}/study_locus_datasets/gwas_catalog_summary_stats_ld_clumped" # Credible sets: -CURATED_CREDIBLE_SETS = ( - f"gs://{GWAS_CATALOG_BUCKET_NAME}/credible_set_datasets/gwas_catalog_curated" -) -SUMMARY_STATISTICS_CREDIBLE_SETS = ( - f"gs://{GWAS_CATALOG_BUCKET_NAME}/credible_set_datasets/gwas_catalog_summary_stats" -) +CURATED_CREDIBLE_SETS = f"gs://{GWAS_CATALOG_BUCKET_NAME}/credible_set_datasets/gwas_catalog_PICSed_curated_associations" +SUMMARY_STATISTICS_CREDIBLE_SETS = f"gs://{GWAS_CATALOG_BUCKET_NAME}/credible_set_datasets/gwas_catalog_PICSed_summary_statistics" def upload_harmonized_study_list( diff --git a/src/gentropy/pics.py b/src/gentropy/pics.py index c2ed9bf66..80421b9ae 100644 --- a/src/gentropy/pics.py +++ b/src/gentropy/pics.py @@ -3,7 +3,7 @@ from __future__ import annotations from gentropy.common.session import Session -from gentropy.dataset.study_locus import StudyLocus +from gentropy.dataset.study_locus import CredibleInterval, StudyLocus from gentropy.method.pics import PICS @@ -28,6 +28,10 @@ def __init__( session, study_locus_ld_annotated_in ) # PICS - picsed_sl = PICS.finemap(study_locus_ld_annotated).annotate_credible_sets() + picsed_sl = ( + PICS.finemap(study_locus_ld_annotated) + .annotate_credible_sets() + .filter_credible_set(credible_interval=CredibleInterval.IS99) + ) # Write picsed_sl.df.write.mode(session.write_mode).parquet(picsed_study_locus_out) From cf184f8d8a3d88c02e056995e74549f141cc6348 Mon Sep 17 00:00:00 2001 From: Daniel-Considine <113430683+Daniel-Considine@users.noreply.github.com> Date: Wed, 24 Apr 2024 09:43:46 +0100 Subject: [PATCH 58/86] fix: updating config.py argument for finemapper (#584) --- src/gentropy/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gentropy/config.py b/src/gentropy/config.py index 8c876bb6d..068bd42bf 100644 --- a/src/gentropy/config.py +++ b/src/gentropy/config.py @@ -342,7 +342,7 @@ class FinemapperConfig(StepConfig): study_index_path: str = MISSING output_path: str = MISSING locus_radius: int = MISSING - locus_l: int = MISSING + max_causal_snps: int = MISSING _target_: str = "gentropy.susie_finemapper.SusieFineMapperStep" From bcc9a364a475136dbd7350bc6c9a7ca4da252971 Mon Sep 17 00:00:00 2001 From: Yakov Date: Wed, 24 Apr 2024 09:55:51 +0100 Subject: [PATCH 59/86] feat(sumstat qc): adding methods for QC of summary statistics (#455) * feat(sumstat qc): class for GWAS sumstat QC * feat: small fixes * feat: modifying sumarry_statistics class * feat: adding qc_pz_check * fix: test fix * feat: adding se_n check * chore: fixing functions * feat: adding gc lambda check * test: adding tests * fix: fixing tests * fix: fixing tests * fix: fixing tests and adding rounding * chore: pre-commit auto fixes [...] * feat(sumstat qc): adding new method class * test: fix tests * fix(sumstat qc): fixing tests * fix: remove number_of_snps from susmtat class * test: add multiple studyId test * docs: adding documentation for sumstat QC * fix: fixes according to comments --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .../methods/sumstat_quality_controls.md | 18 ++ src/gentropy/dataset/summary_statistics.py | 26 ++ .../method/sumstat_quality_controls.py | 285 ++++++++++++++++++ tests/gentropy/method/test_qc_of_sumstats.py | 63 ++++ 4 files changed, 392 insertions(+) create mode 100644 docs/python_api/methods/sumstat_quality_controls.md create mode 100644 src/gentropy/method/sumstat_quality_controls.py create mode 100644 tests/gentropy/method/test_qc_of_sumstats.py diff --git a/docs/python_api/methods/sumstat_quality_controls.md b/docs/python_api/methods/sumstat_quality_controls.md new file mode 100644 index 000000000..dfc5c9d16 --- /dev/null +++ b/docs/python_api/methods/sumstat_quality_controls.md @@ -0,0 +1,18 @@ +--- +title: QC of GWAS Summary Statistics +--- + +This class consists of several general quality control checks for GWAS with full summary statistics. +There are several checks included: + +1. Genomic control lambda (median of the distribution of Chi2 statistics divided by expected for Chi2 with df=1). Lambda should be reasonably close to 1. Ideally not bigger than 2. + +2. P-Z check: the linear regression between log10 of reported p-values and log10 of p-values inferred from betas and standard errors. Intercept of the regression should be close to 0, slope close to 1. + +3. Mean beta check: mean of beta. Should be close to 0. + +4. The N_eff check: It estimates the ratio between effective sample size and the expected one and checks its distribution. It is possible to conduct only if the effective allele frequency is provided in the study. The median ratio is always close to 1, standard error should be close to 0. + +5. Number of SNPs and number of significant SNPs. + +:::gentropy.method.sumstat_quality_controls.SummaryStatisticsQC diff --git a/src/gentropy/dataset/summary_statistics.py b/src/gentropy/dataset/summary_statistics.py index 6cde03988..6244d5879 100644 --- a/src/gentropy/dataset/summary_statistics.py +++ b/src/gentropy/dataset/summary_statistics.py @@ -103,3 +103,29 @@ def exclude_region(self: SummaryStatistics, region: str) -> SummaryStatistics: ), _schema=SummaryStatistics.get_schema(), ) + + def sanity_filter(self: SummaryStatistics) -> SummaryStatistics: + """The function filters the summary statistics by sanity filters. + + The function filters the summary statistics by the following filters: + - The p-value should not be eqaul 1. + - The beta and se should not be equal 0. + - The p-value, beta and se should not be NaN. + + Returns: + SummaryStatistics: The filtered summary statistics. + """ + gwas_df = self._df + gwas_df = gwas_df.dropna( + subset=["beta", "standardError", "pValueMantissa", "pValueExponent"] + ) + + gwas_df = gwas_df.filter((f.col("beta") != 0) & (f.col("standardError") != 0)) + gwas_df = gwas_df.filter( + f.col("pValueMantissa") * 10 ** f.col("pValueExponent") != 1 + ) + + return SummaryStatistics( + _df=gwas_df, + _schema=SummaryStatistics.get_schema(), + ) diff --git a/src/gentropy/method/sumstat_quality_controls.py b/src/gentropy/method/sumstat_quality_controls.py new file mode 100644 index 000000000..2858f4813 --- /dev/null +++ b/src/gentropy/method/sumstat_quality_controls.py @@ -0,0 +1,285 @@ +"""Summary statistics qulity control methods.""" +from __future__ import annotations + +import numpy as np +import pyspark.sql.functions as f +import pyspark.sql.types as t +import scipy as sc +from pyspark.sql import DataFrame +from pyspark.sql.functions import expr, log10, row_number +from pyspark.sql.window import Window +from scipy.stats import chi2 + +from gentropy.dataset.summary_statistics import SummaryStatistics + + +class SummaryStatisticsQC: + """Summary statistics QC methods. + + This module contains methods for quality control of GWAS summary statistics. + The list of methods includes: + + - sumstat_qc_beta_check: This is the mean beta check. The mean beta should be close to 0. + + - sumstat_qc_pz_check: This is the PZ check. It runs a linear regression between reported p-values and p-values inferred from z-scores. + + - sumstat_n_eff_check: This is the effective sample size check. It estimates the ratio between the effective sample size and the expected one and checks its distribution. + + - gc_lambda_check: This is the genomic control lambda check. + + - number_of_snps: This function calculates the number of SNPs and the number of SNPs with a p-value less than 5e-8. + """ + + @staticmethod + def sumstat_qc_beta_check( + gwas_for_qc: SummaryStatistics, + ) -> DataFrame: + """The mean beta check for QC of GWAS summary statstics. + + Args: + gwas_for_qc (SummaryStatistics): The instance of the SummaryStatistics class. + + Returns: + DataFrame: PySpark DataFrame with the mean beta for each study. + """ + gwas_df = gwas_for_qc._df + qc_c = gwas_df.groupBy("studyId").agg( + f.mean("beta").alias("mean_beta"), + ) + return qc_c + + @staticmethod + def _calculate_logpval(z2: float) -> float: + """Calculate negative log10-pval from Z-score. + + Args: + z2 (float): Z-score squared. + + Returns: + float: log10-pval. + + Examples: + >>> SummaryStatisticsQC._calculate_logpval(1.0) + 0.49851554582799334 + """ + logpval = -np.log10(sc.stats.chi2.sf((z2), 1)) + return float(logpval) + + @staticmethod + def sumstat_qc_pz_check( + gwas_for_qc: SummaryStatistics, + limit: int = 10_000_000, + ) -> DataFrame: + """The PZ check for QC of GWAS summary statstics. It runs linear regression between reported p-values and p-values infered from z-scores. + + Args: + gwas_for_qc (SummaryStatistics): The instance of the SummaryStatistics class. + limit (int): The limit for the number of variants to be used for the estimation. + + Returns: + DataFrame: PySpark DataFrame with the results of the linear regression for each study. + """ + gwas_df = gwas_for_qc._df + + calculate_logpval_udf = f.udf( + SummaryStatisticsQC._calculate_logpval, t.DoubleType() + ) + + window = Window.partitionBy("studyId").orderBy("studyId") + + gwas_df = ( + gwas_df.withColumn("row_num", row_number().over(window)) + .filter(f.col("row_num") <= limit) + .drop("row_num") + ) + + qc_c = ( + gwas_df.withColumn("zscore", f.col("beta") / f.col("standardError")) + .withColumn("new_logpval", calculate_logpval_udf(f.col("zscore") ** 2)) + .withColumn("log_mantissa", log10("pValueMantissa")) + .withColumn( + "diffpval", + -f.col("log_mantissa") - f.col("pValueExponent") - f.col("new_logpval"), + ) + .groupBy("studyId") + .agg( + f.mean("diffpval").alias("mean_diff_pz"), + f.stddev("diffpval").alias("se_diff_pz"), + ) + .select("studyId", "mean_diff_pz", "se_diff_pz") + ) + + return qc_c + + @staticmethod + def sumstat_n_eff_check( + gwas_for_qc: SummaryStatistics, + n_total: int = 100_000, + limit: int = 10_000_000, + min_count: int = 100, + ) -> DataFrame: + """The effective sample size check for QC of GWAS summary statstics. + + It estiamtes the ratio between effective sample size and the expected one and checks it's distribution. + It is possible to conduct only if the effective allele frequency is provided in the study. + The median rartio is always close to 1, but standard error could be inflated. + + Args: + gwas_for_qc (SummaryStatistics): The instance of the SummaryStatistics class. + n_total (int): The reported sample size of the study. The QC metrics is robust toward the sample size. + limit (int): The limit for the number of variants to be used for the estimation. + min_count (int): The minimum number of variants to be used for the estimation. + + Returns: + DataFrame: PySpark DataFrame with the effective sample size ratio for each study. + """ + gwas_df = gwas_for_qc._df + + gwas_df = gwas_df.dropna(subset=["effectAlleleFrequencyFromSource"]) + + counts_df = gwas_df.groupBy("studyId").count() + + # Join the original DataFrame with the counts DataFrame + df_with_counts = gwas_df.join(counts_df, on="studyId") + + # Filter the DataFrame to keep only the groups with count greater than or equal to min_count + filtered_df = df_with_counts.filter(f.col("count") >= min_count).drop("count") + + window = Window.partitionBy("studyId").orderBy("studyId") + gwas_df = ( + filtered_df.withColumn("row_num", row_number().over(window)) + .filter(f.col("row_num") <= limit) + .drop("row_num") + ) + + gwas_df = gwas_df.withColumn( + "var_af", + 2 + * ( + f.col("effectAlleleFrequencyFromSource") + * (1 - f.col("effectAlleleFrequencyFromSource")) + ), + ).withColumn( + "pheno_var", + ((f.col("standardError") ** 2) * n_total * f.col("var_af")) + + ((f.col("beta") ** 2) * f.col("var_af")), + ) + + window = Window.partitionBy("studyId").orderBy("studyId") + + # Calculate the median of 'pheno_var' for each 'studyId' and add it as a new column + gwas_df = gwas_df.withColumn( + "pheno_median", expr("percentile_approx(pheno_var, 0.5)").over(window) + ) + + gwas_df = gwas_df.withColumn( + "N_hat_ratio", + ( + (f.col("pheno_median") - ((f.col("beta") ** 2) * f.col("var_af"))) + / ((f.col("standardError") ** 2) * f.col("var_af") * n_total) + ), + ) + + qc_c = ( + gwas_df.groupBy("studyId") + .agg( + f.stddev("N_hat_ratio").alias("se_N"), + ) + .select("studyId", "se_N") + ) + + return qc_c + + @staticmethod + def gc_lambda_check( + gwas_for_qc: SummaryStatistics, + limit: int = 10_000_000, + ) -> DataFrame: + """The genomic control lambda check for QC of GWAS summary statstics. + + Args: + gwas_for_qc (SummaryStatistics): The instance of the SummaryStatistics class. + limit (int): The limit for the number of variants to be used for the estimation. + + Returns: + DataFrame: PySpark DataFrame with the genomic control lambda for each study. + """ + gwas_df = gwas_for_qc._df + window = Window.partitionBy("studyId").orderBy("studyId") + gwas_df = ( + gwas_df.withColumn("row_num", row_number().over(window)) + .filter(f.col("row_num") <= limit) + .drop("row_num") + ) + + qc_c = ( + gwas_df.select("studyId", "beta", "standardError") + .withColumn("Z2", (f.col("beta") / f.col("standardError")) ** 2) + .groupBy("studyId") + .agg(f.expr("percentile_approx(Z2, 0.5)").alias("gc_lambda")) + .withColumn("gc_lambda", f.col("gc_lambda") / chi2.ppf(0.5, df=1)) + .select("studyId", "gc_lambda") + ) + + return qc_c + + @staticmethod + def number_of_snps( + gwas_for_qc: SummaryStatistics, pval_threhod: float = 5e-8 + ) -> DataFrame: + """The function caluates number of SNPs and number of SNPs with p-value less than 5e-8. + + Args: + gwas_for_qc (SummaryStatistics): The instance of the SummaryStatistics class. + pval_threhod (float): The threshold for the p-value. + + Returns: + DataFrame: PySpark DataFrame with the number of SNPs and number of SNPs with p-value less than threshold. + """ + gwas_df = gwas_for_qc._df + + snp_counts = gwas_df.groupBy("studyId").agg( + f.count("*").alias("n_variants"), + f.sum( + ( + f.log10(f.col("pValueMantissa")) + f.col("pValueExponent") + <= np.log10(pval_threhod) + ).cast("int") + ).alias("n_variants_sig"), + ) + + return snp_counts + + @staticmethod + def get_quality_control_metrics( + gwas: SummaryStatistics, + limit: int = 100_000_000, + min_count: int = 100_000, + n_total: int = 100_000, + ) -> DataFrame: + """The function calculates the quality control metrics for the summary statistics. + + Args: + gwas (SummaryStatistics): The instance of the SummaryStatistics class. + limit (int): The limit for the number of variants to be used for the estimation. + min_count (int): The minimum number of variants to be used for the estimation. + n_total (int): The total sample size. + + Returns: + DataFrame: PySpark DataFrame with the quality control metrics for the summary statistics. + """ + qc1 = SummaryStatisticsQC.sumstat_qc_beta_check(gwas_for_qc=gwas) + qc2 = SummaryStatisticsQC.sumstat_qc_pz_check(gwas_for_qc=gwas, limit=limit) + qc3 = SummaryStatisticsQC.sumstat_n_eff_check( + gwas_for_qc=gwas, n_total=n_total, limit=limit, min_count=min_count + ) + qc4 = SummaryStatisticsQC.gc_lambda_check(gwas_for_qc=gwas, limit=limit) + qc5 = SummaryStatisticsQC.number_of_snps(gwas_for_qc=gwas) + df = ( + qc1.join(qc2, on="studyId", how="outer") + .join(qc3, on="studyId", how="outer") + .join(qc4, on="studyId", how="outer") + .join(qc5, on="studyId", how="outer") + ) + + return df diff --git a/tests/gentropy/method/test_qc_of_sumstats.py b/tests/gentropy/method/test_qc_of_sumstats.py new file mode 100644 index 000000000..8480fce8d --- /dev/null +++ b/tests/gentropy/method/test_qc_of_sumstats.py @@ -0,0 +1,63 @@ +"""Test of the qc of summary statistics.""" + +from __future__ import annotations + +import numpy as np +import pandas as pd +import pyspark.sql.functions as f +from gentropy.dataset.summary_statistics import SummaryStatistics +from gentropy.method.sumstat_quality_controls import SummaryStatisticsQC +from pyspark.sql.functions import rand, when + + +def test_qc_functions( + sample_summary_statistics: SummaryStatistics, +) -> None: + """Test all sumstat qc functions.""" + gwas = sample_summary_statistics.sanity_filter() + QC = SummaryStatisticsQC.get_quality_control_metrics( + gwas=gwas, limit=100000, min_count=100, n_total=100000 + ) + QC = QC.toPandas() + + assert QC["n_variants"].iloc[0] == 1663 + assert QC["n_variants_sig"].iloc[0] == 29 + assert np.round(QC["gc_lambda"].iloc[0], 4) == 1.916 + assert np.round(QC["mean_beta"].iloc[0], 4) == 0.0013 + assert np.round(QC["mean_diff_pz"].iloc[0], 6) == 0 + assert np.round(QC["se_diff_pz"].iloc[0], 6) == 0 + assert pd.isna(QC["se_N"].iloc[0]) + + +def test_neff_check_eaf( + sample_summary_statistics: SummaryStatistics, +) -> None: + """Test N_eff check using mock EAFs.""" + gwas = sample_summary_statistics.sanity_filter() + gwas_df = gwas._df + gwas_df = gwas_df.withColumn("effectAlleleFrequencyFromSource", f.lit(0.5)) + gwas._df = gwas_df + + QC = SummaryStatisticsQC.get_quality_control_metrics( + gwas=gwas, limit=100000, min_count=100, n_total=100000 + ) + QC = QC.toPandas() + assert np.round(QC["se_N"].iloc[0], 4) == 0.5586 + + +def test_several_studyid( + sample_summary_statistics: SummaryStatistics, +) -> None: + """Test stability when several studyIds are present.""" + gwas = sample_summary_statistics.sanity_filter() + gwas_df = gwas._df + gwas_df = gwas_df.withColumn( + "studyId", when(rand() < 0.5, "new_value").otherwise(gwas_df["studyId"]) + ) + gwas._df = gwas_df + + QC = SummaryStatisticsQC.get_quality_control_metrics( + gwas=gwas, limit=100000, min_count=100, n_total=100000 + ) + QC = QC.toPandas() + assert QC.shape == (2, 8) From 05d21bc69331d7408dbfbacda54eab73ed67295b Mon Sep 17 00:00:00 2001 From: Yakov Date: Thu, 25 Apr 2024 14:05:10 +0100 Subject: [PATCH 60/86] feat: susie_finemapper_one_studylocus_row_v3_dev_ss_gathered (#586) --- src/gentropy/susie_finemapper.py | 121 +++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index 24635934e..41e1ddcfe 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -734,3 +734,124 @@ def susie_finemapper_one_studylocus_row_v2_dev( ) return out + + @staticmethod + def susie_finemapper_one_studylocus_row_v3_dev_ss_gathered( + session: Session, + study_locus_row: Row, + study_index: StudyIndex, + radius: int = 1_000_000, + max_causal_snps: int = 10, + susie_est_tausq: bool = False, + run_carma: bool = False, + run_sumstat_imputation: bool = False, + carma_time_limit: int = 600, + imputed_r2_threshold: float = 0.8, + ld_score_threshold: float = 4, + sum_pips: float = 0.99, + ) -> dict[str, Any]: + """Susie fine-mapper function that uses study-locus row with collected locus, chromosome and position as inputs. + + Args: + session (Session): Spark session + study_locus_row (Row): StudyLocus row with collected locus + study_index (StudyIndex): StudyIndex object + radius (int): Radius in base-pairs of window for fine-mapping + max_causal_snps (int): maximum number of causal variants + susie_est_tausq (bool): estimate tau squared, default is False + run_carma (bool): run CARMA, default is False + run_sumstat_imputation (bool): run summary statistics imputation, default is False + carma_time_limit (int): CARMA time limit, default is 600 seconds + imputed_r2_threshold (float): imputed R2 threshold, default is 0.8 + ld_score_threshold (float): LD score threshold ofr imputation, default is 4 + sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) + + Returns: + dict[str, Any]: dictionary with study locus, number of GWAS variants, number of LD variants, number of variants after merge, number of outliers, number of imputed variants, number of variants to fine-map + """ + # PLEASE DO NOT REMOVE THIS LINE + pd.DataFrame.iteritems = pd.DataFrame.items + + chromosome = study_locus_row["chromosome"] + position = study_locus_row["position"] + studyId = study_locus_row["studyId"] + + study_index_df = study_index._df + study_index_df = study_index_df.filter(f.col("studyId") == studyId) + major_population = study_index_df.select( + "studyId", + f.array_max(f.col("ldPopulationStructure")) + .getItem("ldPopulation") + .alias("majorPopulation"), + ).collect()[0]["majorPopulation"] + + region = ( + chromosome + + ":" + + str(int(position - radius)) + + "-" + + str(int(position + radius)) + ) + + schema = StudyLocus.get_schema() + gwas_df = session.spark.createDataFrame([study_locus_row], schema=schema) + exploded_df = gwas_df.select(f.explode("locus").alias("locus")) + + result_df = exploded_df.select( + "locus.variantId", "locus.beta", "locus.standardError" + ) + gwas_df = ( + result_df.withColumn("z", f.col("beta") / f.col("standardError")) + .withColumn( + "chromosome", f.split(f.col("variantId"), "_")[0].cast("string") + ) + .withColumn("position", f.split(f.col("variantId"), "_")[1].cast("int")) + .filter(f.col("chromosome") == chromosome) + .filter(f.col("position") >= position - radius) + .filter(f.col("position") <= position + radius) + .filter(f.col("z").isNotNull()) + ) + + ld_index = ( + GnomADLDMatrix() + .get_locus_index( + study_locus_row=study_locus_row, + radius=radius, + major_population=major_population, + ) + .withColumn( + "variantId", + f.concat( + f.lit(chromosome), + f.lit("_"), + f.col("`locus.position`"), + f.lit("_"), + f.col("alleles").getItem(0), + f.lit("_"), + f.col("alleles").getItem(1), + ).cast("string"), + ) + ) + + gnomad_ld = GnomADLDMatrix.get_numpy_matrix( + ld_index, gnomad_ancestry=major_population + ) + + out = SusieFineMapperStep.susie_finemapper_from_prepared_dataframes( + GWAS_df=gwas_df, + ld_index=ld_index, + gnomad_ld=gnomad_ld, + L=max_causal_snps, + session=session, + studyId=studyId, + region=region, + susie_est_tausq=susie_est_tausq, + run_carma=run_carma, + run_sumstat_imputation=run_sumstat_imputation, + carma_time_limit=carma_time_limit, + imputed_r2_threshold=imputed_r2_threshold, + ld_score_threshold=ld_score_threshold, + sum_pips=sum_pips, + ) + + return out From a88f16caab044e2104063e2144b370fbaf61b520 Mon Sep 17 00:00:00 2001 From: Daniel-Considine <113430683+Daniel-Considine@users.noreply.github.com> Date: Fri, 26 Apr 2024 11:14:54 +0100 Subject: [PATCH 61/86] feat: functionality added to StudyLocus.find_overlaps() for finding within-study overlaps (#587) * feat: functionality added to StudyLocus.find_overlaps() for finding within-study overlaps * feat: removal of secondary credible sets at the same region as overlaps * fix: defining the join condition to make the code tidier --- src/gentropy/dataset/study_locus.py | 50 ++++++++++++++----- .../dataset/test_study_locus_overlaps.py | 49 ++++++++++++++++-- 2 files changed, 84 insertions(+), 15 deletions(-) diff --git a/src/gentropy/dataset/study_locus.py b/src/gentropy/dataset/study_locus.py index 185aeb569..77c663800 100644 --- a/src/gentropy/dataset/study_locus.py +++ b/src/gentropy/dataset/study_locus.py @@ -82,31 +82,52 @@ class StudyLocus(Dataset): """ @staticmethod - def _overlapping_peaks(credset_to_overlap: DataFrame) -> DataFrame: + def _overlapping_peaks( + credset_to_overlap: DataFrame, intra_study_overlap: bool = False + ) -> DataFrame: """Calculate overlapping signals (study-locus) between GWAS-GWAS and GWAS-Molecular trait. Args: credset_to_overlap (DataFrame): DataFrame containing at least `studyLocusId`, `studyType`, `chromosome` and `tagVariantId` columns. + intra_study_overlap (bool): When True, finds intra-study overlaps for credible set deduplication. Default is False. Returns: DataFrame: containing `leftStudyLocusId`, `rightStudyLocusId` and `chromosome` columns. """ # Reduce columns to the minimum to reduce the size of the dataframe credset_to_overlap = credset_to_overlap.select( - "studyLocusId", "studyType", "chromosome", "tagVariantId" + "studyLocusId", + "studyId", + "studyType", + "chromosome", + "region", + "tagVariantId", ) + # Define join condition - if intra_study_overlap is True, finds overlaps within the same study. Otherwise finds gwas vs everything overlaps for coloc. + join_condition = ( + [ + f.col("left.studyId") == f.col("right.studyId"), + f.col("left.chromosome") == f.col("right.chromosome"), + f.col("left.tagVariantId") == f.col("right.tagVariantId"), + f.col("left.studyLocusId") > f.col("right.studyLocusId"), + f.col("left.region") != f.col("right.region"), + ] + if intra_study_overlap + else [ + f.col("left.chromosome") == f.col("right.chromosome"), + f.col("left.tagVariantId") == f.col("right.tagVariantId"), + (f.col("right.studyType") != "gwas") + | (f.col("left.studyLocusId") > f.col("right.studyLocusId")), + f.col("left.studyType") == f.lit("gwas"), + ] + ) + return ( credset_to_overlap.alias("left") - .filter(f.col("studyType") == "gwas") - # Self join with complex condition. Left it's all gwas and right can be gwas or molecular trait + # Self join with complex condition. .join( credset_to_overlap.alias("right"), - on=[ - f.col("left.chromosome") == f.col("right.chromosome"), - f.col("left.tagVariantId") == f.col("right.tagVariantId"), - (f.col("right.studyType") != "gwas") - | (f.col("left.studyLocusId") > f.col("right.studyLocusId")), - ], + on=join_condition, how="inner", ) .select( @@ -305,7 +326,9 @@ def filter_credible_set( ) return self - def find_overlaps(self: StudyLocus, study_index: StudyIndex) -> StudyLocusOverlap: + def find_overlaps( + self: StudyLocus, study_index: StudyIndex, intra_study_overlap: bool = False + ) -> StudyLocusOverlap: """Calculate overlapping study-locus. Find overlapping study-locus that share at least one tagging variant. All GWAS-GWAS and all GWAS-Molecular traits are computed with the Molecular traits always @@ -313,6 +336,7 @@ def find_overlaps(self: StudyLocus, study_index: StudyIndex) -> StudyLocusOverla Args: study_index (StudyIndex): Study index to resolve study types. + intra_study_overlap (bool): If True, finds intra-study overlaps for credible set deduplication. Default is False. Returns: StudyLocusOverlap: Pairs of overlapping study-locus with aligned tags. @@ -322,8 +346,10 @@ def find_overlaps(self: StudyLocus, study_index: StudyIndex) -> StudyLocusOverla .withColumn("locus", f.explode("locus")) .select( "studyLocusId", + "studyId", "studyType", "chromosome", + "region", f.col("locus.variantId").alias("tagVariantId"), f.col("locus.logBF").alias("logBF"), f.col("locus.posteriorProbability").alias("posteriorProbability"), @@ -335,7 +361,7 @@ def find_overlaps(self: StudyLocus, study_index: StudyIndex) -> StudyLocusOverla ) # overlapping study-locus - peak_overlaps = self._overlapping_peaks(loci_to_overlap) + peak_overlaps = self._overlapping_peaks(loci_to_overlap, intra_study_overlap) # study-locus overlap by aligning overlapping variants return self._align_overlapping_tags(loci_to_overlap, peak_overlaps) diff --git a/tests/gentropy/dataset/test_study_locus_overlaps.py b/tests/gentropy/dataset/test_study_locus_overlaps.py index ee89eec84..8e732fc5c 100644 --- a/tests/gentropy/dataset/test_study_locus_overlaps.py +++ b/tests/gentropy/dataset/test_study_locus_overlaps.py @@ -30,46 +30,89 @@ def test_study_locus_overlap_from_associations( @pytest.mark.parametrize( - ("observed", "expected"), + ("observed", "intrastudy", "expected"), [ ( # observed - input DataFrame representing gwas and nongwas data to find overlapping signals [ { "studyLocusId": 1, + "studyId": "A", "studyType": "gwas", "chromosome": "1", "tagVariantId": "A", }, { "studyLocusId": 2, + "studyId": "B", "studyType": "eqtl", "chromosome": "1", "tagVariantId": "A", }, { "studyLocusId": 3, + "studyId": "C", "studyType": "gwas", "chromosome": "1", "tagVariantId": "B", }, ], + # intrastudy - bool of whether or not to use inter-study or intra-study logic + False, # expected - output DataFrame with overlapping signals [ {"leftStudyLocusId": 1, "rightStudyLocusId": 2, "chromosome": "1"}, ], ), + ( + # observed - input DataFrame representing intra-study data to find overlapping signals in the same study + [ + { + "studyLocusId": 1, + "studyId": "A", + "studyType": "gwas", + "chromosome": "1", + "region": "X", + "tagVariantId": "A", + }, + { + "studyLocusId": 2, + "studyId": "A", + "studyType": "gwas", + "chromosome": "1", + "region": "Y", + "tagVariantId": "A", + }, + { + "studyLocusId": 3, + "studyId": "B", + "studyType": "gwas", + "chromosome": "1", + "region": "X", + "tagVariantId": "A", + }, + ], + # intrastudy - bool of whether or not to use inter-study or intra-study logic + True, + # expected - output DataFrame with overlapping signals + [{"leftStudyLocusId": 2, "rightStudyLocusId": 1, "chromosome": "1"}], + ), ], ) def test_overlapping_peaks( - spark: SparkSession, observed: list[dict[str, Any]], expected: list[dict[str, Any]] + spark: SparkSession, + observed: list[dict[str, Any]], + intrastudy: bool, + expected: list[dict[str, Any]], ) -> None: """Test overlapping signals between GWAS-GWAS and GWAS-Molecular trait to make sure that mQTLs are always on the right.""" mock_schema = t.StructType( [ t.StructField("studyLocusId", t.LongType()), + t.StructField("studyId", t.StringType()), t.StructField("studyType", t.StringType()), t.StructField("chromosome", t.StringType()), + t.StructField("region", t.StringType()), t.StructField("tagVariantId", t.StringType()), ] ) @@ -81,6 +124,6 @@ def test_overlapping_peaks( ] ) observed_df = spark.createDataFrame(observed, mock_schema) - result_df = StudyLocus._overlapping_peaks(observed_df) + result_df = StudyLocus._overlapping_peaks(observed_df, intrastudy) expected_df = spark.createDataFrame(expected, expected_schema) assert result_df.collect() == expected_df.collect() From da2c75d5ab582109e9dd9072bf2f0d4b3038f39b Mon Sep 17 00:00:00 2001 From: David Ochoa Date: Fri, 26 Apr 2024 17:21:12 +0100 Subject: [PATCH 62/86] feat: github action to upload docker image to registry (#588) --- .github/workflows/artifact.yml | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/artifact.yml diff --git a/.github/workflows/artifact.yml b/.github/workflows/artifact.yml new file mode 100644 index 000000000..a33bd1e55 --- /dev/null +++ b/.github/workflows/artifact.yml @@ -0,0 +1,39 @@ +name: Build and Push to Artifact Registry + +"on": + push: + branches: ["dev"] + +env: + PROJECT_ID: open-targets-genetics-dev + REGION: europe-west1 + GAR_LOCATION: europe-west1-docker.pkg.dev/open-targets-genetics-dev/gentropy-app-dev/ + IMAGE_NAME: gentropy-app + +jobs: + build-push-artifact: + runs-on: ubuntu-latest + steps: + - name: "Checkout" + uses: "actions/checkout@v3" + + - id: "auth" + uses: "google-github-actions/auth@v1" + with: + credentials_json: "${{ secrets.SERVICE_ACCOUNT_KEY }}" + + - name: "Set up Cloud SDK" + uses: "google-github-actions/setup-gcloud@v1" + + - name: "Use gcloud CLI" + run: "gcloud info" + + - name: "Docker auth" + run: |- + gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev --quiet + + - name: Build image + run: docker build . --tag "${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ github.github.ref_name }}" + + - name: Push image + run: docker push "${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ github.github.ref_name }}" From df75870a9b902a4b6b9f842797d5183b87a83e26 Mon Sep 17 00:00:00 2001 From: David Ochoa Date: Fri, 26 Apr 2024 17:31:16 +0100 Subject: [PATCH 63/86] feat: lighter dockerfile (#585) --- Dockerfile | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1221ec637..deb43bcd8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,33 @@ -FROM python:3.10 +FROM python:3.10-bullseye + + +RUN apt-get update && \ + apt-get install -y openjdk-11-jdk && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +RUN java -version + +# Set environment variables for Java +ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64 +ENV PATH=$PATH:$JAVA_HOME/bin RUN pip install poetry==1.7.1 -COPY . . +ENV POETRY_NO_INTERACTION=1 \ + POETRY_VIRTUALENVS_IN_PROJECT=1 \ + POETRY_VIRTUALENVS_CREATE=1 \ + POETRY_CACHE_DIR=/tmp/poetry_cache + +WORKDIR /app + +COPY pyproject.toml poetry.lock ./ +RUN touch README.md + +RUN poetry config installer.max-workers 10 +RUN poetry install --without dev,docs,tests --no-root --no-interaction --no-ansi -vvv && rm -rf $POETRY_CACHE_DIR + +COPY src ./src + RUN poetry install --without dev,docs,tests ENTRYPOINT ["poetry", "run", "gentropy"] From b83a8aa8fba4521a7465ecb9f4889112094e0950 Mon Sep 17 00:00:00 2001 From: David Ochoa Date: Fri, 26 Apr 2024 17:44:21 +0100 Subject: [PATCH 64/86] fix: docker action fixes (#589) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> --- .github/workflows/artifact.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/artifact.yml b/.github/workflows/artifact.yml index a33bd1e55..849aa8268 100644 --- a/.github/workflows/artifact.yml +++ b/.github/workflows/artifact.yml @@ -7,7 +7,7 @@ name: Build and Push to Artifact Registry env: PROJECT_ID: open-targets-genetics-dev REGION: europe-west1 - GAR_LOCATION: europe-west1-docker.pkg.dev/open-targets-genetics-dev/gentropy-app-dev/ + GAR_LOCATION: europe-west1-docker.pkg.dev/open-targets-genetics-dev IMAGE_NAME: gentropy-app jobs: @@ -23,7 +23,7 @@ jobs: credentials_json: "${{ secrets.SERVICE_ACCOUNT_KEY }}" - name: "Set up Cloud SDK" - uses: "google-github-actions/setup-gcloud@v1" + uses: "google-github-actions/setup-gcloud" - name: "Use gcloud CLI" run: "gcloud info" @@ -33,7 +33,7 @@ jobs: gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev --quiet - name: Build image - run: docker build . --tag "${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ github.github.ref_name }}" + run: docker build . --tag "${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}" - name: Push image - run: docker push "${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ github.github.ref_name }}" + run: docker push "${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}" From c89cd57315a3431d0ad9072eb36aef954ddc32aa Mon Sep 17 00:00:00 2001 From: David Ochoa Date: Fri, 26 Apr 2024 17:50:21 +0100 Subject: [PATCH 65/86] fix: docker action fixes (#590) --- .github/workflows/artifact.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/artifact.yml b/.github/workflows/artifact.yml index 849aa8268..e9ab0157d 100644 --- a/.github/workflows/artifact.yml +++ b/.github/workflows/artifact.yml @@ -17,13 +17,13 @@ jobs: - name: "Checkout" uses: "actions/checkout@v3" - - id: "auth" - uses: "google-github-actions/auth@v1" + - name: "auth" + uses: "google-github-actions/auth@v2" with: credentials_json: "${{ secrets.SERVICE_ACCOUNT_KEY }}" - name: "Set up Cloud SDK" - uses: "google-github-actions/setup-gcloud" + uses: "google-github-actions/setup-gcloud@v2" - name: "Use gcloud CLI" run: "gcloud info" From 70e5e2615700518324d414d11165efe025798284 Mon Sep 17 00:00:00 2001 From: David Ochoa Date: Fri, 26 Apr 2024 18:09:52 +0100 Subject: [PATCH 66/86] fix: docker action fixes v3 (#591) --- .github/workflows/artifact.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/artifact.yml b/.github/workflows/artifact.yml index e9ab0157d..ce7b47b6c 100644 --- a/.github/workflows/artifact.yml +++ b/.github/workflows/artifact.yml @@ -33,7 +33,7 @@ jobs: gcloud auth configure-docker ${{ env.REGION }}-docker.pkg.dev --quiet - name: Build image - run: docker build . --tag "${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}" + run: docker build . --tag "${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}/gentropy:${{ github.ref_name }}" - name: Push image - run: docker push "${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}" + run: docker push "${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}/gentropy:${{ github.ref_name }}" From d16321522cf8cfd5c7a1a9ac5eada527f73c67a1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 16:34:50 +0100 Subject: [PATCH 67/86] build(deps-dev): bump deptry from 0.14.0 to 0.16.1 (#570) Bumps [deptry](https://github.com/fpgmaas/deptry) from 0.14.0 to 0.16.1. - [Release notes](https://github.com/fpgmaas/deptry/releases) - [Changelog](https://github.com/fpgmaas/deptry/blob/main/CHANGELOG.md) - [Commits](https://github.com/fpgmaas/deptry/compare/0.14.0...0.16.1) --- updated-dependencies: - dependency-name: deptry dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: David Ochoa --- poetry.lock | 198 ++++++++++++++++++++++++++++++++++++++++++++++--- pyproject.toml | 2 +- 2 files changed, 187 insertions(+), 13 deletions(-) diff --git a/poetry.lock b/poetry.lock index 01cafdeec..40c3283b4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "aiodns" @@ -1627,24 +1627,26 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "deptry" -version = "0.14.0" +version = "0.16.1" description = "A command line utility to check for unused, missing and transitive dependencies in a Python project." optional = false -python-versions = ">=3.8, <4.0" +python-versions = ">=3.8" files = [ - {file = "deptry-0.14.0-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:951d40e40cca6b538d8b1992e9532c082757598c73249469d3f6f90cf3344c9f"}, - {file = "deptry-0.14.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:59e0808507ffb57a0ce9b8c40ecda7b4a235a0627f00485d8e6104bf71dc99f8"}, - {file = "deptry-0.14.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5e6b7485c3ece10eb94b2787258282275687a101587c6f88f65a6eadc65c4a4"}, - {file = "deptry-0.14.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d5a8299b9627dc32352caf99c5e8fdff0227539ccbe1535a6145649b5caa394"}, - {file = "deptry-0.14.0-cp38-abi3-win_amd64.whl", hash = "sha256:d55654025b567739a57f9b6b8467a21c65a30c21e834b2d8cb225618b320874c"}, - {file = "deptry-0.14.0.tar.gz", hash = "sha256:3415c65c0734f6dfafa1321c77c1c9fafb6d6f88d0f8441e5b2cfb5b3b41f71b"}, + {file = "deptry-0.16.1-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:29ed8ae61b8f5664dd484717c79eef7ec66d965940efd828fca0d3c09220a1db"}, + {file = "deptry-0.16.1-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:738a772b538f51e9a7bb8d5cb9a61cfea8794a79371d171919b01cff0dc895bf"}, + {file = "deptry-0.16.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56b78f7c860def8000e93f88345a24809f1b91e2f7836ac9a08285cb405e2762"}, + {file = "deptry-0.16.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3e86a04ea87ddece0f68ba204feb950f588205808c8320e6628300f03ff66dc"}, + {file = "deptry-0.16.1-cp38-abi3-win_amd64.whl", hash = "sha256:01b5098739a56c93f3e1e40efec5f20452f22a9a8436a59809d46201fcb94bcf"}, + {file = "deptry-0.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7e29dc4c1bbb933c9482e8cef85fafe2be7f46aeb90a8a07ba5f2b22af60876f"}, + {file = "deptry-0.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8dfab68c247566c87a40f55f405be8549ffe4cea0b9b5384b7ae73a6f1d5cd1"}, + {file = "deptry-0.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1228493926b6e59cd2df7cb6016e10c255553cc31db24edcf7fc8d5474b81be6"}, + {file = "deptry-0.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99c3ac60b78ad1b8fb9844c25393e7ebc969cc950601ce3c050f56d196da5a79"}, + {file = "deptry-0.16.1.tar.gz", hash = "sha256:39fb62da4a8f4d17ed282310f7bcaadec55a95a8c471b01e0fcdf5351a7ac323"}, ] [package.dependencies] -chardet = ">=4.0.0" click = ">=8.0.0,<9" colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} -pathspec = ">=0.9.0" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [[package]] @@ -3430,6 +3432,156 @@ files = [ {file = "google_re2-1.1-3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d140c7b9395b4d1e654127aa1c99bcc603ed01000b7bc7e28c52562f1894ec12"}, {file = "google_re2-1.1-3-cp39-cp39-win32.whl", hash = "sha256:80c5fc200f64b2d903eeb07b8d6cefc620a872a0240c7caaa9aca05b20f5568f"}, {file = "google_re2-1.1-3-cp39-cp39-win_amd64.whl", hash = "sha256:9eb6dbcee9b5dc4069bbc0634f2eb039ca524a14bed5868fdf6560aaafcbca06"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0db114d7e1aa96dbcea452a40136d7d747d60cbb61394965774688ef59cccd4e"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:82133958e003a1344e5b7a791b9a9dd7560b5c8f96936dbe16f294604524a633"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:9e74fd441d1f3d917d3303e319f61b82cdbd96b9a5ba919377a6eef1504a1e2b"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:734a2e7a4541c57253b5ebee24f3f3366ba3658bcad01da25fb623c78723471a"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d88d5eecbc908abe16132456fae13690d0508f3ac5777f320ef95cb6cab9a961"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:b91db80b171ecec435a07977a227757dd487356701a32f556fa6fca5d0a40522"}, + {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b23129887a64bb9948af14c84705273ed1a40054e99433b4acccab4dcf6a226"}, + {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5dc1a0cc7cd19261dcaf76763e2499305dbb7e51dc69555167cdb8af98782698"}, + {file = "google_re2-1.1-4-cp310-cp310-win32.whl", hash = "sha256:3b2ab1e2420b5dd9743a2d6bc61b64e5f708563702a75b6db86637837eaeaf2f"}, + {file = "google_re2-1.1-4-cp310-cp310-win_amd64.whl", hash = "sha256:92efca1a7ef83b6df012d432a1cbc71d10ff42200640c0f9a5ff5b343a48e633"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854818fd4ce79787aca5ba459d6e5abe4ca9be2c684a5b06a7f1757452ca3708"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:4ceef51174b6f653b6659a8fdaa9c38960c5228b44b25be2a3bcd8566827554f"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:ee49087c3db7e6f5238105ab5299c09e9b77516fe8cfb0a37e5f1e813d76ecb8"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:dc2312854bdc01410acc5d935f1906a49cb1f28980341c20a68797ad89d8e178"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0dc0d2e42296fa84a3cb3e1bd667c6969389cd5cdf0786e6b1f911ae2d75375b"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6bf04ced98453b035f84320f348f67578024f44d2997498def149054eb860ae8"}, + {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d6b6ef11dc4ab322fa66c2f3561925f2b5372a879c3ed764d20e939e2fd3e5f"}, + {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0dcde6646fa9a97fd3692b3f6ae7daf7f3277d7500b6c253badeefa11db8956a"}, + {file = "google_re2-1.1-4-cp311-cp311-win32.whl", hash = "sha256:5f4f0229deb057348893574d5b0a96d055abebac6debf29d95b0c0e26524c9f6"}, + {file = "google_re2-1.1-4-cp311-cp311-win_amd64.whl", hash = "sha256:4713ddbe48a18875270b36a462b0eada5e84d6826f8df7edd328d8706b6f9d07"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:40a698300b8faddbb325662973f839489c89b960087060bd389c376828978a04"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:103d2d7ac92ba23911a151fd1fc7035cbf6dc92a7f6aea92270ebceb5cd5acd3"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:51fb7182bccab05e8258a2b6a63dda1a6b4a9e8dfb9b03ec50e50c49c2827dd4"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:65383022abd63d7b620221eba7935132b53244b8b463d8fdce498c93cf58b7b7"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396281fc68a9337157b3ffcd9392c6b7fcb8aab43e5bdab496262a81d56a4ecc"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8198adcfcff1c680e052044124621730fc48d08005f90a75487f5651f1ebfce2"}, + {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:81f7bff07c448aec4db9ca453d2126ece8710dbd9278b8bb09642045d3402a96"}, + {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7dacf730fd7d6ec71b11d6404b0b26e230814bfc8e9bb0d3f13bec9b5531f8d"}, + {file = "google_re2-1.1-4-cp312-cp312-win32.whl", hash = "sha256:8c764f62f4b1d89d1ef264853b6dd9fee14a89e9b86a81bc2157fe3531425eb4"}, + {file = "google_re2-1.1-4-cp312-cp312-win_amd64.whl", hash = "sha256:0be2666df4bc5381a5d693585f9bbfefb0bfd3c07530d7e403f181f5de47254a"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:5cb1b63a0bfd8dd65d39d2f3b2e5ae0a06ce4b2ce5818a1d1fc78a786a252673"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e41751ce6b67a95230edd0772226dc94c2952a2909674cd69df9804ed0125307"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:b998cfa2d50bf4c063e777c999a7e8645ec7e5d7baf43ad71b1e2e10bb0300c3"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:226ca3b0c2e970f3fc82001ac89e845ecc7a4bb7c68583e7a76cda70b61251a7"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:9adec1f734ebad7c72e56c85f205a281d8fe9bf6583bc21020157d3f2812ce89"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:9c34f3c64ba566af967d29e11299560e6fdfacd8ca695120a7062b6ed993b179"}, + {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b85385fe293838e0d0b6e19e6c48ba8c6f739ea92ce2e23b718afe7b343363"}, + {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4694daa8a8987cfb568847aa872f9990e930c91a68c892ead876411d4b9012c3"}, + {file = "google_re2-1.1-4-cp38-cp38-win32.whl", hash = "sha256:5e671e9be1668187e2995aac378de574fa40df70bb6f04657af4d30a79274ce0"}, + {file = "google_re2-1.1-4-cp38-cp38-win_amd64.whl", hash = "sha256:f66c164d6049a8299f6dfcfa52d1580576b4b9724d6fcdad2f36f8f5da9304b6"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:25cb17ae0993a48c70596f3a3ef5d659638106401cc8193f51c0d7961b3b3eb7"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5f101f86d14ca94ca4dcf63cceaa73d351f2be2481fcaa29d9e68eeab0dc2a88"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:4e82591e85bf262a6d74cff152867e05fc97867c68ba81d6836ff8b0e7e62365"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:1f61c09b93ffd34b1e2557e5a9565039f935407a5786dbad46f64f1a484166e6"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:12b390ad8c7e74bab068732f774e75e0680dade6469b249a721f3432f90edfc3"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:1284343eb31c2e82ed2d8159f33ba6842238a56782c881b07845a6d85613b055"}, + {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c7b38e0daf2c06e4d3163f4c732ab3ad2521aecfed6605b69e4482c612da303"}, + {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f4d4f0823e8b2f6952a145295b1ff25245ce9bb136aff6fe86452e507d4c1dd"}, + {file = "google_re2-1.1-4-cp39-cp39-win32.whl", hash = "sha256:1afae56b2a07bb48cfcfefaa15ed85bae26a68f5dc7f9e128e6e6ea36914e847"}, + {file = "google_re2-1.1-4-cp39-cp39-win_amd64.whl", hash = "sha256:aa7d6d05911ab9c8adbf3c225a7a120ab50fd2784ac48f2f0d140c0b7afc2b55"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:222fc2ee0e40522de0b21ad3bc90ab8983be3bf3cec3d349c80d76c8bb1a4beb"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d4763b0b9195b72132a4e7de8e5a9bf1f05542f442a9115aa27cfc2a8004f581"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:209649da10c9d4a93d8a4d100ecbf9cc3b0252169426bec3e8b4ad7e57d600cf"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:68813aa333c1604a2df4a495b2a6ed065d7c8aebf26cc7e7abb5a6835d08353c"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:370a23ec775ad14e9d1e71474d56f381224dcf3e72b15d8ca7b4ad7dd9cd5853"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:14664a66a3ddf6bc9e56f401bf029db2d169982c53eff3f5876399104df0e9a6"}, + {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea3722cc4932cbcebd553b69dce1b4a73572823cff4e6a244f1c855da21d511"}, + {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e14bb264c40fd7c627ef5678e295370cd6ba95ca71d835798b6e37502fc4c690"}, + {file = "google_re2-1.1-5-cp310-cp310-win32.whl", hash = "sha256:39512cd0151ea4b3969c992579c79b423018b464624ae955be685fc07d94556c"}, + {file = "google_re2-1.1-5-cp310-cp310-win_amd64.whl", hash = "sha256:ac66537aa3bc5504320d922b73156909e3c2b6da19739c866502f7827b3f9fdf"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b5ea68d54890c9edb1b930dcb2658819354e5d3f2201f811798bbc0a142c2b4"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:33443511b6b83c35242370908efe2e8e1e7cae749c766b2b247bf30e8616066c"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:413d77bdd5ba0bfcada428b4c146e87707452ec50a4091ec8e8ba1413d7e0619"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:5171686e43304996a34baa2abcee6f28b169806d0e583c16d55e5656b092a414"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b284db130283771558e31a02d8eb8fb756156ab98ce80035ae2e9e3a5f307c4"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:296e6aed0b169648dc4b870ff47bd34c702a32600adb9926154569ef51033f47"}, + {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:38d50e68ead374160b1e656bbb5d101f0b95fb4cc57f4a5c12100155001480c5"}, + {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a0416a35921e5041758948bcb882456916f22845f66a93bc25070ef7262b72a"}, + {file = "google_re2-1.1-5-cp311-cp311-win32.whl", hash = "sha256:a1d59568bbb5de5dd56dd6cdc79907db26cce63eb4429260300c65f43469e3e7"}, + {file = "google_re2-1.1-5-cp311-cp311-win_amd64.whl", hash = "sha256:72f5a2f179648b8358737b2b493549370debd7d389884a54d331619b285514e3"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:cbc72c45937b1dc5acac3560eb1720007dccca7c9879138ff874c7f6baf96005"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5fadd1417fbef7235fa9453dba4eb102e6e7d94b1e4c99d5fa3dd4e288d0d2ae"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:040f85c63cc02696485b59b187a5ef044abe2f99b92b4fb399de40b7d2904ccc"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:64e3b975ee6d9bbb2420494e41f929c1a0de4bcc16d86619ab7a87f6ea80d6bd"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8ee370413e00f4d828eaed0e83b8af84d7a72e8ee4f4bd5d3078bc741dfc430a"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:5b89383001079323f693ba592d7aad789d7a02e75adb5d3368d92b300f5963fd"}, + {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:63cb4fdfbbda16ae31b41a6388ea621510db82feb8217a74bf36552ecfcd50ad"}, + {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ebedd84ae8be10b7a71a16162376fd67a2386fe6361ef88c622dcf7fd679daf"}, + {file = "google_re2-1.1-5-cp312-cp312-win32.whl", hash = "sha256:c8e22d1692bc2c81173330c721aff53e47ffd3c4403ff0cd9d91adfd255dd150"}, + {file = "google_re2-1.1-5-cp312-cp312-win_amd64.whl", hash = "sha256:5197a6af438bb8c4abda0bbe9c4fbd6c27c159855b211098b29d51b73e4cbcf6"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b6727e0b98417e114b92688ad2aa256102ece51f29b743db3d831df53faf1ce3"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:711e2b6417eb579c61a4951029d844f6b95b9b373b213232efd413659889a363"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:71ae8b3df22c5c154c8af0f0e99d234a450ef1644393bc2d7f53fc8c0a1e111c"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:94a04e214bc521a3807c217d50cf099bbdd0c0a80d2d996c0741dbb995b5f49f"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:a770f75358508a9110c81a1257721f70c15d9bb592a2fb5c25ecbd13566e52a5"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:07c9133357f7e0b17c6694d5dcb82e0371f695d7c25faef2ff8117ef375343ff"}, + {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:204ca6b1cf2021548f4a9c29ac015e0a4ab0a7b6582bf2183d838132b60c8fda"}, + {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b95857c2c654f419ca684ec38c9c3325c24e6ba7d11910a5110775a557bb18"}, + {file = "google_re2-1.1-5-cp38-cp38-win32.whl", hash = "sha256:347ac770e091a0364e822220f8d26ab53e6fdcdeaec635052000845c5a3fb869"}, + {file = "google_re2-1.1-5-cp38-cp38-win_amd64.whl", hash = "sha256:ec32bb6de7ffb112a07d210cf9f797b7600645c2d5910703fa07f456dd2150e0"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:eb5adf89060f81c5ff26c28e261e6b4997530a923a6093c9726b8dec02a9a326"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a22630c9dd9ceb41ca4316bccba2643a8b1d5c198f21c00ed5b50a94313aaf10"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:544dc17fcc2d43ec05f317366375796351dec44058e1164e03c3f7d050284d58"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:19710af5ea88751c7768575b23765ce0dfef7324d2539de576f75cdc319d6654"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:f82995a205e08ad896f4bd5ce4847c834fab877e1772a44e5f262a647d8a1dec"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:63533c4d58da9dc4bc040250f1f52b089911699f0368e0e6e15f996387a984ed"}, + {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79e00fcf0cb04ea35a22b9014712d448725ce4ddc9f08cc818322566176ca4b0"}, + {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc41afcefee2da6c4ed883a93d7f527c4b960cd1d26bbb0020a7b8c2d341a60a"}, + {file = "google_re2-1.1-5-cp39-cp39-win32.whl", hash = "sha256:486730b5e1f1c31b0abc6d80abe174ce4f1188fe17d1b50698f2bf79dc6e44be"}, + {file = "google_re2-1.1-5-cp39-cp39-win_amd64.whl", hash = "sha256:4de637ca328f1d23209e80967d1b987d6b352cd01b3a52a84b4d742c69c3da6c"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:621e9c199d1ff0fdb2a068ad450111a84b3bf14f96dfe5a8a7a0deae5f3f4cce"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:220acd31e7dde95373f97c3d1f3b3bd2532b38936af28b1917ee265d25bebbf4"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:db34e1098d164f76251a6ece30e8f0ddfd65bb658619f48613ce71acb3f9cbdb"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:5152bac41d8073977582f06257219541d0fc46ad99b0bbf30e8f60198a43b08c"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6191294799e373ee1735af91f55abd23b786bdfd270768a690d9d55af9ea1b0d"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:070cbafbb4fecbb02e98feb28a1eb292fb880f434d531f38cc33ee314b521f1f"}, + {file = "google_re2-1.1-6-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8437d078b405a59a576cbed544490fe041140f64411f2d91012e8ec05ab8bf86"}, + {file = "google_re2-1.1-6-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f00f9a9af8896040e37896d9b9fc409ad4979f1ddd85bb188694a7d95ddd1164"}, + {file = "google_re2-1.1-6-cp310-cp310-win32.whl", hash = "sha256:df26345f229a898b4fd3cafd5f82259869388cee6268fc35af16a8e2293dd4e5"}, + {file = "google_re2-1.1-6-cp310-cp310-win_amd64.whl", hash = "sha256:3665d08262c57c9b28a5bdeb88632ad792c4e5f417e5645901695ab2624f5059"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b26b869d8aa1d8fe67c42836bf3416bb72f444528ee2431cfb59c0d3e02c6ce3"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:41fd4486c57dea4f222a6bb7f1ff79accf76676a73bdb8da0fcbd5ba73f8da71"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:0ee378e2e74e25960070c338c28192377c4dd41e7f4608f2688064bd2badc41e"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a00cdbf662693367b36d075b29feb649fd7ee1b617cf84f85f2deebeda25fc64"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4c09455014217a41499432b8c8f792f25f3df0ea2982203c3a8c8ca0e7895e69"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6501717909185327935c7945e23bb5aa8fc7b6f237b45fe3647fa36148662158"}, + {file = "google_re2-1.1-6-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3510b04790355f199e7861c29234081900e1e1cbf2d1484da48aa0ba6d7356ab"}, + {file = "google_re2-1.1-6-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8c0e64c187ca406764f9e9ad6e750d62e69ed8f75bf2e865d0bfbc03b642361c"}, + {file = "google_re2-1.1-6-cp311-cp311-win32.whl", hash = "sha256:2a199132350542b0de0f31acbb3ca87c3a90895d1d6e5235f7792bb0af02e523"}, + {file = "google_re2-1.1-6-cp311-cp311-win_amd64.whl", hash = "sha256:83bdac8ceaece8a6db082ea3a8ba6a99a2a1ee7e9f01a9d6d50f79c6f251a01d"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:81985ff894cd45ab5a73025922ac28c0707759db8171dd2f2cc7a0e856b6b5ad"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5635af26065e6b45456ccbea08674ae2ab62494008d9202df628df3b267bc095"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:813b6f04de79f4a8fdfe05e2cb33e0ccb40fe75d30ba441d519168f9d958bd54"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:5ec2f5332ad4fd232c3f2d6748c2c7845ccb66156a87df73abcc07f895d62ead"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5a687b3b32a6cbb731647393b7c4e3fde244aa557f647df124ff83fb9b93e170"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:39a62f9b3db5d3021a09a47f5b91708b64a0580193e5352751eb0c689e4ad3d7"}, + {file = "google_re2-1.1-6-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ca0f0b45d4a1709cbf5d21f355e5809ac238f1ee594625a1e5ffa9ff7a09eb2b"}, + {file = "google_re2-1.1-6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a64b3796a7a616c7861247bd061c9a836b5caf0d5963e5ea8022125601cf7b09"}, + {file = "google_re2-1.1-6-cp312-cp312-win32.whl", hash = "sha256:32783b9cb88469ba4cd9472d459fe4865280a6b1acdad4480a7b5081144c4eb7"}, + {file = "google_re2-1.1-6-cp312-cp312-win_amd64.whl", hash = "sha256:259ff3fd2d39035b9cbcbf375995f83fa5d9e6a0c5b94406ff1cc168ed41d6c6"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:e4711bcffe190acd29104d8ecfea0c0e42b754837de3fb8aad96e6cc3c613cdc"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:4d081cce43f39c2e813fe5990e1e378cbdb579d3f66ded5bade96130269ffd75"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:4f123b54d48450d2d6b14d8fad38e930fb65b5b84f1b022c10f2913bd956f5b5"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:e1928b304a2b591a28eb3175f9db7f17c40c12cf2d4ec2a85fdf1cc9c073ff91"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:3a69f76146166aec1173003c1f547931bdf288c6b135fda0020468492ac4149f"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:fc08c388f4ebbbca345e84a0c56362180d33d11cbe9ccfae663e4db88e13751e"}, + {file = "google_re2-1.1-6-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b057adf38ce4e616486922f2f47fc7d19c827ba0a7f69d540a3664eba2269325"}, + {file = "google_re2-1.1-6-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4138c0b933ab099e96f5d8defce4486f7dfd480ecaf7f221f2409f28022ccbc5"}, + {file = "google_re2-1.1-6-cp38-cp38-win32.whl", hash = "sha256:9693e45b37b504634b1abbf1ee979471ac6a70a0035954592af616306ab05dd6"}, + {file = "google_re2-1.1-6-cp38-cp38-win_amd64.whl", hash = "sha256:5674d437baba0ea287a5a7f8f81f24265d6ae8f8c09384e2ef7b6f84b40a7826"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7783137cb2e04f458a530c6d0ee9ef114815c1d48b9102f023998c371a3b060e"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a49b7153935e7a303675f4deb5f5d02ab1305adefc436071348706d147c889e0"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:a96a8bb309182090704593c60bdb369a2756b38fe358bbf0d40ddeb99c71769f"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:dff3d4be9f27ef8ec3705eed54f19ef4ab096f5876c15fe011628c69ba3b561c"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:40f818b0b39e26811fa677978112a8108269977fdab2ba0453ac4363c35d9e66"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:8a7e53538cdb40ef4296017acfbb05cab0c19998be7552db1cfb85ba40b171b9"}, + {file = "google_re2-1.1-6-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ee18e7569fb714e5bb8c42809bf8160738637a5e71ed5a4797757a1fb4dc4de"}, + {file = "google_re2-1.1-6-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1cda4f6d1a7d5b43ea92bc395f23853fba0caf8b1e1efa6e8c48685f912fcb89"}, + {file = "google_re2-1.1-6-cp39-cp39-win32.whl", hash = "sha256:6a9cdbdc36a2bf24f897be6a6c85125876dc26fea9eb4247234aec0decbdccfd"}, + {file = "google_re2-1.1-6-cp39-cp39-win_amd64.whl", hash = "sha256:73f646cecfad7cc5b4330b4192c25f2e29730a3b8408e089ffd2078094208196"}, ] [[package]] @@ -6701,6 +6853,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"}, @@ -7625,30 +7778,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.50-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:54138aa80d2dedd364f4e8220eef284c364d3270aaef621570aa2bd99902e2e8"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, {file = "SQLAlchemy-1.4.50-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:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, + {file = "SQLAlchemy-1.4.50-cp310-cp310-win32.whl", hash = "sha256:6c78e3fb4a58e900ec433b6b5f4efe1a0bf81bbb366ae7761c6e0051dd310ee3"}, + {file = "SQLAlchemy-1.4.50-cp310-cp310-win_amd64.whl", hash = "sha256:d55f7a33e8631e15af1b9e67c9387c894fedf6deb1a19f94be8731263c51d515"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:324b1fdd50e960a93a231abb11d7e0f227989a371e3b9bd4f1259920f15d0304"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-win32.whl", hash = "sha256:8bdab03ff34fc91bfab005e96f672ae207d87e0ac7ee716d74e87e7046079d8b"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-win_amd64.whl", hash = "sha256:52e01d60b06f03b0a5fc303c8aada405729cbc91a56a64cead8cb7c0b9b13c1a"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:77fde9bf74f4659864c8e26ac08add8b084e479b9a18388e7db377afc391f926"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-win32.whl", hash = "sha256:e86c920b7d362cfa078c8b40e7765cbc34efb44c1007d7557920be9ddf138ec7"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-win_amd64.whl", hash = "sha256:6b3df20fbbcbcd1c1d43f49ccf3eefb370499088ca251ded632b8cbaee1d497d"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:fb9adc4c6752d62c6078c107d23327aa3023ef737938d0135ece8ffb67d07030"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, {file = "SQLAlchemy-1.4.50-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:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-win32.whl", hash = "sha256:1b9c4359d3198f341480e57494471201e736de459452caaacf6faa1aca852bd8"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-win_amd64.whl", hash = "sha256:35e4520f7c33c77f2636a1e860e4f8cafaac84b0b44abe5de4c6c8890b6aaa6d"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f5b1fb2943d13aba17795a770d22a2ec2214fc65cff46c487790192dda3a3ee7"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, {file = "SQLAlchemy-1.4.50-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:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-win32.whl", hash = "sha256:7b4396452273aedda447e5aebe68077aa7516abf3b3f48408793e771d696f397"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-win_amd64.whl", hash = "sha256:752f9df3dddbacb5f42d8405b2d5885675a93501eb5f86b88f2e47a839cf6337"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:35c7ed095a4b17dbc8813a2bfb38b5998318439da8e6db10a804df855e3a9e3a"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, {file = "SQLAlchemy-1.4.50-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:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-win32.whl", hash = "sha256:8a219688297ee5e887a93ce4679c87a60da4a5ce62b7cb4ee03d47e9e767f558"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl", hash = "sha256:a648770db002452703b729bdcf7d194e904aa4092b9a4d6ab185b48d13252f63"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:4be4da121d297ce81e1ba745a0a0521c6cf8704634d7b520e350dce5964c71ac"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, {file = "SQLAlchemy-1.4.50-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:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-win32.whl", hash = "sha256:a7c9b9dca64036008962dd6b0d9fdab2dfdbf96c82f74dbd5d86006d8d24a30f"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-win_amd64.whl", hash = "sha256:df200762efbd672f7621b253721644642ff04a6ff957236e0e2fe56d9ca34d2c"}, {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, ] @@ -8485,4 +8659,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10, <3.11" -content-hash = "7e49947f0842c795031610eba766ccca04acb4944d62c6bc2dc522fb4c702cc4" +content-hash = "0219fa88667d94b340e7a707f86a732ddbb5a6c1e2ac91b4f0b4b97f134b33a4" diff --git a/pyproject.toml b/pyproject.toml index e83666536..cd9d6ffad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -74,7 +74,7 @@ apache-airflow = "^2.8.0" apache-airflow-providers-google = "^10.13.1" pydoclint = ">=0.3.8,<0.5.0" prettier = "^0.0.7" -deptry = ">=0.12,<0.15" +deptry = ">=0.12,<0.17" python-semantic-release = ">=8.7,<10.0" yamllint = "^1.33.0" From 1c341c2d6b4feb6cc99b852291e5e3c275ac979c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 16:52:44 +0100 Subject: [PATCH 68/86] build(deps-dev): bump lxml from 5.1.0 to 5.2.1 (#569) Bumps [lxml](https://github.com/lxml/lxml) from 5.1.0 to 5.2.1. - [Release notes](https://github.com/lxml/lxml/releases) - [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt) - [Commits](https://github.com/lxml/lxml/compare/lxml-5.1.0...lxml-5.2.1) --- updated-dependencies: - dependency-name: lxml dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: David Ochoa --- poetry.lock | 238 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 158 insertions(+), 80 deletions(-) diff --git a/poetry.lock b/poetry.lock index 40c3283b4..cdcfee68c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -4509,96 +4509,174 @@ typing-extensions = ">=4.1.1" [[package]] name = "lxml" -version = "5.1.0" +version = "5.2.1" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = false python-versions = ">=3.6" files = [ - {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:704f5572ff473a5f897745abebc6df40f22d4133c1e0a1f124e4f2bd3330ff7e"}, - {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d3c0f8567ffe7502d969c2c1b809892dc793b5d0665f602aad19895f8d508da"}, - {file = "lxml-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fcfbebdb0c5d8d18b84118842f31965d59ee3e66996ac842e21f957eb76138c"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f37c6d7106a9d6f0708d4e164b707037b7380fcd0b04c5bd9cae1fb46a856fb"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2befa20a13f1a75c751f47e00929fb3433d67eb9923c2c0b364de449121f447c"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22b7ee4c35f374e2c20337a95502057964d7e35b996b1c667b5c65c567d2252a"}, - {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bf8443781533b8d37b295016a4b53c1494fa9a03573c09ca5104550c138d5c05"}, - {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82bddf0e72cb2af3cbba7cec1d2fd11fda0de6be8f4492223d4a268713ef2147"}, - {file = "lxml-5.1.0-cp310-cp310-win32.whl", hash = "sha256:b66aa6357b265670bb574f050ffceefb98549c721cf28351b748be1ef9577d93"}, - {file = "lxml-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:4946e7f59b7b6a9e27bef34422f645e9a368cb2be11bf1ef3cafc39a1f6ba68d"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:436a943c2900bb98123b06437cdd30580a61340fbdb7b28aaf345a459c19046a"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:acb6b2f96f60f70e7f34efe0c3ea34ca63f19ca63ce90019c6cbca6b676e81fa"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af8920ce4a55ff41167ddbc20077f5698c2e710ad3353d32a07d3264f3a2021e"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cfced4a069003d8913408e10ca8ed092c49a7f6cefee9bb74b6b3e860683b45"}, - {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9e5ac3437746189a9b4121db2a7b86056ac8786b12e88838696899328fc44bb2"}, - {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204"}, - {file = "lxml-5.1.0-cp311-cp311-win32.whl", hash = "sha256:bc64d1b1dab08f679fb89c368f4c05693f58a9faf744c4d390d7ed1d8223869b"}, - {file = "lxml-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5ab722ae5a873d8dcee1f5f45ddd93c34210aed44ff2dc643b5025981908cda"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9aa543980ab1fbf1720969af1d99095a548ea42e00361e727c58a40832439114"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6f11b77ec0979f7e4dc5ae081325a2946f1fe424148d3945f943ceaede98adb8"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a36c506e5f8aeb40680491d39ed94670487ce6614b9d27cabe45d94cd5d63e1e"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16dd953fb719f0ffc5bc067428fc9e88f599e15723a85618c45847c96f11f431"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16018f7099245157564d7148165132c70adb272fb5a17c048ba70d9cc542a1a1"}, - {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82cd34f1081ae4ea2ede3d52f71b7be313756e99b4b5f829f89b12da552d3aa3"}, - {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:19a1bc898ae9f06bccb7c3e1dfd73897ecbbd2c96afe9095a6026016e5ca97b8"}, - {file = "lxml-5.1.0-cp312-cp312-win32.whl", hash = "sha256:13521a321a25c641b9ea127ef478b580b5ec82aa2e9fc076c86169d161798b01"}, - {file = "lxml-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:1ad17c20e3666c035db502c78b86e58ff6b5991906e55bdbef94977700c72623"}, - {file = "lxml-5.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:24ef5a4631c0b6cceaf2dbca21687e29725b7c4e171f33a8f8ce23c12558ded1"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d2900b7f5318bc7ad8631d3d40190b95ef2aa8cc59473b73b294e4a55e9f30f"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:601f4a75797d7a770daed8b42b97cd1bb1ba18bd51a9382077a6a247a12aa38d"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4b68c961b5cc402cbd99cca5eb2547e46ce77260eb705f4d117fd9c3f932b95"}, - {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:afd825e30f8d1f521713a5669b63657bcfe5980a916c95855060048b88e1adb7"}, - {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:262bc5f512a66b527d026518507e78c2f9c2bd9eb5c8aeeb9f0eb43fcb69dc67"}, - {file = "lxml-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:e856c1c7255c739434489ec9c8aa9cdf5179785d10ff20add308b5d673bed5cd"}, - {file = "lxml-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c7257171bb8d4432fe9d6fdde4d55fdbe663a63636a17f7f9aaba9bcb3153ad7"}, - {file = "lxml-5.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b9e240ae0ba96477682aa87899d94ddec1cc7926f9df29b1dd57b39e797d5ab5"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a96f02ba1bcd330807fc060ed91d1f7a20853da6dd449e5da4b09bfcc08fdcf5"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3898ae2b58eeafedfe99e542a17859017d72d7f6a63de0f04f99c2cb125936"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61c5a7edbd7c695e54fca029ceb351fc45cd8860119a0f83e48be44e1c464862"}, - {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3aeca824b38ca78d9ee2ab82bd9883083d0492d9d17df065ba3b94e88e4d7ee6"}, - {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8f52fe6859b9db71ee609b0c0a70fea5f1e71c3462ecf144ca800d3f434f0764"}, - {file = "lxml-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:d42e3a3fc18acc88b838efded0e6ec3edf3e328a58c68fbd36a7263a874906c8"}, - {file = "lxml-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:eac68f96539b32fce2c9b47eb7c25bb2582bdaf1bbb360d25f564ee9e04c542b"}, - {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ae15347a88cf8af0949a9872b57a320d2605ae069bcdf047677318bc0bba45b1"}, - {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c26aab6ea9c54d3bed716b8851c8bfc40cb249b8e9880e250d1eddde9f709bf5"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:342e95bddec3a698ac24378d61996b3ee5ba9acfeb253986002ac53c9a5f6f84"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:725e171e0b99a66ec8605ac77fa12239dbe061482ac854d25720e2294652eeaa"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d184e0d5c918cff04cdde9dbdf9600e960161d773666958c9d7b565ccc60c45"}, - {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:98f3f020a2b736566c707c8e034945c02aa94e124c24f77ca097c446f81b01f1"}, - {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d48fc57e7c1e3df57be5ae8614bab6d4e7b60f65c5457915c26892c41afc59e"}, - {file = "lxml-5.1.0-cp38-cp38-win32.whl", hash = "sha256:7ec465e6549ed97e9f1e5ed51c657c9ede767bc1c11552f7f4d022c4df4a977a"}, - {file = "lxml-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:b21b4031b53d25b0858d4e124f2f9131ffc1530431c6d1321805c90da78388d1"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:52427a7eadc98f9e62cb1368a5079ae826f94f05755d2d567d93ee1bc3ceb354"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6a2a2c724d97c1eb8cf966b16ca2915566a4904b9aad2ed9a09c748ffe14f969"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843b9c835580d52828d8f69ea4302537337a21e6b4f1ec711a52241ba4a824f3"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b99f564659cfa704a2dd82d0684207b1aadf7d02d33e54845f9fc78e06b7581"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8b0c78e7aac24979ef09b7f50da871c2de2def043d468c4b41f512d831e912"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bcf86dfc8ff3e992fed847c077bd875d9e0ba2fa25d859c3a0f0f76f07f0c8d"}, - {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:49a9b4af45e8b925e1cd6f3b15bbba2c81e7dba6dce170c677c9cda547411e14"}, - {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:280f3edf15c2a967d923bcfb1f8f15337ad36f93525828b40a0f9d6c2ad24890"}, - {file = "lxml-5.1.0-cp39-cp39-win32.whl", hash = "sha256:ed7326563024b6e91fef6b6c7a1a2ff0a71b97793ac33dbbcf38f6005e51ff6e"}, - {file = "lxml-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:8d7b4beebb178e9183138f552238f7e6613162a42164233e2bda00cb3afac58f"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9bd0ae7cc2b85320abd5e0abad5ccee5564ed5f0cc90245d2f9a8ef330a8deae"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c1d679df4361408b628f42b26a5d62bd3e9ba7f0c0e7969f925021554755aa"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2ad3a8ce9e8a767131061a22cd28fdffa3cd2dc193f399ff7b81777f3520e372"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:304128394c9c22b6569eba2a6d98392b56fbdfbad58f83ea702530be80d0f9df"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d74fcaf87132ffc0447b3c685a9f862ffb5b43e70ea6beec2fb8057d5d2a1fea"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:8cf5877f7ed384dabfdcc37922c3191bf27e55b498fecece9fd5c2c7aaa34c33"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:877efb968c3d7eb2dad540b6cabf2f1d3c0fbf4b2d309a3c141f79c7e0061324"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f14a4fb1c1c402a22e6a341a24c1341b4a3def81b41cd354386dcb795f83897"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:25663d6e99659544ee8fe1b89b1a8c0aaa5e34b103fab124b17fa958c4a324a6"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b9f19df998761babaa7f09e6bc169294eefafd6149aaa272081cbddc7ba4ca3"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e53d7e6a98b64fe54775d23a7c669763451340c3d44ad5e3a3b48a1efbdc96f"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c3cd1fc1dc7c376c54440aeaaa0dcc803d2126732ff5c6b68ccd619f2e64be4f"}, - {file = "lxml-5.1.0.tar.gz", hash = "sha256:3eea6ed6e6c918e468e693c41ef07f3c3acc310b70ddd9cc72d9ef84bc9564ca"}, + {file = "lxml-5.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1f7785f4f789fdb522729ae465adcaa099e2a3441519df750ebdccc481d961a1"}, + {file = "lxml-5.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cc6ee342fb7fa2471bd9b6d6fdfc78925a697bf5c2bcd0a302e98b0d35bfad3"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:794f04eec78f1d0e35d9e0c36cbbb22e42d370dda1609fb03bcd7aeb458c6377"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817d420c60a5183953c783b0547d9eb43b7b344a2c46f69513d5952a78cddf3"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2213afee476546a7f37c7a9b4ad4d74b1e112a6fafffc9185d6d21f043128c81"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b070bbe8d3f0f6147689bed981d19bbb33070225373338df755a46893528104a"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e02c5175f63effbd7c5e590399c118d5db6183bbfe8e0d118bdb5c2d1b48d937"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:3dc773b2861b37b41a6136e0b72a1a44689a9c4c101e0cddb6b854016acc0aa8"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:d7520db34088c96cc0e0a3ad51a4fd5b401f279ee112aa2b7f8f976d8582606d"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:bcbf4af004f98793a95355980764b3d80d47117678118a44a80b721c9913436a"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2b44bec7adf3e9305ce6cbfa47a4395667e744097faed97abb4728748ba7d47"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1c5bb205e9212d0ebddf946bc07e73fa245c864a5f90f341d11ce7b0b854475d"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2c9d147f754b1b0e723e6afb7ba1566ecb162fe4ea657f53d2139bbf894d050a"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:3545039fa4779be2df51d6395e91a810f57122290864918b172d5dc7ca5bb433"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a91481dbcddf1736c98a80b122afa0f7296eeb80b72344d7f45dc9f781551f56"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2ddfe41ddc81f29a4c44c8ce239eda5ade4e7fc305fb7311759dd6229a080052"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a7baf9ffc238e4bf401299f50e971a45bfcc10a785522541a6e3179c83eabf0a"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:31e9a882013c2f6bd2f2c974241bf4ba68c85eba943648ce88936d23209a2e01"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0a15438253b34e6362b2dc41475e7f80de76320f335e70c5528b7148cac253a1"}, + {file = "lxml-5.2.1-cp310-cp310-win32.whl", hash = "sha256:6992030d43b916407c9aa52e9673612ff39a575523c5f4cf72cdef75365709a5"}, + {file = "lxml-5.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:da052e7962ea2d5e5ef5bc0355d55007407087392cf465b7ad84ce5f3e25fe0f"}, + {file = "lxml-5.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:70ac664a48aa64e5e635ae5566f5227f2ab7f66a3990d67566d9907edcbbf867"}, + {file = "lxml-5.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1ae67b4e737cddc96c99461d2f75d218bdf7a0c3d3ad5604d1f5e7464a2f9ffe"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f18a5a84e16886898e51ab4b1d43acb3083c39b14c8caeb3589aabff0ee0b270"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6f2c8372b98208ce609c9e1d707f6918cc118fea4e2c754c9f0812c04ca116d"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:394ed3924d7a01b5bd9a0d9d946136e1c2f7b3dc337196d99e61740ed4bc6fe1"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d077bc40a1fe984e1a9931e801e42959a1e6598edc8a3223b061d30fbd26bbc"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:764b521b75701f60683500d8621841bec41a65eb739b8466000c6fdbc256c240"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:3a6b45da02336895da82b9d472cd274b22dc27a5cea1d4b793874eead23dd14f"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:5ea7b6766ac2dfe4bcac8b8595107665a18ef01f8c8343f00710b85096d1b53a"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:e196a4ff48310ba62e53a8e0f97ca2bca83cdd2fe2934d8b5cb0df0a841b193a"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:200e63525948e325d6a13a76ba2911f927ad399ef64f57898cf7c74e69b71095"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dae0ed02f6b075426accbf6b2863c3d0a7eacc1b41fb40f2251d931e50188dad"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:ab31a88a651039a07a3ae327d68ebdd8bc589b16938c09ef3f32a4b809dc96ef"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:df2e6f546c4df14bc81f9498bbc007fbb87669f1bb707c6138878c46b06f6510"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5dd1537e7cc06efd81371f5d1a992bd5ab156b2b4f88834ca852de4a8ea523fa"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9b9ec9c9978b708d488bec36b9e4c94d88fd12ccac3e62134a9d17ddba910ea9"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8e77c69d5892cb5ba71703c4057091e31ccf534bd7f129307a4d084d90d014b8"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a8d5c70e04aac1eda5c829a26d1f75c6e5286c74743133d9f742cda8e53b9c2f"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c94e75445b00319c1fad60f3c98b09cd63fe1134a8a953dcd48989ef42318534"}, + {file = "lxml-5.2.1-cp311-cp311-win32.whl", hash = "sha256:4951e4f7a5680a2db62f7f4ab2f84617674d36d2d76a729b9a8be4b59b3659be"}, + {file = "lxml-5.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:5c670c0406bdc845b474b680b9a5456c561c65cf366f8db5a60154088c92d102"}, + {file = "lxml-5.2.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:abc25c3cab9ec7fcd299b9bcb3b8d4a1231877e425c650fa1c7576c5107ab851"}, + {file = "lxml-5.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6935bbf153f9a965f1e07c2649c0849d29832487c52bb4a5c5066031d8b44fd5"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d793bebb202a6000390a5390078e945bbb49855c29c7e4d56a85901326c3b5d9"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd5562927cdef7c4f5550374acbc117fd4ecc05b5007bdfa57cc5355864e0a4"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0e7259016bc4345a31af861fdce942b77c99049d6c2107ca07dc2bba2435c1d9"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:530e7c04f72002d2f334d5257c8a51bf409db0316feee7c87e4385043be136af"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59689a75ba8d7ffca577aefd017d08d659d86ad4585ccc73e43edbfc7476781a"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:3a74c4f27167cb95c1d4af1c0b59e88b7f3e0182138db2501c353555f7ec57f4"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:68a2610dbe138fa8c5826b3f6d98a7cfc29707b850ddcc3e21910a6fe51f6ca0"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c2d35a1d047efd68027817b32ab1586c1169e60ca02c65d428ae815b593e65d4"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:79bd05260359170f78b181b59ce871673ed01ba048deef4bf49a36ab3e72e80b"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:865bad62df277c04beed9478fe665b9ef63eb28fe026d5dedcb89b537d2e2ea6"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71e97313406ccf55d32cc98a533ee05c61e15d11b99215b237346171c179c0b0"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:057cdc6b86ab732cf361f8b4d8af87cf195a1f6dc5b0ff3de2dced242c2015e0"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f3bbbc998d42f8e561f347e798b85513ba4da324c2b3f9b7969e9c45b10f6169"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:491755202eb21a5e350dae00c6d9a17247769c64dcf62d8c788b5c135e179dc4"}, + {file = "lxml-5.2.1-cp312-cp312-win32.whl", hash = "sha256:8de8f9d6caa7f25b204fc861718815d41cbcf27ee8f028c89c882a0cf4ae4134"}, + {file = "lxml-5.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:f2a9efc53d5b714b8df2b4b3e992accf8ce5bbdfe544d74d5c6766c9e1146a3a"}, + {file = "lxml-5.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:70a9768e1b9d79edca17890175ba915654ee1725975d69ab64813dd785a2bd5c"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c38d7b9a690b090de999835f0443d8aa93ce5f2064035dfc48f27f02b4afc3d0"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5670fb70a828663cc37552a2a85bf2ac38475572b0e9b91283dc09efb52c41d1"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:958244ad566c3ffc385f47dddde4145088a0ab893504b54b52c041987a8c1863"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6241d4eee5f89453307c2f2bfa03b50362052ca0af1efecf9fef9a41a22bb4f"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2a66bf12fbd4666dd023b6f51223aed3d9f3b40fef06ce404cb75bafd3d89536"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:9123716666e25b7b71c4e1789ec829ed18663152008b58544d95b008ed9e21e9"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:0c3f67e2aeda739d1cc0b1102c9a9129f7dc83901226cc24dd72ba275ced4218"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5d5792e9b3fb8d16a19f46aa8208987cfeafe082363ee2745ea8b643d9cc5b45"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:88e22fc0a6684337d25c994381ed8a1580a6f5ebebd5ad41f89f663ff4ec2885"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:21c2e6b09565ba5b45ae161b438e033a86ad1736b8c838c766146eff8ceffff9"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_s390x.whl", hash = "sha256:afbbdb120d1e78d2ba8064a68058001b871154cc57787031b645c9142b937a62"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:627402ad8dea044dde2eccde4370560a2b750ef894c9578e1d4f8ffd54000461"}, + {file = "lxml-5.2.1-cp36-cp36m-win32.whl", hash = "sha256:e89580a581bf478d8dcb97d9cd011d567768e8bc4095f8557b21c4d4c5fea7d0"}, + {file = "lxml-5.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:59565f10607c244bc4c05c0c5fa0c190c990996e0c719d05deec7030c2aa8289"}, + {file = "lxml-5.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:857500f88b17a6479202ff5fe5f580fc3404922cd02ab3716197adf1ef628029"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56c22432809085b3f3ae04e6e7bdd36883d7258fcd90e53ba7b2e463efc7a6af"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a55ee573116ba208932e2d1a037cc4b10d2c1cb264ced2184d00b18ce585b2c0"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:6cf58416653c5901e12624e4013708b6e11142956e7f35e7a83f1ab02f3fe456"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:64c2baa7774bc22dd4474248ba16fe1a7f611c13ac6123408694d4cc93d66dbd"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:74b28c6334cca4dd704e8004cba1955af0b778cf449142e581e404bd211fb619"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:7221d49259aa1e5a8f00d3d28b1e0b76031655ca74bb287123ef56c3db92f213"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3dbe858ee582cbb2c6294dc85f55b5f19c918c2597855e950f34b660f1a5ede6"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:04ab5415bf6c86e0518d57240a96c4d1fcfc3cb370bb2ac2a732b67f579e5a04"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:6ab833e4735a7e5533711a6ea2df26459b96f9eec36d23f74cafe03631647c41"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f443cdef978430887ed55112b491f670bba6462cea7a7742ff8f14b7abb98d75"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, + {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, + {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, + {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5"}, + {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3d30321949861404323c50aebeb1943461a67cd51d4200ab02babc58bd06a86"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:b560e3aa4b1d49e0e6c847d72665384db35b2f5d45f8e6a5c0072e0283430533"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:058a1308914f20784c9f4674036527e7c04f7be6fb60f5d61353545aa7fcb739"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:adfb84ca6b87e06bc6b146dc7da7623395db1e31621c4785ad0658c5028b37d7"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:417d14450f06d51f363e41cace6488519038f940676ce9664b34ebf5653433a5"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a2dfe7e2473f9b59496247aad6e23b405ddf2e12ef0765677b0081c02d6c2c0b"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bf2e2458345d9bffb0d9ec16557d8858c9c88d2d11fed53998512504cd9df49b"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:58278b29cb89f3e43ff3e0c756abbd1518f3ee6adad9e35b51fb101c1c1daaec"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:64641a6068a16201366476731301441ce93457eb8452056f570133a6ceb15fca"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:78bfa756eab503673991bdcf464917ef7845a964903d3302c5f68417ecdc948c"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:11a04306fcba10cd9637e669fd73aa274c1c09ca64af79c041aa820ea992b637"}, + {file = "lxml-5.2.1-cp38-cp38-win32.whl", hash = "sha256:66bc5eb8a323ed9894f8fa0ee6cb3e3fb2403d99aee635078fd19a8bc7a5a5da"}, + {file = "lxml-5.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:9676bfc686fa6a3fa10cd4ae6b76cae8be26eb5ec6811d2a325636c460da1806"}, + {file = "lxml-5.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cf22b41fdae514ee2f1691b6c3cdeae666d8b7fa9434de445f12bbeee0cf48dd"}, + {file = "lxml-5.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ec42088248c596dbd61d4ae8a5b004f97a4d91a9fd286f632e42e60b706718d7"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd53553ddad4a9c2f1f022756ae64abe16da1feb497edf4d9f87f99ec7cf86bd"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feaa45c0eae424d3e90d78823f3828e7dc42a42f21ed420db98da2c4ecf0a2cb"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddc678fb4c7e30cf830a2b5a8d869538bc55b28d6c68544d09c7d0d8f17694dc"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:853e074d4931dbcba7480d4dcab23d5c56bd9607f92825ab80ee2bd916edea53"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc4691d60512798304acb9207987e7b2b7c44627ea88b9d77489bbe3e6cc3bd4"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:beb72935a941965c52990f3a32d7f07ce869fe21c6af8b34bf6a277b33a345d3"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:6588c459c5627fefa30139be4d2e28a2c2a1d0d1c265aad2ba1935a7863a4913"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:588008b8497667f1ddca7c99f2f85ce8511f8f7871b4a06ceede68ab62dff64b"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6787b643356111dfd4032b5bffe26d2f8331556ecb79e15dacb9275da02866e"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7c17b64b0a6ef4e5affae6a3724010a7a66bda48a62cfe0674dabd46642e8b54"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:27aa20d45c2e0b8cd05da6d4759649170e8dfc4f4e5ef33a34d06f2d79075d57"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d4f2cc7060dc3646632d7f15fe68e2fa98f58e35dd5666cd525f3b35d3fed7f8"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff46d772d5f6f73564979cd77a4fffe55c916a05f3cb70e7c9c0590059fb29ef"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:96323338e6c14e958d775700ec8a88346014a85e5de73ac7967db0367582049b"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:52421b41ac99e9d91934e4d0d0fe7da9f02bfa7536bb4431b4c05c906c8c6919"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:7a7efd5b6d3e30d81ec68ab8a88252d7c7c6f13aaa875009fe3097eb4e30b84c"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ed777c1e8c99b63037b91f9d73a6aad20fd035d77ac84afcc205225f8f41188"}, + {file = "lxml-5.2.1-cp39-cp39-win32.whl", hash = "sha256:644df54d729ef810dcd0f7732e50e5ad1bd0a135278ed8d6bcb06f33b6b6f708"}, + {file = "lxml-5.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:9ca66b8e90daca431b7ca1408cae085d025326570e57749695d6a01454790e95"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9b0ff53900566bc6325ecde9181d89afadc59c5ffa39bddf084aaedfe3b06a11"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd6037392f2d57793ab98d9e26798f44b8b4da2f2464388588f48ac52c489ea1"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b9c07e7a45bb64e21df4b6aa623cb8ba214dfb47d2027d90eac197329bb5e94"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3249cc2989d9090eeac5467e50e9ec2d40704fea9ab72f36b034ea34ee65ca98"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f42038016852ae51b4088b2862126535cc4fc85802bfe30dea3500fdfaf1864e"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:533658f8fbf056b70e434dff7e7aa611bcacb33e01f75de7f821810e48d1bb66"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:622020d4521e22fb371e15f580d153134bfb68d6a429d1342a25f051ec72df1c"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efa7b51824aa0ee957ccd5a741c73e6851de55f40d807f08069eb4c5a26b2baa"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c6ad0fbf105f6bcc9300c00010a2ffa44ea6f555df1a2ad95c88f5656104817"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e233db59c8f76630c512ab4a4daf5a5986da5c3d5b44b8e9fc742f2a24dbd460"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a014510830df1475176466b6087fc0c08b47a36714823e58d8b8d7709132a96"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:d38c8f50ecf57f0463399569aa388b232cf1a2ffb8f0a9a5412d0db57e054860"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5aea8212fb823e006b995c4dda533edcf98a893d941f173f6c9506126188860d"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff097ae562e637409b429a7ac958a20aab237a0378c42dabaa1e3abf2f896e5f"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f5d65c39f16717a47c36c756af0fb36144069c4718824b7533f803ecdf91138"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3d0c3dd24bb4605439bf91068598d00c6370684f8de4a67c2992683f6c309d6b"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e32be23d538753a8adb6c85bd539f5fd3b15cb987404327c569dfc5fd8366e85"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cc518cea79fd1e2f6c90baafa28906d4309d24f3a63e801d855e7424c5b34144"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a0af35bd8ebf84888373630f73f24e86bf016642fb8576fba49d3d6b560b7cbc"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8aca2e3a72f37bfc7b14ba96d4056244001ddcc18382bd0daa087fd2e68a354"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ca1e8188b26a819387b29c3895c47a5e618708fe6f787f3b1a471de2c4a94d9"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c8ba129e6d3b0136a0f50345b2cb3db53f6bda5dd8c7f5d83fbccba97fb5dcb5"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e998e304036198b4f6914e6a1e2b6f925208a20e2042563d9734881150c6c246"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d3be9b2076112e51b323bdf6d5a7f8a798de55fb8d95fcb64bd179460cdc0704"}, + {file = "lxml-5.2.1.tar.gz", hash = "sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] +html-clean = ["lxml-html-clean"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=3.0.7)"] +source = ["Cython (>=3.0.10)"] [[package]] name = "mako" From dce499fb258ea05ae48963e37e30ef16e2ca85bf Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 17:33:04 +0100 Subject: [PATCH 69/86] chore: pre-commit autoupdate (#561) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.3.3 → v0.4.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.3.3...v0.4.1) - [github.com/pre-commit/pre-commit-hooks: v4.5.0 → v4.6.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.5.0...v4.6.0) - [github.com/alessandrojcm/commitlint-pre-commit-hook: v9.13.0 → v9.15.0](https://github.com/alessandrojcm/commitlint-pre-commit-hook/compare/v9.13.0...v9.15.0) - [github.com/econchick/interrogate: 1.5.0 → 1.7.0](https://github.com/econchick/interrogate/compare/1.5.0...1.7.0) * fix: poetry lock is not up-to-date --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: David Ochoa Co-authored-by: David Ochoa --- .pre-commit-config.yaml | 8 +- poetry.lock | 174 +--------------------------------------- 2 files changed, 5 insertions(+), 177 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 56714becf..11bb80eb8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ ci: skip: [poetry-lock] repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.3 + rev: v0.4.1 hooks: - id: ruff args: @@ -15,7 +15,7 @@ repos: files: ^((gentropy|utils|tests)/.+)?[^/]+\.py$ - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v4.6.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer @@ -59,7 +59,7 @@ repos: exclude: "CHANGELOG.md" - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook - rev: v9.13.0 + rev: v9.15.0 hooks: - id: commitlint additional_dependencies: ["@commitlint/config-conventional@18.6.3"] @@ -82,7 +82,7 @@ repos: - "--disallow-untyped-defs" - repo: https://github.com/econchick/interrogate - rev: 1.5.0 + rev: 1.7.0 hooks: - id: interrogate args: [--verbose] diff --git a/poetry.lock b/poetry.lock index cdcfee68c..cf0598674 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 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 = "aiodns" @@ -3432,156 +3432,6 @@ files = [ {file = "google_re2-1.1-3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d140c7b9395b4d1e654127aa1c99bcc603ed01000b7bc7e28c52562f1894ec12"}, {file = "google_re2-1.1-3-cp39-cp39-win32.whl", hash = "sha256:80c5fc200f64b2d903eeb07b8d6cefc620a872a0240c7caaa9aca05b20f5568f"}, {file = "google_re2-1.1-3-cp39-cp39-win_amd64.whl", hash = "sha256:9eb6dbcee9b5dc4069bbc0634f2eb039ca524a14bed5868fdf6560aaafcbca06"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0db114d7e1aa96dbcea452a40136d7d747d60cbb61394965774688ef59cccd4e"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:82133958e003a1344e5b7a791b9a9dd7560b5c8f96936dbe16f294604524a633"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:9e74fd441d1f3d917d3303e319f61b82cdbd96b9a5ba919377a6eef1504a1e2b"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:734a2e7a4541c57253b5ebee24f3f3366ba3658bcad01da25fb623c78723471a"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d88d5eecbc908abe16132456fae13690d0508f3ac5777f320ef95cb6cab9a961"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:b91db80b171ecec435a07977a227757dd487356701a32f556fa6fca5d0a40522"}, - {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b23129887a64bb9948af14c84705273ed1a40054e99433b4acccab4dcf6a226"}, - {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5dc1a0cc7cd19261dcaf76763e2499305dbb7e51dc69555167cdb8af98782698"}, - {file = "google_re2-1.1-4-cp310-cp310-win32.whl", hash = "sha256:3b2ab1e2420b5dd9743a2d6bc61b64e5f708563702a75b6db86637837eaeaf2f"}, - {file = "google_re2-1.1-4-cp310-cp310-win_amd64.whl", hash = "sha256:92efca1a7ef83b6df012d432a1cbc71d10ff42200640c0f9a5ff5b343a48e633"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854818fd4ce79787aca5ba459d6e5abe4ca9be2c684a5b06a7f1757452ca3708"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:4ceef51174b6f653b6659a8fdaa9c38960c5228b44b25be2a3bcd8566827554f"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:ee49087c3db7e6f5238105ab5299c09e9b77516fe8cfb0a37e5f1e813d76ecb8"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:dc2312854bdc01410acc5d935f1906a49cb1f28980341c20a68797ad89d8e178"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0dc0d2e42296fa84a3cb3e1bd667c6969389cd5cdf0786e6b1f911ae2d75375b"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6bf04ced98453b035f84320f348f67578024f44d2997498def149054eb860ae8"}, - {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d6b6ef11dc4ab322fa66c2f3561925f2b5372a879c3ed764d20e939e2fd3e5f"}, - {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0dcde6646fa9a97fd3692b3f6ae7daf7f3277d7500b6c253badeefa11db8956a"}, - {file = "google_re2-1.1-4-cp311-cp311-win32.whl", hash = "sha256:5f4f0229deb057348893574d5b0a96d055abebac6debf29d95b0c0e26524c9f6"}, - {file = "google_re2-1.1-4-cp311-cp311-win_amd64.whl", hash = "sha256:4713ddbe48a18875270b36a462b0eada5e84d6826f8df7edd328d8706b6f9d07"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:40a698300b8faddbb325662973f839489c89b960087060bd389c376828978a04"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:103d2d7ac92ba23911a151fd1fc7035cbf6dc92a7f6aea92270ebceb5cd5acd3"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:51fb7182bccab05e8258a2b6a63dda1a6b4a9e8dfb9b03ec50e50c49c2827dd4"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:65383022abd63d7b620221eba7935132b53244b8b463d8fdce498c93cf58b7b7"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396281fc68a9337157b3ffcd9392c6b7fcb8aab43e5bdab496262a81d56a4ecc"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8198adcfcff1c680e052044124621730fc48d08005f90a75487f5651f1ebfce2"}, - {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:81f7bff07c448aec4db9ca453d2126ece8710dbd9278b8bb09642045d3402a96"}, - {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7dacf730fd7d6ec71b11d6404b0b26e230814bfc8e9bb0d3f13bec9b5531f8d"}, - {file = "google_re2-1.1-4-cp312-cp312-win32.whl", hash = "sha256:8c764f62f4b1d89d1ef264853b6dd9fee14a89e9b86a81bc2157fe3531425eb4"}, - {file = "google_re2-1.1-4-cp312-cp312-win_amd64.whl", hash = "sha256:0be2666df4bc5381a5d693585f9bbfefb0bfd3c07530d7e403f181f5de47254a"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:5cb1b63a0bfd8dd65d39d2f3b2e5ae0a06ce4b2ce5818a1d1fc78a786a252673"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e41751ce6b67a95230edd0772226dc94c2952a2909674cd69df9804ed0125307"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:b998cfa2d50bf4c063e777c999a7e8645ec7e5d7baf43ad71b1e2e10bb0300c3"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:226ca3b0c2e970f3fc82001ac89e845ecc7a4bb7c68583e7a76cda70b61251a7"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:9adec1f734ebad7c72e56c85f205a281d8fe9bf6583bc21020157d3f2812ce89"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:9c34f3c64ba566af967d29e11299560e6fdfacd8ca695120a7062b6ed993b179"}, - {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b85385fe293838e0d0b6e19e6c48ba8c6f739ea92ce2e23b718afe7b343363"}, - {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4694daa8a8987cfb568847aa872f9990e930c91a68c892ead876411d4b9012c3"}, - {file = "google_re2-1.1-4-cp38-cp38-win32.whl", hash = "sha256:5e671e9be1668187e2995aac378de574fa40df70bb6f04657af4d30a79274ce0"}, - {file = "google_re2-1.1-4-cp38-cp38-win_amd64.whl", hash = "sha256:f66c164d6049a8299f6dfcfa52d1580576b4b9724d6fcdad2f36f8f5da9304b6"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:25cb17ae0993a48c70596f3a3ef5d659638106401cc8193f51c0d7961b3b3eb7"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5f101f86d14ca94ca4dcf63cceaa73d351f2be2481fcaa29d9e68eeab0dc2a88"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:4e82591e85bf262a6d74cff152867e05fc97867c68ba81d6836ff8b0e7e62365"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:1f61c09b93ffd34b1e2557e5a9565039f935407a5786dbad46f64f1a484166e6"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:12b390ad8c7e74bab068732f774e75e0680dade6469b249a721f3432f90edfc3"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:1284343eb31c2e82ed2d8159f33ba6842238a56782c881b07845a6d85613b055"}, - {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c7b38e0daf2c06e4d3163f4c732ab3ad2521aecfed6605b69e4482c612da303"}, - {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f4d4f0823e8b2f6952a145295b1ff25245ce9bb136aff6fe86452e507d4c1dd"}, - {file = "google_re2-1.1-4-cp39-cp39-win32.whl", hash = "sha256:1afae56b2a07bb48cfcfefaa15ed85bae26a68f5dc7f9e128e6e6ea36914e847"}, - {file = "google_re2-1.1-4-cp39-cp39-win_amd64.whl", hash = "sha256:aa7d6d05911ab9c8adbf3c225a7a120ab50fd2784ac48f2f0d140c0b7afc2b55"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:222fc2ee0e40522de0b21ad3bc90ab8983be3bf3cec3d349c80d76c8bb1a4beb"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d4763b0b9195b72132a4e7de8e5a9bf1f05542f442a9115aa27cfc2a8004f581"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:209649da10c9d4a93d8a4d100ecbf9cc3b0252169426bec3e8b4ad7e57d600cf"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:68813aa333c1604a2df4a495b2a6ed065d7c8aebf26cc7e7abb5a6835d08353c"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:370a23ec775ad14e9d1e71474d56f381224dcf3e72b15d8ca7b4ad7dd9cd5853"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:14664a66a3ddf6bc9e56f401bf029db2d169982c53eff3f5876399104df0e9a6"}, - {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea3722cc4932cbcebd553b69dce1b4a73572823cff4e6a244f1c855da21d511"}, - {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e14bb264c40fd7c627ef5678e295370cd6ba95ca71d835798b6e37502fc4c690"}, - {file = "google_re2-1.1-5-cp310-cp310-win32.whl", hash = "sha256:39512cd0151ea4b3969c992579c79b423018b464624ae955be685fc07d94556c"}, - {file = "google_re2-1.1-5-cp310-cp310-win_amd64.whl", hash = "sha256:ac66537aa3bc5504320d922b73156909e3c2b6da19739c866502f7827b3f9fdf"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b5ea68d54890c9edb1b930dcb2658819354e5d3f2201f811798bbc0a142c2b4"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:33443511b6b83c35242370908efe2e8e1e7cae749c766b2b247bf30e8616066c"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:413d77bdd5ba0bfcada428b4c146e87707452ec50a4091ec8e8ba1413d7e0619"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:5171686e43304996a34baa2abcee6f28b169806d0e583c16d55e5656b092a414"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b284db130283771558e31a02d8eb8fb756156ab98ce80035ae2e9e3a5f307c4"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:296e6aed0b169648dc4b870ff47bd34c702a32600adb9926154569ef51033f47"}, - {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:38d50e68ead374160b1e656bbb5d101f0b95fb4cc57f4a5c12100155001480c5"}, - {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a0416a35921e5041758948bcb882456916f22845f66a93bc25070ef7262b72a"}, - {file = "google_re2-1.1-5-cp311-cp311-win32.whl", hash = "sha256:a1d59568bbb5de5dd56dd6cdc79907db26cce63eb4429260300c65f43469e3e7"}, - {file = "google_re2-1.1-5-cp311-cp311-win_amd64.whl", hash = "sha256:72f5a2f179648b8358737b2b493549370debd7d389884a54d331619b285514e3"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:cbc72c45937b1dc5acac3560eb1720007dccca7c9879138ff874c7f6baf96005"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5fadd1417fbef7235fa9453dba4eb102e6e7d94b1e4c99d5fa3dd4e288d0d2ae"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:040f85c63cc02696485b59b187a5ef044abe2f99b92b4fb399de40b7d2904ccc"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:64e3b975ee6d9bbb2420494e41f929c1a0de4bcc16d86619ab7a87f6ea80d6bd"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8ee370413e00f4d828eaed0e83b8af84d7a72e8ee4f4bd5d3078bc741dfc430a"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:5b89383001079323f693ba592d7aad789d7a02e75adb5d3368d92b300f5963fd"}, - {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:63cb4fdfbbda16ae31b41a6388ea621510db82feb8217a74bf36552ecfcd50ad"}, - {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ebedd84ae8be10b7a71a16162376fd67a2386fe6361ef88c622dcf7fd679daf"}, - {file = "google_re2-1.1-5-cp312-cp312-win32.whl", hash = "sha256:c8e22d1692bc2c81173330c721aff53e47ffd3c4403ff0cd9d91adfd255dd150"}, - {file = "google_re2-1.1-5-cp312-cp312-win_amd64.whl", hash = "sha256:5197a6af438bb8c4abda0bbe9c4fbd6c27c159855b211098b29d51b73e4cbcf6"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b6727e0b98417e114b92688ad2aa256102ece51f29b743db3d831df53faf1ce3"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:711e2b6417eb579c61a4951029d844f6b95b9b373b213232efd413659889a363"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:71ae8b3df22c5c154c8af0f0e99d234a450ef1644393bc2d7f53fc8c0a1e111c"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:94a04e214bc521a3807c217d50cf099bbdd0c0a80d2d996c0741dbb995b5f49f"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:a770f75358508a9110c81a1257721f70c15d9bb592a2fb5c25ecbd13566e52a5"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:07c9133357f7e0b17c6694d5dcb82e0371f695d7c25faef2ff8117ef375343ff"}, - {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:204ca6b1cf2021548f4a9c29ac015e0a4ab0a7b6582bf2183d838132b60c8fda"}, - {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b95857c2c654f419ca684ec38c9c3325c24e6ba7d11910a5110775a557bb18"}, - {file = "google_re2-1.1-5-cp38-cp38-win32.whl", hash = "sha256:347ac770e091a0364e822220f8d26ab53e6fdcdeaec635052000845c5a3fb869"}, - {file = "google_re2-1.1-5-cp38-cp38-win_amd64.whl", hash = "sha256:ec32bb6de7ffb112a07d210cf9f797b7600645c2d5910703fa07f456dd2150e0"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:eb5adf89060f81c5ff26c28e261e6b4997530a923a6093c9726b8dec02a9a326"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a22630c9dd9ceb41ca4316bccba2643a8b1d5c198f21c00ed5b50a94313aaf10"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:544dc17fcc2d43ec05f317366375796351dec44058e1164e03c3f7d050284d58"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:19710af5ea88751c7768575b23765ce0dfef7324d2539de576f75cdc319d6654"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:f82995a205e08ad896f4bd5ce4847c834fab877e1772a44e5f262a647d8a1dec"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:63533c4d58da9dc4bc040250f1f52b089911699f0368e0e6e15f996387a984ed"}, - {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79e00fcf0cb04ea35a22b9014712d448725ce4ddc9f08cc818322566176ca4b0"}, - {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc41afcefee2da6c4ed883a93d7f527c4b960cd1d26bbb0020a7b8c2d341a60a"}, - {file = "google_re2-1.1-5-cp39-cp39-win32.whl", hash = "sha256:486730b5e1f1c31b0abc6d80abe174ce4f1188fe17d1b50698f2bf79dc6e44be"}, - {file = "google_re2-1.1-5-cp39-cp39-win_amd64.whl", hash = "sha256:4de637ca328f1d23209e80967d1b987d6b352cd01b3a52a84b4d742c69c3da6c"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:621e9c199d1ff0fdb2a068ad450111a84b3bf14f96dfe5a8a7a0deae5f3f4cce"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:220acd31e7dde95373f97c3d1f3b3bd2532b38936af28b1917ee265d25bebbf4"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:db34e1098d164f76251a6ece30e8f0ddfd65bb658619f48613ce71acb3f9cbdb"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:5152bac41d8073977582f06257219541d0fc46ad99b0bbf30e8f60198a43b08c"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6191294799e373ee1735af91f55abd23b786bdfd270768a690d9d55af9ea1b0d"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:070cbafbb4fecbb02e98feb28a1eb292fb880f434d531f38cc33ee314b521f1f"}, - {file = "google_re2-1.1-6-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8437d078b405a59a576cbed544490fe041140f64411f2d91012e8ec05ab8bf86"}, - {file = "google_re2-1.1-6-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f00f9a9af8896040e37896d9b9fc409ad4979f1ddd85bb188694a7d95ddd1164"}, - {file = "google_re2-1.1-6-cp310-cp310-win32.whl", hash = "sha256:df26345f229a898b4fd3cafd5f82259869388cee6268fc35af16a8e2293dd4e5"}, - {file = "google_re2-1.1-6-cp310-cp310-win_amd64.whl", hash = "sha256:3665d08262c57c9b28a5bdeb88632ad792c4e5f417e5645901695ab2624f5059"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b26b869d8aa1d8fe67c42836bf3416bb72f444528ee2431cfb59c0d3e02c6ce3"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:41fd4486c57dea4f222a6bb7f1ff79accf76676a73bdb8da0fcbd5ba73f8da71"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:0ee378e2e74e25960070c338c28192377c4dd41e7f4608f2688064bd2badc41e"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a00cdbf662693367b36d075b29feb649fd7ee1b617cf84f85f2deebeda25fc64"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4c09455014217a41499432b8c8f792f25f3df0ea2982203c3a8c8ca0e7895e69"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6501717909185327935c7945e23bb5aa8fc7b6f237b45fe3647fa36148662158"}, - {file = "google_re2-1.1-6-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3510b04790355f199e7861c29234081900e1e1cbf2d1484da48aa0ba6d7356ab"}, - {file = "google_re2-1.1-6-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8c0e64c187ca406764f9e9ad6e750d62e69ed8f75bf2e865d0bfbc03b642361c"}, - {file = "google_re2-1.1-6-cp311-cp311-win32.whl", hash = "sha256:2a199132350542b0de0f31acbb3ca87c3a90895d1d6e5235f7792bb0af02e523"}, - {file = "google_re2-1.1-6-cp311-cp311-win_amd64.whl", hash = "sha256:83bdac8ceaece8a6db082ea3a8ba6a99a2a1ee7e9f01a9d6d50f79c6f251a01d"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:81985ff894cd45ab5a73025922ac28c0707759db8171dd2f2cc7a0e856b6b5ad"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5635af26065e6b45456ccbea08674ae2ab62494008d9202df628df3b267bc095"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:813b6f04de79f4a8fdfe05e2cb33e0ccb40fe75d30ba441d519168f9d958bd54"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:5ec2f5332ad4fd232c3f2d6748c2c7845ccb66156a87df73abcc07f895d62ead"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5a687b3b32a6cbb731647393b7c4e3fde244aa557f647df124ff83fb9b93e170"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:39a62f9b3db5d3021a09a47f5b91708b64a0580193e5352751eb0c689e4ad3d7"}, - {file = "google_re2-1.1-6-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ca0f0b45d4a1709cbf5d21f355e5809ac238f1ee594625a1e5ffa9ff7a09eb2b"}, - {file = "google_re2-1.1-6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a64b3796a7a616c7861247bd061c9a836b5caf0d5963e5ea8022125601cf7b09"}, - {file = "google_re2-1.1-6-cp312-cp312-win32.whl", hash = "sha256:32783b9cb88469ba4cd9472d459fe4865280a6b1acdad4480a7b5081144c4eb7"}, - {file = "google_re2-1.1-6-cp312-cp312-win_amd64.whl", hash = "sha256:259ff3fd2d39035b9cbcbf375995f83fa5d9e6a0c5b94406ff1cc168ed41d6c6"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:e4711bcffe190acd29104d8ecfea0c0e42b754837de3fb8aad96e6cc3c613cdc"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:4d081cce43f39c2e813fe5990e1e378cbdb579d3f66ded5bade96130269ffd75"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:4f123b54d48450d2d6b14d8fad38e930fb65b5b84f1b022c10f2913bd956f5b5"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:e1928b304a2b591a28eb3175f9db7f17c40c12cf2d4ec2a85fdf1cc9c073ff91"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:3a69f76146166aec1173003c1f547931bdf288c6b135fda0020468492ac4149f"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:fc08c388f4ebbbca345e84a0c56362180d33d11cbe9ccfae663e4db88e13751e"}, - {file = "google_re2-1.1-6-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b057adf38ce4e616486922f2f47fc7d19c827ba0a7f69d540a3664eba2269325"}, - {file = "google_re2-1.1-6-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4138c0b933ab099e96f5d8defce4486f7dfd480ecaf7f221f2409f28022ccbc5"}, - {file = "google_re2-1.1-6-cp38-cp38-win32.whl", hash = "sha256:9693e45b37b504634b1abbf1ee979471ac6a70a0035954592af616306ab05dd6"}, - {file = "google_re2-1.1-6-cp38-cp38-win_amd64.whl", hash = "sha256:5674d437baba0ea287a5a7f8f81f24265d6ae8f8c09384e2ef7b6f84b40a7826"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7783137cb2e04f458a530c6d0ee9ef114815c1d48b9102f023998c371a3b060e"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a49b7153935e7a303675f4deb5f5d02ab1305adefc436071348706d147c889e0"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:a96a8bb309182090704593c60bdb369a2756b38fe358bbf0d40ddeb99c71769f"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:dff3d4be9f27ef8ec3705eed54f19ef4ab096f5876c15fe011628c69ba3b561c"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:40f818b0b39e26811fa677978112a8108269977fdab2ba0453ac4363c35d9e66"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:8a7e53538cdb40ef4296017acfbb05cab0c19998be7552db1cfb85ba40b171b9"}, - {file = "google_re2-1.1-6-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ee18e7569fb714e5bb8c42809bf8160738637a5e71ed5a4797757a1fb4dc4de"}, - {file = "google_re2-1.1-6-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1cda4f6d1a7d5b43ea92bc395f23853fba0caf8b1e1efa6e8c48685f912fcb89"}, - {file = "google_re2-1.1-6-cp39-cp39-win32.whl", hash = "sha256:6a9cdbdc36a2bf24f897be6a6c85125876dc26fea9eb4247234aec0decbdccfd"}, - {file = "google_re2-1.1-6-cp39-cp39-win_amd64.whl", hash = "sha256:73f646cecfad7cc5b4330b4192c25f2e29730a3b8408e089ffd2078094208196"}, ] [[package]] @@ -6931,7 +6781,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"}, @@ -7856,51 +7705,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.50-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:54138aa80d2dedd364f4e8220eef284c364d3270aaef621570aa2bd99902e2e8"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, {file = "SQLAlchemy-1.4.50-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:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win32.whl", hash = "sha256:6c78e3fb4a58e900ec433b6b5f4efe1a0bf81bbb366ae7761c6e0051dd310ee3"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win_amd64.whl", hash = "sha256:d55f7a33e8631e15af1b9e67c9387c894fedf6deb1a19f94be8731263c51d515"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:324b1fdd50e960a93a231abb11d7e0f227989a371e3b9bd4f1259920f15d0304"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win32.whl", hash = "sha256:8bdab03ff34fc91bfab005e96f672ae207d87e0ac7ee716d74e87e7046079d8b"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win_amd64.whl", hash = "sha256:52e01d60b06f03b0a5fc303c8aada405729cbc91a56a64cead8cb7c0b9b13c1a"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:77fde9bf74f4659864c8e26ac08add8b084e479b9a18388e7db377afc391f926"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win32.whl", hash = "sha256:e86c920b7d362cfa078c8b40e7765cbc34efb44c1007d7557920be9ddf138ec7"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win_amd64.whl", hash = "sha256:6b3df20fbbcbcd1c1d43f49ccf3eefb370499088ca251ded632b8cbaee1d497d"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:fb9adc4c6752d62c6078c107d23327aa3023ef737938d0135ece8ffb67d07030"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, {file = "SQLAlchemy-1.4.50-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:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win32.whl", hash = "sha256:1b9c4359d3198f341480e57494471201e736de459452caaacf6faa1aca852bd8"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win_amd64.whl", hash = "sha256:35e4520f7c33c77f2636a1e860e4f8cafaac84b0b44abe5de4c6c8890b6aaa6d"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f5b1fb2943d13aba17795a770d22a2ec2214fc65cff46c487790192dda3a3ee7"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, {file = "SQLAlchemy-1.4.50-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:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win32.whl", hash = "sha256:7b4396452273aedda447e5aebe68077aa7516abf3b3f48408793e771d696f397"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win_amd64.whl", hash = "sha256:752f9df3dddbacb5f42d8405b2d5885675a93501eb5f86b88f2e47a839cf6337"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:35c7ed095a4b17dbc8813a2bfb38b5998318439da8e6db10a804df855e3a9e3a"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, {file = "SQLAlchemy-1.4.50-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:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win32.whl", hash = "sha256:8a219688297ee5e887a93ce4679c87a60da4a5ce62b7cb4ee03d47e9e767f558"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl", hash = "sha256:a648770db002452703b729bdcf7d194e904aa4092b9a4d6ab185b48d13252f63"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:4be4da121d297ce81e1ba745a0a0521c6cf8704634d7b520e350dce5964c71ac"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, {file = "SQLAlchemy-1.4.50-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:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win32.whl", hash = "sha256:a7c9b9dca64036008962dd6b0d9fdab2dfdbf96c82f74dbd5d86006d8d24a30f"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win_amd64.whl", hash = "sha256:df200762efbd672f7621b253721644642ff04a6ff957236e0e2fe56d9ca34d2c"}, {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, ] From e58ad7f2770d0356f551d85b15bbe224633e3384 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 17:47:26 +0100 Subject: [PATCH 70/86] build(deps-dev): bump pre-commit from 3.6.0 to 3.7.0 (#559) Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.6.0 to 3.7.0. - [Release notes](https://github.com/pre-commit/pre-commit/releases) - [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md) - [Commits](https://github.com/pre-commit/pre-commit/compare/v3.6.0...v3.7.0) --- updated-dependencies: - dependency-name: pre-commit dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: David Ochoa --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index cf0598674..63a995aa6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -5869,13 +5869,13 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p [[package]] name = "pre-commit" -version = "3.6.0" +version = "3.7.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" files = [ - {file = "pre_commit-3.6.0-py2.py3-none-any.whl", hash = "sha256:c255039ef399049a5544b6ce13d135caba8f2c28c3b4033277a788f434308376"}, - {file = "pre_commit-3.6.0.tar.gz", hash = "sha256:d30bad9abf165f7785c15a21a1f46da7d0677cb00ee7ff4c579fd38922efe15d"}, + {file = "pre_commit-3.7.0-py2.py3-none-any.whl", hash = "sha256:5eae9e10c2b5ac51577c3452ec0a490455c45a0533f7960f993a0d01e59decab"}, + {file = "pre_commit-3.7.0.tar.gz", hash = "sha256:e209d61b8acdcf742404408531f0c37d49d2c734fd7cff2d6076083d191cb060"}, ] [package.dependencies] @@ -8565,4 +8565,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10, <3.11" -content-hash = "0219fa88667d94b340e7a707f86a732ddbb5a6c1e2ac91b4f0b4b97f134b33a4" +content-hash = "73a1b27bf8f5994bbf2546a1eb9d7440abf77a52c3cae64bd385d46cf0f4a430" diff --git a/pyproject.toml b/pyproject.toml index cd9d6ffad..e1a6727e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,7 @@ scikit-learn = "^1.3.2" pandas = "^2.1.4" [tool.poetry.dev-dependencies] -pre-commit = "^3.6.0" +pre-commit = "^3.7.0" mypy = "^1.9" pep8-naming = "^0.13.2" interrogate = "^1.5.0" From 60c000316634fd4fae3c33d0ef865cf08bbdf99d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:05:09 +0100 Subject: [PATCH 71/86] build(deps-dev): bump pytest-cov from 4.1.0 to 5.0.0 (#560) Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 4.1.0 to 5.0.0. - [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-cov/compare/v4.1.0...v5.0.0) --- updated-dependencies: - dependency-name: pytest-cov dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: David Ochoa --- poetry.lock | 12 ++++++------ pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/poetry.lock b/poetry.lock index 63a995aa6..cdc596175 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6531,13 +6531,13 @@ testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygm [[package]] name = "pytest-cov" -version = "4.1.0" +version = "5.0.0" description = "Pytest plugin for measuring coverage." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, - {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, + {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, + {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, ] [package.dependencies] @@ -6545,7 +6545,7 @@ coverage = {version = ">=5.2.1", extras = ["toml"]} pytest = ">=4.6" [package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] [[package]] name = "pytest-sugar" @@ -8565,4 +8565,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10, <3.11" -content-hash = "73a1b27bf8f5994bbf2546a1eb9d7440abf77a52c3cae64bd385d46cf0f4a430" +content-hash = "3eea1f8207eb94aa82e58ee036fa3cfa4dc4f30d3bd76089204d1fec7f609fe6" diff --git a/pyproject.toml b/pyproject.toml index e1a6727e2..03f8e0265 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,7 +58,7 @@ pymdown-extensions = "^10.7" [tool.poetry.group.tests.dependencies] -pytest-cov = "^4.1.0" +pytest-cov = ">=4.1,<6.0" pytest-sugar = ">=0.9.5,<1.1.0" dbldatagen = "^0.3.1" pyparsing = "^3.1.1" From c468fe039074851abbc95328ac3393ed0326250a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 20:15:51 +0100 Subject: [PATCH 72/86] build(deps-dev): bump python-semantic-release from 9.1.0 to 9.4.1 (#571) Bumps [python-semantic-release](https://github.com/python-semantic-release/python-semantic-release) from 9.1.0 to 9.4.1. - [Release notes](https://github.com/python-semantic-release/python-semantic-release/releases) - [Changelog](https://github.com/python-semantic-release/python-semantic-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/python-semantic-release/python-semantic-release/compare/v9.1.0...v9.4.1) --- updated-dependencies: - dependency-name: python-semantic-release dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 240 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 216 insertions(+), 24 deletions(-) diff --git a/poetry.lock b/poetry.lock index cdc596175..a25908623 100644 --- a/poetry.lock +++ b/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.8.2 and should not be changed by hand. [[package]] name = "aiodns" @@ -1203,6 +1203,25 @@ files = [ [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "click-option-group" +version = "0.5.6" +description = "Option groups missing in Click" +optional = false +python-versions = ">=3.6,<4" +files = [ + {file = "click-option-group-0.5.6.tar.gz", hash = "sha256:97d06703873518cc5038509443742b25069a3c7562d1ea72ff08bfadde1ce777"}, + {file = "click_option_group-0.5.6-py3-none-any.whl", hash = "sha256:38a26d963ee3ad93332ddf782f9259c5bdfe405e73408d943ef5e7d0c3767ec7"}, +] + +[package.dependencies] +Click = ">=7.0,<9" + +[package.extras] +docs = ["Pallets-Sphinx-Themes", "m2r2", "sphinx"] +tests = ["pytest"] +tests-cov = ["coverage", "coveralls", "pytest", "pytest-cov"] + [[package]] name = "clickclick" version = "20.10.2" @@ -3432,6 +3451,156 @@ files = [ {file = "google_re2-1.1-3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d140c7b9395b4d1e654127aa1c99bcc603ed01000b7bc7e28c52562f1894ec12"}, {file = "google_re2-1.1-3-cp39-cp39-win32.whl", hash = "sha256:80c5fc200f64b2d903eeb07b8d6cefc620a872a0240c7caaa9aca05b20f5568f"}, {file = "google_re2-1.1-3-cp39-cp39-win_amd64.whl", hash = "sha256:9eb6dbcee9b5dc4069bbc0634f2eb039ca524a14bed5868fdf6560aaafcbca06"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0db114d7e1aa96dbcea452a40136d7d747d60cbb61394965774688ef59cccd4e"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:82133958e003a1344e5b7a791b9a9dd7560b5c8f96936dbe16f294604524a633"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:9e74fd441d1f3d917d3303e319f61b82cdbd96b9a5ba919377a6eef1504a1e2b"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:734a2e7a4541c57253b5ebee24f3f3366ba3658bcad01da25fb623c78723471a"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d88d5eecbc908abe16132456fae13690d0508f3ac5777f320ef95cb6cab9a961"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:b91db80b171ecec435a07977a227757dd487356701a32f556fa6fca5d0a40522"}, + {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b23129887a64bb9948af14c84705273ed1a40054e99433b4acccab4dcf6a226"}, + {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5dc1a0cc7cd19261dcaf76763e2499305dbb7e51dc69555167cdb8af98782698"}, + {file = "google_re2-1.1-4-cp310-cp310-win32.whl", hash = "sha256:3b2ab1e2420b5dd9743a2d6bc61b64e5f708563702a75b6db86637837eaeaf2f"}, + {file = "google_re2-1.1-4-cp310-cp310-win_amd64.whl", hash = "sha256:92efca1a7ef83b6df012d432a1cbc71d10ff42200640c0f9a5ff5b343a48e633"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854818fd4ce79787aca5ba459d6e5abe4ca9be2c684a5b06a7f1757452ca3708"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:4ceef51174b6f653b6659a8fdaa9c38960c5228b44b25be2a3bcd8566827554f"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:ee49087c3db7e6f5238105ab5299c09e9b77516fe8cfb0a37e5f1e813d76ecb8"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:dc2312854bdc01410acc5d935f1906a49cb1f28980341c20a68797ad89d8e178"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0dc0d2e42296fa84a3cb3e1bd667c6969389cd5cdf0786e6b1f911ae2d75375b"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6bf04ced98453b035f84320f348f67578024f44d2997498def149054eb860ae8"}, + {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d6b6ef11dc4ab322fa66c2f3561925f2b5372a879c3ed764d20e939e2fd3e5f"}, + {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0dcde6646fa9a97fd3692b3f6ae7daf7f3277d7500b6c253badeefa11db8956a"}, + {file = "google_re2-1.1-4-cp311-cp311-win32.whl", hash = "sha256:5f4f0229deb057348893574d5b0a96d055abebac6debf29d95b0c0e26524c9f6"}, + {file = "google_re2-1.1-4-cp311-cp311-win_amd64.whl", hash = "sha256:4713ddbe48a18875270b36a462b0eada5e84d6826f8df7edd328d8706b6f9d07"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:40a698300b8faddbb325662973f839489c89b960087060bd389c376828978a04"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:103d2d7ac92ba23911a151fd1fc7035cbf6dc92a7f6aea92270ebceb5cd5acd3"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:51fb7182bccab05e8258a2b6a63dda1a6b4a9e8dfb9b03ec50e50c49c2827dd4"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:65383022abd63d7b620221eba7935132b53244b8b463d8fdce498c93cf58b7b7"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396281fc68a9337157b3ffcd9392c6b7fcb8aab43e5bdab496262a81d56a4ecc"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8198adcfcff1c680e052044124621730fc48d08005f90a75487f5651f1ebfce2"}, + {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:81f7bff07c448aec4db9ca453d2126ece8710dbd9278b8bb09642045d3402a96"}, + {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7dacf730fd7d6ec71b11d6404b0b26e230814bfc8e9bb0d3f13bec9b5531f8d"}, + {file = "google_re2-1.1-4-cp312-cp312-win32.whl", hash = "sha256:8c764f62f4b1d89d1ef264853b6dd9fee14a89e9b86a81bc2157fe3531425eb4"}, + {file = "google_re2-1.1-4-cp312-cp312-win_amd64.whl", hash = "sha256:0be2666df4bc5381a5d693585f9bbfefb0bfd3c07530d7e403f181f5de47254a"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:5cb1b63a0bfd8dd65d39d2f3b2e5ae0a06ce4b2ce5818a1d1fc78a786a252673"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e41751ce6b67a95230edd0772226dc94c2952a2909674cd69df9804ed0125307"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:b998cfa2d50bf4c063e777c999a7e8645ec7e5d7baf43ad71b1e2e10bb0300c3"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:226ca3b0c2e970f3fc82001ac89e845ecc7a4bb7c68583e7a76cda70b61251a7"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:9adec1f734ebad7c72e56c85f205a281d8fe9bf6583bc21020157d3f2812ce89"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:9c34f3c64ba566af967d29e11299560e6fdfacd8ca695120a7062b6ed993b179"}, + {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b85385fe293838e0d0b6e19e6c48ba8c6f739ea92ce2e23b718afe7b343363"}, + {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4694daa8a8987cfb568847aa872f9990e930c91a68c892ead876411d4b9012c3"}, + {file = "google_re2-1.1-4-cp38-cp38-win32.whl", hash = "sha256:5e671e9be1668187e2995aac378de574fa40df70bb6f04657af4d30a79274ce0"}, + {file = "google_re2-1.1-4-cp38-cp38-win_amd64.whl", hash = "sha256:f66c164d6049a8299f6dfcfa52d1580576b4b9724d6fcdad2f36f8f5da9304b6"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:25cb17ae0993a48c70596f3a3ef5d659638106401cc8193f51c0d7961b3b3eb7"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5f101f86d14ca94ca4dcf63cceaa73d351f2be2481fcaa29d9e68eeab0dc2a88"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:4e82591e85bf262a6d74cff152867e05fc97867c68ba81d6836ff8b0e7e62365"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:1f61c09b93ffd34b1e2557e5a9565039f935407a5786dbad46f64f1a484166e6"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:12b390ad8c7e74bab068732f774e75e0680dade6469b249a721f3432f90edfc3"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:1284343eb31c2e82ed2d8159f33ba6842238a56782c881b07845a6d85613b055"}, + {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c7b38e0daf2c06e4d3163f4c732ab3ad2521aecfed6605b69e4482c612da303"}, + {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f4d4f0823e8b2f6952a145295b1ff25245ce9bb136aff6fe86452e507d4c1dd"}, + {file = "google_re2-1.1-4-cp39-cp39-win32.whl", hash = "sha256:1afae56b2a07bb48cfcfefaa15ed85bae26a68f5dc7f9e128e6e6ea36914e847"}, + {file = "google_re2-1.1-4-cp39-cp39-win_amd64.whl", hash = "sha256:aa7d6d05911ab9c8adbf3c225a7a120ab50fd2784ac48f2f0d140c0b7afc2b55"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:222fc2ee0e40522de0b21ad3bc90ab8983be3bf3cec3d349c80d76c8bb1a4beb"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d4763b0b9195b72132a4e7de8e5a9bf1f05542f442a9115aa27cfc2a8004f581"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:209649da10c9d4a93d8a4d100ecbf9cc3b0252169426bec3e8b4ad7e57d600cf"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:68813aa333c1604a2df4a495b2a6ed065d7c8aebf26cc7e7abb5a6835d08353c"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:370a23ec775ad14e9d1e71474d56f381224dcf3e72b15d8ca7b4ad7dd9cd5853"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:14664a66a3ddf6bc9e56f401bf029db2d169982c53eff3f5876399104df0e9a6"}, + {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea3722cc4932cbcebd553b69dce1b4a73572823cff4e6a244f1c855da21d511"}, + {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e14bb264c40fd7c627ef5678e295370cd6ba95ca71d835798b6e37502fc4c690"}, + {file = "google_re2-1.1-5-cp310-cp310-win32.whl", hash = "sha256:39512cd0151ea4b3969c992579c79b423018b464624ae955be685fc07d94556c"}, + {file = "google_re2-1.1-5-cp310-cp310-win_amd64.whl", hash = "sha256:ac66537aa3bc5504320d922b73156909e3c2b6da19739c866502f7827b3f9fdf"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b5ea68d54890c9edb1b930dcb2658819354e5d3f2201f811798bbc0a142c2b4"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:33443511b6b83c35242370908efe2e8e1e7cae749c766b2b247bf30e8616066c"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:413d77bdd5ba0bfcada428b4c146e87707452ec50a4091ec8e8ba1413d7e0619"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:5171686e43304996a34baa2abcee6f28b169806d0e583c16d55e5656b092a414"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b284db130283771558e31a02d8eb8fb756156ab98ce80035ae2e9e3a5f307c4"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:296e6aed0b169648dc4b870ff47bd34c702a32600adb9926154569ef51033f47"}, + {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:38d50e68ead374160b1e656bbb5d101f0b95fb4cc57f4a5c12100155001480c5"}, + {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a0416a35921e5041758948bcb882456916f22845f66a93bc25070ef7262b72a"}, + {file = "google_re2-1.1-5-cp311-cp311-win32.whl", hash = "sha256:a1d59568bbb5de5dd56dd6cdc79907db26cce63eb4429260300c65f43469e3e7"}, + {file = "google_re2-1.1-5-cp311-cp311-win_amd64.whl", hash = "sha256:72f5a2f179648b8358737b2b493549370debd7d389884a54d331619b285514e3"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:cbc72c45937b1dc5acac3560eb1720007dccca7c9879138ff874c7f6baf96005"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5fadd1417fbef7235fa9453dba4eb102e6e7d94b1e4c99d5fa3dd4e288d0d2ae"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:040f85c63cc02696485b59b187a5ef044abe2f99b92b4fb399de40b7d2904ccc"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:64e3b975ee6d9bbb2420494e41f929c1a0de4bcc16d86619ab7a87f6ea80d6bd"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8ee370413e00f4d828eaed0e83b8af84d7a72e8ee4f4bd5d3078bc741dfc430a"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:5b89383001079323f693ba592d7aad789d7a02e75adb5d3368d92b300f5963fd"}, + {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:63cb4fdfbbda16ae31b41a6388ea621510db82feb8217a74bf36552ecfcd50ad"}, + {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ebedd84ae8be10b7a71a16162376fd67a2386fe6361ef88c622dcf7fd679daf"}, + {file = "google_re2-1.1-5-cp312-cp312-win32.whl", hash = "sha256:c8e22d1692bc2c81173330c721aff53e47ffd3c4403ff0cd9d91adfd255dd150"}, + {file = "google_re2-1.1-5-cp312-cp312-win_amd64.whl", hash = "sha256:5197a6af438bb8c4abda0bbe9c4fbd6c27c159855b211098b29d51b73e4cbcf6"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b6727e0b98417e114b92688ad2aa256102ece51f29b743db3d831df53faf1ce3"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:711e2b6417eb579c61a4951029d844f6b95b9b373b213232efd413659889a363"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:71ae8b3df22c5c154c8af0f0e99d234a450ef1644393bc2d7f53fc8c0a1e111c"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:94a04e214bc521a3807c217d50cf099bbdd0c0a80d2d996c0741dbb995b5f49f"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:a770f75358508a9110c81a1257721f70c15d9bb592a2fb5c25ecbd13566e52a5"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:07c9133357f7e0b17c6694d5dcb82e0371f695d7c25faef2ff8117ef375343ff"}, + {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:204ca6b1cf2021548f4a9c29ac015e0a4ab0a7b6582bf2183d838132b60c8fda"}, + {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b95857c2c654f419ca684ec38c9c3325c24e6ba7d11910a5110775a557bb18"}, + {file = "google_re2-1.1-5-cp38-cp38-win32.whl", hash = "sha256:347ac770e091a0364e822220f8d26ab53e6fdcdeaec635052000845c5a3fb869"}, + {file = "google_re2-1.1-5-cp38-cp38-win_amd64.whl", hash = "sha256:ec32bb6de7ffb112a07d210cf9f797b7600645c2d5910703fa07f456dd2150e0"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:eb5adf89060f81c5ff26c28e261e6b4997530a923a6093c9726b8dec02a9a326"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a22630c9dd9ceb41ca4316bccba2643a8b1d5c198f21c00ed5b50a94313aaf10"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:544dc17fcc2d43ec05f317366375796351dec44058e1164e03c3f7d050284d58"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:19710af5ea88751c7768575b23765ce0dfef7324d2539de576f75cdc319d6654"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:f82995a205e08ad896f4bd5ce4847c834fab877e1772a44e5f262a647d8a1dec"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:63533c4d58da9dc4bc040250f1f52b089911699f0368e0e6e15f996387a984ed"}, + {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79e00fcf0cb04ea35a22b9014712d448725ce4ddc9f08cc818322566176ca4b0"}, + {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc41afcefee2da6c4ed883a93d7f527c4b960cd1d26bbb0020a7b8c2d341a60a"}, + {file = "google_re2-1.1-5-cp39-cp39-win32.whl", hash = "sha256:486730b5e1f1c31b0abc6d80abe174ce4f1188fe17d1b50698f2bf79dc6e44be"}, + {file = "google_re2-1.1-5-cp39-cp39-win_amd64.whl", hash = "sha256:4de637ca328f1d23209e80967d1b987d6b352cd01b3a52a84b4d742c69c3da6c"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:621e9c199d1ff0fdb2a068ad450111a84b3bf14f96dfe5a8a7a0deae5f3f4cce"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:220acd31e7dde95373f97c3d1f3b3bd2532b38936af28b1917ee265d25bebbf4"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:db34e1098d164f76251a6ece30e8f0ddfd65bb658619f48613ce71acb3f9cbdb"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:5152bac41d8073977582f06257219541d0fc46ad99b0bbf30e8f60198a43b08c"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6191294799e373ee1735af91f55abd23b786bdfd270768a690d9d55af9ea1b0d"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:070cbafbb4fecbb02e98feb28a1eb292fb880f434d531f38cc33ee314b521f1f"}, + {file = "google_re2-1.1-6-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8437d078b405a59a576cbed544490fe041140f64411f2d91012e8ec05ab8bf86"}, + {file = "google_re2-1.1-6-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f00f9a9af8896040e37896d9b9fc409ad4979f1ddd85bb188694a7d95ddd1164"}, + {file = "google_re2-1.1-6-cp310-cp310-win32.whl", hash = "sha256:df26345f229a898b4fd3cafd5f82259869388cee6268fc35af16a8e2293dd4e5"}, + {file = "google_re2-1.1-6-cp310-cp310-win_amd64.whl", hash = "sha256:3665d08262c57c9b28a5bdeb88632ad792c4e5f417e5645901695ab2624f5059"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b26b869d8aa1d8fe67c42836bf3416bb72f444528ee2431cfb59c0d3e02c6ce3"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:41fd4486c57dea4f222a6bb7f1ff79accf76676a73bdb8da0fcbd5ba73f8da71"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:0ee378e2e74e25960070c338c28192377c4dd41e7f4608f2688064bd2badc41e"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a00cdbf662693367b36d075b29feb649fd7ee1b617cf84f85f2deebeda25fc64"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4c09455014217a41499432b8c8f792f25f3df0ea2982203c3a8c8ca0e7895e69"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6501717909185327935c7945e23bb5aa8fc7b6f237b45fe3647fa36148662158"}, + {file = "google_re2-1.1-6-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3510b04790355f199e7861c29234081900e1e1cbf2d1484da48aa0ba6d7356ab"}, + {file = "google_re2-1.1-6-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8c0e64c187ca406764f9e9ad6e750d62e69ed8f75bf2e865d0bfbc03b642361c"}, + {file = "google_re2-1.1-6-cp311-cp311-win32.whl", hash = "sha256:2a199132350542b0de0f31acbb3ca87c3a90895d1d6e5235f7792bb0af02e523"}, + {file = "google_re2-1.1-6-cp311-cp311-win_amd64.whl", hash = "sha256:83bdac8ceaece8a6db082ea3a8ba6a99a2a1ee7e9f01a9d6d50f79c6f251a01d"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:81985ff894cd45ab5a73025922ac28c0707759db8171dd2f2cc7a0e856b6b5ad"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5635af26065e6b45456ccbea08674ae2ab62494008d9202df628df3b267bc095"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:813b6f04de79f4a8fdfe05e2cb33e0ccb40fe75d30ba441d519168f9d958bd54"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:5ec2f5332ad4fd232c3f2d6748c2c7845ccb66156a87df73abcc07f895d62ead"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5a687b3b32a6cbb731647393b7c4e3fde244aa557f647df124ff83fb9b93e170"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:39a62f9b3db5d3021a09a47f5b91708b64a0580193e5352751eb0c689e4ad3d7"}, + {file = "google_re2-1.1-6-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ca0f0b45d4a1709cbf5d21f355e5809ac238f1ee594625a1e5ffa9ff7a09eb2b"}, + {file = "google_re2-1.1-6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a64b3796a7a616c7861247bd061c9a836b5caf0d5963e5ea8022125601cf7b09"}, + {file = "google_re2-1.1-6-cp312-cp312-win32.whl", hash = "sha256:32783b9cb88469ba4cd9472d459fe4865280a6b1acdad4480a7b5081144c4eb7"}, + {file = "google_re2-1.1-6-cp312-cp312-win_amd64.whl", hash = "sha256:259ff3fd2d39035b9cbcbf375995f83fa5d9e6a0c5b94406ff1cc168ed41d6c6"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:e4711bcffe190acd29104d8ecfea0c0e42b754837de3fb8aad96e6cc3c613cdc"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:4d081cce43f39c2e813fe5990e1e378cbdb579d3f66ded5bade96130269ffd75"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:4f123b54d48450d2d6b14d8fad38e930fb65b5b84f1b022c10f2913bd956f5b5"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:e1928b304a2b591a28eb3175f9db7f17c40c12cf2d4ec2a85fdf1cc9c073ff91"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:3a69f76146166aec1173003c1f547931bdf288c6b135fda0020468492ac4149f"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:fc08c388f4ebbbca345e84a0c56362180d33d11cbe9ccfae663e4db88e13751e"}, + {file = "google_re2-1.1-6-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b057adf38ce4e616486922f2f47fc7d19c827ba0a7f69d540a3664eba2269325"}, + {file = "google_re2-1.1-6-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4138c0b933ab099e96f5d8defce4486f7dfd480ecaf7f221f2409f28022ccbc5"}, + {file = "google_re2-1.1-6-cp38-cp38-win32.whl", hash = "sha256:9693e45b37b504634b1abbf1ee979471ac6a70a0035954592af616306ab05dd6"}, + {file = "google_re2-1.1-6-cp38-cp38-win_amd64.whl", hash = "sha256:5674d437baba0ea287a5a7f8f81f24265d6ae8f8c09384e2ef7b6f84b40a7826"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7783137cb2e04f458a530c6d0ee9ef114815c1d48b9102f023998c371a3b060e"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a49b7153935e7a303675f4deb5f5d02ab1305adefc436071348706d147c889e0"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:a96a8bb309182090704593c60bdb369a2756b38fe358bbf0d40ddeb99c71769f"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:dff3d4be9f27ef8ec3705eed54f19ef4ab096f5876c15fe011628c69ba3b561c"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:40f818b0b39e26811fa677978112a8108269977fdab2ba0453ac4363c35d9e66"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:8a7e53538cdb40ef4296017acfbb05cab0c19998be7552db1cfb85ba40b171b9"}, + {file = "google_re2-1.1-6-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ee18e7569fb714e5bb8c42809bf8160738637a5e71ed5a4797757a1fb4dc4de"}, + {file = "google_re2-1.1-6-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1cda4f6d1a7d5b43ea92bc395f23853fba0caf8b1e1efa6e8c48685f912fcb89"}, + {file = "google_re2-1.1-6-cp39-cp39-win32.whl", hash = "sha256:6a9cdbdc36a2bf24f897be6a6c85125876dc26fea9eb4247234aec0decbdccfd"}, + {file = "google_re2-1.1-6-cp39-cp39-win_amd64.whl", hash = "sha256:73f646cecfad7cc5b4330b4192c25f2e29730a3b8408e089ffd2078094208196"}, ] [[package]] @@ -6622,13 +6791,13 @@ six = ">=1.5" [[package]] name = "python-gitlab" -version = "3.15.0" -description = "Interact with GitLab API" +version = "4.4.0" +description = "A python wrapper for the GitLab API" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" files = [ - {file = "python-gitlab-3.15.0.tar.gz", hash = "sha256:c9e65eb7612a9fbb8abf0339972eca7fd7a73d4da66c9b446ffe528930aff534"}, - {file = "python_gitlab-3.15.0-py3-none-any.whl", hash = "sha256:8f8d1c0d387f642eb1ac7bf5e8e0cd8b3dd49c6f34170cee3c7deb7d384611f3"}, + {file = "python-gitlab-4.4.0.tar.gz", hash = "sha256:1d117bf7b433ae8255e5d74e72c660978f50ee85eb62248c9fb52ef43c3e3814"}, + {file = "python_gitlab-4.4.0-py3-none-any.whl", hash = "sha256:cdad39d016f59664cdaad0f878f194c79cb4357630776caa9a92c1da25c8d986"}, ] [package.dependencies] @@ -6637,7 +6806,7 @@ requests-toolbelt = ">=0.10.1" [package.extras] autocompletion = ["argcomplete (>=1.10.0,<3)"] -yaml = ["PyYaml (>=5.2)"] +yaml = ["PyYaml (>=6.0.1)"] [[package]] name = "python-json-logger" @@ -6666,33 +6835,34 @@ python-slugify = ">=1.2.5" [[package]] name = "python-semantic-release" -version = "9.1.0" +version = "9.4.1" description = "Automatic Semantic Versioning for Python projects" optional = false python-versions = ">=3.8" files = [ - {file = "python-semantic-release-9.1.0.tar.gz", hash = "sha256:0317e72a940c5080c8aa6ff56cce6230f045b1a8f91f0a58fdc8f80745912369"}, - {file = "python_semantic_release-9.1.0-py3-none-any.whl", hash = "sha256:7ca5fb1ea4d5215182db477fbc53d9f4c907b7030520c4ac6640b9aaa71dbce7"}, + {file = "python-semantic-release-9.4.1.tar.gz", hash = "sha256:78d8a8674edbcc8f389799c27d1c5a604f5bc0f061ce14951a6b061e68b25895"}, + {file = "python_semantic_release-9.4.1-py3-none-any.whl", hash = "sha256:efe419bfb2e9eb8459d67109a725f00f1a93f487999ca02d757cf442c7f72679"}, ] [package.dependencies] -click = ">=8,<9" -dotty-dict = ">=1.3.0,<2" -gitpython = ">=3.0.8,<4" -importlib-resources = ">=5.7,<7" -jinja2 = ">=3.1.2,<4" -pydantic = ">=2,<3" -python-gitlab = ">=2,<5" -requests = ">=2.25,<3" -rich = ">=12.5.1" -shellingham = ">=1.5.0.post1" +click = ">=8.0,<9.0" +click-option-group = ">=0.5,<1.0" +dotty-dict = ">=1.3,<2.0" +gitpython = ">=3.0,<4.0" +importlib-resources = ">=6.0,<7.0" +jinja2 = ">=3.1,<4.0" +pydantic = ">=2.0,<3.0" +python-gitlab = ">=4.0,<5.0" +requests = ">=2.25,<3.0" +rich = ">=12.5,<13.0" +shellingham = ">=1.5,<2.0" tomlkit = ">=0.11,<1.0" [package.extras] -dev = ["pre-commit", "ruff (==0.1.11)", "tox"] -docs = ["Sphinx (<=6.0.0)", "furo (>=2023.3.27)", "sphinx-autobuild (==2021.03.14)", "sphinxcontrib-apidoc (==0.3.0)"] -mypy = ["mypy", "types-requests"] -test = ["coverage[toml] (>=6,<8)", "pytest (>=7,<8)", "pytest-clarity (>=1.0.1)", "pytest-cov (>=4,<5)", "pytest-env (>=1.0,<2.0)", "pytest-lazy-fixture (>=0.6.3,<0.7.0)", "pytest-mock (>=3,<4)", "pytest-pretty (>=1.2.0,<2)", "pytest-xdist (>=2,<4)", "requests-mock (>=1.10.0,<2)", "responses (==0.23.3)", "types-pytest-lazy-fixture (>=0.6.3.3)"] +dev = ["pre-commit (>=3.5,<4.0)", "ruff (==0.3.5)", "tox (>=4.11,<5.0)"] +docs = ["Sphinx (>=6.0,<7.0)", "furo (>=2023.3,<2024.0)", "sphinx-autobuild (==2024.2.4)", "sphinxcontrib-apidoc (==0.5.0)"] +mypy = ["mypy (==1.9.0)", "types-requests (>=2.31.0,<2.32.0)"] +test = ["coverage[toml] (>=7.0,<8.0)", "pytest (>=7.0,<8.0)", "pytest-clarity (>=1.0,<2.0)", "pytest-cov (>=5.0,<6.0)", "pytest-env (>=1.0,<2.0)", "pytest-lazy-fixture (>=0.6.3,<0.7.0)", "pytest-mock (>=3.0,<4.0)", "pytest-pretty (>=1.2,<2.0)", "pytest-xdist (>=3.0,<4.0)", "requests-mock (>=1.10,<2.0)", "responses (>=0.25.0,<0.26.0)", "types-pytest-lazy-fixture (>=0.6.3,<0.7.0)"] [[package]] name = "python-slugify" @@ -6781,6 +6951,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"}, @@ -7705,30 +7876,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.50-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:54138aa80d2dedd364f4e8220eef284c364d3270aaef621570aa2bd99902e2e8"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, {file = "SQLAlchemy-1.4.50-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:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, + {file = "SQLAlchemy-1.4.50-cp310-cp310-win32.whl", hash = "sha256:6c78e3fb4a58e900ec433b6b5f4efe1a0bf81bbb366ae7761c6e0051dd310ee3"}, + {file = "SQLAlchemy-1.4.50-cp310-cp310-win_amd64.whl", hash = "sha256:d55f7a33e8631e15af1b9e67c9387c894fedf6deb1a19f94be8731263c51d515"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:324b1fdd50e960a93a231abb11d7e0f227989a371e3b9bd4f1259920f15d0304"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-win32.whl", hash = "sha256:8bdab03ff34fc91bfab005e96f672ae207d87e0ac7ee716d74e87e7046079d8b"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-win_amd64.whl", hash = "sha256:52e01d60b06f03b0a5fc303c8aada405729cbc91a56a64cead8cb7c0b9b13c1a"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:77fde9bf74f4659864c8e26ac08add8b084e479b9a18388e7db377afc391f926"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-win32.whl", hash = "sha256:e86c920b7d362cfa078c8b40e7765cbc34efb44c1007d7557920be9ddf138ec7"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-win_amd64.whl", hash = "sha256:6b3df20fbbcbcd1c1d43f49ccf3eefb370499088ca251ded632b8cbaee1d497d"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:fb9adc4c6752d62c6078c107d23327aa3023ef737938d0135ece8ffb67d07030"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, {file = "SQLAlchemy-1.4.50-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:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-win32.whl", hash = "sha256:1b9c4359d3198f341480e57494471201e736de459452caaacf6faa1aca852bd8"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-win_amd64.whl", hash = "sha256:35e4520f7c33c77f2636a1e860e4f8cafaac84b0b44abe5de4c6c8890b6aaa6d"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f5b1fb2943d13aba17795a770d22a2ec2214fc65cff46c487790192dda3a3ee7"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, {file = "SQLAlchemy-1.4.50-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:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-win32.whl", hash = "sha256:7b4396452273aedda447e5aebe68077aa7516abf3b3f48408793e771d696f397"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-win_amd64.whl", hash = "sha256:752f9df3dddbacb5f42d8405b2d5885675a93501eb5f86b88f2e47a839cf6337"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:35c7ed095a4b17dbc8813a2bfb38b5998318439da8e6db10a804df855e3a9e3a"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, {file = "SQLAlchemy-1.4.50-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:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-win32.whl", hash = "sha256:8a219688297ee5e887a93ce4679c87a60da4a5ce62b7cb4ee03d47e9e767f558"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl", hash = "sha256:a648770db002452703b729bdcf7d194e904aa4092b9a4d6ab185b48d13252f63"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:4be4da121d297ce81e1ba745a0a0521c6cf8704634d7b520e350dce5964c71ac"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, {file = "SQLAlchemy-1.4.50-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:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-win32.whl", hash = "sha256:a7c9b9dca64036008962dd6b0d9fdab2dfdbf96c82f74dbd5d86006d8d24a30f"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-win_amd64.whl", hash = "sha256:df200762efbd672f7621b253721644642ff04a6ff957236e0e2fe56d9ca34d2c"}, {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, ] From 23a5faec8343d2f05716eb43213d27a42e80416e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 10:13:41 +0100 Subject: [PATCH 73/86] chore: pre-commit autoupdate (#593) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.4.1 → v0.4.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.1...v0.4.2) - [github.com/alessandrojcm/commitlint-pre-commit-hook: v9.15.0 → v9.16.0](https://github.com/alessandrojcm/commitlint-pre-commit-hook/compare/v9.15.0...v9.16.0) - [github.com/pre-commit/mirrors-mypy: v1.9.0 → v1.10.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.9.0...v1.10.0) * chore: it bumps poetry version --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: David Ochoa --- .pre-commit-config.yaml | 6 +- poetry.lock | 174 +--------------------------------------- 2 files changed, 4 insertions(+), 176 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 11bb80eb8..8f57e85b5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ ci: skip: [poetry-lock] repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.1 + rev: v0.4.2 hooks: - id: ruff args: @@ -59,14 +59,14 @@ repos: exclude: "CHANGELOG.md" - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook - rev: v9.15.0 + rev: v9.16.0 hooks: - id: commitlint additional_dependencies: ["@commitlint/config-conventional@18.6.3"] stages: [commit-msg] - repo: https://github.com/pre-commit/mirrors-mypy - rev: "v1.9.0" + rev: "v1.10.0" hooks: - id: mypy args: diff --git a/poetry.lock b/poetry.lock index a25908623..cb7ff6fd0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.0 and should not be changed by hand. [[package]] name = "aiodns" @@ -3451,156 +3451,6 @@ files = [ {file = "google_re2-1.1-3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d140c7b9395b4d1e654127aa1c99bcc603ed01000b7bc7e28c52562f1894ec12"}, {file = "google_re2-1.1-3-cp39-cp39-win32.whl", hash = "sha256:80c5fc200f64b2d903eeb07b8d6cefc620a872a0240c7caaa9aca05b20f5568f"}, {file = "google_re2-1.1-3-cp39-cp39-win_amd64.whl", hash = "sha256:9eb6dbcee9b5dc4069bbc0634f2eb039ca524a14bed5868fdf6560aaafcbca06"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0db114d7e1aa96dbcea452a40136d7d747d60cbb61394965774688ef59cccd4e"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:82133958e003a1344e5b7a791b9a9dd7560b5c8f96936dbe16f294604524a633"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:9e74fd441d1f3d917d3303e319f61b82cdbd96b9a5ba919377a6eef1504a1e2b"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:734a2e7a4541c57253b5ebee24f3f3366ba3658bcad01da25fb623c78723471a"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d88d5eecbc908abe16132456fae13690d0508f3ac5777f320ef95cb6cab9a961"}, - {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:b91db80b171ecec435a07977a227757dd487356701a32f556fa6fca5d0a40522"}, - {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b23129887a64bb9948af14c84705273ed1a40054e99433b4acccab4dcf6a226"}, - {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5dc1a0cc7cd19261dcaf76763e2499305dbb7e51dc69555167cdb8af98782698"}, - {file = "google_re2-1.1-4-cp310-cp310-win32.whl", hash = "sha256:3b2ab1e2420b5dd9743a2d6bc61b64e5f708563702a75b6db86637837eaeaf2f"}, - {file = "google_re2-1.1-4-cp310-cp310-win_amd64.whl", hash = "sha256:92efca1a7ef83b6df012d432a1cbc71d10ff42200640c0f9a5ff5b343a48e633"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854818fd4ce79787aca5ba459d6e5abe4ca9be2c684a5b06a7f1757452ca3708"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:4ceef51174b6f653b6659a8fdaa9c38960c5228b44b25be2a3bcd8566827554f"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:ee49087c3db7e6f5238105ab5299c09e9b77516fe8cfb0a37e5f1e813d76ecb8"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:dc2312854bdc01410acc5d935f1906a49cb1f28980341c20a68797ad89d8e178"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0dc0d2e42296fa84a3cb3e1bd667c6969389cd5cdf0786e6b1f911ae2d75375b"}, - {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6bf04ced98453b035f84320f348f67578024f44d2997498def149054eb860ae8"}, - {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d6b6ef11dc4ab322fa66c2f3561925f2b5372a879c3ed764d20e939e2fd3e5f"}, - {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0dcde6646fa9a97fd3692b3f6ae7daf7f3277d7500b6c253badeefa11db8956a"}, - {file = "google_re2-1.1-4-cp311-cp311-win32.whl", hash = "sha256:5f4f0229deb057348893574d5b0a96d055abebac6debf29d95b0c0e26524c9f6"}, - {file = "google_re2-1.1-4-cp311-cp311-win_amd64.whl", hash = "sha256:4713ddbe48a18875270b36a462b0eada5e84d6826f8df7edd328d8706b6f9d07"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:40a698300b8faddbb325662973f839489c89b960087060bd389c376828978a04"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:103d2d7ac92ba23911a151fd1fc7035cbf6dc92a7f6aea92270ebceb5cd5acd3"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:51fb7182bccab05e8258a2b6a63dda1a6b4a9e8dfb9b03ec50e50c49c2827dd4"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:65383022abd63d7b620221eba7935132b53244b8b463d8fdce498c93cf58b7b7"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396281fc68a9337157b3ffcd9392c6b7fcb8aab43e5bdab496262a81d56a4ecc"}, - {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8198adcfcff1c680e052044124621730fc48d08005f90a75487f5651f1ebfce2"}, - {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:81f7bff07c448aec4db9ca453d2126ece8710dbd9278b8bb09642045d3402a96"}, - {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7dacf730fd7d6ec71b11d6404b0b26e230814bfc8e9bb0d3f13bec9b5531f8d"}, - {file = "google_re2-1.1-4-cp312-cp312-win32.whl", hash = "sha256:8c764f62f4b1d89d1ef264853b6dd9fee14a89e9b86a81bc2157fe3531425eb4"}, - {file = "google_re2-1.1-4-cp312-cp312-win_amd64.whl", hash = "sha256:0be2666df4bc5381a5d693585f9bbfefb0bfd3c07530d7e403f181f5de47254a"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:5cb1b63a0bfd8dd65d39d2f3b2e5ae0a06ce4b2ce5818a1d1fc78a786a252673"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e41751ce6b67a95230edd0772226dc94c2952a2909674cd69df9804ed0125307"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:b998cfa2d50bf4c063e777c999a7e8645ec7e5d7baf43ad71b1e2e10bb0300c3"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:226ca3b0c2e970f3fc82001ac89e845ecc7a4bb7c68583e7a76cda70b61251a7"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:9adec1f734ebad7c72e56c85f205a281d8fe9bf6583bc21020157d3f2812ce89"}, - {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:9c34f3c64ba566af967d29e11299560e6fdfacd8ca695120a7062b6ed993b179"}, - {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b85385fe293838e0d0b6e19e6c48ba8c6f739ea92ce2e23b718afe7b343363"}, - {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4694daa8a8987cfb568847aa872f9990e930c91a68c892ead876411d4b9012c3"}, - {file = "google_re2-1.1-4-cp38-cp38-win32.whl", hash = "sha256:5e671e9be1668187e2995aac378de574fa40df70bb6f04657af4d30a79274ce0"}, - {file = "google_re2-1.1-4-cp38-cp38-win_amd64.whl", hash = "sha256:f66c164d6049a8299f6dfcfa52d1580576b4b9724d6fcdad2f36f8f5da9304b6"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:25cb17ae0993a48c70596f3a3ef5d659638106401cc8193f51c0d7961b3b3eb7"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5f101f86d14ca94ca4dcf63cceaa73d351f2be2481fcaa29d9e68eeab0dc2a88"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:4e82591e85bf262a6d74cff152867e05fc97867c68ba81d6836ff8b0e7e62365"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:1f61c09b93ffd34b1e2557e5a9565039f935407a5786dbad46f64f1a484166e6"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:12b390ad8c7e74bab068732f774e75e0680dade6469b249a721f3432f90edfc3"}, - {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:1284343eb31c2e82ed2d8159f33ba6842238a56782c881b07845a6d85613b055"}, - {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c7b38e0daf2c06e4d3163f4c732ab3ad2521aecfed6605b69e4482c612da303"}, - {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f4d4f0823e8b2f6952a145295b1ff25245ce9bb136aff6fe86452e507d4c1dd"}, - {file = "google_re2-1.1-4-cp39-cp39-win32.whl", hash = "sha256:1afae56b2a07bb48cfcfefaa15ed85bae26a68f5dc7f9e128e6e6ea36914e847"}, - {file = "google_re2-1.1-4-cp39-cp39-win_amd64.whl", hash = "sha256:aa7d6d05911ab9c8adbf3c225a7a120ab50fd2784ac48f2f0d140c0b7afc2b55"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:222fc2ee0e40522de0b21ad3bc90ab8983be3bf3cec3d349c80d76c8bb1a4beb"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d4763b0b9195b72132a4e7de8e5a9bf1f05542f442a9115aa27cfc2a8004f581"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:209649da10c9d4a93d8a4d100ecbf9cc3b0252169426bec3e8b4ad7e57d600cf"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:68813aa333c1604a2df4a495b2a6ed065d7c8aebf26cc7e7abb5a6835d08353c"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:370a23ec775ad14e9d1e71474d56f381224dcf3e72b15d8ca7b4ad7dd9cd5853"}, - {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:14664a66a3ddf6bc9e56f401bf029db2d169982c53eff3f5876399104df0e9a6"}, - {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea3722cc4932cbcebd553b69dce1b4a73572823cff4e6a244f1c855da21d511"}, - {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e14bb264c40fd7c627ef5678e295370cd6ba95ca71d835798b6e37502fc4c690"}, - {file = "google_re2-1.1-5-cp310-cp310-win32.whl", hash = "sha256:39512cd0151ea4b3969c992579c79b423018b464624ae955be685fc07d94556c"}, - {file = "google_re2-1.1-5-cp310-cp310-win_amd64.whl", hash = "sha256:ac66537aa3bc5504320d922b73156909e3c2b6da19739c866502f7827b3f9fdf"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b5ea68d54890c9edb1b930dcb2658819354e5d3f2201f811798bbc0a142c2b4"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:33443511b6b83c35242370908efe2e8e1e7cae749c766b2b247bf30e8616066c"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:413d77bdd5ba0bfcada428b4c146e87707452ec50a4091ec8e8ba1413d7e0619"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:5171686e43304996a34baa2abcee6f28b169806d0e583c16d55e5656b092a414"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b284db130283771558e31a02d8eb8fb756156ab98ce80035ae2e9e3a5f307c4"}, - {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:296e6aed0b169648dc4b870ff47bd34c702a32600adb9926154569ef51033f47"}, - {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:38d50e68ead374160b1e656bbb5d101f0b95fb4cc57f4a5c12100155001480c5"}, - {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a0416a35921e5041758948bcb882456916f22845f66a93bc25070ef7262b72a"}, - {file = "google_re2-1.1-5-cp311-cp311-win32.whl", hash = "sha256:a1d59568bbb5de5dd56dd6cdc79907db26cce63eb4429260300c65f43469e3e7"}, - {file = "google_re2-1.1-5-cp311-cp311-win_amd64.whl", hash = "sha256:72f5a2f179648b8358737b2b493549370debd7d389884a54d331619b285514e3"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:cbc72c45937b1dc5acac3560eb1720007dccca7c9879138ff874c7f6baf96005"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5fadd1417fbef7235fa9453dba4eb102e6e7d94b1e4c99d5fa3dd4e288d0d2ae"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:040f85c63cc02696485b59b187a5ef044abe2f99b92b4fb399de40b7d2904ccc"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:64e3b975ee6d9bbb2420494e41f929c1a0de4bcc16d86619ab7a87f6ea80d6bd"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8ee370413e00f4d828eaed0e83b8af84d7a72e8ee4f4bd5d3078bc741dfc430a"}, - {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:5b89383001079323f693ba592d7aad789d7a02e75adb5d3368d92b300f5963fd"}, - {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:63cb4fdfbbda16ae31b41a6388ea621510db82feb8217a74bf36552ecfcd50ad"}, - {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ebedd84ae8be10b7a71a16162376fd67a2386fe6361ef88c622dcf7fd679daf"}, - {file = "google_re2-1.1-5-cp312-cp312-win32.whl", hash = "sha256:c8e22d1692bc2c81173330c721aff53e47ffd3c4403ff0cd9d91adfd255dd150"}, - {file = "google_re2-1.1-5-cp312-cp312-win_amd64.whl", hash = "sha256:5197a6af438bb8c4abda0bbe9c4fbd6c27c159855b211098b29d51b73e4cbcf6"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b6727e0b98417e114b92688ad2aa256102ece51f29b743db3d831df53faf1ce3"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:711e2b6417eb579c61a4951029d844f6b95b9b373b213232efd413659889a363"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:71ae8b3df22c5c154c8af0f0e99d234a450ef1644393bc2d7f53fc8c0a1e111c"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:94a04e214bc521a3807c217d50cf099bbdd0c0a80d2d996c0741dbb995b5f49f"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:a770f75358508a9110c81a1257721f70c15d9bb592a2fb5c25ecbd13566e52a5"}, - {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:07c9133357f7e0b17c6694d5dcb82e0371f695d7c25faef2ff8117ef375343ff"}, - {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:204ca6b1cf2021548f4a9c29ac015e0a4ab0a7b6582bf2183d838132b60c8fda"}, - {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b95857c2c654f419ca684ec38c9c3325c24e6ba7d11910a5110775a557bb18"}, - {file = "google_re2-1.1-5-cp38-cp38-win32.whl", hash = "sha256:347ac770e091a0364e822220f8d26ab53e6fdcdeaec635052000845c5a3fb869"}, - {file = "google_re2-1.1-5-cp38-cp38-win_amd64.whl", hash = "sha256:ec32bb6de7ffb112a07d210cf9f797b7600645c2d5910703fa07f456dd2150e0"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:eb5adf89060f81c5ff26c28e261e6b4997530a923a6093c9726b8dec02a9a326"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a22630c9dd9ceb41ca4316bccba2643a8b1d5c198f21c00ed5b50a94313aaf10"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:544dc17fcc2d43ec05f317366375796351dec44058e1164e03c3f7d050284d58"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:19710af5ea88751c7768575b23765ce0dfef7324d2539de576f75cdc319d6654"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:f82995a205e08ad896f4bd5ce4847c834fab877e1772a44e5f262a647d8a1dec"}, - {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:63533c4d58da9dc4bc040250f1f52b089911699f0368e0e6e15f996387a984ed"}, - {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79e00fcf0cb04ea35a22b9014712d448725ce4ddc9f08cc818322566176ca4b0"}, - {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc41afcefee2da6c4ed883a93d7f527c4b960cd1d26bbb0020a7b8c2d341a60a"}, - {file = "google_re2-1.1-5-cp39-cp39-win32.whl", hash = "sha256:486730b5e1f1c31b0abc6d80abe174ce4f1188fe17d1b50698f2bf79dc6e44be"}, - {file = "google_re2-1.1-5-cp39-cp39-win_amd64.whl", hash = "sha256:4de637ca328f1d23209e80967d1b987d6b352cd01b3a52a84b4d742c69c3da6c"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:621e9c199d1ff0fdb2a068ad450111a84b3bf14f96dfe5a8a7a0deae5f3f4cce"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:220acd31e7dde95373f97c3d1f3b3bd2532b38936af28b1917ee265d25bebbf4"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:db34e1098d164f76251a6ece30e8f0ddfd65bb658619f48613ce71acb3f9cbdb"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:5152bac41d8073977582f06257219541d0fc46ad99b0bbf30e8f60198a43b08c"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6191294799e373ee1735af91f55abd23b786bdfd270768a690d9d55af9ea1b0d"}, - {file = "google_re2-1.1-6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:070cbafbb4fecbb02e98feb28a1eb292fb880f434d531f38cc33ee314b521f1f"}, - {file = "google_re2-1.1-6-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8437d078b405a59a576cbed544490fe041140f64411f2d91012e8ec05ab8bf86"}, - {file = "google_re2-1.1-6-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f00f9a9af8896040e37896d9b9fc409ad4979f1ddd85bb188694a7d95ddd1164"}, - {file = "google_re2-1.1-6-cp310-cp310-win32.whl", hash = "sha256:df26345f229a898b4fd3cafd5f82259869388cee6268fc35af16a8e2293dd4e5"}, - {file = "google_re2-1.1-6-cp310-cp310-win_amd64.whl", hash = "sha256:3665d08262c57c9b28a5bdeb88632ad792c4e5f417e5645901695ab2624f5059"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b26b869d8aa1d8fe67c42836bf3416bb72f444528ee2431cfb59c0d3e02c6ce3"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:41fd4486c57dea4f222a6bb7f1ff79accf76676a73bdb8da0fcbd5ba73f8da71"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:0ee378e2e74e25960070c338c28192377c4dd41e7f4608f2688064bd2badc41e"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a00cdbf662693367b36d075b29feb649fd7ee1b617cf84f85f2deebeda25fc64"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4c09455014217a41499432b8c8f792f25f3df0ea2982203c3a8c8ca0e7895e69"}, - {file = "google_re2-1.1-6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6501717909185327935c7945e23bb5aa8fc7b6f237b45fe3647fa36148662158"}, - {file = "google_re2-1.1-6-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3510b04790355f199e7861c29234081900e1e1cbf2d1484da48aa0ba6d7356ab"}, - {file = "google_re2-1.1-6-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8c0e64c187ca406764f9e9ad6e750d62e69ed8f75bf2e865d0bfbc03b642361c"}, - {file = "google_re2-1.1-6-cp311-cp311-win32.whl", hash = "sha256:2a199132350542b0de0f31acbb3ca87c3a90895d1d6e5235f7792bb0af02e523"}, - {file = "google_re2-1.1-6-cp311-cp311-win_amd64.whl", hash = "sha256:83bdac8ceaece8a6db082ea3a8ba6a99a2a1ee7e9f01a9d6d50f79c6f251a01d"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:81985ff894cd45ab5a73025922ac28c0707759db8171dd2f2cc7a0e856b6b5ad"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5635af26065e6b45456ccbea08674ae2ab62494008d9202df628df3b267bc095"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:813b6f04de79f4a8fdfe05e2cb33e0ccb40fe75d30ba441d519168f9d958bd54"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:5ec2f5332ad4fd232c3f2d6748c2c7845ccb66156a87df73abcc07f895d62ead"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5a687b3b32a6cbb731647393b7c4e3fde244aa557f647df124ff83fb9b93e170"}, - {file = "google_re2-1.1-6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:39a62f9b3db5d3021a09a47f5b91708b64a0580193e5352751eb0c689e4ad3d7"}, - {file = "google_re2-1.1-6-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ca0f0b45d4a1709cbf5d21f355e5809ac238f1ee594625a1e5ffa9ff7a09eb2b"}, - {file = "google_re2-1.1-6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a64b3796a7a616c7861247bd061c9a836b5caf0d5963e5ea8022125601cf7b09"}, - {file = "google_re2-1.1-6-cp312-cp312-win32.whl", hash = "sha256:32783b9cb88469ba4cd9472d459fe4865280a6b1acdad4480a7b5081144c4eb7"}, - {file = "google_re2-1.1-6-cp312-cp312-win_amd64.whl", hash = "sha256:259ff3fd2d39035b9cbcbf375995f83fa5d9e6a0c5b94406ff1cc168ed41d6c6"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:e4711bcffe190acd29104d8ecfea0c0e42b754837de3fb8aad96e6cc3c613cdc"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:4d081cce43f39c2e813fe5990e1e378cbdb579d3f66ded5bade96130269ffd75"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:4f123b54d48450d2d6b14d8fad38e930fb65b5b84f1b022c10f2913bd956f5b5"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:e1928b304a2b591a28eb3175f9db7f17c40c12cf2d4ec2a85fdf1cc9c073ff91"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:3a69f76146166aec1173003c1f547931bdf288c6b135fda0020468492ac4149f"}, - {file = "google_re2-1.1-6-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:fc08c388f4ebbbca345e84a0c56362180d33d11cbe9ccfae663e4db88e13751e"}, - {file = "google_re2-1.1-6-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b057adf38ce4e616486922f2f47fc7d19c827ba0a7f69d540a3664eba2269325"}, - {file = "google_re2-1.1-6-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4138c0b933ab099e96f5d8defce4486f7dfd480ecaf7f221f2409f28022ccbc5"}, - {file = "google_re2-1.1-6-cp38-cp38-win32.whl", hash = "sha256:9693e45b37b504634b1abbf1ee979471ac6a70a0035954592af616306ab05dd6"}, - {file = "google_re2-1.1-6-cp38-cp38-win_amd64.whl", hash = "sha256:5674d437baba0ea287a5a7f8f81f24265d6ae8f8c09384e2ef7b6f84b40a7826"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7783137cb2e04f458a530c6d0ee9ef114815c1d48b9102f023998c371a3b060e"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a49b7153935e7a303675f4deb5f5d02ab1305adefc436071348706d147c889e0"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:a96a8bb309182090704593c60bdb369a2756b38fe358bbf0d40ddeb99c71769f"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:dff3d4be9f27ef8ec3705eed54f19ef4ab096f5876c15fe011628c69ba3b561c"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:40f818b0b39e26811fa677978112a8108269977fdab2ba0453ac4363c35d9e66"}, - {file = "google_re2-1.1-6-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:8a7e53538cdb40ef4296017acfbb05cab0c19998be7552db1cfb85ba40b171b9"}, - {file = "google_re2-1.1-6-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ee18e7569fb714e5bb8c42809bf8160738637a5e71ed5a4797757a1fb4dc4de"}, - {file = "google_re2-1.1-6-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1cda4f6d1a7d5b43ea92bc395f23853fba0caf8b1e1efa6e8c48685f912fcb89"}, - {file = "google_re2-1.1-6-cp39-cp39-win32.whl", hash = "sha256:6a9cdbdc36a2bf24f897be6a6c85125876dc26fea9eb4247234aec0decbdccfd"}, - {file = "google_re2-1.1-6-cp39-cp39-win_amd64.whl", hash = "sha256:73f646cecfad7cc5b4330b4192c25f2e29730a3b8408e089ffd2078094208196"}, ] [[package]] @@ -6951,7 +6801,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"}, @@ -7876,51 +7725,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.50-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:54138aa80d2dedd364f4e8220eef284c364d3270aaef621570aa2bd99902e2e8"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, {file = "SQLAlchemy-1.4.50-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:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win32.whl", hash = "sha256:6c78e3fb4a58e900ec433b6b5f4efe1a0bf81bbb366ae7761c6e0051dd310ee3"}, - {file = "SQLAlchemy-1.4.50-cp310-cp310-win_amd64.whl", hash = "sha256:d55f7a33e8631e15af1b9e67c9387c894fedf6deb1a19f94be8731263c51d515"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:324b1fdd50e960a93a231abb11d7e0f227989a371e3b9bd4f1259920f15d0304"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win32.whl", hash = "sha256:8bdab03ff34fc91bfab005e96f672ae207d87e0ac7ee716d74e87e7046079d8b"}, - {file = "SQLAlchemy-1.4.50-cp311-cp311-win_amd64.whl", hash = "sha256:52e01d60b06f03b0a5fc303c8aada405729cbc91a56a64cead8cb7c0b9b13c1a"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:77fde9bf74f4659864c8e26ac08add8b084e479b9a18388e7db377afc391f926"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win32.whl", hash = "sha256:e86c920b7d362cfa078c8b40e7765cbc34efb44c1007d7557920be9ddf138ec7"}, - {file = "SQLAlchemy-1.4.50-cp312-cp312-win_amd64.whl", hash = "sha256:6b3df20fbbcbcd1c1d43f49ccf3eefb370499088ca251ded632b8cbaee1d497d"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:fb9adc4c6752d62c6078c107d23327aa3023ef737938d0135ece8ffb67d07030"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, {file = "SQLAlchemy-1.4.50-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:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win32.whl", hash = "sha256:1b9c4359d3198f341480e57494471201e736de459452caaacf6faa1aca852bd8"}, - {file = "SQLAlchemy-1.4.50-cp36-cp36m-win_amd64.whl", hash = "sha256:35e4520f7c33c77f2636a1e860e4f8cafaac84b0b44abe5de4c6c8890b6aaa6d"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f5b1fb2943d13aba17795a770d22a2ec2214fc65cff46c487790192dda3a3ee7"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, {file = "SQLAlchemy-1.4.50-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:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win32.whl", hash = "sha256:7b4396452273aedda447e5aebe68077aa7516abf3b3f48408793e771d696f397"}, - {file = "SQLAlchemy-1.4.50-cp37-cp37m-win_amd64.whl", hash = "sha256:752f9df3dddbacb5f42d8405b2d5885675a93501eb5f86b88f2e47a839cf6337"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:35c7ed095a4b17dbc8813a2bfb38b5998318439da8e6db10a804df855e3a9e3a"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, {file = "SQLAlchemy-1.4.50-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:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win32.whl", hash = "sha256:8a219688297ee5e887a93ce4679c87a60da4a5ce62b7cb4ee03d47e9e767f558"}, - {file = "SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl", hash = "sha256:a648770db002452703b729bdcf7d194e904aa4092b9a4d6ab185b48d13252f63"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:4be4da121d297ce81e1ba745a0a0521c6cf8704634d7b520e350dce5964c71ac"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, {file = "SQLAlchemy-1.4.50-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:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win32.whl", hash = "sha256:a7c9b9dca64036008962dd6b0d9fdab2dfdbf96c82f74dbd5d86006d8d24a30f"}, - {file = "SQLAlchemy-1.4.50-cp39-cp39-win_amd64.whl", hash = "sha256:df200762efbd672f7621b253721644642ff04a6ff957236e0e2fe56d9ca34d2c"}, {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, ] From 690d158815de9b43b0b66536d2f20d4e120f4086 Mon Sep 17 00:00:00 2001 From: Yakov Date: Tue, 30 Apr 2024 12:32:54 +0100 Subject: [PATCH 74/86] feat: add purity qc metrics to fine-mapping (#592) * feat: add purity qc metrics to fine-mapping * fix: adding cs_lbf_thr to susie_finemapper_one_studylocus_row * fix: schema --- src/gentropy/assets/schemas/study_locus.json | 18 + src/gentropy/config.py | 14 + src/gentropy/susie_finemapper.py | 340 ++++++++++++++++--- tests/gentropy/method/test_susie_inf.py | 12 +- 4 files changed, 345 insertions(+), 39 deletions(-) diff --git a/src/gentropy/assets/schemas/study_locus.json b/src/gentropy/assets/schemas/study_locus.json index e0f366d68..bf18a73b8 100644 --- a/src/gentropy/assets/schemas/study_locus.json +++ b/src/gentropy/assets/schemas/study_locus.json @@ -42,6 +42,12 @@ "nullable": true, "type": "double" }, + { + "metadata": {}, + "name": "zScore", + "nullable": true, + "type": "double" + }, { "metadata": {}, "name": "pValueMantissa", @@ -100,6 +106,18 @@ "nullable": true, "type": "double" }, + { + "metadata": {}, + "name": "purityMeanR2", + "nullable": true, + "type": "double" + }, + { + "metadata": {}, + "name": "purityMinR2", + "nullable": true, + "type": "double" + }, { "metadata": {}, "name": "sampleSize", diff --git a/src/gentropy/config.py b/src/gentropy/config.py index 068bd42bf..018c70135 100644 --- a/src/gentropy/config.py +++ b/src/gentropy/config.py @@ -343,6 +343,20 @@ class FinemapperConfig(StepConfig): output_path: str = MISSING locus_radius: int = MISSING max_causal_snps: int = MISSING + primary_signal_pval_threshold: float = MISSING + secondary_signal_pval_threshold: float = MISSING + purity_mean_r2_threshold: float = MISSING + purity_min_r2_threshold: float = MISSING + cs_lbf_th: float = MISSING + sum_pips: float = MISSING + logging: bool = MISSING + susie_est_tausq: bool = MISSING + run_carma: bool = MISSING + run_sumstat_imputation: bool = MISSING + carma_time_limit: int = MISSING + imputed_r2_threshold: float = MISSING + ld_score_threshold: float = MISSING + output_path_log: str = MISSING _target_: str = "gentropy.susie_finemapper.SusieFineMapperStep" diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index 41e1ddcfe..f61ec5748 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -9,10 +9,19 @@ import numpy as np import pandas as pd import pyspark.sql.functions as f +import scipy as sc from pyspark.sql import DataFrame, Row, Window -from pyspark.sql.types import IntegerType, StringType, StructField, StructType +from pyspark.sql.functions import row_number +from pyspark.sql.types import ( + DoubleType, + IntegerType, + StringType, + StructField, + StructType, +) from gentropy.common.session import Session +from gentropy.common.spark_helpers import neglog_pvalue_to_mantissa_and_exponent from gentropy.dataset.study_index import StudyIndex from gentropy.dataset.study_locus import StudyLocus from gentropy.dataset.summary_statistics import SummaryStatistics @@ -38,6 +47,20 @@ def __init__( output_path: str, locus_radius: int = 500_000, max_causal_snps: int = 10, + primary_signal_pval_threshold: float = 1, + secondary_signal_pval_threshold: float = 1, + purity_mean_r2_threshold: float = 0, + purity_min_r2_threshold: float = 0, + cs_lbf_thr: float = 2, + sum_pips: float = 0.99, + logging: bool = False, + susie_est_tausq: bool = False, + run_carma: bool = False, + run_sumstat_imputation: bool = False, + carma_time_limit: int = 600, + imputed_r2_threshold: float = 0.9, + ld_score_threshold: float = 5, + output_path_log: str = "~/", ) -> None: """Run fine-mapping on a studyLocusId from a collected studyLocus table. @@ -49,6 +72,20 @@ def __init__( output_path (str): path to the output locus_radius (int): Radius of base-pair window around the locus, default is 500_000 max_causal_snps (int): Maximum number of causal variants in locus, default is 10 + primary_signal_pval_threshold (float): p-value threshold for the lead variant from the primary signal (credibleSetIndex==1), default is 5e-8 + secondary_signal_pval_threshold (float): p-value threshold for the lead variant from the secondary signals, default is 1e-7 + purity_mean_r2_threshold (float): thrshold for purity mean r2 qc metrics for filtering credible sets, default is 0 + purity_min_r2_threshold (float): thrshold for purity min r2 qc metrics for filtering credible sets, default is 0.25 + cs_lbf_thr (float): credible set logBF threshold for filtering credible sets, default is 2 + sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) + logging (bool): enable logging, default is False, runs diffrent FM wrapper + susie_est_tausq (bool): estimate tau squared, default is False + run_carma (bool): run CARMA, default is False + run_sumstat_imputation (bool): run summary statistics imputation, default is False + carma_time_limit (int): CARMA time limit, default is 600 seconds + imputed_r2_threshold (float): imputed R2 threshold, default is 0.9 + ld_score_threshold (float): LD score threshold ofr imputation, default is 5 + output_path_log (str): path to the output log """ # Initialise Hail hl.init(sc=session.spark.sparkContext, log="/dev/null") @@ -60,17 +97,54 @@ def __init__( ) study_index = StudyIndex.from_parquet(session, study_index_path) # Run fine-mapping - result = self.susie_finemapper_ss_gathered( - session, - study_locus, - study_index, - locus_radius, - max_causal_snps, - ) - # Write result - result.df.write.mode(session.write_mode).parquet( - output_path + "/" + study_locus_to_finemap - ) + if logging: + result_logging = ( + self.susie_finemapper_one_studylocus_row_v3_dev_ss_gathered( + session=session, + study_locus_row=study_locus, + study_index=study_index, + radius=locus_radius, + max_causal_snps=max_causal_snps, + primary_signal_pval_threshold=primary_signal_pval_threshold, + secondary_signal_pval_threshold=secondary_signal_pval_threshold, + purity_mean_r2_threshold=purity_mean_r2_threshold, + purity_min_r2_threshold=purity_min_r2_threshold, + cs_lbf_thr=cs_lbf_thr, + sum_pips=sum_pips, + susie_est_tausq=susie_est_tausq, + run_carma=run_carma, + run_sumstat_imputation=run_sumstat_imputation, + carma_time_limit=carma_time_limit, + imputed_r2_threshold=imputed_r2_threshold, + ld_score_threshold=ld_score_threshold, + ) + ) + # Write result + result_logging["study_locus"].df.write.mode(session.write_mode).parquet( + output_path + "/" + study_locus_to_finemap + ) + # Write log + result_logging["log"].df.write.mode(session.write_mode).parquet( + output_path_log + "/" + study_locus_to_finemap + ) + else: + result = self.susie_finemapper_ss_gathered( + session=session, + study_locus_row=study_locus, + study_index=study_index, + radius=locus_radius, + max_causal_snps=max_causal_snps, + primary_signal_pval_threshold=primary_signal_pval_threshold, + secondary_signal_pval_threshold=secondary_signal_pval_threshold, + purity_mean_r2_threshold=purity_mean_r2_threshold, + purity_min_r2_threshold=purity_min_r2_threshold, + cs_lbf_thr=cs_lbf_thr, + sum_pips=sum_pips, + ) + # Write result + result.df.write.mode(session.write_mode).parquet( + output_path + "/" + study_locus_to_finemap + ) @staticmethod def susie_finemapper_one_studylocus_row( @@ -79,7 +153,13 @@ def susie_finemapper_one_studylocus_row( study_locus_row: Row, study_index: StudyIndex, radius: int = 1_000_000, - L: int = 10, + max_causal_snps: int = 10, + primary_signal_pval_threshold: float = 5e-8, + secondary_signal_pval_threshold: float = 1e-7, + purity_mean_r2_threshold: float = 0, + purity_min_r2_threshold: float = 0.25, + sum_pips: float = 0.99, + cs_lbf_thr: float = 2, ) -> StudyLocus: """Susie fine-mapper for StudyLocus row with SummaryStatistics object. @@ -89,7 +169,13 @@ def susie_finemapper_one_studylocus_row( study_locus_row (Row): StudyLocus row study_index (StudyIndex): StudyIndex object radius (int): window size for fine-mapping - L (int): number of causal variants + max_causal_snps (int): number of causal variants + primary_signal_pval_threshold (float): p-value threshold for the lead variant from the primary signal (credibleSetIndex==1) + secondary_signal_pval_threshold (float): p-value threshold for the lead variant from the secondary signals + purity_mean_r2_threshold (float): thrshold for purity mean r2 qc metrics for filtering credible sets + purity_min_r2_threshold (float): thrshold for purity min r2 qc metrics for filtering credible sets + sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) + cs_lbf_thr (float): credible set logBF threshold for filtering credible sets, default is 2 Returns: StudyLocus: StudyLocus object with fine-mapped credible sets @@ -164,24 +250,19 @@ def susie_finemapper_one_studylocus_row( z_to_fm = np.array(pd_df["z"]) ld_to_fm = gnomad_ld - susie_output = SUSIE_inf.susie_inf(z=z_to_fm, LD=ld_to_fm, L=L) + susie_output = SUSIE_inf.susie_inf(z=z_to_fm, LD=ld_to_fm, L=max_causal_snps) schema = StructType( [ StructField("variantId", StringType(), True), StructField("chromosome", StringType(), True), StructField("position", IntegerType(), True), + StructField("z", DoubleType(), True), ] ) pd_df["position"] = pd_df["position"].astype(int) variant_index = session.spark.createDataFrame( - pd_df[ - [ - "variantId", - "chromosome", - "position", - ] - ], + pd_df[["variantId", "chromosome", "position", "z"]], schema=schema, ) @@ -191,6 +272,13 @@ def susie_finemapper_one_studylocus_row( studyId=studyId, region=region, variant_index=variant_index, + ld_matrix=ld_to_fm, + primary_signal_pval_threshold=primary_signal_pval_threshold, + secondary_signal_pval_threshold=secondary_signal_pval_threshold, + purity_mean_r2_threshold=purity_mean_r2_threshold, + purity_min_r2_threshold=purity_min_r2_threshold, + sum_pips=sum_pips, + cs_lbf_thr=cs_lbf_thr, ) @staticmethod @@ -200,8 +288,13 @@ def susie_inf_to_studylocus( studyId: str, region: str, variant_index: DataFrame, + ld_matrix: np.ndarray, cs_lbf_thr: float = 2, sum_pips: float = 0.99, + primary_signal_pval_threshold: float = 1, + secondary_signal_pval_threshold: float = 1, + purity_mean_r2_threshold: float = 0, + purity_min_r2_threshold: float = 0, ) -> StudyLocus: """Convert SuSiE-inf output to StudyLocus DataFrame. @@ -211,12 +304,20 @@ def susie_inf_to_studylocus( studyId (str): study ID region (str): region variant_index (DataFrame): DataFrame with variant information - cs_lbf_thr (float): credible set logBF threshold, default is 2 + ld_matrix (np.ndarray): LD matrix used for fine-mapping + cs_lbf_thr (float): credible set logBF threshold for filtering credible sets, default is 2 sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) + primary_signal_pval_threshold (float): p-value threshold for the lead variant from the primary signal (credibleSetIndex==1) + secondary_signal_pval_threshold (float): p-value threshold for the lead variant from the secondary signals + purity_mean_r2_threshold (float): thrshold for purity mean r2 qc metrics for filtering credible sets + purity_min_r2_threshold (float): thrshold for purity min r2 qc metrics for filtering credible sets Returns: StudyLocus: StudyLocus object with fine-mapped credible sets """ + # PLEASE DO NOT REMOVE THIS LINE + pd.DataFrame.iteritems = pd.DataFrame.items + variants = np.array( [row["variantId"] for row in variant_index.select("variantId").collect()] ).reshape(-1, 1) @@ -231,7 +332,7 @@ def susie_inf_to_studylocus( # Extracting credible sets order_creds = list(enumerate(susie_output["lbf"])) order_creds.sort(key=lambda x: x[1], reverse=True) - cred_sets = None + counter = 0 for i, cs_lbf_value in order_creds: if counter > 0 and cs_lbf_value < cs_lbf_thr: @@ -308,10 +409,108 @@ def susie_inf_to_studylocus( "credibleSetlog10BF", ) ) - if cred_sets is None: + if counter == 1: cred_sets = cred_set else: cred_sets = cred_sets.unionByName(cred_set) + + # Calulating purity + variant_index_df = variant_index.toPandas() + cred_sets_variantId = cred_sets.select("locus.variantId").toPandas() + + lead_variantId_list = ( + cred_sets.select("variantId").toPandas()["variantId"].tolist() + ) + cred_set_index = ( + cred_sets.select("credibleSetIndex").toPandas()["credibleSetIndex"].tolist() + ) + vlist_series = pd.Series(lead_variantId_list) + ind = vlist_series.map(variant_index_df.set_index("variantId").index.get_loc) + z_values = variant_index_df.iloc[ind]["z"].tolist() + z_values_array = np.array(z_values) + pval = sc.stats.chi2.sf((z_values_array**2), 1) + + # sometimes pval is 0, we need to avoid it + pval[pval < 1e-322] = 1e-322 + + neglogpval = -np.log10(pval) + neglogpval = neglogpval.tolist() + + list_purity_mean_r2 = [] + list_purity_min_r2 = [] + for _, row in cred_sets_variantId.iterrows(): + row = row.iloc[0] + vlist_series = pd.Series(row) + ind = vlist_series.map( + variant_index_df.set_index("variantId").index.get_loc + ) + # print(variant_index_df.iloc[ind,0]==vlist) + squared_matrix = ld_matrix[ind, :][:, ind] ** 2 + purity_mean_r2 = np.mean(squared_matrix) + purity_min_r2 = np.min(squared_matrix) + list_purity_mean_r2.append(purity_mean_r2) + list_purity_min_r2.append(purity_min_r2) + + cred_sets = cred_sets.drop("pValueMantissa", "pValueExponent") + + df = pd.DataFrame( + { + "credibleSetIndex": cred_set_index, + "purityMeanR2": purity_mean_r2, + "purityMinR2": purity_min_r2, + "zScore": z_values, + "neglogpval": neglogpval, + } + ) + schema = StructType( + [ + StructField("credibleSetIndex", IntegerType(), True), + StructField("purityMeanR2", DoubleType(), True), + StructField("purityMinR2", DoubleType(), True), + StructField("zScore", DoubleType(), True), + StructField("neglogpval", DoubleType(), True), + ] + ) + + df_spark = session.spark.createDataFrame(df, schema=schema) + + cred_sets = cred_sets.join(df_spark, on="credibleSetIndex") + + mantissa, exponent = neglog_pvalue_to_mantissa_and_exponent( + cred_sets.neglogpval + ) + + cred_sets = cred_sets.withColumn("pValueMantissa", mantissa) + cred_sets = cred_sets.withColumn("pValueExponent", exponent) + + cred_sets = cred_sets.withColumn( + "pValueMantissa", f.col("pValueMantissa").cast("float") + ) + + cred_sets = cred_sets.filter( + (f.col("neglogpval") >= -np.log10(secondary_signal_pval_threshold)) + | (f.col("credibleSetIndex") == 1) + ) + + cred_sets = cred_sets.filter( + (f.col("neglogpval") >= -np.log10(primary_signal_pval_threshold)) + | (f.col("credibleSetIndex") > 1) + ) + + cred_sets = cred_sets.drop("neglogpval") + + cred_sets = cred_sets.filter( + (f.col("credibleSetlog10BF") >= cs_lbf_thr * 0.4342944819) + | (f.col("credibleSetIndex") == 1) + ) + + cred_sets = cred_sets.filter(f.col("purityMeanR2") >= purity_mean_r2_threshold) + cred_sets = cred_sets.filter(f.col("purityMinR2") >= purity_min_r2_threshold) + + window = Window.partitionBy("studyLocusId").orderBy("credibleSetIndex") + cred_sets = cred_sets.withColumn("rank", row_number().over(window)) + cred_sets = cred_sets.filter(cred_sets["rank"] == 1).drop("rank") + return StudyLocus( _df=cred_sets, _schema=StudyLocus.get_schema(), @@ -324,6 +523,12 @@ def susie_finemapper_ss_gathered( study_index: StudyIndex, radius: int = 1_000_000, max_causal_snps: int = 10, + primary_signal_pval_threshold: float = 5e-8, + secondary_signal_pval_threshold: float = 1e-7, + purity_mean_r2_threshold: float = 0, + purity_min_r2_threshold: float = 0.25, + cs_lbf_thr: float = 2, + sum_pips: float = 0.99, ) -> StudyLocus: """Susie fine-mapper for StudyLocus row with locus annotated summary statistics. @@ -333,6 +538,12 @@ def susie_finemapper_ss_gathered( study_index (StudyIndex): StudyIndex object radius (int): window size for fine-mapping max_causal_snps (int): number of causal variants + primary_signal_pval_threshold (float): p-value threshold for the lead variant from the primary signal (credibleSetIndex==1) + secondary_signal_pval_threshold (float): p-value threshold for the lead variant from the secondary signals + purity_mean_r2_threshold (float): thrshold for purity mean r2 qc metrics for filtering credible sets + purity_min_r2_threshold (float): thrshold for purity min r2 qc metrics for filtering credible sets + cs_lbf_thr (float): credible set logBF threshold for filtering credible sets + sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) Returns: StudyLocus: StudyLocus object with fine-mapped credible sets @@ -420,17 +631,12 @@ def susie_finemapper_ss_gathered( StructField("variantId", StringType(), True), StructField("chromosome", StringType(), True), StructField("position", IntegerType(), True), + StructField("z", DoubleType(), True), ] ) pd_df["position"] = pd_df["position"].astype(int) variant_index = session.spark.createDataFrame( - pd_df[ - [ - "variantId", - "chromosome", - "position", - ] - ], + pd_df[["variantId", "chromosome", "position", "z"]], schema=schema, ) @@ -440,6 +646,13 @@ def susie_finemapper_ss_gathered( studyId=studyId, region=region, variant_index=variant_index, + ld_matrix=ld_to_fm, + primary_signal_pval_threshold=primary_signal_pval_threshold, + secondary_signal_pval_threshold=secondary_signal_pval_threshold, + purity_mean_r2_threshold=purity_mean_r2_threshold, + purity_min_r2_threshold=purity_min_r2_threshold, + cs_lbf_thr=cs_lbf_thr, + sum_pips=sum_pips, ) @staticmethod @@ -458,6 +671,11 @@ def susie_finemapper_from_prepared_dataframes( imputed_r2_threshold: float = 0.8, ld_score_threshold: float = 4, sum_pips: float = 0.99, + primary_signal_pval_threshold: float = 5e-8, + secondary_signal_pval_threshold: float = 1e-7, + purity_mean_r2_threshold: float = 0, + purity_min_r2_threshold: float = 0.25, + cs_lbf_thr: float = 2, ) -> dict[str, Any]: """Susie fine-mapper function that uses LD, z-scores, variant info and other options for Fine-Mapping. @@ -476,6 +694,11 @@ def susie_finemapper_from_prepared_dataframes( imputed_r2_threshold (float): imputed R2 threshold, default is 0.8 ld_score_threshold (float): LD score threshold ofr imputation, default is 4 sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) + primary_signal_pval_threshold (float): p-value threshold for the lead variant from the primary signal (credibleSetIndex==1) + secondary_signal_pval_threshold (float): p-value threshold for the lead variant from the secondary signals + purity_mean_r2_threshold (float): thrshold for purity mean r2 qc metrics for filtering credible sets + purity_min_r2_threshold (float): thrshold for purity min r2 qc metrics for filtering credible sets + cs_lbf_thr (float): credible set logBF threshold for filtering credible sets, default is 2 Returns: dict[str, Any]: dictionary with study locus, number of GWAS variants, number of LD variants, number of variants after merge, number of outliers, number of imputed variants, number of variants to fine-map @@ -577,10 +800,15 @@ def susie_finemapper_from_prepared_dataframes( z=z_to_fm, LD=ld_to_fm, L=L, est_tausq=susie_est_tausq ) - schema = StructType([StructField("variantId", StringType(), True)]) + schema = StructType( + [ + StructField("variantId", StringType(), True), + StructField("z", DoubleType(), True), + ] + ) variant_index = ( session.spark.createDataFrame( - GWAS_df[["variantId"]], + GWAS_df[["variantId", "z"]], schema=schema, ) .withColumn( @@ -596,6 +824,12 @@ def susie_finemapper_from_prepared_dataframes( region=region, variant_index=variant_index, sum_pips=sum_pips, + ld_matrix=ld_to_fm, + primary_signal_pval_threshold=primary_signal_pval_threshold, + secondary_signal_pval_threshold=secondary_signal_pval_threshold, + purity_mean_r2_threshold=purity_mean_r2_threshold, + purity_min_r2_threshold=purity_min_r2_threshold, + cs_lbf_thr=cs_lbf_thr, ) end_time = time.time() @@ -631,9 +865,14 @@ def susie_finemapper_one_studylocus_row_v2_dev( run_carma: bool = False, run_sumstat_imputation: bool = False, carma_time_limit: int = 600, - imputed_r2_threshold: float = 0.8, - ld_score_threshold: float = 4, + imputed_r2_threshold: float = 0.9, + ld_score_threshold: float = 5, sum_pips: float = 0.99, + primary_signal_pval_threshold: float = 5e-8, + secondary_signal_pval_threshold: float = 1e-7, + purity_mean_r2_threshold: float = 0, + purity_min_r2_threshold: float = 0.25, + cs_lbf_thr: float = 2, ) -> dict[str, Any]: """Susie fine-mapper function that uses Summary Statstics, chromosome and position as inputs. @@ -651,6 +890,11 @@ def susie_finemapper_one_studylocus_row_v2_dev( imputed_r2_threshold (float): imputed R2 threshold, default is 0.8 ld_score_threshold (float): LD score threshold ofr imputation, default is 4 sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) + primary_signal_pval_threshold (float): p-value threshold for the lead variant from the primary signal (credibleSetIndex==1) + secondary_signal_pval_threshold (float): p-value threshold for the lead variant from the secondary signals + purity_mean_r2_threshold (float): thrshold for purity mean r2 qc metrics for filtering credible sets + purity_min_r2_threshold (float): thrshold for purity min r2 qc metrics for filtering credible sets + cs_lbf_thr (float): credible set logBF threshold for filtering credible sets, default is 2 Returns: dict[str, Any]: dictionary with study locus, number of GWAS variants, number of LD variants, number of variants after merge, number of outliers, number of imputed variants, number of variants to fine-map @@ -731,6 +975,11 @@ def susie_finemapper_one_studylocus_row_v2_dev( imputed_r2_threshold=imputed_r2_threshold, ld_score_threshold=ld_score_threshold, sum_pips=sum_pips, + primary_signal_pval_threshold=primary_signal_pval_threshold, + secondary_signal_pval_threshold=secondary_signal_pval_threshold, + purity_mean_r2_threshold=purity_mean_r2_threshold, + purity_min_r2_threshold=purity_min_r2_threshold, + cs_lbf_thr=cs_lbf_thr, ) return out @@ -746,9 +995,14 @@ def susie_finemapper_one_studylocus_row_v3_dev_ss_gathered( run_carma: bool = False, run_sumstat_imputation: bool = False, carma_time_limit: int = 600, - imputed_r2_threshold: float = 0.8, - ld_score_threshold: float = 4, + imputed_r2_threshold: float = 0.9, + ld_score_threshold: float = 5, sum_pips: float = 0.99, + primary_signal_pval_threshold: float = 5e-8, + secondary_signal_pval_threshold: float = 1e-7, + purity_mean_r2_threshold: float = 0, + purity_min_r2_threshold: float = 0.25, + cs_lbf_thr: float = 2, ) -> dict[str, Any]: """Susie fine-mapper function that uses study-locus row with collected locus, chromosome and position as inputs. @@ -765,6 +1019,11 @@ def susie_finemapper_one_studylocus_row_v3_dev_ss_gathered( imputed_r2_threshold (float): imputed R2 threshold, default is 0.8 ld_score_threshold (float): LD score threshold ofr imputation, default is 4 sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) + primary_signal_pval_threshold (float): p-value threshold for the lead variant from the primary signal (credibleSetIndex==1) + secondary_signal_pval_threshold (float): p-value threshold for the lead variant from the secondary signals + purity_mean_r2_threshold (float): thrshold for purity mean r2 qc metrics for filtering credible sets + purity_min_r2_threshold (float): thrshold for purity min r2 qc metrics for filtering credible sets + cs_lbf_thr (float): credible set logBF threshold for filtering credible sets, default is 2 Returns: dict[str, Any]: dictionary with study locus, number of GWAS variants, number of LD variants, number of variants after merge, number of outliers, number of imputed variants, number of variants to fine-map @@ -852,6 +1111,11 @@ def susie_finemapper_one_studylocus_row_v3_dev_ss_gathered( imputed_r2_threshold=imputed_r2_threshold, ld_score_threshold=ld_score_threshold, sum_pips=sum_pips, + primary_signal_pval_threshold=primary_signal_pval_threshold, + secondary_signal_pval_threshold=secondary_signal_pval_threshold, + purity_mean_r2_threshold=purity_mean_r2_threshold, + purity_min_r2_threshold=purity_min_r2_threshold, + cs_lbf_thr=cs_lbf_thr, ) return out diff --git a/tests/gentropy/method/test_susie_inf.py b/tests/gentropy/method/test_susie_inf.py index 0129a5934..45d79bcae 100644 --- a/tests/gentropy/method/test_susie_inf.py +++ b/tests/gentropy/method/test_susie_inf.py @@ -3,6 +3,7 @@ from __future__ import annotations import numpy as np +import pyspark.sql.functions as f from gentropy.common.session import Session from gentropy.dataset.study_locus import StudyLocus from gentropy.dataset.summary_statistics import SummaryStatistics @@ -67,7 +68,10 @@ def test_SUSIE_inf_convert_to_study_locus( LD=ld, est_tausq=False, ) - gwas_df = sample_summary_statistics._df.limit(21) + gwas_df = sample_summary_statistics._df.withColumn( + "z", f.col("beta") / f.col("standardError") + ).filter(f.col("z").isNotNull()) + gwas_df = gwas_df.limit(21) L1 = SusieFineMapperStep.susie_inf_to_studylocus( susie_output=susie_output, @@ -76,5 +80,11 @@ def test_SUSIE_inf_convert_to_study_locus( region="sample_region", variant_index=gwas_df, cs_lbf_thr=2, + ld_matrix=ld, + primary_signal_pval_threshold=1, + secondary_signal_pval_threshold=1, + purity_mean_r2_threshold=0, + purity_min_r2_threshold=0, + sum_pips=0.99, ) assert isinstance(L1, StudyLocus), "L1 is not an instance of StudyLocus" From 962b79c3cdac1c7b1fb7acd64218f3e85608f47d Mon Sep 17 00:00:00 2001 From: Daniel-Considine <113430683+Daniel-Considine@users.noreply.github.com> Date: Wed, 1 May 2024 09:32:52 +0100 Subject: [PATCH 75/86] feat: check for if no overlapping variants in LD index (#594) * feat: check for if no overlapping variants in LD index * fix: removing unnecessary else statement --- src/gentropy/susie_finemapper.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/gentropy/susie_finemapper.py b/src/gentropy/susie_finemapper.py index f61ec5748..cc4c7a6a1 100644 --- a/src/gentropy/susie_finemapper.py +++ b/src/gentropy/susie_finemapper.py @@ -2,6 +2,7 @@ from __future__ import annotations +import logging import time from typing import Any @@ -142,9 +143,10 @@ def __init__( sum_pips=sum_pips, ) # Write result - result.df.write.mode(session.write_mode).parquet( - output_path + "/" + study_locus_to_finemap - ) + if result is not None: + result.df.write.mode(session.write_mode).parquet( + output_path + "/" + study_locus_to_finemap + ) @staticmethod def susie_finemapper_one_studylocus_row( @@ -529,7 +531,7 @@ def susie_finemapper_ss_gathered( purity_min_r2_threshold: float = 0.25, cs_lbf_thr: float = 2, sum_pips: float = 0.99, - ) -> StudyLocus: + ) -> StudyLocus | None: """Susie fine-mapper for StudyLocus row with locus annotated summary statistics. Args: @@ -546,7 +548,7 @@ def susie_finemapper_ss_gathered( sum_pips (float): the expected sum of posterior probabilities in the locus, default is 0.99 (99% credible set) Returns: - StudyLocus: StudyLocus object with fine-mapped credible sets + StudyLocus | None: StudyLocus object with fine-mapped credible sets, or None """ # PLEASE DO NOT REMOVE THIS LINE pd.DataFrame.iteritems = pd.DataFrame.items @@ -615,7 +617,9 @@ def susie_finemapper_ss_gathered( gwas_index = gwas_df.join( ld_index.select("variantId", "alleles", "idx"), on="variantId" ).sort("idx") - + if gwas_index.rdd.isEmpty(): + logging.warning("No overlapping variants in the LD Index") + return None gnomad_ld = GnomADLDMatrix.get_numpy_matrix( gwas_index, gnomad_ancestry=major_population ) From 85c3aa8271d4a8b1dff2ef78d95b14016ee00c16 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 16:39:51 +0100 Subject: [PATCH 76/86] chore: pre-commit autoupdate (#601) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.4.2 → v0.4.3](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.2...v0.4.3) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8f57e85b5..00d914dc0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ ci: skip: [poetry-lock] repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.2 + rev: v0.4.3 hooks: - id: ruff args: From a9ef7c0e9af810c50b974a03b2240120f26ff26a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 16:57:49 +0100 Subject: [PATCH 77/86] build(deps-dev): bump pymdown-extensions from 10.7 to 10.8.1 (#600) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.7 to 10.8.1. - [Release notes](https://github.com/facelessuser/pymdown-extensions/releases) - [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.7...10.8.1) --- updated-dependencies: - dependency-name: pymdown-extensions dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> --- poetry.lock | 216 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 194 insertions(+), 22 deletions(-) diff --git a/poetry.lock b/poetry.lock index cb7ff6fd0..2c948e7d4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "aiodns" @@ -3451,6 +3451,156 @@ files = [ {file = "google_re2-1.1-3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d140c7b9395b4d1e654127aa1c99bcc603ed01000b7bc7e28c52562f1894ec12"}, {file = "google_re2-1.1-3-cp39-cp39-win32.whl", hash = "sha256:80c5fc200f64b2d903eeb07b8d6cefc620a872a0240c7caaa9aca05b20f5568f"}, {file = "google_re2-1.1-3-cp39-cp39-win_amd64.whl", hash = "sha256:9eb6dbcee9b5dc4069bbc0634f2eb039ca524a14bed5868fdf6560aaafcbca06"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0db114d7e1aa96dbcea452a40136d7d747d60cbb61394965774688ef59cccd4e"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:82133958e003a1344e5b7a791b9a9dd7560b5c8f96936dbe16f294604524a633"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:9e74fd441d1f3d917d3303e319f61b82cdbd96b9a5ba919377a6eef1504a1e2b"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:734a2e7a4541c57253b5ebee24f3f3366ba3658bcad01da25fb623c78723471a"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d88d5eecbc908abe16132456fae13690d0508f3ac5777f320ef95cb6cab9a961"}, + {file = "google_re2-1.1-4-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:b91db80b171ecec435a07977a227757dd487356701a32f556fa6fca5d0a40522"}, + {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b23129887a64bb9948af14c84705273ed1a40054e99433b4acccab4dcf6a226"}, + {file = "google_re2-1.1-4-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5dc1a0cc7cd19261dcaf76763e2499305dbb7e51dc69555167cdb8af98782698"}, + {file = "google_re2-1.1-4-cp310-cp310-win32.whl", hash = "sha256:3b2ab1e2420b5dd9743a2d6bc61b64e5f708563702a75b6db86637837eaeaf2f"}, + {file = "google_re2-1.1-4-cp310-cp310-win_amd64.whl", hash = "sha256:92efca1a7ef83b6df012d432a1cbc71d10ff42200640c0f9a5ff5b343a48e633"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:854818fd4ce79787aca5ba459d6e5abe4ca9be2c684a5b06a7f1757452ca3708"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:4ceef51174b6f653b6659a8fdaa9c38960c5228b44b25be2a3bcd8566827554f"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:ee49087c3db7e6f5238105ab5299c09e9b77516fe8cfb0a37e5f1e813d76ecb8"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:dc2312854bdc01410acc5d935f1906a49cb1f28980341c20a68797ad89d8e178"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0dc0d2e42296fa84a3cb3e1bd667c6969389cd5cdf0786e6b1f911ae2d75375b"}, + {file = "google_re2-1.1-4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6bf04ced98453b035f84320f348f67578024f44d2997498def149054eb860ae8"}, + {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d6b6ef11dc4ab322fa66c2f3561925f2b5372a879c3ed764d20e939e2fd3e5f"}, + {file = "google_re2-1.1-4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0dcde6646fa9a97fd3692b3f6ae7daf7f3277d7500b6c253badeefa11db8956a"}, + {file = "google_re2-1.1-4-cp311-cp311-win32.whl", hash = "sha256:5f4f0229deb057348893574d5b0a96d055abebac6debf29d95b0c0e26524c9f6"}, + {file = "google_re2-1.1-4-cp311-cp311-win_amd64.whl", hash = "sha256:4713ddbe48a18875270b36a462b0eada5e84d6826f8df7edd328d8706b6f9d07"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:40a698300b8faddbb325662973f839489c89b960087060bd389c376828978a04"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:103d2d7ac92ba23911a151fd1fc7035cbf6dc92a7f6aea92270ebceb5cd5acd3"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:51fb7182bccab05e8258a2b6a63dda1a6b4a9e8dfb9b03ec50e50c49c2827dd4"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:65383022abd63d7b620221eba7935132b53244b8b463d8fdce498c93cf58b7b7"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396281fc68a9337157b3ffcd9392c6b7fcb8aab43e5bdab496262a81d56a4ecc"}, + {file = "google_re2-1.1-4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8198adcfcff1c680e052044124621730fc48d08005f90a75487f5651f1ebfce2"}, + {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:81f7bff07c448aec4db9ca453d2126ece8710dbd9278b8bb09642045d3402a96"}, + {file = "google_re2-1.1-4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7dacf730fd7d6ec71b11d6404b0b26e230814bfc8e9bb0d3f13bec9b5531f8d"}, + {file = "google_re2-1.1-4-cp312-cp312-win32.whl", hash = "sha256:8c764f62f4b1d89d1ef264853b6dd9fee14a89e9b86a81bc2157fe3531425eb4"}, + {file = "google_re2-1.1-4-cp312-cp312-win_amd64.whl", hash = "sha256:0be2666df4bc5381a5d693585f9bbfefb0bfd3c07530d7e403f181f5de47254a"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:5cb1b63a0bfd8dd65d39d2f3b2e5ae0a06ce4b2ce5818a1d1fc78a786a252673"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:e41751ce6b67a95230edd0772226dc94c2952a2909674cd69df9804ed0125307"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:b998cfa2d50bf4c063e777c999a7e8645ec7e5d7baf43ad71b1e2e10bb0300c3"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:226ca3b0c2e970f3fc82001ac89e845ecc7a4bb7c68583e7a76cda70b61251a7"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:9adec1f734ebad7c72e56c85f205a281d8fe9bf6583bc21020157d3f2812ce89"}, + {file = "google_re2-1.1-4-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:9c34f3c64ba566af967d29e11299560e6fdfacd8ca695120a7062b6ed993b179"}, + {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b85385fe293838e0d0b6e19e6c48ba8c6f739ea92ce2e23b718afe7b343363"}, + {file = "google_re2-1.1-4-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4694daa8a8987cfb568847aa872f9990e930c91a68c892ead876411d4b9012c3"}, + {file = "google_re2-1.1-4-cp38-cp38-win32.whl", hash = "sha256:5e671e9be1668187e2995aac378de574fa40df70bb6f04657af4d30a79274ce0"}, + {file = "google_re2-1.1-4-cp38-cp38-win_amd64.whl", hash = "sha256:f66c164d6049a8299f6dfcfa52d1580576b4b9724d6fcdad2f36f8f5da9304b6"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:25cb17ae0993a48c70596f3a3ef5d659638106401cc8193f51c0d7961b3b3eb7"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:5f101f86d14ca94ca4dcf63cceaa73d351f2be2481fcaa29d9e68eeab0dc2a88"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:4e82591e85bf262a6d74cff152867e05fc97867c68ba81d6836ff8b0e7e62365"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:1f61c09b93ffd34b1e2557e5a9565039f935407a5786dbad46f64f1a484166e6"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:12b390ad8c7e74bab068732f774e75e0680dade6469b249a721f3432f90edfc3"}, + {file = "google_re2-1.1-4-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:1284343eb31c2e82ed2d8159f33ba6842238a56782c881b07845a6d85613b055"}, + {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c7b38e0daf2c06e4d3163f4c732ab3ad2521aecfed6605b69e4482c612da303"}, + {file = "google_re2-1.1-4-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f4d4f0823e8b2f6952a145295b1ff25245ce9bb136aff6fe86452e507d4c1dd"}, + {file = "google_re2-1.1-4-cp39-cp39-win32.whl", hash = "sha256:1afae56b2a07bb48cfcfefaa15ed85bae26a68f5dc7f9e128e6e6ea36914e847"}, + {file = "google_re2-1.1-4-cp39-cp39-win_amd64.whl", hash = "sha256:aa7d6d05911ab9c8adbf3c225a7a120ab50fd2784ac48f2f0d140c0b7afc2b55"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:222fc2ee0e40522de0b21ad3bc90ab8983be3bf3cec3d349c80d76c8bb1a4beb"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:d4763b0b9195b72132a4e7de8e5a9bf1f05542f442a9115aa27cfc2a8004f581"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:209649da10c9d4a93d8a4d100ecbf9cc3b0252169426bec3e8b4ad7e57d600cf"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:68813aa333c1604a2df4a495b2a6ed065d7c8aebf26cc7e7abb5a6835d08353c"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:370a23ec775ad14e9d1e71474d56f381224dcf3e72b15d8ca7b4ad7dd9cd5853"}, + {file = "google_re2-1.1-5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:14664a66a3ddf6bc9e56f401bf029db2d169982c53eff3f5876399104df0e9a6"}, + {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea3722cc4932cbcebd553b69dce1b4a73572823cff4e6a244f1c855da21d511"}, + {file = "google_re2-1.1-5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e14bb264c40fd7c627ef5678e295370cd6ba95ca71d835798b6e37502fc4c690"}, + {file = "google_re2-1.1-5-cp310-cp310-win32.whl", hash = "sha256:39512cd0151ea4b3969c992579c79b423018b464624ae955be685fc07d94556c"}, + {file = "google_re2-1.1-5-cp310-cp310-win_amd64.whl", hash = "sha256:ac66537aa3bc5504320d922b73156909e3c2b6da19739c866502f7827b3f9fdf"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b5ea68d54890c9edb1b930dcb2658819354e5d3f2201f811798bbc0a142c2b4"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:33443511b6b83c35242370908efe2e8e1e7cae749c766b2b247bf30e8616066c"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:413d77bdd5ba0bfcada428b4c146e87707452ec50a4091ec8e8ba1413d7e0619"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:5171686e43304996a34baa2abcee6f28b169806d0e583c16d55e5656b092a414"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b284db130283771558e31a02d8eb8fb756156ab98ce80035ae2e9e3a5f307c4"}, + {file = "google_re2-1.1-5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:296e6aed0b169648dc4b870ff47bd34c702a32600adb9926154569ef51033f47"}, + {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:38d50e68ead374160b1e656bbb5d101f0b95fb4cc57f4a5c12100155001480c5"}, + {file = "google_re2-1.1-5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2a0416a35921e5041758948bcb882456916f22845f66a93bc25070ef7262b72a"}, + {file = "google_re2-1.1-5-cp311-cp311-win32.whl", hash = "sha256:a1d59568bbb5de5dd56dd6cdc79907db26cce63eb4429260300c65f43469e3e7"}, + {file = "google_re2-1.1-5-cp311-cp311-win_amd64.whl", hash = "sha256:72f5a2f179648b8358737b2b493549370debd7d389884a54d331619b285514e3"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:cbc72c45937b1dc5acac3560eb1720007dccca7c9879138ff874c7f6baf96005"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5fadd1417fbef7235fa9453dba4eb102e6e7d94b1e4c99d5fa3dd4e288d0d2ae"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:040f85c63cc02696485b59b187a5ef044abe2f99b92b4fb399de40b7d2904ccc"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:64e3b975ee6d9bbb2420494e41f929c1a0de4bcc16d86619ab7a87f6ea80d6bd"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8ee370413e00f4d828eaed0e83b8af84d7a72e8ee4f4bd5d3078bc741dfc430a"}, + {file = "google_re2-1.1-5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:5b89383001079323f693ba592d7aad789d7a02e75adb5d3368d92b300f5963fd"}, + {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:63cb4fdfbbda16ae31b41a6388ea621510db82feb8217a74bf36552ecfcd50ad"}, + {file = "google_re2-1.1-5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ebedd84ae8be10b7a71a16162376fd67a2386fe6361ef88c622dcf7fd679daf"}, + {file = "google_re2-1.1-5-cp312-cp312-win32.whl", hash = "sha256:c8e22d1692bc2c81173330c721aff53e47ffd3c4403ff0cd9d91adfd255dd150"}, + {file = "google_re2-1.1-5-cp312-cp312-win_amd64.whl", hash = "sha256:5197a6af438bb8c4abda0bbe9c4fbd6c27c159855b211098b29d51b73e4cbcf6"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b6727e0b98417e114b92688ad2aa256102ece51f29b743db3d831df53faf1ce3"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:711e2b6417eb579c61a4951029d844f6b95b9b373b213232efd413659889a363"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:71ae8b3df22c5c154c8af0f0e99d234a450ef1644393bc2d7f53fc8c0a1e111c"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:94a04e214bc521a3807c217d50cf099bbdd0c0a80d2d996c0741dbb995b5f49f"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:a770f75358508a9110c81a1257721f70c15d9bb592a2fb5c25ecbd13566e52a5"}, + {file = "google_re2-1.1-5-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:07c9133357f7e0b17c6694d5dcb82e0371f695d7c25faef2ff8117ef375343ff"}, + {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:204ca6b1cf2021548f4a9c29ac015e0a4ab0a7b6582bf2183d838132b60c8fda"}, + {file = "google_re2-1.1-5-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f0b95857c2c654f419ca684ec38c9c3325c24e6ba7d11910a5110775a557bb18"}, + {file = "google_re2-1.1-5-cp38-cp38-win32.whl", hash = "sha256:347ac770e091a0364e822220f8d26ab53e6fdcdeaec635052000845c5a3fb869"}, + {file = "google_re2-1.1-5-cp38-cp38-win_amd64.whl", hash = "sha256:ec32bb6de7ffb112a07d210cf9f797b7600645c2d5910703fa07f456dd2150e0"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:eb5adf89060f81c5ff26c28e261e6b4997530a923a6093c9726b8dec02a9a326"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a22630c9dd9ceb41ca4316bccba2643a8b1d5c198f21c00ed5b50a94313aaf10"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:544dc17fcc2d43ec05f317366375796351dec44058e1164e03c3f7d050284d58"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:19710af5ea88751c7768575b23765ce0dfef7324d2539de576f75cdc319d6654"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:f82995a205e08ad896f4bd5ce4847c834fab877e1772a44e5f262a647d8a1dec"}, + {file = "google_re2-1.1-5-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:63533c4d58da9dc4bc040250f1f52b089911699f0368e0e6e15f996387a984ed"}, + {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79e00fcf0cb04ea35a22b9014712d448725ce4ddc9f08cc818322566176ca4b0"}, + {file = "google_re2-1.1-5-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bc41afcefee2da6c4ed883a93d7f527c4b960cd1d26bbb0020a7b8c2d341a60a"}, + {file = "google_re2-1.1-5-cp39-cp39-win32.whl", hash = "sha256:486730b5e1f1c31b0abc6d80abe174ce4f1188fe17d1b50698f2bf79dc6e44be"}, + {file = "google_re2-1.1-5-cp39-cp39-win_amd64.whl", hash = "sha256:4de637ca328f1d23209e80967d1b987d6b352cd01b3a52a84b4d742c69c3da6c"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:621e9c199d1ff0fdb2a068ad450111a84b3bf14f96dfe5a8a7a0deae5f3f4cce"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:220acd31e7dde95373f97c3d1f3b3bd2532b38936af28b1917ee265d25bebbf4"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:db34e1098d164f76251a6ece30e8f0ddfd65bb658619f48613ce71acb3f9cbdb"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:5152bac41d8073977582f06257219541d0fc46ad99b0bbf30e8f60198a43b08c"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6191294799e373ee1735af91f55abd23b786bdfd270768a690d9d55af9ea1b0d"}, + {file = "google_re2-1.1-6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:070cbafbb4fecbb02e98feb28a1eb292fb880f434d531f38cc33ee314b521f1f"}, + {file = "google_re2-1.1-6-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8437d078b405a59a576cbed544490fe041140f64411f2d91012e8ec05ab8bf86"}, + {file = "google_re2-1.1-6-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f00f9a9af8896040e37896d9b9fc409ad4979f1ddd85bb188694a7d95ddd1164"}, + {file = "google_re2-1.1-6-cp310-cp310-win32.whl", hash = "sha256:df26345f229a898b4fd3cafd5f82259869388cee6268fc35af16a8e2293dd4e5"}, + {file = "google_re2-1.1-6-cp310-cp310-win_amd64.whl", hash = "sha256:3665d08262c57c9b28a5bdeb88632ad792c4e5f417e5645901695ab2624f5059"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b26b869d8aa1d8fe67c42836bf3416bb72f444528ee2431cfb59c0d3e02c6ce3"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:41fd4486c57dea4f222a6bb7f1ff79accf76676a73bdb8da0fcbd5ba73f8da71"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:0ee378e2e74e25960070c338c28192377c4dd41e7f4608f2688064bd2badc41e"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a00cdbf662693367b36d075b29feb649fd7ee1b617cf84f85f2deebeda25fc64"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4c09455014217a41499432b8c8f792f25f3df0ea2982203c3a8c8ca0e7895e69"}, + {file = "google_re2-1.1-6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6501717909185327935c7945e23bb5aa8fc7b6f237b45fe3647fa36148662158"}, + {file = "google_re2-1.1-6-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3510b04790355f199e7861c29234081900e1e1cbf2d1484da48aa0ba6d7356ab"}, + {file = "google_re2-1.1-6-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8c0e64c187ca406764f9e9ad6e750d62e69ed8f75bf2e865d0bfbc03b642361c"}, + {file = "google_re2-1.1-6-cp311-cp311-win32.whl", hash = "sha256:2a199132350542b0de0f31acbb3ca87c3a90895d1d6e5235f7792bb0af02e523"}, + {file = "google_re2-1.1-6-cp311-cp311-win_amd64.whl", hash = "sha256:83bdac8ceaece8a6db082ea3a8ba6a99a2a1ee7e9f01a9d6d50f79c6f251a01d"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:81985ff894cd45ab5a73025922ac28c0707759db8171dd2f2cc7a0e856b6b5ad"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:5635af26065e6b45456ccbea08674ae2ab62494008d9202df628df3b267bc095"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:813b6f04de79f4a8fdfe05e2cb33e0ccb40fe75d30ba441d519168f9d958bd54"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:5ec2f5332ad4fd232c3f2d6748c2c7845ccb66156a87df73abcc07f895d62ead"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5a687b3b32a6cbb731647393b7c4e3fde244aa557f647df124ff83fb9b93e170"}, + {file = "google_re2-1.1-6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:39a62f9b3db5d3021a09a47f5b91708b64a0580193e5352751eb0c689e4ad3d7"}, + {file = "google_re2-1.1-6-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ca0f0b45d4a1709cbf5d21f355e5809ac238f1ee594625a1e5ffa9ff7a09eb2b"}, + {file = "google_re2-1.1-6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a64b3796a7a616c7861247bd061c9a836b5caf0d5963e5ea8022125601cf7b09"}, + {file = "google_re2-1.1-6-cp312-cp312-win32.whl", hash = "sha256:32783b9cb88469ba4cd9472d459fe4865280a6b1acdad4480a7b5081144c4eb7"}, + {file = "google_re2-1.1-6-cp312-cp312-win_amd64.whl", hash = "sha256:259ff3fd2d39035b9cbcbf375995f83fa5d9e6a0c5b94406ff1cc168ed41d6c6"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:e4711bcffe190acd29104d8ecfea0c0e42b754837de3fb8aad96e6cc3c613cdc"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:4d081cce43f39c2e813fe5990e1e378cbdb579d3f66ded5bade96130269ffd75"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:4f123b54d48450d2d6b14d8fad38e930fb65b5b84f1b022c10f2913bd956f5b5"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_13_0_x86_64.whl", hash = "sha256:e1928b304a2b591a28eb3175f9db7f17c40c12cf2d4ec2a85fdf1cc9c073ff91"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_14_0_arm64.whl", hash = "sha256:3a69f76146166aec1173003c1f547931bdf288c6b135fda0020468492ac4149f"}, + {file = "google_re2-1.1-6-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:fc08c388f4ebbbca345e84a0c56362180d33d11cbe9ccfae663e4db88e13751e"}, + {file = "google_re2-1.1-6-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b057adf38ce4e616486922f2f47fc7d19c827ba0a7f69d540a3664eba2269325"}, + {file = "google_re2-1.1-6-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4138c0b933ab099e96f5d8defce4486f7dfd480ecaf7f221f2409f28022ccbc5"}, + {file = "google_re2-1.1-6-cp38-cp38-win32.whl", hash = "sha256:9693e45b37b504634b1abbf1ee979471ac6a70a0035954592af616306ab05dd6"}, + {file = "google_re2-1.1-6-cp38-cp38-win_amd64.whl", hash = "sha256:5674d437baba0ea287a5a7f8f81f24265d6ae8f8c09384e2ef7b6f84b40a7826"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7783137cb2e04f458a530c6d0ee9ef114815c1d48b9102f023998c371a3b060e"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:a49b7153935e7a303675f4deb5f5d02ab1305adefc436071348706d147c889e0"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:a96a8bb309182090704593c60bdb369a2756b38fe358bbf0d40ddeb99c71769f"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:dff3d4be9f27ef8ec3705eed54f19ef4ab096f5876c15fe011628c69ba3b561c"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:40f818b0b39e26811fa677978112a8108269977fdab2ba0453ac4363c35d9e66"}, + {file = "google_re2-1.1-6-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:8a7e53538cdb40ef4296017acfbb05cab0c19998be7552db1cfb85ba40b171b9"}, + {file = "google_re2-1.1-6-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ee18e7569fb714e5bb8c42809bf8160738637a5e71ed5a4797757a1fb4dc4de"}, + {file = "google_re2-1.1-6-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1cda4f6d1a7d5b43ea92bc395f23853fba0caf8b1e1efa6e8c48685f912fcb89"}, + {file = "google_re2-1.1-6-cp39-cp39-win32.whl", hash = "sha256:6a9cdbdc36a2bf24f897be6a6c85125876dc26fea9eb4247234aec0decbdccfd"}, + {file = "google_re2-1.1-6-cp39-cp39-win_amd64.whl", hash = "sha256:73f646cecfad7cc5b4330b4192c25f2e29730a3b8408e089ffd2078094208196"}, ] [[package]] @@ -3577,13 +3727,13 @@ test = ["objgraph", "psutil"] [[package]] name = "griffe" -version = "0.38.0" +version = "0.44.0" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." optional = false python-versions = ">=3.8" files = [ - {file = "griffe-0.38.0-py3-none-any.whl", hash = "sha256:6a5bc457320e8e199006aa5fbb03e162f5e21abe31aa6221f7a5c37ea0724c71"}, - {file = "griffe-0.38.0.tar.gz", hash = "sha256:9b97487b583042b543d1e28196caee638ecd766c8c4c98135071806cb5333ac2"}, + {file = "griffe-0.44.0-py3-none-any.whl", hash = "sha256:8a4471c469ba980b87c843f1168850ce39d0c1d0c7be140dca2480f76c8e5446"}, + {file = "griffe-0.44.0.tar.gz", hash = "sha256:34aee1571042f9bf00529bc715de4516fb6f482b164e90d030300601009e0223"}, ] [package.dependencies] @@ -4475,7 +4625,6 @@ files = [ {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, - {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5"}, {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, @@ -4568,13 +4717,13 @@ testing = ["pytest"] [[package]] name = "markdown" -version = "3.5.1" +version = "3.6" description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "Markdown-3.5.1-py3-none-any.whl", hash = "sha256:5874b47d4ee3f0b14d764324d2c94c03ea66bee56f2d929da9f2508d65e722dc"}, - {file = "Markdown-3.5.1.tar.gz", hash = "sha256:b65d7beb248dc22f2e8a31fb706d93798093c308dc1aba295aedeb9d41a813bd"}, + {file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"}, + {file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"}, ] [package.extras] @@ -4977,21 +5126,23 @@ mkdocs = ">=1.2" [[package]] name = "mkdocstrings" -version = "0.23.0" +version = "0.25.1" description = "Automatic documentation from sources, for MkDocs." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocstrings-0.23.0-py3-none-any.whl", hash = "sha256:051fa4014dfcd9ed90254ae91de2dbb4f24e166347dae7be9a997fe16316c65e"}, - {file = "mkdocstrings-0.23.0.tar.gz", hash = "sha256:d9c6a37ffbe7c14a7a54ef1258c70b8d394e6a33a1c80832bce40b9567138d1c"}, + {file = "mkdocstrings-0.25.1-py3-none-any.whl", hash = "sha256:da01fcc2670ad61888e8fe5b60afe9fee5781017d67431996832d63e887c2e51"}, + {file = "mkdocstrings-0.25.1.tar.gz", hash = "sha256:c3a2515f31577f311a9ee58d089e4c51fc6046dbd9e9b4c3de4c3194667fe9bf"}, ] [package.dependencies] +click = ">=7.0" Jinja2 = ">=2.11.1" Markdown = ">=3.3" MarkupSafe = ">=1.1" -mkdocs = ">=1.2" +mkdocs = ">=1.4" mkdocs-autorefs = ">=0.3.1" +platformdirs = ">=2.2.0" pymdown-extensions = ">=6.3" [package.extras] @@ -5001,19 +5152,18 @@ python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] [[package]] name = "mkdocstrings-python" -version = "1.9.0" +version = "1.10.0" description = "A Python handler for mkdocstrings." optional = false python-versions = ">=3.8" files = [ - {file = "mkdocstrings_python-1.9.0-py3-none-any.whl", hash = "sha256:fad27d7314b4ec9c0359a187b477fb94c65ef561fdae941dca1b717c59aae96f"}, - {file = "mkdocstrings_python-1.9.0.tar.gz", hash = "sha256:6e1a442367cf75d30cf69774cbb1ad02aebec58bfff26087439df4955efecfde"}, + {file = "mkdocstrings_python-1.10.0-py3-none-any.whl", hash = "sha256:ba833fbd9d178a4b9d5cb2553a4df06e51dc1f51e41559a4d2398c16a6f69ecc"}, + {file = "mkdocstrings_python-1.10.0.tar.gz", hash = "sha256:71678fac657d4d2bb301eed4e4d2d91499c095fd1f8a90fa76422a87a5693828"}, ] [package.dependencies] -griffe = ">=0.37" -markdown = ">=3.3,<3.6" -mkdocstrings = ">=0.20" +griffe = ">=0.44" +mkdocstrings = ">=0.24.2" [[package]] name = "msal" @@ -6459,17 +6609,17 @@ files = [ [[package]] name = "pymdown-extensions" -version = "10.7" +version = "10.8.1" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "pymdown_extensions-10.7-py3-none-any.whl", hash = "sha256:6ca215bc57bc12bf32b414887a68b810637d039124ed9b2e5bd3325cbb2c050c"}, - {file = "pymdown_extensions-10.7.tar.gz", hash = "sha256:c0d64d5cf62566f59e6b2b690a4095c931107c250a8c8e1351c1de5f6b036deb"}, + {file = "pymdown_extensions-10.8.1-py3-none-any.whl", hash = "sha256:f938326115884f48c6059c67377c46cf631c733ef3629b6eed1349989d1b30cb"}, + {file = "pymdown_extensions-10.8.1.tar.gz", hash = "sha256:3ab1db5c9e21728dabf75192d71471f8e50f216627e9a1fa9535ecb0231b9940"}, ] [package.dependencies] -markdown = ">=3.5" +markdown = ">=3.6" pyyaml = "*" [package.extras] @@ -6801,6 +6951,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"}, @@ -7725,30 +7876,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.50-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:54138aa80d2dedd364f4e8220eef284c364d3270aaef621570aa2bd99902e2e8"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00665725063692c42badfd521d0c4392e83c6c826795d38eb88fb108e5660e5"}, {file = "SQLAlchemy-1.4.50-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:85292ff52ddf85a39367057c3d7968a12ee1fb84565331a36a8fead346f08796"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d0fed0f791d78e7767c2db28d34068649dfeea027b83ed18c45a423f741425cb"}, {file = "SQLAlchemy-1.4.50-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db4db3c08ffbb18582f856545f058a7a5e4ab6f17f75795ca90b3c38ee0a8ba4"}, + {file = "SQLAlchemy-1.4.50-cp310-cp310-win32.whl", hash = "sha256:6c78e3fb4a58e900ec433b6b5f4efe1a0bf81bbb366ae7761c6e0051dd310ee3"}, + {file = "SQLAlchemy-1.4.50-cp310-cp310-win_amd64.whl", hash = "sha256:d55f7a33e8631e15af1b9e67c9387c894fedf6deb1a19f94be8731263c51d515"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:324b1fdd50e960a93a231abb11d7e0f227989a371e3b9bd4f1259920f15d0304"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14b0cacdc8a4759a1e1bd47dc3ee3f5db997129eb091330beda1da5a0e9e5bd7"}, {file = "SQLAlchemy-1.4.50-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fb9cb60e0f33040e4f4681e6658a7eb03b5cb4643284172f91410d8c493dace"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-win32.whl", hash = "sha256:8bdab03ff34fc91bfab005e96f672ae207d87e0ac7ee716d74e87e7046079d8b"}, + {file = "SQLAlchemy-1.4.50-cp311-cp311-win_amd64.whl", hash = "sha256:52e01d60b06f03b0a5fc303c8aada405729cbc91a56a64cead8cb7c0b9b13c1a"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:77fde9bf74f4659864c8e26ac08add8b084e479b9a18388e7db377afc391f926"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cb501d585aa74a0f86d0ea6263b9c5e1d1463f8f9071392477fd401bd3c7cc"}, {file = "SQLAlchemy-1.4.50-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a7a66297e46f85a04d68981917c75723e377d2e0599d15fbe7a56abed5e2d75"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-win32.whl", hash = "sha256:e86c920b7d362cfa078c8b40e7765cbc34efb44c1007d7557920be9ddf138ec7"}, + {file = "SQLAlchemy-1.4.50-cp312-cp312-win_amd64.whl", hash = "sha256:6b3df20fbbcbcd1c1d43f49ccf3eefb370499088ca251ded632b8cbaee1d497d"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:fb9adc4c6752d62c6078c107d23327aa3023ef737938d0135ece8ffb67d07030"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1db0221cb26d66294f4ca18c533e427211673ab86c1fbaca8d6d9ff78654293"}, {file = "SQLAlchemy-1.4.50-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:0b7dbe6369677a2bea68fe9812c6e4bbca06ebfa4b5cde257b2b0bf208709131"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a9bddb60566dc45c57fd0a5e14dd2d9e5f106d2241e0a2dc0c1da144f9444516"}, {file = "SQLAlchemy-1.4.50-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82dd4131d88395df7c318eeeef367ec768c2a6fe5bd69423f7720c4edb79473c"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-win32.whl", hash = "sha256:1b9c4359d3198f341480e57494471201e736de459452caaacf6faa1aca852bd8"}, + {file = "SQLAlchemy-1.4.50-cp36-cp36m-win_amd64.whl", hash = "sha256:35e4520f7c33c77f2636a1e860e4f8cafaac84b0b44abe5de4c6c8890b6aaa6d"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:f5b1fb2943d13aba17795a770d22a2ec2214fc65cff46c487790192dda3a3ee7"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:273505fcad22e58cc67329cefab2e436006fc68e3c5423056ee0513e6523268a"}, {file = "SQLAlchemy-1.4.50-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:a3257a6e09626d32b28a0c5b4f1a97bced585e319cfa90b417f9ab0f6145c33c"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d69738d582e3a24125f0c246ed8d712b03bd21e148268421e4a4d09c34f521a5"}, {file = "SQLAlchemy-1.4.50-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1c5d9cd3e6bf3d1ce56971c62a40c06bfc02861728f368dcfec8aeedb2814"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-win32.whl", hash = "sha256:7b4396452273aedda447e5aebe68077aa7516abf3b3f48408793e771d696f397"}, + {file = "SQLAlchemy-1.4.50-cp37-cp37m-win_amd64.whl", hash = "sha256:752f9df3dddbacb5f42d8405b2d5885675a93501eb5f86b88f2e47a839cf6337"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:35c7ed095a4b17dbc8813a2bfb38b5998318439da8e6db10a804df855e3a9e3a"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1fcee5a2c859eecb4ed179edac5ffbc7c84ab09a5420219078ccc6edda45436"}, {file = "SQLAlchemy-1.4.50-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:fbaf6643a604aa17e7a7afd74f665f9db882df5c297bdd86c38368f2c471f37d"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e70e0673d7d12fa6cd363453a0d22dac0d9978500aa6b46aa96e22690a55eab"}, {file = "SQLAlchemy-1.4.50-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b881ac07d15fb3e4f68c5a67aa5cdaf9eb8f09eb5545aaf4b0a5f5f4659be18"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-win32.whl", hash = "sha256:8a219688297ee5e887a93ce4679c87a60da4a5ce62b7cb4ee03d47e9e767f558"}, + {file = "SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl", hash = "sha256:a648770db002452703b729bdcf7d194e904aa4092b9a4d6ab185b48d13252f63"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:4be4da121d297ce81e1ba745a0a0521c6cf8704634d7b520e350dce5964c71ac"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6997da81114daef9203d30aabfa6b218a577fc2bd797c795c9c88c9eb78d49"}, {file = "SQLAlchemy-1.4.50-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:bdb77e1789e7596b77fd48d99ec1d2108c3349abd20227eea0d48d3f8cf398d9"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:128a948bd40780667114b0297e2cc6d657b71effa942e0a368d8cc24293febb3"}, {file = "SQLAlchemy-1.4.50-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d526aeea1bd6a442abc7c9b4b00386fd70253b80d54a0930c0a216230a35be"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-win32.whl", hash = "sha256:a7c9b9dca64036008962dd6b0d9fdab2dfdbf96c82f74dbd5d86006d8d24a30f"}, + {file = "SQLAlchemy-1.4.50-cp39-cp39-win_amd64.whl", hash = "sha256:df200762efbd672f7621b253721644642ff04a6ff957236e0e2fe56d9ca34d2c"}, {file = "SQLAlchemy-1.4.50.tar.gz", hash = "sha256:3b97ddf509fc21e10b09403b5219b06c5b558b27fc2453150274fa4e70707dbf"}, ] From d34b7d7d8ef6363d2b44ad84cfb9b40611505ce0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 17:06:02 +0100 Subject: [PATCH 78/86] build(deps-dev): bump interrogate from 1.5.0 to 1.7.0 (#599) Bumps [interrogate](https://github.com/econchick/interrogate) from 1.5.0 to 1.7.0. - [Release notes](https://github.com/econchick/interrogate/releases) - [Changelog](https://github.com/econchick/interrogate/blob/master/docs/changelog.rst) - [Commits](https://github.com/econchick/interrogate/compare/1.5.0...1.7.0) --- updated-dependencies: - dependency-name: interrogate dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 27 ++++++++------------------- pyproject.toml | 2 +- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2c948e7d4..dc947f937 100644 --- a/poetry.lock +++ b/poetry.lock @@ -4100,13 +4100,13 @@ files = [ [[package]] name = "interrogate" -version = "1.5.0" +version = "1.7.0" description = "Interrogate a codebase for docstring coverage." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "interrogate-1.5.0-py3-none-any.whl", hash = "sha256:a4ccc5cbd727c74acc98dee6f5e79ef264c0bcfa66b68d4e123069b2af89091a"}, - {file = "interrogate-1.5.0.tar.gz", hash = "sha256:b6f325f0aa84ac3ac6779d8708264d366102226c5af7d69058cecffcff7a6d6c"}, + {file = "interrogate-1.7.0-py3-none-any.whl", hash = "sha256:b13ff4dd8403369670e2efe684066de9fcb868ad9d7f2b4095d8112142dc9d12"}, + {file = "interrogate-1.7.0.tar.gz", hash = "sha256:a320d6ec644dfd887cc58247a345054fc4d9f981100c45184470068f4b3719b0"}, ] [package.dependencies] @@ -4115,13 +4115,13 @@ click = ">=7.1" colorama = "*" py = "*" tabulate = "*" -toml = "*" +tomli = {version = "*", markers = "python_version < \"3.11\""} [package.extras] -dev = ["cairosvg", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "sphinx", "sphinx-autobuild", "wheel"] +dev = ["cairosvg", "coverage[toml]", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "sphinx", "sphinx-autobuild", "wheel"] docs = ["sphinx", "sphinx-autobuild"] png = ["cairosvg"] -tests = ["pytest", "pytest-cov", "pytest-mock"] +tests = ["coverage[toml]", "pytest", "pytest-cov", "pytest-mock"] [[package]] name = "ipykernel" @@ -8133,17 +8133,6 @@ files = [ {file = "threadpoolctl-3.2.0.tar.gz", hash = "sha256:c96a0ba3bdddeaca37dc4cc7344aafad41cdb8c313f74fdfe387a867bba93355"}, ] -[[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" @@ -8757,4 +8746,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10, <3.11" -content-hash = "3eea1f8207eb94aa82e58ee036fa3cfa4dc4f30d3bd76089204d1fec7f609fe6" +content-hash = "cf95c8bf122b74c6c479b7c9f61b7879651a1daed6e2b2905379302e0c43dc9d" diff --git a/pyproject.toml b/pyproject.toml index 03f8e0265..ae016f53e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ pandas = "^2.1.4" pre-commit = "^3.7.0" mypy = "^1.9" pep8-naming = "^0.13.2" -interrogate = "^1.5.0" +interrogate = "^1.7.0" isort = "^5.13.2" darglint = "^1.8.1" ruff = "^0.3.2" From 7af1cbcc3a0c247ab7615a8f6aff3f14f2d1409c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 17:31:19 +0100 Subject: [PATCH 79/86] build(deps-dev): bump pytest from 8.1.0 to 8.2.0 (#598) Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.1.0 to 8.2.0. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.1.0...8.2.0) --- updated-dependencies: - dependency-name: pytest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/poetry.lock b/poetry.lock index dc947f937..51ff5e7eb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6004,13 +6004,13 @@ tenacity = ">=6.2.0" [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -6678,13 +6678,13 @@ sql = ["pandas (>=1.0.5)", "pyarrow (>=1.0.0)"] [[package]] name = "pytest" -version = "8.1.0" +version = "8.2.0" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.1.0-py3-none-any.whl", hash = "sha256:ee32db7af8de4629a455806befa90559f307424c07b8413ccfc30bf5b221dd7e"}, - {file = "pytest-8.1.0.tar.gz", hash = "sha256:f8fa04ab8f98d185113ae60ea6d79c22f8143b14bc1caeced44a0ab844928323"}, + {file = "pytest-8.2.0-py3-none-any.whl", hash = "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233"}, + {file = "pytest-8.2.0.tar.gz", hash = "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f"}, ] [package.dependencies] @@ -6692,11 +6692,11 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.4,<2.0" +pluggy = ">=1.5,<2.0" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" From 9f6e6b97d21b2d3ba4f74ecb690c2b2af4d61c29 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 09:56:37 +0100 Subject: [PATCH 80/86] build(deps-dev): bump pytest-xdist from 3.5.0 to 3.6.1 (#597) Bumps [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) from 3.5.0 to 3.6.1. - [Release notes](https://github.com/pytest-dev/pytest-xdist/releases) - [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v3.5.0...v3.6.1) --- updated-dependencies: - dependency-name: pytest-xdist dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/poetry.lock b/poetry.lock index 51ff5e7eb..5530ba88f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1790,13 +1790,13 @@ test = ["pytest (>=6)"] [[package]] name = "execnet" -version = "2.0.2" +version = "2.1.1" description = "execnet: rapid multi-Python deployment" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "execnet-2.0.2-py3-none-any.whl", hash = "sha256:88256416ae766bc9e8895c76a87928c0012183da3cc4fc18016e6f050e025f41"}, - {file = "execnet-2.0.2.tar.gz", hash = "sha256:cc59bc4423742fd71ad227122eb0dd44db51efb3dc4095b45ac9a08c770096af"}, + {file = "execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"}, + {file = "execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"}, ] [package.extras] @@ -6737,18 +6737,18 @@ dev = ["black", "flake8", "pre-commit"] [[package]] name = "pytest-xdist" -version = "3.5.0" +version = "3.6.1" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-xdist-3.5.0.tar.gz", hash = "sha256:cbb36f3d67e0c478baa57fa4edc8843887e0f6cfc42d677530a36d7472b32d8a"}, - {file = "pytest_xdist-3.5.0-py3-none-any.whl", hash = "sha256:d075629c7e00b611df89f490a5063944bee7a4362a5ff11c7cc7824a03dfce24"}, + {file = "pytest_xdist-3.6.1-py3-none-any.whl", hash = "sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7"}, + {file = "pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d"}, ] [package.dependencies] -execnet = ">=1.1" -pytest = ">=6.2.0" +execnet = ">=2.1" +pytest = ">=7.0.0" [package.extras] psutil = ["psutil (>=3.0)"] From d89ec861cf551e54ddf92cb57a86f840c7c5d786 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 10:20:31 +0100 Subject: [PATCH 81/86] build(deps-dev): bump ruff from 0.3.2 to 0.4.3 (#596) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.3.2 to 0.4.3. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/v0.3.2...v0.4.3) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 38 +++++++++++++++++++------------------- pyproject.toml | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5530ba88f..74886899e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -7440,28 +7440,28 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruff" -version = "0.3.2" +version = "0.4.3" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77f2612752e25f730da7421ca5e3147b213dca4f9a0f7e0b534e9562c5441f01"}, - {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9966b964b2dd1107797be9ca7195002b874424d1d5472097701ae8f43eadef5d"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b83d17ff166aa0659d1e1deaf9f2f14cbe387293a906de09bc4860717eb2e2da"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb875c6cc87b3703aeda85f01c9aebdce3d217aeaca3c2e52e38077383f7268a"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be75e468a6a86426430373d81c041b7605137a28f7014a72d2fc749e47f572aa"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:967978ac2d4506255e2f52afe70dda023fc602b283e97685c8447d036863a302"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1231eacd4510f73222940727ac927bc5d07667a86b0cbe822024dd00343e77e9"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c6d613b19e9a8021be2ee1d0e27710208d1603b56f47203d0abbde906929a9b"}, - {file = "ruff-0.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8439338a6303585d27b66b4626cbde89bb3e50fa3cae86ce52c1db7449330a7"}, - {file = "ruff-0.3.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:de8b480d8379620cbb5ea466a9e53bb467d2fb07c7eca54a4aa8576483c35d36"}, - {file = "ruff-0.3.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b74c3de9103bd35df2bb05d8b2899bf2dbe4efda6474ea9681280648ec4d237d"}, - {file = "ruff-0.3.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f380be9fc15a99765c9cf316b40b9da1f6ad2ab9639e551703e581a5e6da6745"}, - {file = "ruff-0.3.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0ac06a3759c3ab9ef86bbeca665d31ad3aa9a4b1c17684aadb7e61c10baa0df4"}, - {file = "ruff-0.3.2-py3-none-win32.whl", hash = "sha256:9bd640a8f7dd07a0b6901fcebccedadeb1a705a50350fb86b4003b805c81385a"}, - {file = "ruff-0.3.2-py3-none-win_amd64.whl", hash = "sha256:0c1bdd9920cab5707c26c8b3bf33a064a4ca7842d91a99ec0634fec68f9f4037"}, - {file = "ruff-0.3.2-py3-none-win_arm64.whl", hash = "sha256:5f65103b1d76e0d600cabd577b04179ff592064eaa451a70a81085930e907d0b"}, - {file = "ruff-0.3.2.tar.gz", hash = "sha256:fa78ec9418eb1ca3db392811df3376b46471ae93792a81af2d1cbb0e5dcb5142"}, + {file = "ruff-0.4.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b70800c290f14ae6fcbb41bbe201cf62dfca024d124a1f373e76371a007454ce"}, + {file = "ruff-0.4.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:08a0d6a22918ab2552ace96adeaca308833873a4d7d1d587bb1d37bae8728eb3"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba1f14df3c758dd7de5b55fbae7e1c8af238597961e5fb628f3de446c3c40c5"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:819fb06d535cc76dfddbfe8d3068ff602ddeb40e3eacbc90e0d1272bb8d97113"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bfc9e955e6dc6359eb6f82ea150c4f4e82b660e5b58d9a20a0e42ec3bb6342b"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:510a67d232d2ebe983fddea324dbf9d69b71c4d2dfeb8a862f4a127536dd4cfb"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9ff11cd9a092ee7680a56d21f302bdda14327772cd870d806610a3503d001f"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:29efff25bf9ee685c2c8390563a5b5c006a3fee5230d28ea39f4f75f9d0b6f2f"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b00e0bcccf0fc8d7186ed21e311dffd19761cb632241a6e4fe4477cc80ef6e"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:262f5635e2c74d80b7507fbc2fac28fe0d4fef26373bbc62039526f7722bca1b"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7363691198719c26459e08cc17c6a3dac6f592e9ea3d2fa772f4e561b5fe82a3"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:eeb039f8428fcb6725bb63cbae92ad67b0559e68b5d80f840f11914afd8ddf7f"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:927b11c1e4d0727ce1a729eace61cee88a334623ec424c0b1c8fe3e5f9d3c865"}, + {file = "ruff-0.4.3-py3-none-win32.whl", hash = "sha256:25cacda2155778beb0d064e0ec5a3944dcca9c12715f7c4634fd9d93ac33fd30"}, + {file = "ruff-0.4.3-py3-none-win_amd64.whl", hash = "sha256:7a1c3a450bc6539ef00da6c819fb1b76b6b065dec585f91456e7c0d6a0bbc725"}, + {file = "ruff-0.4.3-py3-none-win_arm64.whl", hash = "sha256:71ca5f8ccf1121b95a59649482470c5601c60a416bf189d553955b0338e34614"}, + {file = "ruff-0.4.3.tar.gz", hash = "sha256:ff0a3ef2e3c4b6d133fbedcf9586abfbe38d076041f2dc18ffb2c7e0485d5a07"}, ] [[package]] @@ -8746,4 +8746,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10, <3.11" -content-hash = "cf95c8bf122b74c6c479b7c9f61b7879651a1daed6e2b2905379302e0c43dc9d" +content-hash = "78e9e4e7f1c8fc05f25d4b4e7e7e252f272ddc8e3568b6eb94ad7968cc57a675" diff --git a/pyproject.toml b/pyproject.toml index ae016f53e..113b0ac1d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,7 @@ pep8-naming = "^0.13.2" interrogate = "^1.7.0" isort = "^5.13.2" darglint = "^1.8.1" -ruff = "^0.3.2" +ruff = "^0.4.3" [tool.poetry.group.docs.dependencies] mkdocs = "^1.5.3" From bc1a1124b0744895f2ce246c23b62861ea600288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Irene=20L=C3=B3pez?= <45119610+ireneisdoomed@users.noreply.github.com> Date: Wed, 15 May 2024 09:20:58 +0100 Subject: [PATCH 82/86] feat(airflow): include COLOC as a node in the DAG (#530) * feat: split colocalisation step into two nodes: coloc and ecaviar * feat: filter credible sets to be colocalised based on method * fix(dag): update coloc dependencies * revert(config): revert colocalisation output location * feat(coloc): _get_colocalisation_class to import methods dynamically * refactor(step): remove method enum * refactor(step): do not hardcode method value * fix(config): typo in static_assets * refactor(dag): uncomment steps --- ...tion.yaml => ot_colocalisation_coloc.yaml} | 1 + config/step/ot_colocalisation_ecaviar.yaml | 7 +++ src/airflow/dags/configs/dag.yaml | 9 ++- src/gentropy/colocalisation.py | 56 +++++++++++++++++-- src/gentropy/config.py | 1 + 5 files changed, 66 insertions(+), 8 deletions(-) rename config/step/{ot_colocalisation.yaml => ot_colocalisation_coloc.yaml} (84%) create mode 100644 config/step/ot_colocalisation_ecaviar.yaml diff --git a/config/step/ot_colocalisation.yaml b/config/step/ot_colocalisation_coloc.yaml similarity index 84% rename from config/step/ot_colocalisation.yaml rename to config/step/ot_colocalisation_coloc.yaml index 4433595ef..f01335514 100644 --- a/config/step/ot_colocalisation.yaml +++ b/config/step/ot_colocalisation_coloc.yaml @@ -4,3 +4,4 @@ defaults: credible_set_path: ${datasets.credible_set} study_index_path: ${datasets.study_index} coloc_path: ${datasets.colocalisation} +colocalisation_method: Coloc diff --git a/config/step/ot_colocalisation_ecaviar.yaml b/config/step/ot_colocalisation_ecaviar.yaml new file mode 100644 index 000000000..d57887c93 --- /dev/null +++ b/config/step/ot_colocalisation_ecaviar.yaml @@ -0,0 +1,7 @@ +defaults: + - colocalisation + +credible_set_path: ${datasets.credible_set} +study_index_path: ${datasets.study_index} +coloc_path: ${datasets.colocalisation} +colocalisation_method: ECaviar diff --git a/src/airflow/dags/configs/dag.yaml b/src/airflow/dags/configs/dag.yaml index 0b634caaa..b6d343343 100644 --- a/src/airflow/dags/configs/dag.yaml +++ b/src/airflow/dags/configs/dag.yaml @@ -4,15 +4,18 @@ prerequisites: - "ot_variant_index" - "ot_gene_index" -- id: "ot_colocalisation" +- id: "ot_colocalisation_ecaviar" +- id: "ot_colocalisation_coloc" - id: "ot_locus_to_gene_train" prerequisites: - "ot_variant_index" - "ot_variant_to_gene" - - "ot_colocalisation" + - "ot_colocalisation_ecaviar" + - "ot_colocalisation_coloc" - id: "ot_locus_to_gene_predict" prerequisites: - "ot_locus_to_gene_train" - "ot_variant_index" - "ot_variant_to_gene" - - "ot_colocalisation" + - "ot_colocalisation_ecaviar" + - "ot_colocalisation_coloc" diff --git a/src/gentropy/colocalisation.py b/src/gentropy/colocalisation.py index 010827713..1d71ed447 100644 --- a/src/gentropy/colocalisation.py +++ b/src/gentropy/colocalisation.py @@ -1,10 +1,15 @@ """Step to generate colocalisation results.""" from __future__ import annotations +import inspect +from importlib import import_module + +from pyspark.sql.functions import col + from gentropy.common.session import Session from gentropy.dataset.study_index import StudyIndex from gentropy.dataset.study_locus import CredibleInterval, StudyLocus -from gentropy.method.colocalisation import ECaviar +from gentropy.method.colocalisation import Coloc class ColocalisationStep: @@ -19,6 +24,7 @@ def __init__( credible_set_path: str, study_index_path: str, coloc_path: str, + colocalisation_method: str, ) -> None: """Run Colocalisation step. @@ -27,10 +33,18 @@ def __init__( credible_set_path (str): Input credible sets path. study_index_path (str): Input study index path. coloc_path (str): Output Colocalisation path. + colocalisation_method (str): Colocalisation method. """ + colocalisation_class = self._get_colocalisation_class(colocalisation_method) # Extract - credible_set = StudyLocus.from_parquet( - session, credible_set_path, recursiveFileLookup=True + credible_set = ( + StudyLocus.from_parquet( + session, credible_set_path, recursiveFileLookup=True + ).filter(col("finemappingMethod") == "SuSie") + if colocalisation_class is Coloc + else StudyLocus.from_parquet( + session, credible_set_path, recursiveFileLookup=True + ) ) si = StudyIndex.from_parquet( session, study_index_path, recursiveFileLookup=True @@ -40,7 +54,39 @@ def __init__( overlaps = credible_set.filter_credible_set( CredibleInterval.IS95 ).find_overlaps(si) - ecaviar_results = ECaviar.colocalise(overlaps) + colocalisation_results = colocalisation_class.colocalise(overlaps) # type: ignore # Load - ecaviar_results.df.write.mode(session.write_mode).parquet(coloc_path) + colocalisation_results.df.write.mode(session.write_mode).parquet( + f"{coloc_path}/{colocalisation_method.lower()}" + ) + + @classmethod + def _get_colocalisation_class(cls: type[ColocalisationStep], method: str) -> type: + """Get colocalisation class. + + Args: + method (str): Colocalisation method. + + Returns: + type: Colocalisation class. + + Raises: + ValueError: if method not available. + + Examples: + >>> ColocalisationStep._get_colocalisation_class("ECaviar") + + """ + module_name = "gentropy.method.colocalisation" + module = import_module(module_name) + + available_methods = [] + for class_name, class_obj in inspect.getmembers(module, inspect.isclass): + if class_obj.__module__ == module_name: + available_methods.append(class_name) + if class_name == method: + return class_obj + raise ValueError( + f"Method {method} is not supported. Available: {(', ').join(available_methods)}" + ) diff --git a/src/gentropy/config.py b/src/gentropy/config.py index 018c70135..59452fed8 100644 --- a/src/gentropy/config.py +++ b/src/gentropy/config.py @@ -37,6 +37,7 @@ class ColocalisationConfig(StepConfig): credible_set_path: str = MISSING study_index_path: str = MISSING coloc_path: str = MISSING + colocalisation_method: str = MISSING _target_: str = "gentropy.colocalisation.ColocalisationStep" From 1576cf4d4da005805b07f4b32279bfc014456408 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 May 2024 09:36:15 +0100 Subject: [PATCH 83/86] build(deps): bump typing-extensions from 4.10.0 to 4.11.0 (#602) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [typing-extensions](https://github.com/python/typing_extensions) from 4.10.0 to 4.11.0. - [Release notes](https://github.com/python/typing_extensions/releases) - [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md) - [Commits](https://github.com/python/typing_extensions/compare/4.10.0...4.11.0) --- updated-dependencies: - dependency-name: typing-extensions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Irene López <45119610+ireneisdoomed@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 74886899e..a371b4a41 100644 --- a/poetry.lock +++ b/poetry.lock @@ -8213,13 +8213,13 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. [[package]] name = "typing-extensions" -version = "4.10.0" +version = "4.11.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, ] [[package]] From 8bc09c8d663de7d8e3bacdea06f8b8756daead09 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 May 2024 09:44:58 +0100 Subject: [PATCH 84/86] build(deps-dev): bump ipython from 8.22.1 to 8.24.0 (#603) Bumps [ipython](https://github.com/ipython/ipython) from 8.22.1 to 8.24.0. - [Release notes](https://github.com/ipython/ipython/releases) - [Commits](https://github.com/ipython/ipython/compare/8.22.1...8.24.0) --- updated-dependencies: - dependency-name: ipython dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index a371b4a41..84f95e18c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -4158,13 +4158,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.22.1" +version = "8.24.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.22.1-py3-none-any.whl", hash = "sha256:869335e8cded62ffb6fac8928e5287a05433d6462e3ebaac25f4216474dd6bc4"}, - {file = "ipython-8.22.1.tar.gz", hash = "sha256:39c6f9efc079fb19bfb0f17eee903978fe9a290b1b82d68196c641cecb76ea22"}, + {file = "ipython-8.24.0-py3-none-any.whl", hash = "sha256:d7bf2f6c4314984e3e02393213bab8703cf163ede39672ce5918c51fe253a2a3"}, + {file = "ipython-8.24.0.tar.gz", hash = "sha256:010db3f8a728a578bb641fdd06c063b9fb8e96a9464c63aec6310fbcb5e80501"}, ] [package.dependencies] @@ -4178,18 +4178,20 @@ prompt-toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" stack-data = "*" traitlets = ">=5.13.0" +typing-extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} [package.extras] -all = ["ipython[black,doc,kernel,nbconvert,nbformat,notebook,parallel,qtconsole,terminal]", "ipython[test,test-extra]"] +all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] black = ["black"] doc = ["docrepr", "exceptiongroup", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "stack-data", "typing-extensions"] kernel = ["ipykernel"] +matplotlib = ["matplotlib"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["pickleshare", "pytest (<8)", "pytest-asyncio (<0.22)", "testpath"] +test = ["pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] [[package]] From c06632763a534ee6ec0401101479b474a097e698 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 May 2024 09:56:59 +0100 Subject: [PATCH 85/86] build(deps-dev): bump mypy from 1.9.0 to 1.10.0 (#604) Bumps [mypy](https://github.com/python/mypy) from 1.9.0 to 1.10.0. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/1.9.0...v1.10.0) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 58 +++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/poetry.lock b/poetry.lock index 84f95e18c..8a3664c64 100644 --- a/poetry.lock +++ b/poetry.lock @@ -5310,38 +5310,38 @@ files = [ [[package]] name = "mypy" -version = "1.9.0" +version = "1.10.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"}, - {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"}, - {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"}, - {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"}, - {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"}, - {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"}, - {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"}, - {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"}, - {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"}, - {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"}, - {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"}, - {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"}, - {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"}, - {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"}, - {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"}, - {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"}, - {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"}, - {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"}, - {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"}, - {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"}, - {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"}, - {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"}, - {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"}, - {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"}, - {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"}, - {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"}, - {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"}, + {file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"}, + {file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"}, + {file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"}, + {file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"}, + {file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"}, + {file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"}, + {file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"}, + {file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"}, + {file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"}, + {file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"}, + {file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"}, + {file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"}, + {file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"}, + {file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"}, + {file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"}, + {file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"}, + {file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"}, + {file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"}, + {file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"}, ] [package.dependencies] @@ -8748,4 +8748,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10, <3.11" -content-hash = "78e9e4e7f1c8fc05f25d4b4e7e7e252f272ddc8e3568b6eb94ad7968cc57a675" +content-hash = "f3118a34b55508e9d5876d1aefaa7754a8307277591c650fcd8c119033290552" diff --git a/pyproject.toml b/pyproject.toml index 113b0ac1d..818d0685a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ pandas = "^2.1.4" [tool.poetry.dev-dependencies] pre-commit = "^3.7.0" -mypy = "^1.9" +mypy = "^1.10" pep8-naming = "^0.13.2" interrogate = "^1.7.0" isort = "^5.13.2" From bb9f9c64a11c7d275c54a06b6a1c90db6410b3cd Mon Sep 17 00:00:00 2001 From: Daniel Suveges Date: Wed, 15 May 2024 21:01:33 +0100 Subject: [PATCH 86/86] refactor: moving all variant coordinates to GnomAD (#566) * refactor: removing gnomAD variant id. GonomadID is the variant id * refactor: converting ld index coordinates to gnomad * refactor: movig GWAS Catalog to gnomad coordinates * test: fixing doctest * refactor: touching DAG for preparing GnomAD dataset * fix: adding updated lockfile * fix: replace hyphens with underscores in variant identifiers * fix: removing commented line --------- Co-authored-by: David Ochoa --- src/airflow/dags/common_airflow.py | 6 +-- ...dag_preprocess.py => gnomad_preprocess.py} | 3 +- .../assets/schemas/variant_annotation.json | 6 --- src/gentropy/common/utils.py | 36 +------------ src/gentropy/datasource/gnomad/ld.py | 24 +++------ src/gentropy/datasource/gnomad/variants.py | 44 ++-------------- .../datasource/gwas_catalog/associations.py | 51 +++++++++++++++++-- 7 files changed, 65 insertions(+), 105 deletions(-) rename src/airflow/dags/{dag_preprocess.py => gnomad_preprocess.py} (94%) diff --git a/src/airflow/dags/common_airflow.py b/src/airflow/dags/common_airflow.py index 9d4f18503..f3ec89bb2 100644 --- a/src/airflow/dags/common_airflow.py +++ b/src/airflow/dags/common_airflow.py @@ -127,9 +127,9 @@ def create_cluster( # Create a disk config section if it does not exist. cluster_config[worker_section].setdefault("disk_config", {}) # Specify the number of local SSDs. - cluster_config[worker_section]["disk_config"][ - "num_local_ssds" - ] = num_local_ssds + cluster_config[worker_section]["disk_config"]["num_local_ssds"] = ( + num_local_ssds + ) # Return the cluster creation operator. return DataprocCreateClusterOperator( diff --git a/src/airflow/dags/dag_preprocess.py b/src/airflow/dags/gnomad_preprocess.py similarity index 94% rename from src/airflow/dags/dag_preprocess.py rename to src/airflow/dags/gnomad_preprocess.py index 4439914c5..22e7fa056 100644 --- a/src/airflow/dags/dag_preprocess.py +++ b/src/airflow/dags/gnomad_preprocess.py @@ -1,4 +1,5 @@ """Airflow DAG for the Preprocess part of the pipeline.""" + from __future__ import annotations from pathlib import Path @@ -6,7 +7,7 @@ import common_airflow as common from airflow.models.dag import DAG -CLUSTER_NAME = "otg-preprocess" +CLUSTER_NAME = "gnomad-preprocess" ALL_STEPS = [ "ot_ld_index", diff --git a/src/gentropy/assets/schemas/variant_annotation.json b/src/gentropy/assets/schemas/variant_annotation.json index 826eabaf9..ab8767389 100644 --- a/src/gentropy/assets/schemas/variant_annotation.json +++ b/src/gentropy/assets/schemas/variant_annotation.json @@ -19,12 +19,6 @@ "nullable": false, "metadata": {} }, - { - "name": "gnomadVariantId", - "type": "string", - "nullable": false, - "metadata": {} - }, { "name": "referenceAllele", "type": "string", diff --git a/src/gentropy/common/utils.py b/src/gentropy/common/utils.py index 4cdda9ad2..3ec361a50 100644 --- a/src/gentropy/common/utils.py +++ b/src/gentropy/common/utils.py @@ -1,4 +1,5 @@ """Common functions in the Genetics datasets.""" + from __future__ import annotations import sys @@ -208,41 +209,6 @@ def parse_pvalue(pv: Column) -> list[Column]: ] -def convert_gnomad_position_to_ensembl( - position: Column, reference: Column, alternate: Column -) -> Column: - """Convert GnomAD variant position to Ensembl variant position. - - For indels (the reference or alternate allele is longer than 1), then adding 1 to the position, for SNPs, - the position is unchanged. More info about the problem: https://www.biostars.org/p/84686/ - - Args: - position (Column): Position of the variant in GnomAD's coordinates system. - reference (Column): The reference allele in GnomAD's coordinates system. - alternate (Column): The alternate allele in GnomAD's coordinates system. - - Returns: - Column: The position of the variant in the Ensembl genome. - - Examples: - >>> d = [(1, "A", "C"), (2, "AA", "C"), (3, "A", "AA")] - >>> df = spark.createDataFrame(d).toDF("position", "reference", "alternate") - >>> df.withColumn("new_position", convert_gnomad_position_to_ensembl(f.col("position"), f.col("reference"), f.col("alternate"))).show() - +--------+---------+---------+------------+ - |position|reference|alternate|new_position| - +--------+---------+---------+------------+ - | 1| A| C| 1| - | 2| AA| C| 3| - | 3| A| AA| 4| - +--------+---------+---------+------------+ - - - """ - return f.when( - (f.length(reference) > 1) | (f.length(alternate) > 1), position + 1 - ).otherwise(position) - - def _liftover_loci( variant_index: Table, chain_path: str, dest_reference_genome: str ) -> Table: diff --git a/src/gentropy/datasource/gnomad/ld.py b/src/gentropy/datasource/gnomad/ld.py index 02cb15c7f..471b87cae 100644 --- a/src/gentropy/datasource/gnomad/ld.py +++ b/src/gentropy/datasource/gnomad/ld.py @@ -1,4 +1,5 @@ """Step to import filtered version of a LD matrix (block matrix).""" + from __future__ import annotations import sys @@ -13,7 +14,7 @@ from pyspark.sql import Window from gentropy.common.spark_helpers import get_top_ranked_in_window, get_value_from_row -from gentropy.common.utils import _liftover_loci, convert_gnomad_position_to_ensembl +from gentropy.common.utils import _liftover_loci from gentropy.dataset.ld_index import LDIndex if TYPE_CHECKING: @@ -177,24 +178,15 @@ def _process_variant_indices( ld_index_38.to_spark() # Filter out variants where the liftover failed .filter(f.col("`locus_GRCh38.position`").isNotNull()) - .withColumn( - "chromosome", f.regexp_replace("`locus_GRCh38.contig`", "chr", "") - ) - .withColumn( - "position", - convert_gnomad_position_to_ensembl( - f.col("`locus_GRCh38.position`"), - f.col("`alleles`").getItem(0), - f.col("`alleles`").getItem(1), - ), - ) .select( - "chromosome", - "position", + f.regexp_replace("`locus_GRCh38.contig`", "chr", "").alias( + "chromosome" + ), + f.col("`locus_GRCh38.position`").alias("position"), f.concat_ws( "_", - f.col("chromosome"), - f.col("position"), + f.regexp_replace("`locus_GRCh38.contig`", "chr", ""), + f.col("`locus_GRCh38.position`"), f.col("`alleles`").getItem(0), f.col("`alleles`").getItem(1), ).alias("variantId"), diff --git a/src/gentropy/datasource/gnomad/variants.py b/src/gentropy/datasource/gnomad/variants.py index 58f5f8093..b06b4ba6c 100644 --- a/src/gentropy/datasource/gnomad/variants.py +++ b/src/gentropy/datasource/gnomad/variants.py @@ -1,4 +1,5 @@ """Import gnomAD variants dataset.""" + from __future__ import annotations from dataclasses import dataclass, field @@ -9,7 +10,7 @@ from gentropy.dataset.variant_annotation import VariantAnnotation if TYPE_CHECKING: - from hail.expr.expressions import Int32Expression, StringExpression + pass @dataclass @@ -39,29 +40,6 @@ class GnomADVariants: ] ) - @staticmethod - def _convert_gnomad_position_to_ensembl_hail( - position: Int32Expression, - reference: StringExpression, - alternate: StringExpression, - ) -> Int32Expression: - """Convert GnomAD variant position to Ensembl variant position in hail table. - - For indels (the reference or alternate allele is longer than 1), then adding 1 to the position, for SNPs, the position is unchanged. - More info about the problem: https://www.biostars.org/p/84686/ - - Args: - position (Int32Expression): Position of the variant in the GnomAD genome. - reference (StringExpression): The reference allele. - alternate (StringExpression): The alternate allele - - Returns: - Int32Expression: The position of the variant according to Ensembl genome. - """ - return hl.if_else( - (reference.length() > 1) | (alternate.length() > 1), position + 1, position - ) - def as_variant_annotation(self: GnomADVariants) -> VariantAnnotation: """Generate variant annotation dataset from gnomAD. @@ -93,7 +71,7 @@ def as_variant_annotation(self: GnomADVariants) -> VariantAnnotation: return VariantAnnotation( _df=( ht.select( - gnomadVariantId=hl.str("-").join( + variantId=hl.str("_").join( [ ht.locus.contig.replace("chr", ""), hl.str(ht.locus.position), @@ -102,21 +80,7 @@ def as_variant_annotation(self: GnomADVariants) -> VariantAnnotation: ] ), chromosome=ht.locus.contig.replace("chr", ""), - position=GnomADVariants._convert_gnomad_position_to_ensembl_hail( - ht.locus.position, ht.alleles[0], ht.alleles[1] - ), - variantId=hl.str("_").join( - [ - ht.locus.contig.replace("chr", ""), - hl.str( - GnomADVariants._convert_gnomad_position_to_ensembl_hail( - ht.locus.position, ht.alleles[0], ht.alleles[1] - ) - ), - ht.alleles[0], - ht.alleles[1], - ] - ), + position=ht.locus.position, chromosomeB37=ht.locus_GRCh37.contig.replace("chr", ""), positionB37=ht.locus_GRCh37.position, referenceAllele=ht.alleles[0], diff --git a/src/gentropy/datasource/gwas_catalog/associations.py b/src/gentropy/datasource/gwas_catalog/associations.py index 5ff499f2c..658facea7 100644 --- a/src/gentropy/datasource/gwas_catalog/associations.py +++ b/src/gentropy/datasource/gwas_catalog/associations.py @@ -1,4 +1,5 @@ """Study Locus for GWAS Catalog data source.""" + from __future__ import annotations import importlib.resources as pkg_resources @@ -31,6 +32,40 @@ class GWASCatalogCuratedAssociationsParser: """GWAS Catalog curated associations parser.""" + @staticmethod + def convert_gnomad_position_to_ensembl( + position: Column, reference: Column, alternate: Column + ) -> Column: + """Convert GnomAD variant position to Ensembl variant position. + + For indels (the reference or alternate allele is longer than 1), then adding 1 to the position, for SNPs, + the position is unchanged. More info about the problem: https://www.biostars.org/p/84686/ + + Args: + position (Column): Position of the variant in GnomAD's coordinates system. + reference (Column): The reference allele in GnomAD's coordinates system. + alternate (Column): The alternate allele in GnomAD's coordinates system. + + Returns: + Column: The position of the variant in the Ensembl genome. + + Examples: + >>> d = [(1, "A", "C"), (2, "AA", "C"), (3, "A", "AA")] + >>> df = spark.createDataFrame(d).toDF("position", "reference", "alternate") + >>> df.withColumn("new_position", GWASCatalogCuratedAssociationsParser.convert_gnomad_position_to_ensembl(f.col("position"), f.col("reference"), f.col("alternate"))).show() + +--------+---------+---------+------------+ + |position|reference|alternate|new_position| + +--------+---------+---------+------------+ + | 1| A| C| 1| + | 2| AA| C| 3| + | 3| A| AA| 4| + +--------+---------+---------+------------+ + + """ + return f.when( + (f.length(reference) > 1) | (f.length(alternate) > 1), position + 1 + ).otherwise(position) + @staticmethod def _parse_pvalue(pvalue: Column) -> tuple[Column, Column]: """Parse p-value column. @@ -178,7 +213,8 @@ def _map_to_variant_annotation_variants( gwas_associations_subset = gwas_associations.select( "studyLocusId", f.col("CHR_ID").alias("chromosome"), - f.col("CHR_POS").cast(IntegerType()).alias("position"), + # The positions from GWAS Catalog are from ensembl that causes discrepancy for indels: + f.col("CHR_POS").cast(IntegerType()).alias("ensemblPosition"), # List of all SNPs associated with the variant GWASCatalogCuratedAssociationsParser._collect_rsids( f.split(f.col("SNPS"), "; ").getItem(0), @@ -194,6 +230,11 @@ def _map_to_variant_annotation_variants( va_subset = variant_annotation.df.select( "variantId", "chromosome", + # Calculate the position in Ensembl coordinates for indels: + GWASCatalogCuratedAssociationsParser.convert_gnomad_position_to_ensembl( + f.col("position"), f.col("referenceAllele"), f.col("alternateAllele") + ).alias("ensemblPosition"), + # Keeping GnomAD position: "position", f.col("rsIds").alias("rsIdsGnomad"), "referenceAllele", @@ -202,9 +243,11 @@ def _map_to_variant_annotation_variants( variant_annotation.max_maf().alias("maxMaf"), ).join( f.broadcast( - gwas_associations_subset.select("chromosome", "position").distinct() + gwas_associations_subset.select( + "chromosome", "ensemblPosition" + ).distinct() ), - on=["chromosome", "position"], + on=["chromosome", "ensemblPosition"], how="inner", ) @@ -213,7 +256,7 @@ def _map_to_variant_annotation_variants( filtered_associations = ( gwas_associations_subset.join( f.broadcast(va_subset), - on=["chromosome", "position"], + on=["chromosome", "ensemblPosition"], how="left", ) .withColumn(