diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4e78378..e5aff2e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,6 +24,6 @@ repos: types: ["python"] - id: pip-audit name: pip-audit - entry: pipenv run pip-audit --ignore-vuln GHSA-4xh5-x5gv-qwph + entry: pipenv run pip-audit language: system pass_filenames: false \ No newline at end of file diff --git a/Makefile b/Makefile index 6b86185..c5882af 100644 --- a/Makefile +++ b/Makefile @@ -46,7 +46,7 @@ ruff: # Run 'ruff' linter and print a preview of errors pipenv run ruff check . safety: # Check for security vulnerabilities and verify Pipfile.lock is up-to-date - pipenv run pip-audit --ignore-vuln GHSA-4xh5-x5gv-qwph + pipenv run pip-audit pipenv verify lint-apply: black-apply ruff-apply # Apply changes with 'black' and resolve 'fixable errors' with 'ruff' diff --git a/Pipfile b/Pipfile index eb1ab8b..b27d3c5 100644 --- a/Pipfile +++ b/Pipfile @@ -6,11 +6,11 @@ name = "pypi" [packages] attrs = "*" boto3 = "*" +duckdb = "==1.4.2" +duckdb-engine = "*" pandas = "*" pyarrow = "*" sqlalchemy = "*" -duckdb-engine = "*" -duckdb = "==1.4.2.dev27" [dev-packages] black = "*" diff --git a/Pipfile.lock b/Pipfile.lock index a6ae3f7..31b1f44 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "725d3ad7f9e32ba05555a9175511711f35d062ca5f66959246ea4c4d412e51c6" + "sha256": "9f37fdf15828cfc3364bb447dba4253f8c05c993116eae4083e2f8af427a8c32" }, "pipfile-spec": 6, "requires": { @@ -27,64 +27,64 @@ }, "boto3": { "hashes": [ - "sha256:96ee720b52be647d8ef5ba92fccfce6b65d6321769430fe6edd10d57ec43c25b", - "sha256:ecc8c99d3cc96716cdfba62d9c9c6ce0eb98d02494a66690bcc2ec181c1ced67" + "sha256:41fc8844b37ae27b24bcabf8369769df246cc12c09453988d0696ad06d6aa9ef", + "sha256:484e46bf394b03a7c31b34f90945ebe1390cb1e2ac61980d128a9079beac87d4" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==1.40.52" + "version": "==1.40.74" }, "botocore": { "hashes": [ - "sha256:838697a06c7713df8d39f088105334b4eadcc3d65c7a260bf1a1bd8bf616ce4a", - "sha256:b65d970ca4ccd869639332083da17c3a933bcf495120dcc4f5c7723cb3f6216c" + "sha256:57de0b9ffeada06015b3c7e5186c77d0692b210d9e5efa294f3214df97e2f8ee", + "sha256:f39f5763e35e75f0bd91212b7b36120b1536203e8003cd952ef527db79702b15" ], "markers": "python_version >= '3.9'", - "version": "==1.40.52" + "version": "==1.40.74" }, "duckdb": { "hashes": [ - "sha256:055a31d715facbc8416ef01cbaad8e7c007a48f73733e1504593ece9870749e3", - "sha256:09f0c95022615bb6593240e9aded18c825b71a7708b4d5feac8010b6835a0218", - "sha256:0b5ed2dd2b5c7d8f8add6b90be1a75f782b2d947cad9b4ef180e93ba8fe2c712", - "sha256:0b900f801b05c42b7c0b38d0f8679c5a0cafdef9a4f5f5bd0c194a24fc94312f", - "sha256:2c2f363942232019fae10efd9b92c9dde590a955600898c6588a2abbbf322f5d", - "sha256:2e51c03335992d79190e9230a8bb69d5504e22a0705e6057bbc454cf4742db18", - "sha256:3141afe3e59a238bd79accb3b5b505ad6bde7e648a67ecb32a87d29baa1d507c", - "sha256:33bde9de3b5c1a70d6ba212821afaad5d49de2644c85ae021bac9c8d36d358c2", - "sha256:352afa65795588a540d414c1fd4f3aa125c320c524f26f6d9017788a7efd6245", - "sha256:359fd08fa84c7ad303334778b3d20c1ef391bf0a7523753f5b4fc582eb63e309", - "sha256:409a2dea728953a4d7500fcbe4f96d5e021cc996cb73c2aa45d788fbcfc2ecac", - "sha256:4457538386e403cb12efdfb1cd3a1cf4a47b3947e5b46dc6cd6e306af23f5ad4", - "sha256:451534c2a51f6d9ffb44937605b4db2226e39664520c548bd9ed090060d14c54", - "sha256:4b9036e19b51efca43b2cfc639810d4db7c4a75c42132c7c6fee946f1d0e194b", - "sha256:50458f77161f28928dc805578b13e874b883e1e67e686c7173ae629f01b951e9", - "sha256:569fe3ecb5ee537cafe3b5823a3798e39b9b7058a374231858beb85e8346c509", - "sha256:600f886e72d3efbce6629e696d95d9401d012664b547239d0957372d08b32309", - "sha256:69872aec744cde965cd1ec257cbc275867b40c26e154cef18916c2b219a351b6", - "sha256:6fe0089bb487a8b47c5b7a189cf83c186faf2da95848cc9d892a5e3384f6ff91", - "sha256:70bf6ad12dd103d0e2babacb8167af243b08987b5ef6806bf0f68fcd27493c03", - "sha256:727094fc2ee39ac2227d7cd16c6cf5eacd747c0303d9a4b8c9b8e8a7f31bcbfd", - "sha256:753dbc58f1be72fbd111882fcb40a3ca3a11183b1fae70ee3d9ee7314312448e", - "sha256:7947440cb61279b7f6acdc624f0c72d700b3591f178dd3c064d4fe40f257fc85", - "sha256:844ca95c1a9df1fab6b45a4be77e867f4b1663d74813ba2695a995dba59f4012", - "sha256:8f9685dc88a18d5a47157a4ea1e5bc3e069cde42356f959650897369db6eef15", - "sha256:934464e710ee057c9e43ed2eee60e8fad207be9fe387cf21dd42e05fde9c61f9", - "sha256:94b2c9c8d2e1b04452534f3e6988d6752b462c55ead10c3b2ecd746e9c9dc604", - "sha256:9e3190bb3e696d8380ccc68ef77ca982244f5debc2cad64aaceb83f14a57438e", - "sha256:d5b51c838a2a6d3eec537e3852d432d83d1c213fc14431760734c0b5a8c86d7b", - "sha256:da0857a3f1bb3c4e4f8ceee9028dff7b6738c60dca9256b43861b1ab17fbdaf7", - "sha256:dc06efeba54e0e8bc9af4ab0abbbb6037e0f96f49c98d1bb93a878df70ec0158", - "sha256:dfd79a499d2d7d6447c5d31db2781fbd11c80e3b1834232a84f3aa08cfb3f329", - "sha256:e03a3b89dcf69e9f41ce0f512a307bccb1818aa2e8ebd6e98f36cc1360c20a9f", - "sha256:e130343c5d7fc87dff9cd002f7ec7791e9e76020bd23a47d0ac2ba6775b9fb91", - "sha256:e1dbe3ed4e6a11bf93424f42d73f1428c12d9fdaf724996dfee8982299a5a9e4", - "sha256:f7b5c1a0809e0123f4b8cc18b749d573f6e96f33472f5486283df2afd802a3f1", - "sha256:f8ea19fbb6b5ee327c9485273989fbcdbd32f5fc3ce97058aeaf3cd020284ac3" + "sha256:0c2315b693f201787c9892f31eb9a0484d3c648edb3578a86dc8c1284dd2873a", + "sha256:125cd89dbfd40846f216032b11e5eeaf2be13ee4d6745b82413ddd213ddc4d99", + "sha256:128c97dab574a438d7c8d020670b21c68792267d88e65a7773667b556541fa9b", + "sha256:19d2c2f3cdf0242cad42e803602bbc2636706fc1d2d260ffac815ea2e3a018e8", + "sha256:20c45b4ead1ea4d23a1be1cd4f1dfc635e58b55f0dd11e38781369be6c549903", + "sha256:2d3c39429b3ce1ee33d86daa94bed75a1f5b0fcf4d66d0839a6fcee398894548", + "sha256:2e552451054534970dc999e69ca5ae5c606458548c43fb66d772117760485096", + "sha256:2f7c61617d2b1da3da5d7e215be616ad45aa3221c4b9e2c4d1c28ed09bc3c1c4", + "sha256:389fa9abe4ca37d091332a2f8c3ebd713f18e87dc4cb5e8efd3e5aa8ddf8885f", + "sha256:422be8c6bdc98366c97f464b204b81b892bf962abeae6b0184104b8233da4f19", + "sha256:43ac632f40ab1aede9b4ce3c09ea043f26f3db97b83c07c632c84ebd7f7c0f4a", + "sha256:449fa37cdefa85bf925681e551157f3cb6434ee85c8329d2f72d52e432e8810f", + "sha256:459b1855bd06a226a2838da4f14c8863fd87a62e63d414a7f7f682a7c616511a", + "sha256:4d757dae8c63eeb001517ce4cfba768f87f90628c5d22f230773c1fe0b430c5c", + "sha256:4da7aafa94800f475d287814ad91993cf1f912c16f76ff4b411769da40c4b7da", + "sha256:769440f4507c20542ae2e5b87f6c6c6d3f148c0aa8f912528f6c97e9aedf6a21", + "sha256:77db030b48321bf785767b7b1800bf657dd2584f6df0a77e05201ecd22017da2", + "sha256:7a496a04458590dcec8e928122ebe2ecbb42c3e1de4119f5461f7bf547acbe79", + "sha256:7be8c0c40f2264b91500b89c688f743e1c7764966e988f680b1f19416b00052e", + "sha256:85f0c36c1b5f378d96dd7d8c6d312317f4f547a567e8b76cacb2590a31d931f3", + "sha256:9106c7292cff824e9497233bb16867ab3bca82885a11f1b533e7ecabf8073b34", + "sha256:9356fe17af2711e0a5ace4b20a0373e03163545fd7516e0c3c40428f44597052", + "sha256:946a8374c0252db3fa41165ab9952b48adc8de06561a6b5fd62025ac700e492f", + "sha256:995ec9c1fc3ce5fbfe5950b980ede2a9d51b35fdf2e3f873ce94c22fc3355fdc", + "sha256:a456adbc3459c9dcd99052fad20bd5f8ef642be5b04d09590376b2eb3eb84f5c", + "sha256:b2d882672b61bc6117a2c524cf64ea519d2e829295951d214f04e126f1549b09", + "sha256:bdd2d808806ceeeec33ba89665a0bb707af8815f2ca40e6c4c581966c0628ba1", + "sha256:c45e0e682ee9073c36dc34d7ad8033210bfea0cab80cc98d1eca516227b35fdf", + "sha256:c5feb658ed728cfc42d6fe5ff4e2035faf438a3f10c875f3cfa39ef9e2a2c004", + "sha256:c6a21732dd52a76f1e61484c06d65800b18f57fe29e8102a7466c201a2221604", + "sha256:c6d41fea4f9038663e6b9c325075a843fd105eaff0ec3d5fe31dfa9014114c3e", + "sha256:d4af73198e56ba3bc1b2a05eaaf93d162615c225c031685f2a20ef6b2798ed33", + "sha256:de646227fc2c53101ac84e86e444e7561aa077387aca8b37052f3803ee690a17", + "sha256:df81acee3b15ecb2c72eb8f8579fb5922f6f56c71f5c8892ea3bc6fab39aa2c4", + "sha256:dfcc56a83420c0dec0b83e97a6b33addac1b7554b8828894f9d203955591218c", + "sha256:e1c80934cb15879844a752776a1ea3d1405635f307f5bb8b87c99f5a5564d33a", + "sha256:f1fac31babda2045d4cdefe6d0fd2ebdd8d4c2a333fbcc11607cfeaec202d18d" ], "index": "pypi", "markers": "python_full_version >= '3.9.0'", - "version": "==1.4.2.dev27" + "version": "==1.4.2" }, "duckdb-engine": { "hashes": [ @@ -105,83 +105,83 @@ }, "numpy": { "hashes": [ - "sha256:035796aaaddfe2f9664b9a9372f089cfc88bd795a67bd1bfe15e6e770934cf64", - "sha256:043885b4f7e6e232d7df4f51ffdef8c36320ee9d5f227b380ea636722c7ed12e", - "sha256:04a69abe45b49c5955923cf2c407843d1c85013b424ae8a560bba16c92fe44a0", - "sha256:0f2bcc76f1e05e5ab58893407c63d90b2029908fa41f9f1cc51eecce936c3365", - "sha256:13b9062e4f5c7ee5c7e5be96f29ba71bc5a37fed3d1d77c37390ae00724d296d", - "sha256:15eea9f306b98e0be91eb344a94c0e630689ef302e10c2ce5f7e11905c704f9c", - "sha256:15fb27364ed84114438fff8aaf998c9e19adbeba08c0b75409f8c452a8692c52", - "sha256:1b219560ae2c1de48ead517d085bc2d05b9433f8e49d0955c82e8cd37bd7bf36", - "sha256:22758999b256b595cf0b1d102b133bb61866ba5ceecf15f759623b64c020c9ec", - "sha256:2ec646892819370cf3558f518797f16597b4e4669894a2ba712caccc9da53f1f", - "sha256:3634093d0b428e6c32c3a69b78e554f0cd20ee420dcad5a9f3b2a63762ce4197", - "sha256:36dc13af226aeab72b7abad501d370d606326a0029b9f435eacb3b8c94b8a8b7", - "sha256:3da3491cee49cf16157e70f607c03a217ea6647b1cea4819c4f48e53d49139b9", - "sha256:40cc556d5abbc54aabe2b1ae287042d7bdb80c08edede19f0c0afb36ae586f37", - "sha256:4121c5beb58a7f9e6dfdee612cb24f4df5cd4db6e8261d7f4d7450a997a65d6a", - "sha256:4635239814149e06e2cb9db3dd584b2fa64316c96f10656983b8026a82e6e4db", - "sha256:4c01835e718bcebe80394fd0ac66c07cbb90147ebbdad3dcecd3f25de2ae7e2c", - "sha256:4ee6a571d1e4f0ea6d5f22d6e5fbd6ed1dc2b18542848e1e7301bd190500c9d7", - "sha256:56209416e81a7893036eea03abcb91c130643eb14233b2515c90dcac963fe99d", - "sha256:5e199c087e2aa71c8f9ce1cb7a8e10677dc12457e7cc1be4798632da37c3e86e", - "sha256:62b2198c438058a20b6704351b35a1d7db881812d8512d67a69c9de1f18ca05f", - "sha256:64c5825affc76942973a70acf438a8ab618dbd692b84cd5ec40a0a0509edc09a", - "sha256:65611ecbb00ac9846efe04db15cbe6186f562f6bb7e5e05f077e53a599225d16", - "sha256:6d34ed9db9e6395bb6cd33286035f73a59b058169733a9db9f85e650b88df37e", - "sha256:6d9cd732068e8288dbe2717177320723ccec4fb064123f0caf9bbd90ab5be868", - "sha256:6e274603039f924c0fe5cb73438fa9246699c78a6df1bd3decef9ae592ae1c05", - "sha256:77b84453f3adcb994ddbd0d1c5d11db2d6bda1a2b7fd5ac5bd4649d6f5dc682e", - "sha256:7c26b0b2bf58009ed1f38a641f3db4be8d960a417ca96d14e5b06df1506d41ff", - "sha256:7fd09cc5d65bda1e79432859c40978010622112e9194e581e3415a3eccc7f43f", - "sha256:817e719a868f0dacde4abdfc5c1910b301877970195db9ab6a5e2c4bd5b121f7", - "sha256:81b3a59793523e552c4a96109dde028aa4448ae06ccac5a76ff6532a85558a7f", - "sha256:81c3e6d8c97295a7360d367f9f8553973651b76907988bb6066376bc2252f24e", - "sha256:838f045478638b26c375ee96ea89464d38428c69170360b23a1a50fa4baa3562", - "sha256:84f01a4d18b2cc4ade1814a08e5f3c907b079c847051d720fad15ce37aa930b6", - "sha256:85597b2d25ddf655495e2363fe044b0ae999b75bc4d630dc0d886484b03a5eb0", - "sha256:85d9fb2d8cd998c84d13a79a09cc0c1091648e848e4e6249b0ccd7f6b487fa26", - "sha256:85e071da78d92a214212cacea81c6da557cab307f2c34b5f85b628e94803f9c0", - "sha256:863e3b5f4d9915aaf1b8ec79ae560ad21f0b8d5e3adc31e73126491bb86dee1d", - "sha256:86966db35c4040fdca64f0816a1c1dd8dbd027d90fca5a57e00e1ca4cd41b879", - "sha256:8ab1c5f5ee40d6e01cbe96de5863e39b215a4d24e7d007cad56c7184fdf4aeef", - "sha256:8b5a9a39c45d852b62693d9b3f3e0fe052541f804296ff401a72a1b60edafb29", - "sha256:8dc20bde86802df2ed8397a08d793da0ad7a5fd4ea3ac85d757bf5dd4ad7c252", - "sha256:957e92defe6c08211eb77902253b14fe5b480ebc5112bc741fd5e9cd0608f847", - "sha256:962064de37b9aef801d33bc579690f8bfe6c5e70e29b61783f60bcba838a14d6", - "sha256:985f1e46358f06c2a09921e8921e2c98168ed4ae12ccd6e5e87a4f1857923f32", - "sha256:9984bd645a8db6ca15d850ff996856d8762c51a2239225288f08f9050ca240a0", - "sha256:9cb177bc55b010b19798dc5497d540dea67fd13a8d9e882b2dae71de0cf09eb3", - "sha256:9d729d60f8d53a7361707f4b68a9663c968882dd4f09e0d58c044c8bf5faee7b", - "sha256:a13fc473b6db0be619e45f11f9e81260f7302f8d180c49a22b6e6120022596b3", - "sha256:a49d797192a8d950ca59ee2d0337a4d804f713bb5c3c50e8db26d49666e351dc", - "sha256:a700a4031bc0fd6936e78a752eefb79092cecad2599ea9c8039c548bc097f9bc", - "sha256:a7b2f9a18b5ff9824a6af80de4f37f4ec3c2aab05ef08f51c77a093f5b89adda", - "sha256:a7d018bfedb375a8d979ac758b120ba846a7fe764911a64465fd87b8729f4a6a", - "sha256:b6c231c9c2fadbae4011ca5e7e83e12dc4a5072f1a1d85a0a7b3ed754d145a40", - "sha256:bafa7d87d4c99752d07815ed7a2c0964f8ab311eb8168f41b910bd01d15b6032", - "sha256:bd0c630cf256b0a7fd9d0a11c9413b42fef5101219ce6ed5a09624f5a65392c7", - "sha256:c090d4860032b857d94144d1a9976b8e36709e40386db289aaf6672de2a81966", - "sha256:c2f91f496a87235c6aaf6d3f3d89b17dba64996abadccb289f48456cff931ca9", - "sha256:d149aee5c72176d9ddbc6803aef9c0f6d2ceeea7626574fc68518da5476fa346", - "sha256:d5e081bc082825f8b139f9e9fe42942cb4054524598aaeb177ff476cc76d09d2", - "sha256:d7315ed1dab0286adca467377c8381cd748f3dc92235f22a7dfc42745644a96a", - "sha256:dabc42f9c6577bcc13001b8810d300fe814b4cfbe8a92c873f269484594f9786", - "sha256:e1708fac43ef8b419c975926ce1eaf793b0c13b7356cfab6ab0dc34c0a02ac0f", - "sha256:e73d63fd04e3a9d6bc187f5455d81abfad05660b212c8804bf3b407e984cd2bc", - "sha256:e78aecd2800b32e8347ce49316d3eaf04aed849cd5b38e0af39f829a4e59f5eb", - "sha256:e8370eb6925bb8c1c4264fec52b0384b44f675f191df91cbe0140ec9f0955646", - "sha256:ecb63014bb7f4ce653f8be7f1df8cbc6093a5a2811211770f6606cc92b5a78fd", - "sha256:ed759bf7a70342f7817d88376eb7142fab9fef8320d6019ef87fae05a99874e1", - "sha256:ef1b5a3e808bc40827b5fa2c8196151a4c5abe110e1726949d7abddfe5c7ae11", - "sha256:f77e5b3d3da652b474cc80a14084927a5e86a5eccf54ca8ca5cbd697bf7f2667", - "sha256:faba246fb30ea2a526c2e9645f61612341de1a83fb1e0c5edf4ddda5a9c10996", - "sha256:fc8a63918b04b8571789688b2780ab2b4a33ab44bfe8ccea36d3eba51228c953", - "sha256:fdebe771ca06bb8d6abce84e51dca9f7921fe6ad34a0c914541b063e9a68928b", - "sha256:fea80f4f4cf83b54c3a051f2f727870ee51e22f0248d3114b8e755d160b38cfb" + "sha256:00dc4e846108a382c5869e77c6ed514394bdeb3403461d25a829711041217d5b", + "sha256:0472f11f6ec23a74a906a00b48a4dcf3849209696dff7c189714511268d103ae", + "sha256:04822c00b5fd0323c8166d66c701dc31b7fbd252c100acd708c48f763968d6a3", + "sha256:052e8c42e0c49d2575621c158934920524f6c5da05a1d3b9bab5d8e259e045f0", + "sha256:09a1bea522b25109bf8e6f3027bd810f7c1085c64a0c7ce050c1676ad0ba010b", + "sha256:0cd00b7b36e35398fa2d16af7b907b65304ef8bb4817a550e06e5012929830fa", + "sha256:0d8163f43acde9a73c2a33605353a4f1bc4798745a8b1d73183b28e5b435ae28", + "sha256:1062fde1dcf469571705945b0f221b73928f34a20c904ffb45db101907c3454e", + "sha256:11e06aa0af8c0f05104d56450d6093ee639e15f24ecf62d417329d06e522e017", + "sha256:17531366a2e3a9e30762c000f2c43a9aaa05728712e25c11ce1dbe700c53ad41", + "sha256:1978155dd49972084bd6ef388d66ab70f0c323ddee6f693d539376498720fb7e", + "sha256:1ed1ec893cff7040a02c8aa1c8611b94d395590d553f6b53629a4461dc7f7b63", + "sha256:2dcd0808a421a482a080f89859a18beb0b3d1e905b81e617a188bd80422d62e9", + "sha256:2e2eb32ddb9ccb817d620ac1d8dae7c3f641c1e5f55f531a33e8ab97960a75b8", + "sha256:2feae0d2c91d46e59fcd62784a3a83b3fb677fead592ce51b5a6fbb4f95965ff", + "sha256:3095bdb8dd297e5920b010e96134ed91d852d81d490e787beca7e35ae1d89cf7", + "sha256:30bc11310e8153ca664b14c5f1b73e94bd0503681fcf136a163de856f3a50139", + "sha256:3101e5177d114a593d79dd79658650fe28b5a0d8abeb8ce6f437c0e6df5be1a4", + "sha256:396084a36abdb603546b119d96528c2f6263921c50df3c8fd7cb28873a237748", + "sha256:3997b5b3c9a771e157f9aae01dd579ee35ad7109be18db0e85dbdbe1de06e952", + "sha256:414802f3b97f3c1eef41e530aaba3b3c1620649871d8cb38c6eaff034c2e16bd", + "sha256:51c1e14eb1e154ebd80e860722f9e6ed6ec89714ad2db2d3aa33c31d7c12179b", + "sha256:51c55fe3451421f3a6ef9a9c1439e82101c57a2c9eab9feb196a62b1a10b58ce", + "sha256:5ee6609ac3604fa7780e30a03e5e241a7956f8e2fcfe547d51e3afa5247ac47f", + "sha256:612a95a17655e213502f60cfb9bf9408efdc9eb1d5f50535cc6eb365d11b42b5", + "sha256:6203fdf9f3dc5bdaed7319ad8698e685c7a3be10819f41d32a0723e611733b42", + "sha256:63c0e9e7eea69588479ebf4a8a270d5ac22763cc5854e9a7eae952a3908103f7", + "sha256:66f85ce62c70b843bab1fb14a05d5737741e74e28c7b8b5a064de10142fad248", + "sha256:6cf9b429b21df6b99f4dee7a1218b8b7ffbbe7df8764dc0bd60ce8a0708fed1e", + "sha256:70b37199913c1bd300ff6e2693316c6f869c7ee16378faf10e4f5e3275b299c3", + "sha256:727fd05b57df37dc0bcf1a27767a3d9a78cbbc92822445f32cc3436ba797337b", + "sha256:74ae7b798248fe62021dbf3c914245ad45d1a6b0cb4a29ecb4b31d0bfbc4cc3e", + "sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0", + "sha256:86945f2ee6d10cdfd67bcb4069c1662dd711f7e2a4343db5cecec06b87cf31aa", + "sha256:86d835afea1eaa143012a2d7a3f45a3adce2d7adc8b4961f0b362214d800846a", + "sha256:872a5cf366aec6bb1147336480fef14c9164b154aeb6542327de4970282cd2f5", + "sha256:8b973c57ff8e184109db042c842423ff4f60446239bd585a5131cc47f06f789d", + "sha256:8cba086a43d54ca804ce711b2a940b16e452807acebe7852ff327f1ecd49b0d4", + "sha256:8f7f0e05112916223d3f438f293abf0727e1181b5983f413dfa2fefc4098245c", + "sha256:900218e456384ea676e24ea6a0417f030a3b07306d29d7ad843957b40a9d8d52", + "sha256:93eebbcf1aafdf7e2ddd44c2923e2672e1010bddc014138b229e49725b4d6be5", + "sha256:9c75442b2209b8470d6d5d8b1c25714270686f14c749028d2199c54e29f20b4d", + "sha256:9ee2197ef8c4f0dfe405d835f3b6a14f5fee7782b5de51ba06fb65fc9b36e9f1", + "sha256:a414504bef8945eae5f2d7cb7be2d4af77c5d1cb5e20b296c2c25b61dff2900c", + "sha256:a4b9159734b326535f4dd01d947f919c6eefd2d9827466a696c44ced82dfbc18", + "sha256:a80afd79f45f3c4a7d341f13acbe058d1ca8ac017c165d3fa0d3de6bc1a079d7", + "sha256:aa5bc7c5d59d831d9773d1170acac7893ce3a5e130540605770ade83280e7188", + "sha256:acfd89508504a19ed06ef963ad544ec6664518c863436306153e13e94605c218", + "sha256:aeffcab3d4b43712bb7a60b65f6044d444e75e563ff6180af8f98dd4b905dfd2", + "sha256:afaffc4393205524af9dfa400fa250143a6c3bc646c08c9f5e25a9f4b4d6a903", + "sha256:b0c7088a73aef3d687c4deef8452a3ac7c1be4e29ed8bf3b366c8111128ac60c", + "sha256:b46b4ec24f7293f23adcd2d146960559aaf8020213de8ad1909dba6c013bf89c", + "sha256:b501b5fa195cc9e24fe102f21ec0a44dffc231d2af79950b451e0d99cea02234", + "sha256:bf06bc2af43fa8d32d30fae16ad965663e966b1a3202ed407b84c989c3221e82", + "sha256:c804e3a5aba5460c73955c955bdbd5c08c354954e9270a2c1565f62e866bdc39", + "sha256:c8a9958e88b65c3b27e22ca2a076311636850b612d6bbfb76e8d156aacde2aaf", + "sha256:cc0a57f895b96ec78969c34f682c602bf8da1a0270b09bc65673df2e7638ec20", + "sha256:cc8920d2ec5fa99875b670bb86ddeb21e295cb07aa331810d9e486e0b969d946", + "sha256:ccc933afd4d20aad3c00bcef049cb40049f7f196e0397f1109dba6fed63267b0", + "sha256:ce581db493ea1a96c0556360ede6607496e8bf9b3a8efa66e06477267bc831e9", + "sha256:d0f23b44f57077c1ede8c5f26b30f706498b4862d3ff0a7298b8411dd2f043ff", + "sha256:d21644de1b609825ede2f48be98dfde4656aefc713654eeee280e37cadc4e0ad", + "sha256:d6889ec4ec662a1a37eb4b4fb26b6100841804dac55bd9df579e326cdc146227", + "sha256:de5672f4a7b200c15a4127042170a694d4df43c992948f5e1af57f0174beed10", + "sha256:e6a0bc88393d65807d751a614207b7129a310ca4fe76a74e5c7da5fa5671417e", + "sha256:ed89927b86296067b4f81f108a2271d8926467a8868e554eaf370fc27fa3ccaf", + "sha256:ee3888d9ff7c14604052b2ca5535a30216aa0a58e948cdd3eeb8d3415f638769", + "sha256:f0963b55cdd70fad460fa4c1341f12f976bb26cb66021a5580329bd498988310", + "sha256:f16417ec91f12f814b10bafe79ef77e70113a2f5f7018640e7425ff979253425", + "sha256:f28620fe26bee16243be2b7b874da327312240a7cdc38b769a697578d2100013", + "sha256:f4255143f5160d0de972d28c8f9665d882b5f61309d8362fdd3e103cf7bf010c", + "sha256:ffac52f28a7849ad7576293c0cb7b9f08304e8f7d738a8cb8a90ec4c55a998eb", + "sha256:ffe22d2b05504f786c867c8395de703937f934272eb67586817b46188b4ded6d", + "sha256:fffe29a1ef00883599d1dc2c51aa2e5d80afe49523c261a74933df395c15c520" ], "markers": "python_version >= '3.11'", - "version": "==2.3.4" + "version": "==2.3.5" }, "packaging": { "hashes": [ @@ -255,53 +255,60 @@ }, "pyarrow": { "hashes": [ - "sha256:067c66ca29aaedae08218569a114e413b26e742171f526e828e1064fcdec13f4", - "sha256:072116f65604b822a7f22945a7a6e581cfa28e3454fdcc6939d4ff6090126623", - "sha256:0c4e75d13eb76295a49e0ea056eb18dbd87d81450bfeb8afa19a7e5a75ae2ad7", - "sha256:186aa00bca62139f75b7de8420f745f2af12941595bbbfa7ed3870ff63e25636", - "sha256:1e005378c4a2c6db3ada3ad4c217b381f6c886f0a80d6a316fe586b90f77efd7", - "sha256:203003786c9fd253ebcafa44b03c06983c9c8d06c3145e37f1b76a1f317aeae1", - "sha256:222c39e2c70113543982c6b34f3077962b44fca38c0bd9e68bb6781534425c10", - "sha256:26bfd95f6bff443ceae63c65dc7e048670b7e98bc892210acba7e4995d3d4b51", - "sha256:3a302f0e0963db37e0a24a70c56cf91a4faa0bca51c23812279ca2e23481fccd", - "sha256:3a81486adc665c7eb1a2bde0224cfca6ceaba344a82a971ef059678417880eb8", - "sha256:3b4d97e297741796fead24867a8dabf86c87e4584ccc03167e4a811f50fdf74d", - "sha256:40ebfcb54a4f11bcde86bc586cbd0272bac0d516cfa539c799c2453768477569", - "sha256:479ee41399fcddc46159a551705b89c05f11e8b8cb8e968f7fec64f62d91985e", - "sha256:5051f2dccf0e283ff56335760cbc8622cf52264d67e359d5569541ac11b6d5bc", - "sha256:555ca6935b2cbca2c0e932bedd853e9bc523098c39636de9ad4693b5b1df86d6", - "sha256:585e7224f21124dd57836b1530ac8f2df2afc43c861d7bf3d58a4870c42ae36c", - "sha256:58c30a1729f82d201627c173d91bd431db88ea74dcaa3885855bc6203e433b82", - "sha256:6299449adf89df38537837487a4f8d3bd91ec94354fdd2a7d30bc11c48ef6e79", - "sha256:65f8e85f79031449ec8706b74504a316805217b35b6099155dd7e227eef0d4b6", - "sha256:689f448066781856237eca8d1975b98cace19b8dd2ab6145bf49475478bcaa10", - "sha256:69cbbdf0631396e9925e048cfa5bce4e8c3d3b41562bbd70c685a8eb53a91e61", - "sha256:731c7022587006b755d0bdb27626a1a3bb004bb56b11fb30d98b6c1b4718579d", - "sha256:7be45519b830f7c24b21d630a31d48bcebfd5d4d7f9d3bdb49da9cdf6d764edb", - "sha256:898afce396b80fdda05e3086b4256f8677c671f7b1d27a6976fa011d3fd0a86e", - "sha256:8d58d8497814274d3d20214fbb24abcad2f7e351474357d552a8d53bce70c70e", - "sha256:9b0b14b49ac10654332a805aedfc0147fb3469cbf8ea951b3d040dab12372594", - "sha256:9d9f8bcb4c3be7738add259738abdeddc363de1b80e3310e04067aa1ca596634", - "sha256:a7a102574faa3f421141a64c10216e078df467ab9576684d5cd696952546e2da", - "sha256:a7f6524e3747e35f80744537c78e7302cd41deee8baa668d56d55f77d9c464b3", - "sha256:b6b27cf01e243871390474a211a7922bfbe3bda21e39bc9160daf0da3fe48876", - "sha256:b7ae0bbdc8c6674259b25bef5d2a1d6af5d39d7200c819cf99e07f7dfef1c51e", - "sha256:bd04ec08f7f8bd113c55868bd3fc442a9db67c27af098c5f814a3091e71cc61a", - "sha256:c077f48aab61738c237802836fc3844f85409a46015635198761b0d6a688f87b", - "sha256:cdc4c17afda4dab2a9c0b79148a43a7f4e1094916b3e18d8975bfd6d6d52241f", - "sha256:cf56ec8b0a5c8c9d7021d6fd754e688104f9ebebf1bf4449613c9531f5346a18", - "sha256:d2fe8e7f3ce329a71b7ddd7498b3cfac0eeb200c2789bd840234f0dc271a8efe", - "sha256:dc56bc708f2d8ac71bd1dcb927e458c93cec10b98eb4120206a4091db7b67b99", - "sha256:e563271e2c5ff4d4a4cbeb2c83d5cf0d4938b891518e676025f7268c6fe5fe26", - "sha256:e72a8ec6b868e258a2cd2672d91f2860ad532d590ce94cdf7d5e7ec674ccf03d", - "sha256:e99310a4ebd4479bcd1964dff9e14af33746300cb014aa4a3781738ac63baf4a", - "sha256:f522e5709379d72fb3da7785aa489ff0bb87448a9dc5a75f45763a795a089ebd", - "sha256:fc0d2f88b81dcf3ccf9a6ae17f89183762c8a94a5bdcfa09e05cfe413acf0503", - "sha256:fee33b0ca46f4c85443d6c450357101e47d53e6c3f008d658c27a2d020d44c79" + "sha256:001ea83a58024818826a9e3f89bf9310a114f7e26dfe404a4c32686f97bd7901", + "sha256:00626d9dc0f5ef3a75fe63fd68b9c7c8302d2b5bbc7f74ecaedba83447a24f84", + "sha256:0c34fe18094686194f204a3b1787a27456897d8a2d62caf84b61e8dfbc0252ae", + "sha256:12fe549c9b10ac98c91cf791d2945e878875d95508e1a5d14091a7aaa66d9cf8", + "sha256:1a812a5b727bc09c3d7ea072c4eebf657c2f7066155506ba31ebf4792f88f016", + "sha256:252be4a05f9d9185bb8c18e83764ebcfea7185076c07a7a662253af3a8c07941", + "sha256:334f900ff08ce0423407af97e6c26ad5d4e3b0763645559ece6fbf3747d6a8f5", + "sha256:35ad0f0378c9359b3f297299c3309778bb03b8612f987399a0333a560b43862d", + "sha256:3d600dc583260d845c7d8a6db540339dd883081925da2bd1c5cb808f720b3cd9", + "sha256:3e294c5eadfb93d78b0763e859a0c16d4051fc1c5231ae8956d61cb0b5666f5a", + "sha256:3e739edd001b04f654b166204fc7a9de896cf6007eaff33409ee9e50ceaff754", + "sha256:44729980b6c50a5f2bfcc2668d36c569ce17f8b17bccaf470c4313dcbbf13c9d", + "sha256:44d2d26cda26d18f7af7db71453b7b783788322d756e81730acb98f24eb90ace", + "sha256:4c19236ae2402a8663a2c8f21f1870a03cc57f0bef7e4b6eb3238cc82944de80", + "sha256:69763ab2445f632d90b504a815a2a033f74332997052b721002298ed6de40f2e", + "sha256:6dda1ddac033d27421c20d7a7943eec60be44e0db4e079f33cc5af3b8280ccde", + "sha256:6f9762274496c244d951c819348afbcf212714902742225f649cf02823a6a10f", + "sha256:710624ab925dc2b05a6229d47f6f0dac1c1155e6ed559be7109f684eba048a48", + "sha256:7388ac685cab5b279a41dfe0a6ccd99e4dbf322edfb63e02fc0443bf24134e91", + "sha256:77718810bd3066158db1e95a63c160ad7ce08c6b0710bc656055033e39cdad88", + "sha256:7a820d8ae11facf32585507c11f04e3f38343c1e784c9b5a8b1da5c930547fe2", + "sha256:8382ad21458075c2e66a82a29d650f963ce51c7708c7c0ff313a8c206c4fd5e8", + "sha256:84378110dd9a6c06323b41b56e129c504d157d1a983ce8f5443761eb5256bafc", + "sha256:854794239111d2b88b40b6ef92aa478024d1e5074f364033e73e21e3f76b25e0", + "sha256:92843c305330aa94a36e706c16209cd4df274693e777ca47112617db7d0ef3d7", + "sha256:9bddc2cade6561f6820d4cd73f99a0243532ad506bc510a75a5a65a522b2d74d", + "sha256:a4893d31e5ef780b6edcaf63122df0f8d321088bb0dee4c8c06eccb1ca28d145", + "sha256:a9d9ffdc2ab696f6b15b4d1f7cec6658e1d788124418cb30030afbae31c64746", + "sha256:ac93252226cf288753d8b46280f4edf3433bf9508b6977f8dd8526b521a1bbb9", + "sha256:b41f37cabfe2463232684de44bad753d6be08a7a072f6a83447eeaf0e4d2a215", + "sha256:b883fe6fd85adad7932b3271c38ac289c65b7337c2c132e9569f9d3940620730", + "sha256:b9d71701ce97c95480fecb0039ec5bb889e75f110da72005743451339262f4ce", + "sha256:ba95112d15fd4f1105fb2402c4eab9068f0554435e9b7085924bcfaac2cc306f", + "sha256:bba208d9c7decf9961998edf5c65e3ea4355d5818dd6cd0f6809bec1afb951cc", + "sha256:bd0d42297ace400d8febe55f13fdf46e86754842b860c978dfec16f081e5c653", + "sha256:bea79263d55c24a32b0d79c00a1c58bb2ee5f0757ed95656b01c0fb310c5af3d", + "sha256:c064e28361c05d72eed8e744c9605cbd6d2bb7481a511c74071fd9b24bc65d7d", + "sha256:c3200cb41cdbc65156e5f8c908d739b0dfed57e890329413da2748d1a2cd1a4e", + "sha256:c6c791b09c57ed76a18b03f2631753a4960eefbbca80f846da8baefc6491fcfe", + "sha256:c6ec3675d98915bf1ec8b3c7986422682f7232ea76cad276f4c8abd5b7319b70", + "sha256:ce20fe000754f477c8a9125543f1936ea5b8867c5406757c224d745ed033e691", + "sha256:cedb9dd9358e4ea1d9bce3665ce0797f6adf97ff142c8e25b46ba9cdd508e9b6", + "sha256:e0a15757fccb38c410947df156f9749ae4a3c89b2393741a50521f39a8cf202a", + "sha256:e6e95176209257803a8b3d0394f21604e796dadb643d2f7ca21b66c9c0b30c9a", + "sha256:e70ff90c64419709d38c8932ea9fe1cc98415c4f87ea8da81719e43f02534bc9", + "sha256:ec1a15968a9d80da01e1d30349b2b0d7cc91e96588ee324ce1b5228175043e95", + "sha256:ec5d40dd494882704fb876c16fa7261a69791e784ae34e6b5992e977bd2e238c", + "sha256:f633074f36dbc33d5c05b5dc75371e5660f1dbf9c8b1d95669def05e5425989c", + "sha256:f7fe3dbe871294ba70d789be16b6e7e52b418311e166e0e3cba9522f0f437fb1", + "sha256:f963ba8c3b0199f9d6b794c90ec77545e05eadc83973897a4523c9e8d84e9340" ], "index": "pypi", - "markers": "python_version >= '3.9'", - "version": "==21.0.0" + "markers": "python_version >= '3.10'", + "version": "==22.0.0" }, "python-dateutil": { "hashes": [ @@ -426,40 +433,44 @@ "develop": { "asttokens": { "hashes": [ - "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", - "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2" + "sha256:15a3ebc0f43c2d0a50eeafea25e19046c68398e487b9f1f5b517f7c0f40f976a", + "sha256:71a4ee5de0bde6a31d64f6b13f2293ac190344478f081c3d1bccfcf5eacb0cb7" ], "markers": "python_version >= '3.8'", - "version": "==3.0.0" + "version": "==3.0.1" }, "black": { "hashes": [ - "sha256:0172a012f725b792c358d57fe7b6b6e8e67375dd157f64fa7a3097b3ed3e2175", - "sha256:0474bca9a0dd1b51791fcc507a4e02078a1c63f6d4e4ae5544b9848c7adfb619", - "sha256:154b06d618233fe468236ba1f0e40823d4eb08b26f5e9261526fde34916b9140", - "sha256:1b9dc70c21ef8b43248f1d86aedd2aaf75ae110b958a7909ad8463c4aa0880b0", - "sha256:2ab0ce111ef026790e9b13bd216fa7bc48edd934ffc4cbf78808b235793cbc92", - "sha256:3bec74ee60f8dfef564b573a96b8930f7b6a538e846123d5ad77ba14a8d7a64f", - "sha256:456386fe87bad41b806d53c062e2974615825c7a52159cde7ccaeb0695fa28fa", - "sha256:474b34c1342cdc157d307b56c4c65bce916480c4a8f6551fdc6bf9b486a7c4ae", - "sha256:77e7060a00c5ec4b3367c55f39cf9b06e68965a4f2e61cecacd6d0d9b7ec945a", - "sha256:846d58e3ce7879ec1ffe816bb9df6d006cd9590515ed5d17db14e17666b2b357", - "sha256:8e46eecf65a095fa62e53245ae2795c90bdecabd53b50c448d0a8bcd0d2e74c4", - "sha256:9101ee58ddc2442199a25cb648d46ba22cd580b00ca4b44234a324e3ec7a0f7e", - "sha256:a16b14a44c1af60a210d8da28e108e13e75a284bf21a9afa6b4571f96ab8bb9d", - "sha256:aaf319612536d502fdd0e88ce52d8f1352b2c0a955cc2798f79eeca9d3af0608", - "sha256:b756fc75871cb1bcac5499552d771822fd9db5a2bb8db2a7247936ca48f39831", - "sha256:c0372a93e16b3954208417bfe448e09b0de5cc721d521866cd9e0acac3c04a1f", - "sha256:ce41ed2614b706fd55fd0b4a6909d06b5bab344ffbfadc6ef34ae50adba3d4f7", - "sha256:d119957b37cc641596063cd7db2656c5be3752ac17877017b2ffcdb9dfc4d2b1", - "sha256:e3c1f4cd5e93842774d9ee4ef6cd8d17790e65f44f7cdbaab5f2cf8ccf22a823", - "sha256:e593466de7b998374ea2585a471ba90553283fb9beefcfa430d84a2651ed5933", - "sha256:ef69351df3c84485a8beb6f7b8f9721e2009e20ef80a8d619e2d1788b7816d47", - "sha256:f96b6726d690c96c60ba682955199f8c39abc1ae0c3a494a9c62c0184049a713" + "sha256:0a1d40348b6621cc20d3d7530a5b8d67e9714906dfd7346338249ad9c6cedf2b", + "sha256:0c0f7c461df55cf32929b002335883946a4893d759f2df343389c4396f3b6b37", + "sha256:1032639c90208c15711334d681de2e24821af0575573db2810b0763bcd62e0f0", + "sha256:35690a383f22dd3e468c85dc4b915217f87667ad9cce781d7b42678ce63c4170", + "sha256:43945853a31099c7c0ff8dface53b4de56c41294fa6783c0441a8b1d9bf668bc", + "sha256:51c65d7d60bb25429ea2bf0731c32b2a2442eb4bd3b2afcb47830f0b13e58bfd", + "sha256:5bd4a22a0b37401c8e492e994bce79e614f91b14d9ea911f44f36e262195fdda", + "sha256:6cb2d54a39e0ef021d6c5eef442e10fd71fcb491be6413d083a320ee768329dd", + "sha256:6cced12b747c4c76bc09b4db057c319d8545307266f41aaee665540bc0e04e96", + "sha256:7eebd4744dfe92ef1ee349dc532defbf012a88b087bb7ddd688ff59a447b080e", + "sha256:80e7486ad3535636657aa180ad32a7d67d7c273a80e12f1b4bfa0823d54e8fac", + "sha256:895571922a35434a9d8ca67ef926da6bc9ad464522a5fe0db99b394ef1c0675a", + "sha256:92285c37b93a1698dcbc34581867b480f1ba3a7b92acf1fe0467b04d7a4da0dc", + "sha256:936c4dd07669269f40b497440159a221ee435e3fddcf668e0c05244a9be71993", + "sha256:9815ccee1e55717fe9a4b924cae1646ef7f54e0f990da39a34fc7b264fcf80a2", + "sha256:9a323ac32f5dc75ce7470501b887250be5005a01602e931a15e45593f70f6e08", + "sha256:a3bb5ce32daa9ff0605d73b6f19da0b0e6c1f8f2d75594db539fdfed722f2b06", + "sha256:aa211411e94fdf86519996b7f5f05e71ba34835d8f0c0f03c00a26271da02664", + "sha256:ae263af2f496940438e5be1a0c1020e13b09154f3af4df0835ea7f9fe7bfa409", + "sha256:cb4f4b65d717062191bdec8e4a442539a8ea065e6af1c4f4d36f0cdb5f71e170", + "sha256:d81a44cbc7e4f73a9d6ae449ec2317ad81512d1e7dce7d57f6333fd6259737bc", + "sha256:dae49ef7369c6caa1a1833fd5efb7c3024bb7e4499bf64833f65ad27791b1545", + "sha256:e3f562da087791e96cefcd9dda058380a442ab322a02e222add53736451f604b", + "sha256:ec311e22458eec32a807f029b2646f661e6859c3f61bc6d9ffb67958779f392e", + "sha256:f42c0ea7f59994490f4dccd64e6b2dd49ac57c7c84f38b8faab50f8759db245c", + "sha256:f9786c24d8e9bd5f20dc7a7f0cdd742644656987f6ea6947629306f937726c03" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==25.9.0" + "version": "==25.11.0" }, "boolean.py": { "hashes": [ @@ -470,57 +481,58 @@ }, "boto3": { "hashes": [ - "sha256:96ee720b52be647d8ef5ba92fccfce6b65d6321769430fe6edd10d57ec43c25b", - "sha256:ecc8c99d3cc96716cdfba62d9c9c6ce0eb98d02494a66690bcc2ec181c1ced67" + "sha256:41fc8844b37ae27b24bcabf8369769df246cc12c09453988d0696ad06d6aa9ef", + "sha256:484e46bf394b03a7c31b34f90945ebe1390cb1e2ac61980d128a9079beac87d4" ], + "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==1.40.52" + "version": "==1.40.74" }, "boto3-stubs": { "extras": [ "essential" ], "hashes": [ - "sha256:5e2b74b7b5ad71ca2b8c35a8d3bf1e4ef60317b1682b5e7dda9f16a1c0b43844", - "sha256:bd20a7bc9122bb1b939195431b9d3f540b1ef050103bc1720d786960907464fd" + "sha256:5c4eb76ad4aa69e520c87ed3adc8351af8df3fb2cfdcd3c1ac08579e64cf38cd", + "sha256:aa14d3345ebc81c8a7a5a200e5e736ff6885e3793bb1c6c133c13b3adef5f7ba" ], - "markers": "python_version >= '3.8'", - "version": "==1.40.52" + "markers": "python_version >= '3.9'", + "version": "==1.40.74" }, "botocore": { "hashes": [ - "sha256:838697a06c7713df8d39f088105334b4eadcc3d65c7a260bf1a1bd8bf616ce4a", - "sha256:b65d970ca4ccd869639332083da17c3a933bcf495120dcc4f5c7723cb3f6216c" + "sha256:57de0b9ffeada06015b3c7e5186c77d0692b210d9e5efa294f3214df97e2f8ee", + "sha256:f39f5763e35e75f0bd91212b7b36120b1536203e8003cd952ef527db79702b15" ], "markers": "python_version >= '3.9'", - "version": "==1.40.52" + "version": "==1.40.74" }, "botocore-stubs": { "hashes": [ - "sha256:4f3e244aad34997cb88aa81c64eb0df23c19d3cbc9337366dfb7f992807d2e53", - "sha256:9e9809e563eb2c925051d849257bdc7605760bcbb62b3d5fe3117f9385345488" + "sha256:088b259c4500127ecc33d4cdea785d50e0035b2456a794eaa82ce52cb3871107", + "sha256:4c215592a8c26f66e0af773b513f1a34437da2a6d0f53a04928bbba1b131c935" ], "markers": "python_version >= '3.9'", - "version": "==1.40.52" + "version": "==1.40.74" }, "cachecontrol": { "extras": [ "filecache" ], "hashes": [ - "sha256:73e7efec4b06b20d9267b441c1f733664f989fb8688391b670ca812d70795d11", - "sha256:b35e44a3113f17d2a31c1e6b27b9de6d4405f84ae51baa8c1d3cc5b633010cae" + "sha256:b7ac014ff72ee199b5f8af1de29d60239954f223e948196fa3d84adaffc71d2b", + "sha256:e6220afafa4c22a47dd0badb319f84475d79108100d04e26e8542ef7d3ab05a1" ], - "markers": "python_version >= '3.9'", - "version": "==0.14.3" + "markers": "python_version >= '3.10'", + "version": "==0.14.4" }, "certifi": { "hashes": [ - "sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de", - "sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43" + "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", + "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316" ], "markers": "python_version >= '3.7'", - "version": "==2025.10.5" + "version": "==2025.11.12" }, "cffi": { "hashes": [ @@ -741,189 +753,189 @@ }, "click": { "hashes": [ - "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc", - "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4" + "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", + "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6" ], "markers": "python_version >= '3.10'", - "version": "==8.3.0" + "version": "==8.3.1" }, "coverage": { "extras": [ "toml" ], "hashes": [ - "sha256:037b2d064c2f8cc8716fe4d39cb705779af3fbf1ba318dc96a1af858888c7bb5", - "sha256:05791e528a18f7072bf5998ba772fe29db4da1234c45c2087866b5ba4dea710e", - "sha256:0d7f0616c557cbc3d1c2090334eddcbb70e1ae3a40b07222d62b3aa47f608fab", - "sha256:0efa742f431529699712b92ecdf22de8ff198df41e43aeaaadf69973eb93f17a", - "sha256:10ad04ac3a122048688387828b4537bc9cf60c0bf4869c1e9989c46e45690b82", - "sha256:167bd504ac1ca2af7ff3b81d245dfea0292c5032ebef9d66cc08a7d28c1b8050", - "sha256:16ce17ceb5d211f320b62df002fa7016b7442ea0fd260c11cec8ce7730954893", - "sha256:214b622259dd0cf435f10241f1333d32caa64dbc27f8790ab693428a141723de", - "sha256:24d6f3128f1b2d20d84b24f4074475457faedc3d4613a7e66b5e769939c7d969", - "sha256:258d9967520cca899695d4eb7ea38be03f06951d6ca2f21fb48b1235f791e601", - "sha256:269bfe913b7d5be12ab13a95f3a76da23cf147be7fa043933320ba5625f0a8de", - "sha256:2727d47fce3ee2bac648528e41455d1b0c46395a087a229deac75e9f88ba5a05", - "sha256:314c24e700d7027ae3ab0d95fbf8d53544fca1f20345fd30cd219b737c6e58d3", - "sha256:3d4ba9a449e9364a936a27322b20d32d8b166553bfe63059bd21527e681e2fad", - "sha256:3d4ed4de17e692ba6415b0587bc7f12bc80915031fc9db46a23ce70fc88c9841", - "sha256:3d58ecaa865c5b9fa56e35efc51d1014d4c0d22838815b9fce57a27dd9576847", - "sha256:4036cc9c7983a2b1f2556d574d2eb2154ac6ed55114761685657e38782b23f52", - "sha256:424538266794db2861db4922b05d729ade0940ee69dcf0591ce8f69784db0e11", - "sha256:4b7589765348d78fb4e5fb6ea35d07564e387da2fc5efff62e0222971f155f68", - "sha256:4c1eeb3fb8eb9e0190bebafd0462936f75717687117339f708f395fe455acc73", - "sha256:4d3ffa07a08657306cd2215b0da53761c4d73cb54d9143b9303a6481ec0cd415", - "sha256:5693e57a065760dcbeb292d60cc4d0231a6d4b6b6f6a3191561e1d5e8820b745", - "sha256:587c38849b853b157706407e9ebdca8fd12f45869edb56defbef2daa5fb0812b", - "sha256:596763d2f9a0ee7eec6e643e29660def2eef297e1de0d334c78c08706f1cb785", - "sha256:59a6e5a265f7cfc05f76e3bb53eca2e0dfe90f05e07e849930fecd6abb8f40b4", - "sha256:5a03eaf7ec24078ad64a07f02e30060aaf22b91dedf31a6b24d0d98d2bba7f48", - "sha256:5ef83b107f50db3f9ae40f69e34b3bd9337456c5a7fe3461c7abf8b75dd666a2", - "sha256:630d0bd7a293ad2fc8b4b94e5758c8b2536fdf36c05f1681270203e463cbfa9b", - "sha256:695340f698a5f56f795b2836abe6fb576e7c53d48cd155ad2f80fd24bc63a040", - "sha256:6fbcee1a8f056af07ecd344482f711f563a9eb1c2cad192e87df00338ec3cdb0", - "sha256:7161edd3426c8d19bdccde7d49e6f27f748f3c31cc350c5de7c633fea445d866", - "sha256:73feb83bb41c32811973b8565f3705caf01d928d972b72042b44e97c71fd70d1", - "sha256:765c0bc8fe46f48e341ef737c91c715bd2a53a12792592296a095f0c237e09cf", - "sha256:7ab934dd13b1c5e94b692b1e01bd87e4488cb746e3a50f798cb9464fd128374b", - "sha256:7db53b5cdd2917b6eaadd0b1251cf4e7d96f4a8d24e174bdbdf2f65b5ea7994d", - "sha256:80027673e9d0bd6aef86134b0771845e2da85755cf686e7c7c59566cf5a89115", - "sha256:81b335f03ba67309a95210caf3eb43bd6fe75a4e22ba653ef97b4696c56c7ec2", - "sha256:865965bf955d92790f1facd64fe7ff73551bd2c1e7e6b26443934e9701ba30b9", - "sha256:8badf70446042553a773547a61fecaa734b55dc738cacf20c56ab04b77425e43", - "sha256:8c934bd088eed6174210942761e38ee81d28c46de0132ebb1801dbe36a390dcc", - "sha256:9516add7256b6713ec08359b7b05aeff8850c98d357784c7205b2e60aa2513fa", - "sha256:9c49e77811cf9d024b95faf86c3f059b11c0c9be0b0d61bc598f453703bd6fd1", - "sha256:9cbabd8f4d0d3dc571d77ae5bdbfa6afe5061e679a9d74b6797c48d143307088", - "sha256:9ed43fa22c6436f7957df036331f8fe4efa7af132054e1844918866cd228af6c", - "sha256:a09c1211959903a479e389685b7feb8a17f59ec5a4ef9afde7650bd5eabc2777", - "sha256:a1839d08406e4cba2953dcc0ffb312252f14d7c4c96919f70167611f4dee2623", - "sha256:a386c1061bf98e7ea4758e4313c0ab5ecf57af341ef0f43a0bf26c2477b5c268", - "sha256:a3b6a5f8b2524fd6c1066bc85bfd97e78709bb5e37b5b94911a6506b65f47186", - "sha256:a3d0e2087dba64c86a6b254f43e12d264b636a39e88c5cc0a01a7c71bcfdab7e", - "sha256:a61e37a403a778e2cda2a6a39abcc895f1d984071942a41074b5c7ee31642007", - "sha256:aef1747ede4bd8ca9cfc04cc3011516500c6891f1b33a94add3253f6f876b7b7", - "sha256:b56efee146c98dbf2cf5cffc61b9829d1e94442df4d7398b26892a53992d3547", - "sha256:b5c2705afa83f49bd91962a4094b6b082f94aef7626365ab3f8f4bd159c5acf3", - "sha256:b679e171f1c104a5668550ada700e3c4937110dbdd153b7ef9055c4f1a1ee3cc", - "sha256:b971bdefdd75096163dd4261c74be813c4508477e39ff7b92191dea19f24cd37", - "sha256:bab7ec4bb501743edc63609320aaec8cd9188b396354f482f4de4d40a9d10721", - "sha256:bc1fbea96343b53f65d5351d8fd3b34fd415a2670d7c300b06d3e14a5af4f552", - "sha256:c6f31f281012235ad08f9a560976cc2fc9c95c17604ff3ab20120fe480169bca", - "sha256:c770885b28fb399aaf2a65bbd1c12bf6f307ffd112d6a76c5231a94276f0c497", - "sha256:c79cae102bb3b1801e2ef1511fb50e91ec83a1ce466b2c7c25010d884336de46", - "sha256:c9f08ea03114a637dab06cedb2e914da9dc67fa52c6015c018ff43fdde25b9c2", - "sha256:ca61691ba8c5b6797deb221a0d09d7470364733ea9c69425a640f1f01b7c5bf0", - "sha256:cacb29f420cfeb9283b803263c3b9a068924474ff19ca126ba9103e1278dfa44", - "sha256:cc3f49e65ea6e0d5d9bd60368684fe52a704d46f9e7fc413918f18d046ec40e1", - "sha256:cdbcd376716d6b7fbfeedd687a6c4be019c5a5671b35f804ba76a4c0a778cba4", - "sha256:ce37f215223af94ef0f75ac68ea096f9f8e8c8ec7d6e8c346ee45c0d363f0479", - "sha256:ce9f3bde4e9b031eaf1eb61df95c1401427029ea1bfddb8621c1161dcb0fa02e", - "sha256:cee6291bb4fed184f1c2b663606a115c743df98a537c969c3c64b49989da96c2", - "sha256:cf9e6ff4ca908ca15c157c409d608da77a56a09877b97c889b98fb2c32b6465e", - "sha256:d06f4fc7acf3cabd6d74941d53329e06bab00a8fe10e4df2714f0b134bfc64ef", - "sha256:d66c0104aec3b75e5fd897e7940188ea1892ca1d0235316bf89286d6a22568c0", - "sha256:d91ebeac603812a09cf6a886ba6e464f3bbb367411904ae3790dfe28311b15ad", - "sha256:d9a03ec6cb9f40a5c360f138b88266fd8f58408d71e89f536b4f91d85721d075", - "sha256:dadbcce51a10c07b7c72b0ce4a25e4b6dcb0c0372846afb8e5b6307a121eb99f", - "sha256:dba82204769d78c3fd31b35c3d5f46e06511936c5019c39f98320e05b08f794d", - "sha256:dbbf012be5f32533a490709ad597ad8a8ff80c582a95adc8d62af664e532f9ca", - "sha256:df01d6c4c81e15a7c88337b795bb7595a8596e92310266b5072c7e301168efbd", - "sha256:e0eb0a2dcc62478eb5b4cbb80b97bdee852d7e280b90e81f11b407d0b81c4287", - "sha256:e24045453384e0ae2a587d562df2a04d852672eb63051d16096d3f08aa4c7c2f", - "sha256:e44a86a47bbdf83b0a3ea4d7df5410d6b1a0de984fbd805fa5101f3624b9abe0", - "sha256:e4dc07e95495923d6fd4d6c27bf70769425b71c89053083843fd78f378558996", - "sha256:e89641f5175d65e2dbb44db15fe4ea48fade5d5bbb9868fdc2b4fce22f4a469d", - "sha256:e9570ad567f880ef675673992222746a124b9595506826b210fbe0ce3f0499cd", - "sha256:eb53f1e8adeeb2e78962bade0c08bfdc461853c7969706ed901821e009b35e31", - "sha256:eb92e47c92fcbcdc692f428da67db33337fa213756f7adb6a011f7b5a7a20740", - "sha256:ef55537ff511b5e0a43edb4c50a7bf7ba1c3eea20b4f49b1490f1e8e0e42c591", - "sha256:f39ae2f63f37472c17b4990f794035c9890418b1b8cca75c01193f3c8d3e01be", - "sha256:f413ce6e07e0d0dc9c433228727b619871532674b45165abafe201f200cc215f", - "sha256:f91f927a3215b8907e214af77200250bb6aae36eca3f760f89780d13e495388d", - "sha256:f9ea02ef40bb83823b2b04964459d281688fe173e20643870bb5d2edf68bc836", - "sha256:fcc0a4aa589de34bc56e1a80a740ee0f8c47611bdfb28cd1849de60660f3799d", - "sha256:fcc15fc462707b0680cff6242c48625da7f9a16a28a41bb8fd7a4280920e676c" + "sha256:004cdcea3457c0ea3233622cd3464c1e32ebba9b41578421097402bee6461b63", + "sha256:0542ddf6107adbd2592f29da9f59f5d9cff7947b5bb4f734805085c327dcffaa", + "sha256:05fd3fb6edff0c98874d752013588836f458261e5eba587afe4c547bba544afd", + "sha256:074e6a5cd38e06671580b4d872c1a67955d4e69639e4b04e87fc03b494c1f060", + "sha256:07bc7745c945a6d95676953e86ba7cebb9f11de7773951c387f4c07dc76d03f5", + "sha256:08c0bcf932e47795c49f0406054824b9d45671362dfc4269e0bc6e4bff010704", + "sha256:097acc18bedf2c6e3144eaf09b5f6034926c3c9bb9e10574ffd0942717232507", + "sha256:0c986537abca9b064510f3fd104ba33e98d3036608c7f2f5537f869bc10e1ee5", + "sha256:0dba4da36730e384669e05b765a2c49f39514dd3012fcc0398dd66fba8d746d5", + "sha256:0e920567f8c3a3ce68ae5a42cf7c2dc4bb6cc389f18bff2235dd8c03fa405de5", + "sha256:0f59387f5e6edbbffec2281affb71cdc85e0776c1745150a3ab9b6c1d016106b", + "sha256:12d821de7408292530b0d241468b698bce18dd12ecaf45316149f53877885f8c", + "sha256:13b2066303a1c1833c654d2af0455bb009b6e1727b3883c9964bc5c2f643c1d0", + "sha256:1410bac9e98afd9623f53876fae7d8a5db9f5a0ac1c9e7c5188463cb4b3212e2", + "sha256:1451464fd855d9bd000c19b71bb7dafea9ab815741fb0bd9e813d9b671462d6f", + "sha256:149eccc85d48c8f06547534068c41d69a1a35322deaa4d69ba1561e2e9127e75", + "sha256:1e33d0bebf895c7a0905fcfaff2b07ab900885fc78bba2a12291a2cfbab014cc", + "sha256:200bb89fd2a8a07780eafcdff6463104dec459f3c838d980455cfa84f5e5e6e1", + "sha256:2376e8a9c889016f25472c452389e98bc6e54a19570b107e27cde9d47f387b64", + "sha256:28c5251b3ab1d23e66f1130ca0c419747edfbcb4690de19467cd616861507af7", + "sha256:2ec27a7a991d229213c8070d31e3ecf44d005d96a9edc30c78eaeafaa421c001", + "sha256:305716afb19133762e8cf62745c46c4853ad6f9eeba54a593e373289e24ea237", + "sha256:31663572f20bf3406d7ac00d6981c7bbbcec302539d26b5ac596ca499664de31", + "sha256:3224c7baf34e923ffc78cb45e793925539d640d42c96646db62dbd61bbcfa131", + "sha256:351511ae28e2509c8d8cae5311577ea7dd511ab8e746ffc8814a0896c3d33fbe", + "sha256:385977d94fc155f8731c895accdfcc3dd0d9dd9ef90d102969df95d3c637ab80", + "sha256:39764c6167c82d68a2d8c97c33dba45ec0ad9172570860e12191416f4f8e6e1b", + "sha256:3e33a968672be1394eded257ec10d4acbb9af2ae263ba05a99ff901bb863557e", + "sha256:4234914b8c67238a3c4af2bba648dc716aa029ca44d01f3d51536d44ac16854f", + "sha256:426559f105f644b69290ea414e154a0d320c3ad8a2bb75e62884731f69cf8e2c", + "sha256:465695268414e149bab754c54b0c45c8ceda73dd4a5c3ba255500da13984b16d", + "sha256:4bec8c7160688bd5a34e65c82984b25409563134d63285d8943d0599efbc448e", + "sha256:4c5627429f7fbff4f4131cfdd6abd530734ef7761116811a707b88b7e205afd7", + "sha256:4ca5f876bf41b24378ee67c41d688155f0e54cdc720de8ef9ad6544005899240", + "sha256:4d4ca49f5ba432b0755ebb0fc3a56be944a19a16bb33802264bbc7311622c0d1", + "sha256:4ebcddfcdfb4c614233cff6e9a3967a09484114a8b2e4f2c7a62dc83676ba13f", + "sha256:4f2bb4ee8dd40f9b2a80bb4adb2aecece9480ba1fa60d9382e8c8e0bd558e2eb", + "sha256:56f909a40d68947ef726ce6a34eb38f0ed241ffbe55c5007c64e616663bcbafc", + "sha256:5b771b59ac0dfb7f139f70c85b42717ef400a6790abb6475ebac1ecee8de782f", + "sha256:603c4414125fc9ae9000f17912dcfd3d3eb677d4e360b85206539240c96ea76e", + "sha256:60ca149a446da255d56c2a7a813b51a80d9497a62250532598d249b3cdb1a926", + "sha256:68c4eb92997dbaaf839ea13527be463178ac0ddd37a7ac636b8bc11a51af2428", + "sha256:6bb599052a974bb6cedfa114f9778fedfad66854107cf81397ec87cb9b8fbcf2", + "sha256:6f033dec603eea88204589175782290a038b436105a8f3637a81c4359df27832", + "sha256:72c8b494bd20ae1c58528b97c4a67d5cfeafcb3845c73542875ecd43924296de", + "sha256:77ffb3b7704eb7b9b3298a01fe4509cef70117a52d50bcba29cffc5f53dd326a", + "sha256:84b892e968164b7a0498ddc5746cdf4e985700b902128421bb5cec1080a6ee36", + "sha256:86d27d2dd7c7c5a44710565933c7dc9cd70e65ef97142e260d16d555667deef7", + "sha256:876a3ee7fd2613eb79602e4cdb39deb6b28c186e76124c3f29e580099ec21a87", + "sha256:8bba7e4743e37484ae17d5c3b8eb1ce78b564cb91b7ace2e2182b25f0f764cb5", + "sha256:8d16bbe566e16a71d123cd66382c1315fcd520c7573652a8074a8fe281b38c6a", + "sha256:8d264402fc179776d43e557e1ca4a7d953020d3ee95f7ec19cc2c9d769277f06", + "sha256:8f067ada2c333609b52835ca4d4868645d3b63ac04fb2b9a658c55bba7f667d3", + "sha256:8f4cbfff5cf01fa07464439a8510affc9df281535f41a1f5312fbd2b59b4ab5c", + "sha256:900580bc99c145e2561ea91a2d207e639171870d8a18756eb57db944a017d4bb", + "sha256:9061a3e3c92b27fd8036dafa26f25d95695b6aa2e4514ab16a254f297e664f83", + "sha256:90a96fcd824564eae6137ec2563bd061d49a32944858d4bdbae5c00fb10e76ac", + "sha256:9245bd392572b9f799261c4c9e7216bafc9405537d0f4ce3ad93afe081a12dc9", + "sha256:9799bd6a910961cb666196b8583ed0ee125fa225c6fdee2cbf00232b861f29d2", + "sha256:9a1d577c20b4334e5e814c3d5fe07fa4a8c3ae42a601945e8d7940bab811d0bd", + "sha256:a6b17c2b5e0b9bb7702449200f93e2d04cb04b1414c41424c08aa1e5d352da76", + "sha256:a730cd0824e8083989f304e97b3f884189efb48e2151e07f57e9e138ab104200", + "sha256:a8258f10059b5ac837232c589a350a2df4a96406d6d5f2a09ec587cbdd539655", + "sha256:ab6212e62ea0e1006531a2234e209607f360d98d18d532c2fa8e403c1afbdd71", + "sha256:abb903ffe46bd319d99979cdba350ae7016759bb69f47882242f7b93f3356055", + "sha256:abcea3b5f0dc44e1d01c27090bc32ce6ffb7aa665f884f1890710454113ea902", + "sha256:ac5d5329c9c942bbe6295f4251b135d860ed9f86acd912d418dce186de7c19ac", + "sha256:adb9b7b42c802bd8cb3927de8c1c26368ce50c8fdaa83a9d8551384d77537044", + "sha256:ae12fe90b00b71a71b69f513773310782ce01d5f58d2ceb2b7c595ab9d222094", + "sha256:b5cd111d3ab7390be0c07ad839235d5ad54d2ca497b5f5db86896098a77180a4", + "sha256:bb9d7efdb063903b3fdf77caec7b77c3066885068bdc0d44bc1b0c171033f944", + "sha256:c0a3b6e32457535df0d41d2d895da46434706dd85dbaf53fbc0d3bd7d914b362", + "sha256:c381a252317f63ca0179d2c7918e83b99a4ff3101e1b24849b999a00f9cd4f86", + "sha256:c713c1c528284d636cd37723b0b4c35c11190da6f932794e145fc40f8210a14a", + "sha256:c8be5bfcdc7832011b2652db29ed7672ce9d353dd19bce5272ca33dbcf60aaa8", + "sha256:c8f563b245b4ddb591e99f28e3cd140b85f114b38b7f95b2e42542f0603eb7d7", + "sha256:ca90ef33a152205fb6f2f0c1f3e55c50df4ef049bb0940ebba666edd4cdebc55", + "sha256:d60bf4d7f886989ddf80e121a7f4d140d9eac91f1d2385ce8eb6bda93d563297", + "sha256:d8750dd20362a1b80e3cf84f58013d4672f89663aee457ea59336df50fab6739", + "sha256:dd9ca2d44ed8018c90efb72f237a2a140325a4c3339971364d758e78b175f58e", + "sha256:e22539b676fafba17f0a90ac725f029a309eb6e483f364c86dcadee060429d46", + "sha256:e2a96fdc7643c9517a317553aca13b5cae9bad9a5f32f4654ce247ae4d321405", + "sha256:e5f4bfac975a2138215a38bda599ef00162e4143541cf7dd186da10a7f8e69f1", + "sha256:e8feeb5e8705835f0622af0fe7ff8d5cb388948454647086494d6c41ec142c2e", + "sha256:eb5069074db19a534de3859c43eec78e962d6d119f637c41c8e028c5ab3f59dd", + "sha256:f0b4101e2b3c6c352ff1f70b3a6fcc7c17c1ab1a91ccb7a33013cb0782af9820", + "sha256:f761dbcf45e9416ec4698e1a7649248005f0064ce3523a47402d1bff4af2779e", + "sha256:f9c96a29c6d65bd36a91f5634fef800212dff69dacdb44345c4c9783943ab0df", + "sha256:fb58da65e3339b3dbe266b607bb936efb983d86b00b03eb04c4ad5b442c58428", + "sha256:fbffc22d80d86fbe456af9abb17f7a7766e7b2101f7edaacc3535501691563f7", + "sha256:fdc5255eb4815babcdf236fa1a806ccb546724c8a9b129fd1ea4a5448a0bf07c", + "sha256:fe3425dc6021f906c6325d3c415e048e7cdb955505a94f1eb774dafc779ba203" ], "markers": "python_version >= '3.10'", - "version": "==7.11.0" + "version": "==7.11.3" }, "coveralls": { "hashes": [ - "sha256:7a6b1fa9848332c7b2221afb20f3df90272ac0167060f41b5fe90429b30b1809", - "sha256:7b2a0a2bcef94f295e3cf28dcc55ca40b71c77d1c2446b538e85f0f7bc21aa69" + "sha256:3940f613eac6b3c14d1425741929e1d15f57666f5e7ae0572bbe92357bd6f7ee", + "sha256:7c21ffa2808d3052fa0cfca3842a9f3d21cc8eada02538c192d932199e5f07d4" ], "index": "pypi", - "markers": "python_version < '3.13' and python_version >= '3.8'", - "version": "==4.0.1" + "markers": "python_version >= '3.10' and python_version < '4.0'", + "version": "==4.0.2" }, "cryptography": { "hashes": [ - "sha256:04911b149eae142ccd8c9a68892a70c21613864afb47aba92d8c7ed9cc001023", - "sha256:07c0eb6657c0e9cca5891f4e35081dbf985c8131825e21d99b4f440a8f496f36", - "sha256:0b507c8e033307e37af61cb9f7159b416173bdf5b41d11c4df2e499a1d8e007c", - "sha256:0c7ffe8c9b1fcbb07a26d7c9fa5e857c2fe80d72d7b9e0353dcf1d2180ae60ee", - "sha256:1a88634851d9b8de8bb53726f4300ab191d3b2f42595e2581a54b26aba71b7cc", - "sha256:1d3b3edd145953832e09607986f2bd86f85d1dc9c48ced41808b18009d9f30e5", - "sha256:1e3b6428a3d56043bff0bb85b41c535734204e599c1c0977e1d0f261b02f3ad5", - "sha256:1fd1a69086926b623ef8126b4c33d5399ce9e2f3fac07c9c734c2a4ec38b6d02", - "sha256:218abd64a2e72f8472c2102febb596793347a3e65fafbb4ad50519969da44470", - "sha256:21b6fc8c71a3f9a604f028a329e5560009cc4a3a828bfea5fcba8eb7647d88fe", - "sha256:27c53b4f6a682a1b645fbf1cd5058c72cf2f5aeba7d74314c36838c7cbc06e0f", - "sha256:2b9cad9cf71d0c45566624ff76654e9bae5f8a25970c250a26ccfc73f8553e2d", - "sha256:2fafb6aa24e702bbf74de4cb23bfa2c3beb7ab7683a299062b69724c92e0fa73", - "sha256:3f37aa12b2d91e157827d90ce78f6180f0c02319468a0aea86ab5a9566da644b", - "sha256:48b983089378f50cba258f7f7aa28198c3f6e13e607eaf10472c26320332ca9a", - "sha256:48c01988ecbb32979bb98731f5c2b2f79042a6c58cc9a319c8c2f9987c7f68f9", - "sha256:4a766d2a5d8127364fd936572c6e6757682fc5dfcbdba1632d4554943199f2fa", - "sha256:512c0250065e0a6b286b2db4bbcc2e67d810acd53eb81733e71314340366279e", - "sha256:5840f05518caa86b09d23f8b9405a7b6d5400085aa14a72a98fdf5cf1568c0d2", - "sha256:5e38f203160a48b93010b07493c15f2babb4e0f2319bbd001885adb3f3696d21", - "sha256:6b275e398ab3a7905e168c036aad54b5969d63d3d9099a0a66cc147a3cc983be", - "sha256:7282d8f092b5be7172d6472f29b0631f39f18512a3642aefe52c3c0e0ccfad5a", - "sha256:747b6f4a4a23d5a215aadd1d0b12233b4119c4313df83ab4137631d43672cc90", - "sha256:758cfc7f4c38c5c5274b55a57ef1910107436f4ae842478c4989abbd24bd5acb", - "sha256:8b16c1ede6a937c291d41176934268e4ccac2c6521c69d3f5961c5a1e11e039e", - "sha256:8b9bf67b11ef9e28f4d78ff88b04ed0929fcd0e4f70bb0f704cfc32a5c6311ee", - "sha256:8e2ad4d1a5899b7caa3a450e33ee2734be7cc0689010964703a7c4bcc8dd4fd0", - "sha256:9066cfd7f146f291869a9898b01df1c9b0e314bfa182cef432043f13fc462c92", - "sha256:91447f2b17e83c9e0c89f133119d83f94ce6e0fb55dd47da0a959316e6e9cfa1", - "sha256:97e83bf4f2f2c084d8dd792d13841d0a9b241643151686010866bbd076b19659", - "sha256:9bd26f2f75a925fdf5e0a446c0de2714f17819bf560b44b7480e4dd632ad6c46", - "sha256:9bdc25e4e01b261a8fda4e98618f1c9515febcecebc9566ddf4a70c63967043b", - "sha256:9ec3f2e2173f36a9679d3b06d3d01121ab9b57c979de1e6a244b98d51fea1b20", - "sha256:9f13b040649bc18e7eb37936009b24fd31ca095a5c647be8bb6aaf1761142bd1", - "sha256:a08e7401a94c002e79dc3bc5231b6558cd4b2280ee525c4673f650a37e2c7685", - "sha256:a61c154cc5488272a6c4b86e8d5beff4639cdb173d75325ce464d723cda0052b", - "sha256:bb7fb9cd44c2582aa5990cf61a4183e6f54eea3172e54963787ba47287edd135", - "sha256:bca3f0ce67e5a2a2cf524e86f44697c4323a86e0fd7ba857de1c30d52c11ede1", - "sha256:bda55e8dbe8533937956c996beaa20266a8eca3570402e52ae52ed60de1faca8", - "sha256:be939b99d4e091eec9a2bcf41aaf8f351f312cd19ff74b5c83480f08a8a43e0b", - "sha256:c4b93af7920cdf80f71650769464ccf1fb49a4b56ae0024173c24c48eb6b1612", - "sha256:cb5e8daac840e8879407acbe689a174f5ebaf344a062f8918e526824eb5d97af", - "sha256:d19f5f48883752b5ab34cff9e2f7e4a7f216296f33714e77d1beb03d108632b6", - "sha256:d30bc11d35743bf4ddf76674a0a369ec8a21f87aaa09b0661b04c5f6c46e8d7b", - "sha256:e12b61e0b86611e3f4c1756686d9086c1d36e6fd15326f5658112ad1f1cc8807", - "sha256:e6f6775eaaa08c0eec73e301f7592f4367ccde5e4e4df8e58320f2ebf161ea2c", - "sha256:e7155c0b004e936d381b15425273aee1cebc94f879c0ce82b0d7fecbf755d53a", - "sha256:e8633996579961f9b5a3008683344c2558d38420029d3c0bc7ff77c17949a4e1", - "sha256:f25a41f5b34b371a06dad3f01799706631331adc7d6c05253f5bca22068c7a34", - "sha256:f3e32ab7dd1b1ef67b9232c4cf5e2ee4cd517d4316ea910acaaa9c5712a1c663", - "sha256:f9b2dc7668418fb6f221e4bf701f716e05e8eadb4f1988a2487b11aedf8abe62", - "sha256:fab8f805e9675e61ed8538f192aad70500fa6afb33a8803932999b1049363a08", - "sha256:fe245cf4a73c20592f0f48da39748b3513db114465be78f0a36da847221bd1b4", - "sha256:ff798ad7a957a5021dcbab78dfff681f0cf15744d0e6af62bd6746984d9c9e9c" + "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217", + "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", + "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", + "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", + "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", + "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", + "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", + "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", + "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", + "sha256:191bb60a7be5e6f54e30ba16fdfae78ad3a342a0599eb4193ba88e3f3d6e185b", + "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20", + "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044", + "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", + "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715", + "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", + "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", + "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f", + "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", + "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", + "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3", + "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21", + "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", + "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c", + "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", + "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df", + "sha256:6b5063083824e5509fdba180721d55909ffacccc8adbec85268b48439423d78c", + "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", + "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7", + "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", + "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db", + "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459", + "sha256:7ce938a99998ed3c8aa7e7272dca1a610401ede816d36d0693907d863b10d9ea", + "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914", + "sha256:9394673a9f4de09e28b5356e7fff97d778f8abad85c9d5ac4a4b7e25a0de7717", + "sha256:94cd0549accc38d1494e1f8de71eca837d0509d0d44bf11d158524b0e12cebf9", + "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", + "sha256:a23582810fedb8c0bc47524558fb6c56aac3fc252cb306072fd2815da2a47c32", + "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", + "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", + "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb", + "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", + "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665", + "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", + "sha256:c70cc23f12726be8f8bc72e41d5065d77e4515efae3690326764ea1b07845cfb", + "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5", + "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", + "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de", + "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372", + "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54", + "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422", + "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", + "sha256:e7aec276d68421f9574040c26e2a7c3771060bc0cff408bae1dcb19d3ab1e63c", + "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", + "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018" ], "markers": "python_version >= '3.8' and python_full_version not in '3.9.0, 3.9.1'", - "version": "==46.0.2" + "version": "==46.0.3" }, "cyclonedx-python-lib": { "hashes": [ - "sha256:55693fca8edaecc3363b24af14e82cc6e659eb1e8353e58b587c42652ce0fb52", - "sha256:86935f2c88a7b47a529b93c724dbd3e903bc573f6f8bd977628a7ca1b5dadea1" + "sha256:1152a42be14b883bdb06fc5fed940a11b85ca788e047a5eff7dcc17b0f38cf98", + "sha256:4304609861bc247afd9b39502e6abb4d47e9c0fbab7d355c2325d5891546abb4" ], "markers": "python_version >= '3.8' and python_version < '4.0'", - "version": "==9.1.0" + "version": "==9.1.1rc1" }, "decorator": { "hashes": [ @@ -988,20 +1000,20 @@ }, "iniconfig": { "hashes": [ - "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", - "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760" + "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", + "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12" ], - "markers": "python_version >= '3.8'", - "version": "==2.1.0" + "markers": "python_version >= '3.10'", + "version": "==2.3.0" }, "ipython": { "hashes": [ - "sha256:5603d6d5d356378be5043e69441a072b50a5b33b4503428c77b04cb8ce7bc731", - "sha256:5f77efafc886d2f023442479b8149e7d86547ad0a979e9da9f045d252f648196" + "sha256:5f6de88c905a566c6a9d6c400a8fed54a638e1f7543d17aae2551133216b1e4e", + "sha256:bce8ac85eb9521adc94e1845b4c03d88365fd6ac2f4908ec4ed1eb1b0a065f9f" ], "index": "pypi", "markers": "python_version >= '3.11'", - "version": "==9.6.0" + "version": "==9.7.0" }, "ipython-pygments-lexers": { "hashes": [ @@ -1148,11 +1160,11 @@ }, "matplotlib-inline": { "hashes": [ - "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", - "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca" + "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76", + "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe" ], - "markers": "python_version >= '3.8'", - "version": "==0.1.7" + "markers": "python_version >= '3.9'", + "version": "==0.2.1" }, "mdurl": { "hashes": [ @@ -1164,12 +1176,12 @@ }, "moto": { "hashes": [ - "sha256:450690abb0b152fea7f93e497ac2172f15d8a838b15f22b514db801a6b857ae4", - "sha256:b9767848953beaf6650f1fd91615a3bcef84d93bd00603fa64dae38c656548e8" + "sha256:792045b345d16a8aa09068ad4a7656894e707c796f0799b438fffb738e8fae7c", + "sha256:8e6186f20b3aa91755d186e47701fe7e47f74e625c36fdf3bd7747da68468b19" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==5.1.14" + "version": "==5.1.16" }, "msgpack": { "hashes": [ @@ -1286,59 +1298,59 @@ }, "mypy-boto3-cloudformation": { "hashes": [ - "sha256:3d82f5504382c86ad195a1b80a2a82f73587c37e1b636864ebb85dd43bd79a5b", - "sha256:64c8fe58ab7661fbb0bdea07c7375d3ebc3875760140feb6ad8f591a08a22647" + "sha256:0fe8599500e58ebf7c9748450ea20bc4d870661225c97a01209096b5475e938a", + "sha256:9c25f2476aea42e05239304ecb90d6c37825b1ac2c6440967560c5930f1bd1c7" ], - "markers": "python_version >= '3.8'", - "version": "==1.40.44" + "markers": "python_version >= '3.9'", + "version": "==1.40.73" }, "mypy-boto3-dynamodb": { "hashes": [ - "sha256:58fa3a638b1caef5644b60f5894e1182a2951feb30a3dc6dedb34e1b0c9ded99", - "sha256:ab978a9d24997d513c5e35bf4aae9b3dfe4f8482a13799180ecefbb1dc93d271" + "sha256:3bf3f541a0d21c249109dd65f18c61b3e6a0fe7124b3afe989877d5cca42b65a", + "sha256:576dd12fe1125754066e7fa480f92c123220970a9d69f7663a56d701f2978ac5" ], "markers": "python_version >= '3.8'", - "version": "==1.40.44" + "version": "==1.40.56" }, "mypy-boto3-ec2": { "hashes": [ - "sha256:207e4b4ac0f10aad7290b34cc50e38c662f630966d24c44c955408411ae299d6", - "sha256:e57ec8f88ad43b1a2d845572c3780f3fbc42ab980f5d3429940dfbd94eabc117" + "sha256:0931ee113958aef2216914c204827ceb02809c467cf175c35a8e94f2a58af8c2", + "sha256:dc59a5d02cea2b5bd0c118803f4ead96bd2574a7821baf015323e5ca73adc302" ], - "markers": "python_version >= '3.8'", - "version": "==1.40.52" + "markers": "python_version >= '3.9'", + "version": "==1.40.74" }, "mypy-boto3-lambda": { "hashes": [ - "sha256:a709e0ac6940783aad08ff5cf98c789a215840bab17e468ca5e22305ad0aea05", - "sha256:a9cf2da625e8b15b31525c16e8278e3efad31002be6c6fc0a82b191042adfb09" + "sha256:c38c68c83d7012661c9f5579ce3360d89e59c5ee3941f7c22accfda90d14091f", + "sha256:ebc7c172df613b21e6f5bdf2b18b998ab9f68088d47c74c523213ee78586afac" ], "markers": "python_version >= '3.8'", - "version": "==1.40.50" + "version": "==1.40.64" }, "mypy-boto3-rds": { "hashes": [ - "sha256:455f6636ac63c4c94aaeaa9376529cc39c0532fb9bcd511c646a0ef4b001d788", - "sha256:7d5506bf7eab2b59266f93261049c2ac25c460f7e09f583abb86980699c3bed5" + "sha256:25e1384177e0edd4ea290889885084882802f861a619866ea34993ccb3d934d7", + "sha256:ae1a23002f103dda0e33ca84fe36af9c2e370ee872671b183433eaaef388ff19" ], - "markers": "python_version >= '3.8'", - "version": "==1.40.50" + "markers": "python_version >= '3.9'", + "version": "==1.40.73" }, "mypy-boto3-s3": { "hashes": [ - "sha256:6d055d16ef89a0133ade92f6b4f09603e4acc31a0f5e8f846edf4eb48f17b5a7", - "sha256:8d2bfd1052894d0e84c9fb9358d838ba0eed0265076c7dd7f45622c770275c99" + "sha256:2655db143cae37fbc68b53aae34fbc5c904925d04b0f263ae7c38fb560b6a85f", + "sha256:51666977f81b6f7a88fe22eaf041b755a2873d0225e481ad5241bb28e6f6bd47" ], "markers": "python_version >= '3.8'", - "version": "==1.40.26" + "version": "==1.40.61" }, "mypy-boto3-sqs": { "hashes": [ - "sha256:719967d5973ab99a1298381023add28da45ee0dca2b5bf4969b7b5e4fc1a5db8", - "sha256:c11f95ee72bddb84f7fecf3000372e01547f36737064b785f1cf34191b87e03f" + "sha256:16d34db653dcf28618b4e422ae32eb2d34f3f937dcee5edd4ca4de3ddb9c3857", + "sha256:32478c2530c39aebb399c0b6824d5c8324ebfd37d7145ce201cd77a989c1f8ca" ], "markers": "python_version >= '3.8'", - "version": "==1.40.35" + "version": "==1.40.61" }, "mypy-extensions": { "hashes": [ @@ -1358,83 +1370,83 @@ }, "numpy": { "hashes": [ - "sha256:035796aaaddfe2f9664b9a9372f089cfc88bd795a67bd1bfe15e6e770934cf64", - "sha256:043885b4f7e6e232d7df4f51ffdef8c36320ee9d5f227b380ea636722c7ed12e", - "sha256:04a69abe45b49c5955923cf2c407843d1c85013b424ae8a560bba16c92fe44a0", - "sha256:0f2bcc76f1e05e5ab58893407c63d90b2029908fa41f9f1cc51eecce936c3365", - "sha256:13b9062e4f5c7ee5c7e5be96f29ba71bc5a37fed3d1d77c37390ae00724d296d", - "sha256:15eea9f306b98e0be91eb344a94c0e630689ef302e10c2ce5f7e11905c704f9c", - "sha256:15fb27364ed84114438fff8aaf998c9e19adbeba08c0b75409f8c452a8692c52", - "sha256:1b219560ae2c1de48ead517d085bc2d05b9433f8e49d0955c82e8cd37bd7bf36", - "sha256:22758999b256b595cf0b1d102b133bb61866ba5ceecf15f759623b64c020c9ec", - "sha256:2ec646892819370cf3558f518797f16597b4e4669894a2ba712caccc9da53f1f", - "sha256:3634093d0b428e6c32c3a69b78e554f0cd20ee420dcad5a9f3b2a63762ce4197", - "sha256:36dc13af226aeab72b7abad501d370d606326a0029b9f435eacb3b8c94b8a8b7", - "sha256:3da3491cee49cf16157e70f607c03a217ea6647b1cea4819c4f48e53d49139b9", - "sha256:40cc556d5abbc54aabe2b1ae287042d7bdb80c08edede19f0c0afb36ae586f37", - "sha256:4121c5beb58a7f9e6dfdee612cb24f4df5cd4db6e8261d7f4d7450a997a65d6a", - "sha256:4635239814149e06e2cb9db3dd584b2fa64316c96f10656983b8026a82e6e4db", - "sha256:4c01835e718bcebe80394fd0ac66c07cbb90147ebbdad3dcecd3f25de2ae7e2c", - "sha256:4ee6a571d1e4f0ea6d5f22d6e5fbd6ed1dc2b18542848e1e7301bd190500c9d7", - "sha256:56209416e81a7893036eea03abcb91c130643eb14233b2515c90dcac963fe99d", - "sha256:5e199c087e2aa71c8f9ce1cb7a8e10677dc12457e7cc1be4798632da37c3e86e", - "sha256:62b2198c438058a20b6704351b35a1d7db881812d8512d67a69c9de1f18ca05f", - "sha256:64c5825affc76942973a70acf438a8ab618dbd692b84cd5ec40a0a0509edc09a", - "sha256:65611ecbb00ac9846efe04db15cbe6186f562f6bb7e5e05f077e53a599225d16", - "sha256:6d34ed9db9e6395bb6cd33286035f73a59b058169733a9db9f85e650b88df37e", - "sha256:6d9cd732068e8288dbe2717177320723ccec4fb064123f0caf9bbd90ab5be868", - "sha256:6e274603039f924c0fe5cb73438fa9246699c78a6df1bd3decef9ae592ae1c05", - "sha256:77b84453f3adcb994ddbd0d1c5d11db2d6bda1a2b7fd5ac5bd4649d6f5dc682e", - "sha256:7c26b0b2bf58009ed1f38a641f3db4be8d960a417ca96d14e5b06df1506d41ff", - "sha256:7fd09cc5d65bda1e79432859c40978010622112e9194e581e3415a3eccc7f43f", - "sha256:817e719a868f0dacde4abdfc5c1910b301877970195db9ab6a5e2c4bd5b121f7", - "sha256:81b3a59793523e552c4a96109dde028aa4448ae06ccac5a76ff6532a85558a7f", - "sha256:81c3e6d8c97295a7360d367f9f8553973651b76907988bb6066376bc2252f24e", - "sha256:838f045478638b26c375ee96ea89464d38428c69170360b23a1a50fa4baa3562", - "sha256:84f01a4d18b2cc4ade1814a08e5f3c907b079c847051d720fad15ce37aa930b6", - "sha256:85597b2d25ddf655495e2363fe044b0ae999b75bc4d630dc0d886484b03a5eb0", - "sha256:85d9fb2d8cd998c84d13a79a09cc0c1091648e848e4e6249b0ccd7f6b487fa26", - "sha256:85e071da78d92a214212cacea81c6da557cab307f2c34b5f85b628e94803f9c0", - "sha256:863e3b5f4d9915aaf1b8ec79ae560ad21f0b8d5e3adc31e73126491bb86dee1d", - "sha256:86966db35c4040fdca64f0816a1c1dd8dbd027d90fca5a57e00e1ca4cd41b879", - "sha256:8ab1c5f5ee40d6e01cbe96de5863e39b215a4d24e7d007cad56c7184fdf4aeef", - "sha256:8b5a9a39c45d852b62693d9b3f3e0fe052541f804296ff401a72a1b60edafb29", - "sha256:8dc20bde86802df2ed8397a08d793da0ad7a5fd4ea3ac85d757bf5dd4ad7c252", - "sha256:957e92defe6c08211eb77902253b14fe5b480ebc5112bc741fd5e9cd0608f847", - "sha256:962064de37b9aef801d33bc579690f8bfe6c5e70e29b61783f60bcba838a14d6", - "sha256:985f1e46358f06c2a09921e8921e2c98168ed4ae12ccd6e5e87a4f1857923f32", - "sha256:9984bd645a8db6ca15d850ff996856d8762c51a2239225288f08f9050ca240a0", - "sha256:9cb177bc55b010b19798dc5497d540dea67fd13a8d9e882b2dae71de0cf09eb3", - "sha256:9d729d60f8d53a7361707f4b68a9663c968882dd4f09e0d58c044c8bf5faee7b", - "sha256:a13fc473b6db0be619e45f11f9e81260f7302f8d180c49a22b6e6120022596b3", - "sha256:a49d797192a8d950ca59ee2d0337a4d804f713bb5c3c50e8db26d49666e351dc", - "sha256:a700a4031bc0fd6936e78a752eefb79092cecad2599ea9c8039c548bc097f9bc", - "sha256:a7b2f9a18b5ff9824a6af80de4f37f4ec3c2aab05ef08f51c77a093f5b89adda", - "sha256:a7d018bfedb375a8d979ac758b120ba846a7fe764911a64465fd87b8729f4a6a", - "sha256:b6c231c9c2fadbae4011ca5e7e83e12dc4a5072f1a1d85a0a7b3ed754d145a40", - "sha256:bafa7d87d4c99752d07815ed7a2c0964f8ab311eb8168f41b910bd01d15b6032", - "sha256:bd0c630cf256b0a7fd9d0a11c9413b42fef5101219ce6ed5a09624f5a65392c7", - "sha256:c090d4860032b857d94144d1a9976b8e36709e40386db289aaf6672de2a81966", - "sha256:c2f91f496a87235c6aaf6d3f3d89b17dba64996abadccb289f48456cff931ca9", - "sha256:d149aee5c72176d9ddbc6803aef9c0f6d2ceeea7626574fc68518da5476fa346", - "sha256:d5e081bc082825f8b139f9e9fe42942cb4054524598aaeb177ff476cc76d09d2", - "sha256:d7315ed1dab0286adca467377c8381cd748f3dc92235f22a7dfc42745644a96a", - "sha256:dabc42f9c6577bcc13001b8810d300fe814b4cfbe8a92c873f269484594f9786", - "sha256:e1708fac43ef8b419c975926ce1eaf793b0c13b7356cfab6ab0dc34c0a02ac0f", - "sha256:e73d63fd04e3a9d6bc187f5455d81abfad05660b212c8804bf3b407e984cd2bc", - "sha256:e78aecd2800b32e8347ce49316d3eaf04aed849cd5b38e0af39f829a4e59f5eb", - "sha256:e8370eb6925bb8c1c4264fec52b0384b44f675f191df91cbe0140ec9f0955646", - "sha256:ecb63014bb7f4ce653f8be7f1df8cbc6093a5a2811211770f6606cc92b5a78fd", - "sha256:ed759bf7a70342f7817d88376eb7142fab9fef8320d6019ef87fae05a99874e1", - "sha256:ef1b5a3e808bc40827b5fa2c8196151a4c5abe110e1726949d7abddfe5c7ae11", - "sha256:f77e5b3d3da652b474cc80a14084927a5e86a5eccf54ca8ca5cbd697bf7f2667", - "sha256:faba246fb30ea2a526c2e9645f61612341de1a83fb1e0c5edf4ddda5a9c10996", - "sha256:fc8a63918b04b8571789688b2780ab2b4a33ab44bfe8ccea36d3eba51228c953", - "sha256:fdebe771ca06bb8d6abce84e51dca9f7921fe6ad34a0c914541b063e9a68928b", - "sha256:fea80f4f4cf83b54c3a051f2f727870ee51e22f0248d3114b8e755d160b38cfb" + "sha256:00dc4e846108a382c5869e77c6ed514394bdeb3403461d25a829711041217d5b", + "sha256:0472f11f6ec23a74a906a00b48a4dcf3849209696dff7c189714511268d103ae", + "sha256:04822c00b5fd0323c8166d66c701dc31b7fbd252c100acd708c48f763968d6a3", + "sha256:052e8c42e0c49d2575621c158934920524f6c5da05a1d3b9bab5d8e259e045f0", + "sha256:09a1bea522b25109bf8e6f3027bd810f7c1085c64a0c7ce050c1676ad0ba010b", + "sha256:0cd00b7b36e35398fa2d16af7b907b65304ef8bb4817a550e06e5012929830fa", + "sha256:0d8163f43acde9a73c2a33605353a4f1bc4798745a8b1d73183b28e5b435ae28", + "sha256:1062fde1dcf469571705945b0f221b73928f34a20c904ffb45db101907c3454e", + "sha256:11e06aa0af8c0f05104d56450d6093ee639e15f24ecf62d417329d06e522e017", + "sha256:17531366a2e3a9e30762c000f2c43a9aaa05728712e25c11ce1dbe700c53ad41", + "sha256:1978155dd49972084bd6ef388d66ab70f0c323ddee6f693d539376498720fb7e", + "sha256:1ed1ec893cff7040a02c8aa1c8611b94d395590d553f6b53629a4461dc7f7b63", + "sha256:2dcd0808a421a482a080f89859a18beb0b3d1e905b81e617a188bd80422d62e9", + "sha256:2e2eb32ddb9ccb817d620ac1d8dae7c3f641c1e5f55f531a33e8ab97960a75b8", + "sha256:2feae0d2c91d46e59fcd62784a3a83b3fb677fead592ce51b5a6fbb4f95965ff", + "sha256:3095bdb8dd297e5920b010e96134ed91d852d81d490e787beca7e35ae1d89cf7", + "sha256:30bc11310e8153ca664b14c5f1b73e94bd0503681fcf136a163de856f3a50139", + "sha256:3101e5177d114a593d79dd79658650fe28b5a0d8abeb8ce6f437c0e6df5be1a4", + "sha256:396084a36abdb603546b119d96528c2f6263921c50df3c8fd7cb28873a237748", + "sha256:3997b5b3c9a771e157f9aae01dd579ee35ad7109be18db0e85dbdbe1de06e952", + "sha256:414802f3b97f3c1eef41e530aaba3b3c1620649871d8cb38c6eaff034c2e16bd", + "sha256:51c1e14eb1e154ebd80e860722f9e6ed6ec89714ad2db2d3aa33c31d7c12179b", + "sha256:51c55fe3451421f3a6ef9a9c1439e82101c57a2c9eab9feb196a62b1a10b58ce", + "sha256:5ee6609ac3604fa7780e30a03e5e241a7956f8e2fcfe547d51e3afa5247ac47f", + "sha256:612a95a17655e213502f60cfb9bf9408efdc9eb1d5f50535cc6eb365d11b42b5", + "sha256:6203fdf9f3dc5bdaed7319ad8698e685c7a3be10819f41d32a0723e611733b42", + "sha256:63c0e9e7eea69588479ebf4a8a270d5ac22763cc5854e9a7eae952a3908103f7", + "sha256:66f85ce62c70b843bab1fb14a05d5737741e74e28c7b8b5a064de10142fad248", + "sha256:6cf9b429b21df6b99f4dee7a1218b8b7ffbbe7df8764dc0bd60ce8a0708fed1e", + "sha256:70b37199913c1bd300ff6e2693316c6f869c7ee16378faf10e4f5e3275b299c3", + "sha256:727fd05b57df37dc0bcf1a27767a3d9a78cbbc92822445f32cc3436ba797337b", + "sha256:74ae7b798248fe62021dbf3c914245ad45d1a6b0cb4a29ecb4b31d0bfbc4cc3e", + "sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0", + "sha256:86945f2ee6d10cdfd67bcb4069c1662dd711f7e2a4343db5cecec06b87cf31aa", + "sha256:86d835afea1eaa143012a2d7a3f45a3adce2d7adc8b4961f0b362214d800846a", + "sha256:872a5cf366aec6bb1147336480fef14c9164b154aeb6542327de4970282cd2f5", + "sha256:8b973c57ff8e184109db042c842423ff4f60446239bd585a5131cc47f06f789d", + "sha256:8cba086a43d54ca804ce711b2a940b16e452807acebe7852ff327f1ecd49b0d4", + "sha256:8f7f0e05112916223d3f438f293abf0727e1181b5983f413dfa2fefc4098245c", + "sha256:900218e456384ea676e24ea6a0417f030a3b07306d29d7ad843957b40a9d8d52", + "sha256:93eebbcf1aafdf7e2ddd44c2923e2672e1010bddc014138b229e49725b4d6be5", + "sha256:9c75442b2209b8470d6d5d8b1c25714270686f14c749028d2199c54e29f20b4d", + "sha256:9ee2197ef8c4f0dfe405d835f3b6a14f5fee7782b5de51ba06fb65fc9b36e9f1", + "sha256:a414504bef8945eae5f2d7cb7be2d4af77c5d1cb5e20b296c2c25b61dff2900c", + "sha256:a4b9159734b326535f4dd01d947f919c6eefd2d9827466a696c44ced82dfbc18", + "sha256:a80afd79f45f3c4a7d341f13acbe058d1ca8ac017c165d3fa0d3de6bc1a079d7", + "sha256:aa5bc7c5d59d831d9773d1170acac7893ce3a5e130540605770ade83280e7188", + "sha256:acfd89508504a19ed06ef963ad544ec6664518c863436306153e13e94605c218", + "sha256:aeffcab3d4b43712bb7a60b65f6044d444e75e563ff6180af8f98dd4b905dfd2", + "sha256:afaffc4393205524af9dfa400fa250143a6c3bc646c08c9f5e25a9f4b4d6a903", + "sha256:b0c7088a73aef3d687c4deef8452a3ac7c1be4e29ed8bf3b366c8111128ac60c", + "sha256:b46b4ec24f7293f23adcd2d146960559aaf8020213de8ad1909dba6c013bf89c", + "sha256:b501b5fa195cc9e24fe102f21ec0a44dffc231d2af79950b451e0d99cea02234", + "sha256:bf06bc2af43fa8d32d30fae16ad965663e966b1a3202ed407b84c989c3221e82", + "sha256:c804e3a5aba5460c73955c955bdbd5c08c354954e9270a2c1565f62e866bdc39", + "sha256:c8a9958e88b65c3b27e22ca2a076311636850b612d6bbfb76e8d156aacde2aaf", + "sha256:cc0a57f895b96ec78969c34f682c602bf8da1a0270b09bc65673df2e7638ec20", + "sha256:cc8920d2ec5fa99875b670bb86ddeb21e295cb07aa331810d9e486e0b969d946", + "sha256:ccc933afd4d20aad3c00bcef049cb40049f7f196e0397f1109dba6fed63267b0", + "sha256:ce581db493ea1a96c0556360ede6607496e8bf9b3a8efa66e06477267bc831e9", + "sha256:d0f23b44f57077c1ede8c5f26b30f706498b4862d3ff0a7298b8411dd2f043ff", + "sha256:d21644de1b609825ede2f48be98dfde4656aefc713654eeee280e37cadc4e0ad", + "sha256:d6889ec4ec662a1a37eb4b4fb26b6100841804dac55bd9df579e326cdc146227", + "sha256:de5672f4a7b200c15a4127042170a694d4df43c992948f5e1af57f0174beed10", + "sha256:e6a0bc88393d65807d751a614207b7129a310ca4fe76a74e5c7da5fa5671417e", + "sha256:ed89927b86296067b4f81f108a2271d8926467a8868e554eaf370fc27fa3ccaf", + "sha256:ee3888d9ff7c14604052b2ca5535a30216aa0a58e948cdd3eeb8d3415f638769", + "sha256:f0963b55cdd70fad460fa4c1341f12f976bb26cb66021a5580329bd498988310", + "sha256:f16417ec91f12f814b10bafe79ef77e70113a2f5f7018640e7425ff979253425", + "sha256:f28620fe26bee16243be2b7b874da327312240a7cdc38b769a697578d2100013", + "sha256:f4255143f5160d0de972d28c8f9665d882b5f61309d8362fdd3e103cf7bf010c", + "sha256:ffac52f28a7849ad7576293c0cb7b9f08304e8f7d738a8cb8a90ec4c55a998eb", + "sha256:ffe22d2b05504f786c867c8395de703937f934272eb67586817b46188b4ded6d", + "sha256:fffe29a1ef00883599d1dc2c51aa2e5d80afe49523c261a74933df395c15c520" ], "markers": "python_version >= '3.11'", - "version": "==2.3.4" + "version": "==2.3.5" }, "packageurl-python": { "hashes": [ @@ -1487,11 +1499,11 @@ }, "pip": { "hashes": [ - "sha256:578283f006390f85bb6282dffb876454593d637f5d1be494b5202ce4877e71f2", - "sha256:6d67a2b4e7f14d8b31b8b52648866fa717f45a1eb70e83002f4331d07e953717" + "sha256:8d0538dbbd7babbd207f261ed969c65de439f6bc9e5dbd3b3b9a77f25d95f343", + "sha256:9655943313a94722b7774661c21049070f6bbb0a1516bf02f7c8d5d9201514cd" ], "markers": "python_version >= '3.9'", - "version": "==25.2" + "version": "==25.3" }, "pip-api": { "hashes": [ @@ -1536,12 +1548,12 @@ }, "pre-commit": { "hashes": [ - "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8", - "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16" + "sha256:b35ea52957cbf83dcc5d8ee636cbead8624e3a15fbfa61a370e42158ac8a5813", + "sha256:f0233ebab440e9f17cabbb558706eb173d19ace965c68cdce2c081042b4fab15" ], "index": "pypi", - "markers": "python_version >= '3.9'", - "version": "==4.3.0" + "markers": "python_version >= '3.10'", + "version": "==4.4.0" }, "prompt-toolkit": { "hashes": [ @@ -1575,61 +1587,69 @@ }, "pyarrow": { "hashes": [ - "sha256:067c66ca29aaedae08218569a114e413b26e742171f526e828e1064fcdec13f4", - "sha256:072116f65604b822a7f22945a7a6e581cfa28e3454fdcc6939d4ff6090126623", - "sha256:0c4e75d13eb76295a49e0ea056eb18dbd87d81450bfeb8afa19a7e5a75ae2ad7", - "sha256:186aa00bca62139f75b7de8420f745f2af12941595bbbfa7ed3870ff63e25636", - "sha256:1e005378c4a2c6db3ada3ad4c217b381f6c886f0a80d6a316fe586b90f77efd7", - "sha256:203003786c9fd253ebcafa44b03c06983c9c8d06c3145e37f1b76a1f317aeae1", - "sha256:222c39e2c70113543982c6b34f3077962b44fca38c0bd9e68bb6781534425c10", - "sha256:26bfd95f6bff443ceae63c65dc7e048670b7e98bc892210acba7e4995d3d4b51", - "sha256:3a302f0e0963db37e0a24a70c56cf91a4faa0bca51c23812279ca2e23481fccd", - "sha256:3a81486adc665c7eb1a2bde0224cfca6ceaba344a82a971ef059678417880eb8", - "sha256:3b4d97e297741796fead24867a8dabf86c87e4584ccc03167e4a811f50fdf74d", - "sha256:40ebfcb54a4f11bcde86bc586cbd0272bac0d516cfa539c799c2453768477569", - "sha256:479ee41399fcddc46159a551705b89c05f11e8b8cb8e968f7fec64f62d91985e", - "sha256:5051f2dccf0e283ff56335760cbc8622cf52264d67e359d5569541ac11b6d5bc", - "sha256:555ca6935b2cbca2c0e932bedd853e9bc523098c39636de9ad4693b5b1df86d6", - "sha256:585e7224f21124dd57836b1530ac8f2df2afc43c861d7bf3d58a4870c42ae36c", - "sha256:58c30a1729f82d201627c173d91bd431db88ea74dcaa3885855bc6203e433b82", - "sha256:6299449adf89df38537837487a4f8d3bd91ec94354fdd2a7d30bc11c48ef6e79", - "sha256:65f8e85f79031449ec8706b74504a316805217b35b6099155dd7e227eef0d4b6", - "sha256:689f448066781856237eca8d1975b98cace19b8dd2ab6145bf49475478bcaa10", - "sha256:69cbbdf0631396e9925e048cfa5bce4e8c3d3b41562bbd70c685a8eb53a91e61", - "sha256:731c7022587006b755d0bdb27626a1a3bb004bb56b11fb30d98b6c1b4718579d", - "sha256:7be45519b830f7c24b21d630a31d48bcebfd5d4d7f9d3bdb49da9cdf6d764edb", - "sha256:898afce396b80fdda05e3086b4256f8677c671f7b1d27a6976fa011d3fd0a86e", - "sha256:8d58d8497814274d3d20214fbb24abcad2f7e351474357d552a8d53bce70c70e", - "sha256:9b0b14b49ac10654332a805aedfc0147fb3469cbf8ea951b3d040dab12372594", - "sha256:9d9f8bcb4c3be7738add259738abdeddc363de1b80e3310e04067aa1ca596634", - "sha256:a7a102574faa3f421141a64c10216e078df467ab9576684d5cd696952546e2da", - "sha256:a7f6524e3747e35f80744537c78e7302cd41deee8baa668d56d55f77d9c464b3", - "sha256:b6b27cf01e243871390474a211a7922bfbe3bda21e39bc9160daf0da3fe48876", - "sha256:b7ae0bbdc8c6674259b25bef5d2a1d6af5d39d7200c819cf99e07f7dfef1c51e", - "sha256:bd04ec08f7f8bd113c55868bd3fc442a9db67c27af098c5f814a3091e71cc61a", - "sha256:c077f48aab61738c237802836fc3844f85409a46015635198761b0d6a688f87b", - "sha256:cdc4c17afda4dab2a9c0b79148a43a7f4e1094916b3e18d8975bfd6d6d52241f", - "sha256:cf56ec8b0a5c8c9d7021d6fd754e688104f9ebebf1bf4449613c9531f5346a18", - "sha256:d2fe8e7f3ce329a71b7ddd7498b3cfac0eeb200c2789bd840234f0dc271a8efe", - "sha256:dc56bc708f2d8ac71bd1dcb927e458c93cec10b98eb4120206a4091db7b67b99", - "sha256:e563271e2c5ff4d4a4cbeb2c83d5cf0d4938b891518e676025f7268c6fe5fe26", - "sha256:e72a8ec6b868e258a2cd2672d91f2860ad532d590ce94cdf7d5e7ec674ccf03d", - "sha256:e99310a4ebd4479bcd1964dff9e14af33746300cb014aa4a3781738ac63baf4a", - "sha256:f522e5709379d72fb3da7785aa489ff0bb87448a9dc5a75f45763a795a089ebd", - "sha256:fc0d2f88b81dcf3ccf9a6ae17f89183762c8a94a5bdcfa09e05cfe413acf0503", - "sha256:fee33b0ca46f4c85443d6c450357101e47d53e6c3f008d658c27a2d020d44c79" + "sha256:001ea83a58024818826a9e3f89bf9310a114f7e26dfe404a4c32686f97bd7901", + "sha256:00626d9dc0f5ef3a75fe63fd68b9c7c8302d2b5bbc7f74ecaedba83447a24f84", + "sha256:0c34fe18094686194f204a3b1787a27456897d8a2d62caf84b61e8dfbc0252ae", + "sha256:12fe549c9b10ac98c91cf791d2945e878875d95508e1a5d14091a7aaa66d9cf8", + "sha256:1a812a5b727bc09c3d7ea072c4eebf657c2f7066155506ba31ebf4792f88f016", + "sha256:252be4a05f9d9185bb8c18e83764ebcfea7185076c07a7a662253af3a8c07941", + "sha256:334f900ff08ce0423407af97e6c26ad5d4e3b0763645559ece6fbf3747d6a8f5", + "sha256:35ad0f0378c9359b3f297299c3309778bb03b8612f987399a0333a560b43862d", + "sha256:3d600dc583260d845c7d8a6db540339dd883081925da2bd1c5cb808f720b3cd9", + "sha256:3e294c5eadfb93d78b0763e859a0c16d4051fc1c5231ae8956d61cb0b5666f5a", + "sha256:3e739edd001b04f654b166204fc7a9de896cf6007eaff33409ee9e50ceaff754", + "sha256:44729980b6c50a5f2bfcc2668d36c569ce17f8b17bccaf470c4313dcbbf13c9d", + "sha256:44d2d26cda26d18f7af7db71453b7b783788322d756e81730acb98f24eb90ace", + "sha256:4c19236ae2402a8663a2c8f21f1870a03cc57f0bef7e4b6eb3238cc82944de80", + "sha256:69763ab2445f632d90b504a815a2a033f74332997052b721002298ed6de40f2e", + "sha256:6dda1ddac033d27421c20d7a7943eec60be44e0db4e079f33cc5af3b8280ccde", + "sha256:6f9762274496c244d951c819348afbcf212714902742225f649cf02823a6a10f", + "sha256:710624ab925dc2b05a6229d47f6f0dac1c1155e6ed559be7109f684eba048a48", + "sha256:7388ac685cab5b279a41dfe0a6ccd99e4dbf322edfb63e02fc0443bf24134e91", + "sha256:77718810bd3066158db1e95a63c160ad7ce08c6b0710bc656055033e39cdad88", + "sha256:7a820d8ae11facf32585507c11f04e3f38343c1e784c9b5a8b1da5c930547fe2", + "sha256:8382ad21458075c2e66a82a29d650f963ce51c7708c7c0ff313a8c206c4fd5e8", + "sha256:84378110dd9a6c06323b41b56e129c504d157d1a983ce8f5443761eb5256bafc", + "sha256:854794239111d2b88b40b6ef92aa478024d1e5074f364033e73e21e3f76b25e0", + "sha256:92843c305330aa94a36e706c16209cd4df274693e777ca47112617db7d0ef3d7", + "sha256:9bddc2cade6561f6820d4cd73f99a0243532ad506bc510a75a5a65a522b2d74d", + "sha256:a4893d31e5ef780b6edcaf63122df0f8d321088bb0dee4c8c06eccb1ca28d145", + "sha256:a9d9ffdc2ab696f6b15b4d1f7cec6658e1d788124418cb30030afbae31c64746", + "sha256:ac93252226cf288753d8b46280f4edf3433bf9508b6977f8dd8526b521a1bbb9", + "sha256:b41f37cabfe2463232684de44bad753d6be08a7a072f6a83447eeaf0e4d2a215", + "sha256:b883fe6fd85adad7932b3271c38ac289c65b7337c2c132e9569f9d3940620730", + "sha256:b9d71701ce97c95480fecb0039ec5bb889e75f110da72005743451339262f4ce", + "sha256:ba95112d15fd4f1105fb2402c4eab9068f0554435e9b7085924bcfaac2cc306f", + "sha256:bba208d9c7decf9961998edf5c65e3ea4355d5818dd6cd0f6809bec1afb951cc", + "sha256:bd0d42297ace400d8febe55f13fdf46e86754842b860c978dfec16f081e5c653", + "sha256:bea79263d55c24a32b0d79c00a1c58bb2ee5f0757ed95656b01c0fb310c5af3d", + "sha256:c064e28361c05d72eed8e744c9605cbd6d2bb7481a511c74071fd9b24bc65d7d", + "sha256:c3200cb41cdbc65156e5f8c908d739b0dfed57e890329413da2748d1a2cd1a4e", + "sha256:c6c791b09c57ed76a18b03f2631753a4960eefbbca80f846da8baefc6491fcfe", + "sha256:c6ec3675d98915bf1ec8b3c7986422682f7232ea76cad276f4c8abd5b7319b70", + "sha256:ce20fe000754f477c8a9125543f1936ea5b8867c5406757c224d745ed033e691", + "sha256:cedb9dd9358e4ea1d9bce3665ce0797f6adf97ff142c8e25b46ba9cdd508e9b6", + "sha256:e0a15757fccb38c410947df156f9749ae4a3c89b2393741a50521f39a8cf202a", + "sha256:e6e95176209257803a8b3d0394f21604e796dadb643d2f7ca21b66c9c0b30c9a", + "sha256:e70ff90c64419709d38c8932ea9fe1cc98415c4f87ea8da81719e43f02534bc9", + "sha256:ec1a15968a9d80da01e1d30349b2b0d7cc91e96588ee324ce1b5228175043e95", + "sha256:ec5d40dd494882704fb876c16fa7261a69791e784ae34e6b5992e977bd2e238c", + "sha256:f633074f36dbc33d5c05b5dc75371e5660f1dbf9c8b1d95669def05e5425989c", + "sha256:f7fe3dbe871294ba70d789be16b6e7e52b418311e166e0e3cba9522f0f437fb1", + "sha256:f963ba8c3b0199f9d6b794c90ec77545e05eadc83973897a4523c9e8d84e9340" ], - "markers": "python_version >= '3.9'", - "version": "==21.0.0" + "index": "pypi", + "markers": "python_version >= '3.10'", + "version": "==22.0.0" }, "pyarrow-stubs": { "hashes": [ - "sha256:5389057a55db3c2662c05f22685a52e15e5effaf4345f41f12fb9b6b348647b9", - "sha256:e802b18e8e5fdf0a78afa05fae78f1456d861fcb1f95ec0234be5d6a5ecdcde2" + "sha256:09da6809f37cc6dbbbf59c9c8e42269290d19ac09f65d2b3456c671f1c3a8765", + "sha256:c0885c09f63e2be51bacb6b0e20b39083f43da1cb214d31e406f982e874bcb5a" ], "index": "pypi", "markers": "python_version >= '3.9' and python_version < '4'", - "version": "==20.0.0.20250928" + "version": "==20.0.0.20251107" }, "pycparser": { "hashes": [ @@ -1649,20 +1669,20 @@ }, "pyparsing": { "hashes": [ - "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", - "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e" + "sha256:659d2246c7c8b35e95c9b28b24f2cf08617ff3c2aa6d6131ac0065a1ce49db1e", + "sha256:b94da344d6cb9db11f8870765917aa7c7c1a3b7cc93b4eb423a33c7a8c68bf2a" ], "markers": "python_version >= '3.9'", - "version": "==3.2.5" + "version": "==3.3.0a1" }, "pytest": { "hashes": [ - "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", - "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79" + "sha256:3e9c069ea73583e255c3b21cf46b8d3c56f6e3a1a8f6da94ccb0fcf57b9d73c8", + "sha256:67be0030d194df2dfa7b556f2e56fb3c3315bd5c8822c6951162b92b32ce7dad" ], "index": "pypi", - "markers": "python_version >= '3.9'", - "version": "==8.4.2" + "markers": "python_version >= '3.10'", + "version": "==9.0.1" }, "pytest-mock": { "hashes": [ @@ -1683,11 +1703,11 @@ }, "pytokens": { "hashes": [ - "sha256:532d6421364e5869ea57a9523bf385f02586d4662acbcc0342afd69511b4dd43", - "sha256:74d4b318c67f4295c13782ddd9abcb7e297ec5630ad060eb90abf7ebbefe59f8" + "sha256:2f932b14ed08de5fcf0b391ace2642f858f1394c0857202959000b68ed7a458a", + "sha256:95b2b5eaf832e469d141a378872480ede3f251a5a5041b8ec6e581d3ac71bbf3" ], "markers": "python_version >= '3.8'", - "version": "==0.2.0" + "version": "==0.3.0" }, "pyyaml": { "hashes": [ @@ -1794,29 +1814,29 @@ }, "ruff": { "hashes": [ - "sha256:16b68e183a0e28e5c176d51004aaa40559e8f90065a10a559176713fcf435206", - "sha256:30a58c087aef4584c193aebf2700f0fbcfc1e77b89c7385e3139956fa90434e2", - "sha256:3ba9a8925e90f861502f7d974cc60e18ca29c72bb0ee8bfeabb6ade35a3abde7", - "sha256:4c63b2d99fafa05efca0ab198fd48fa6030d57e4423df3f18e03aa62518c565f", - "sha256:58e15bffa7054299becf4bab8a1187062c6f8cafbe9f6e39e0d5aface455d6b3", - "sha256:62ec8969b7510f77945df916de15da55311fade8d6050995ff7f680afe582c57", - "sha256:668fce701b7a222f3f5327f86909db2bbe99c30877c8001ff934c5413812ac02", - "sha256:703799d059ba50f745605b04638fa7e9682cc3da084b2092feee63500ff3d9b8", - "sha256:7450a243d7125d1c032cb4b93d9625dea46c8c42b4f06c6b709baac168e10543", - "sha256:7eb0499a2e01f6e0c285afc5bac43ab380cbfc17cd43a2e1dd10ec97d6f2c42d", - "sha256:838d1b065f4df676b7c9957992f2304e41ead7a50a568185efd404297d5701e8", - "sha256:a86bf575e05cb68dcb34e4c7dfe1064d44d3f0c04bbc0491949092192b515296", - "sha256:c958f66ab884b7873e72df38dcabee03d556a8f2ee1b8538ee1c2bbd619883dd", - "sha256:e41f785498bd200ffc276eb9e1570c019c1d907b07cfb081092c8ad51975bbe7", - "sha256:ea95da28cd874c4d9c922b39381cbd69cb7e7b49c21b8152b014bd4f52acddc2", - "sha256:eb732d17db2e945cfcbbc52af0143eda1da36ca8ae25083dd4f66f1542fdf82e", - "sha256:eec3bbbf3a7d5482b5c1f42d5fc972774d71d107d447919fca620b0be3e3b75e", - "sha256:f42c9495f5c13ff841b1da4cb3c2a42075409592825dada7c5885c2c844ac730", - "sha256:f8d07350bc7af0a5ce8812b7d5c1a7293cf02476752f23fdfc500d24b79b783c" + "sha256:2d1fa985a42b1f075a098fa1ab9d472b712bdb17ad87a8ec86e45e7fa6273e68", + "sha256:3676cb02b9061fee7294661071c4709fa21419ea9176087cb77e64410926eb78", + "sha256:410e781f1122d6be4f446981dd479470af86537fb0b8857f27a6e872f65a38e4", + "sha256:4b700459d4649e2594b31f20a9de33bc7c19976d4746d8d0798ad959621d64a4", + "sha256:6d146132d1ee115f8802356a2dc9a634dbf58184c51bff21f313e8cd1c74899a", + "sha256:7497d19dce23976bdaca24345ae131a1d38dcfe1b0850ad8e9e6e4fa321a6e19", + "sha256:88f0770d42b7fa02bbefddde15d235ca3aa24e2f0137388cc15b2dcbb1f7c7a7", + "sha256:8d3b48d7d8aad423d3137af7ab6c8b1e38e4de104800f0d596990f6ada1a9fc1", + "sha256:9d55d7af7166f143c94eae1db3312f9ea8f95a4defef1979ed516dbb38c27621", + "sha256:b595bedf6bc9cab647c4a173a61acf4f1ac5f2b545203ba82f30fcb10b0318fb", + "sha256:c01be527ef4c91a6d55e53b337bfe2c0f82af024cc1a33c44792d6844e2331e1", + "sha256:c135d4b681f7401fe0e7312017e41aba9b3160861105726b76cfa14bc25aa367", + "sha256:c83642e6fccfb6dea8b785eb9f456800dcd6a63f362238af5fc0c83d027dd08b", + "sha256:d93be8f1fa01022337f1f8f3bcaa7ffee2d0b03f00922c45c2207954f351f465", + "sha256:e2380596653dcd20b057794d55681571a257a42327da8894b93bbd6111aa801f", + "sha256:f3b8248123b586de44a8018bcc9fefe31d23dda57a34e6f0e1e53bd51fd63594", + "sha256:f55382725ad0bdb2e8ee2babcbbfb16f124f5a59496a2f6a46f1d9d99d93e6e2", + "sha256:f66e9bb762e68d66e48550b59c74314168ebb46199886c5c5aa0b0fbcc81b151", + "sha256:f7a75236570318c7a30edd7f5491945f0169de738d945ca8784500b517163a72" ], "index": "pypi", "markers": "python_version >= '3.7'", - "version": "==0.14.0" + "version": "==0.14.5" }, "s3transfer": { "hashes": [ @@ -1875,19 +1895,19 @@ }, "types-awscrt": { "hashes": [ - "sha256:66d77ec283e1dc907526a44511a12624118723a396c36d3f3dd9855cb614ce14", - "sha256:d88f43ef779f90b841ba99badb72fe153077225a4e426ae79e943184827b4443" + "sha256:15929da84802f27019ee8e4484fb1c102e1f6d4cf22eb48688c34a5a86d02eb6", + "sha256:2d453f9e27583fcc333771b69a5255a5a4e2c52f86e70f65f3c5a6789d3443d0" ], "markers": "python_version >= '3.8'", - "version": "==0.28.1" + "version": "==0.28.4" }, "types-pytz": { "hashes": [ - "sha256:222e32e6a29bb28871f8834e8785e3801f2dc4441c715cd2082b271eecbe21e5", - "sha256:4f55ed1b43e925cf851a756fe1707e0f5deeb1976e15bf844bcaa025e8fbd0db" + "sha256:0f1c9792cab4eb0e46c52f8845c8f77cf1e313cb3d68bf826aa867fe4717d91c", + "sha256:fca87917836ae843f07129567b74c1929f1870610681b4c92cb86a3df5817bdb" ], "markers": "python_version >= '3.9'", - "version": "==2025.2.0.20250809" + "version": "==2025.2.0.20251108" }, "types-s3transfer": { "hashes": [ @@ -1915,11 +1935,11 @@ }, "virtualenv": { "hashes": [ - "sha256:4f1a845d131133bdff10590489610c98c168ff99dc75d6c96853801f7f67af44", - "sha256:63d106565078d8c8d0b206d48080f938a8b25361e19432d2c9db40d2899c810a" + "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c", + "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b" ], "markers": "python_version >= '3.8'", - "version": "==20.35.3" + "version": "==20.35.4" }, "wcwidth": { "hashes": [ diff --git a/pyproject.toml b/pyproject.toml index 1370ae7..c32f452 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ classifiers = [ dependencies = [ "attrs", "boto3", - "duckdb==1.4.2.dev27", + "duckdb==1.4.2", "duckdb_engine", "pandas", "pyarrow", diff --git a/tests/conftest.py b/tests/conftest.py index e77c1a4..8f1a2df 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -7,9 +7,10 @@ import moto import pytest -from tests.utils import generate_sample_records +from tests.utils import generate_sample_embeddings, generate_sample_records from timdex_dataset_api import TIMDEXDataset, TIMDEXDatasetMetadata from timdex_dataset_api.dataset import TIMDEXDatasetConfig +from timdex_dataset_api.embeddings import DatasetEmbedding from timdex_dataset_api.record import DatasetRecord @@ -305,3 +306,19 @@ def _generate(num_records: int = 100, **kwargs) -> Iterator[DatasetRecord]: return generate_sample_records(num_records=num_records, **kwargs) return _generate + + +@pytest.fixture +def sample_embeddings() -> Iterator[DatasetEmbedding]: + """Generate 100 sample embeddings with default parameters.""" + return generate_sample_embeddings(num_embeddings=100) + + +@pytest.fixture +def sample_embeddings_generator(): + """Factory fixture for generating custom sample embeddings.""" + + def _generate(num_embeddings: int = 100, **kwargs) -> Iterator[DatasetEmbedding]: + return generate_sample_embeddings(num_embeddings=num_embeddings, **kwargs) + + return _generate diff --git a/tests/test_embeddings.py b/tests/test_embeddings.py new file mode 100644 index 0000000..831eda2 --- /dev/null +++ b/tests/test_embeddings.py @@ -0,0 +1,130 @@ +# ruff: noqa: PLR2004 +import json +import math +import os +from datetime import UTC, datetime + +import pyarrow.dataset as ds + +from timdex_dataset_api.embeddings import ( + TIMDEX_DATASET_EMBEDDINGS_SCHEMA, + DatasetEmbedding, + TIMDEXEmbeddings, +) + + +def test_dataset_embedding_init(): + values = { + "timdex_record_id": "alma:123", + "run_id": "test-run-1", + "run_record_offset": 0, + "embedding_model": "sentence-transformers/all-MiniLM-L6-v2", + "embedding_strategy": "full_record", + "timestamp": "2024-12-01T10:00:00+00:00", + "embedding_vector": [0.1, 0.2, 0.3], + "embedding_object": json.dumps( + {"token1": 0.1, "token2": 0.2, "token3": 0.3} + ).encode(), + } + embedding = DatasetEmbedding(**values) + + assert embedding + assert embedding.timdex_record_id == "alma:123" + assert embedding.timestamp == datetime(2024, 12, 1, 10, 0, tzinfo=UTC) + assert embedding.embedding_object == b'{"token1": 0.1, "token2": 0.2, "token3": 0.3}' + + +def test_dataset_embedding_date_properties(): + embedding = DatasetEmbedding( + timdex_record_id="alma:123", + run_id="test-run-1", + run_record_offset=0, + embedding_model="sentence-transformers/all-MiniLM-L6-v2", + embedding_strategy="full_record", + timestamp="2024-12-01T10:00:00+00:00", + embedding_vector=[0.1, 0.2, 0.3], + ) + + assert (embedding.year, embedding.month, embedding.day) == ("2024", "12", "01") + + +def test_dataset_embedding_to_dict(): + values = { + "timdex_record_id": "alma:123", + "run_id": "test-run-1", + "run_record_offset": 0, + "embedding_model": "sentence-transformers/all-MiniLM-L6-v2", + "embedding_strategy": "full_record", + "timestamp": "2024-12-01T10:00:00+00:00", + "embedding_vector": [0.1, 0.2, 0.3], + "embedding_object": None, + } + embedding = DatasetEmbedding(**values) + embedding_dict = embedding.to_dict() + + assert embedding_dict["timdex_record_id"] == "alma:123" + assert embedding_dict["year"] == "2024" + assert embedding_dict["month"] == "12" + assert embedding_dict["day"] == "01" + assert embedding_dict["embedding_vector"] == [0.1, 0.2, 0.3] + + +def test_embeddings_data_root_property(timdex_dataset_empty): + timdex_embeddings = TIMDEXEmbeddings(timdex_dataset_empty) + + expected = f"{timdex_dataset_empty.location.removesuffix('/')}/data/embeddings" + assert timdex_embeddings.data_embeddings_root == expected + + +def test_embeddings_write_basic(timdex_dataset_empty, sample_embeddings_generator): + timdex_embeddings = TIMDEXEmbeddings(timdex_dataset_empty) + written_files = timdex_embeddings.write(sample_embeddings_generator(100)) + + assert len(written_files) == 1 + assert os.path.exists(written_files[0].path) + + # verify written data can be read + dataset = ds.dataset( + timdex_embeddings.data_embeddings_root, format="parquet", partitioning="hive" + ) + assert dataset.count_rows() == 100 + + +def test_embeddings_write_partitioning(timdex_dataset_empty, sample_embeddings_generator): + timdex_embeddings = TIMDEXEmbeddings(timdex_dataset_empty) + written_files = timdex_embeddings.write(sample_embeddings_generator(10)) + + assert len(written_files) == 1 + assert "year=2024/month=12/day=01" in written_files[0].path + + +def test_embeddings_write_schema_applied( + timdex_dataset_empty, sample_embeddings_generator +): + timdex_embeddings = TIMDEXEmbeddings(timdex_dataset_empty) + timdex_embeddings.write(sample_embeddings_generator(10)) + + # manually load dataset to confirm schema + dataset = ds.dataset( + timdex_embeddings.data_embeddings_root, + format="parquet", + partitioning="hive", + ) + + assert set(dataset.schema.names) == set(TIMDEX_DATASET_EMBEDDINGS_SCHEMA.names) + + +def test_embeddings_create_batches(timdex_dataset_empty, sample_embeddings_generator): + timdex_embeddings = TIMDEXEmbeddings(timdex_dataset_empty) + total_embeddings = 101 + timdex_dataset_empty.config.write_batch_size = 50 + + batches = list( + timdex_embeddings.create_embedding_batches( + sample_embeddings_generator(total_embeddings) + ) + ) + + assert len(batches) == math.ceil( + total_embeddings / timdex_dataset_empty.config.write_batch_size + ) diff --git a/tests/utils.py b/tests/utils.py index 5f455a2..f6de49b 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -2,11 +2,13 @@ # ruff: noqa: S311 +import json import random import uuid from collections.abc import Iterator from timdex_dataset_api import DatasetRecord +from timdex_dataset_api.embeddings import DatasetEmbedding def generate_sample_records( @@ -58,3 +60,37 @@ def generate_sample_records_with_simulated_partitions( action=random.choice(actions), ) records_remaining -= batch_size + + +def generate_sample_embeddings( + num_embeddings: int, + source: str | None = "alma", + embedding_model: str | None = "super-org/amazing-model", + embedding_strategy: str | None = "full_record", + run_id: str | None = None, + timestamp: str | None = "2024-12-01T00:00:00+00:00", +) -> Iterator[DatasetEmbedding]: + """Generate sample DatasetEmbeddings.""" + if not run_id: + run_id = str(uuid.uuid4()) + + for x in range(num_embeddings): + embedding_vector = [random.random() for _ in range(768)] + embedding_object = json.dumps( + { + "token1": 0.1, + "token2": 0.2, + "token3": 0.3, + } + ).encode() + + yield DatasetEmbedding( + timdex_record_id=f"{source}:{x}", + run_id=run_id, + run_record_offset=x, + embedding_model=embedding_model, + embedding_strategy=embedding_strategy, + timestamp=timestamp, + embedding_vector=embedding_vector, + embedding_object=embedding_object, + ) diff --git a/timdex_dataset_api/__init__.py b/timdex_dataset_api/__init__.py index b60fae2..e2da0b5 100644 --- a/timdex_dataset_api/__init__.py +++ b/timdex_dataset_api/__init__.py @@ -4,7 +4,7 @@ from timdex_dataset_api.metadata import TIMDEXDatasetMetadata from timdex_dataset_api.record import DatasetRecord -__version__ = "3.5.0" +__version__ = "3.6.0" __all__ = [ "DatasetRecord", diff --git a/timdex_dataset_api/embeddings.py b/timdex_dataset_api/embeddings.py new file mode 100644 index 0000000..56e2213 --- /dev/null +++ b/timdex_dataset_api/embeddings.py @@ -0,0 +1,183 @@ +import itertools +import logging +import time +import uuid +from collections.abc import Iterator +from datetime import UTC, datetime + +import attrs +import pyarrow as pa +import pyarrow.dataset as ds +from attrs import asdict, define, field + +from timdex_dataset_api import TIMDEXDataset +from timdex_dataset_api.record import datetime_iso_parse + +logger = logging.getLogger(__name__) + +TIMDEX_DATASET_EMBEDDINGS_SCHEMA = pa.schema( + ( + pa.field("timdex_record_id", pa.string()), + pa.field("run_id", pa.string()), + pa.field("run_record_offset", pa.int32()), + pa.field("timestamp", pa.timestamp("us", tz="UTC")), + pa.field("embedding_model", pa.string()), + pa.field("embedding_strategy", pa.string()), + pa.field("embedding_vector", pa.list_(pa.float32())), + pa.field("embedding_object", pa.binary()), + pa.field("year", pa.string()), + pa.field("month", pa.string()), + pa.field("day", pa.string()), + ) +) + + +@define +class DatasetEmbedding: + """Container for single record embedding. + + Fields: + timdex_record_id: Fields (timdex_record_id, run_id, run_record_offset) combine to + form a composite key that points to a single, distinct record version in the + records data. + run_id: ... + run_record_offset: ... + embedding_model: Embedding model name, e.g. HuggingFace URI + embedding_strategy: Strategy used to create embedding + - this correlates to a transformation strategy in the timdex-embeddings CLI + application, e.g. "full_record" + timestamp: Timestamp when embedding was created + embedding_vector: Numerical vector representation of embedding + - preferred form for storing embedding as a numerical array + embedding_object: Object representation of the embedding + - example: {token:weight, ...} representation for sparse vector + - flexible enough to hold other representations + """ + + timdex_record_id: str = field() + run_id: str = field() + run_record_offset: int = field() + embedding_model: str = field() + embedding_strategy: str = field() + timestamp: datetime = field( # type: ignore[assignment] + converter=datetime_iso_parse, + default=attrs.Factory(lambda: datetime.now(tz=UTC).isoformat()), + ) + embedding_vector: list[float] = field(default=None) + embedding_object: bytes = field(default=None) + + @property + def year(self) -> str: + return self.timestamp.strftime("%Y") + + @property + def month(self) -> str: + return self.timestamp.strftime("%m") + + @property + def day(self) -> str: + return self.timestamp.strftime("%d") + + def to_dict( + self, + ) -> dict: + """Serialize instance as dictionary.""" + return { + **asdict(self), + "year": self.year, + "month": self.month, + "day": self.day, + } + + +class TIMDEXEmbeddings: + + def __init__(self, timdex_dataset: TIMDEXDataset): + """Init TIMDEXEmbeddings. + + Class to handle the writing and readings of embeddings associated with TIMDEX + records. + + Args: + - timdex_dataset: instance of TIMDEXDataset + """ + self.timdex_dataset = timdex_dataset + + self.schema = TIMDEX_DATASET_EMBEDDINGS_SCHEMA + self.partition_columns = ["year", "month", "day"] + + @property + def data_embeddings_root(self) -> str: + return f"{self.timdex_dataset.location.removesuffix('/')}/data/embeddings" + + def write( + self, + embeddings_iter: Iterator[DatasetEmbedding], + *, + use_threads: bool = True, + ) -> list[ds.WrittenFile]: + """Write embeddings as parquet files to /data/embeddings. + + Approach is similar to TIMDEXDataset.write() for Records: + - use self.data_embeddings_root for location of embeddings parquet files + - use pyarrow Dataset to write rows + """ + start_time = time.perf_counter() + written_files: list[ds.WrittenFile] = [] + + filesystem, path = self.timdex_dataset.parse_location(self.data_embeddings_root) + + embedding_batches_iter = self.create_embedding_batches(embeddings_iter) + ds.write_dataset( + embedding_batches_iter, + base_dir=path, + basename_template="%s-{i}.parquet" % (str(uuid.uuid4())), # noqa: UP031 + existing_data_behavior="overwrite_or_ignore", + filesystem=filesystem, + file_visitor=lambda written_file: written_files.append(written_file), # type: ignore[arg-type] + format="parquet", + max_open_files=500, + max_rows_per_file=self.timdex_dataset.config.max_rows_per_file, + max_rows_per_group=self.timdex_dataset.config.max_rows_per_group, + partitioning=self.partition_columns, + partitioning_flavor="hive", + schema=self.schema, + use_threads=use_threads, + ) + + self.log_write_statistics(start_time, written_files) + + return written_files + + def create_embedding_batches( + self, embeddings_iter: Iterator["DatasetEmbedding"] + ) -> Iterator[pa.RecordBatch]: + for i, embedding_batch in enumerate( + itertools.batched( + embeddings_iter, self.timdex_dataset.config.write_batch_size + ) + ): + embedding_dicts = [embedding.to_dict() for embedding in embedding_batch] + batch = pa.RecordBatch.from_pylist(embedding_dicts) + logger.debug(f"Yielding batch {i + 1} for dataset writing.") + yield batch + + def log_write_statistics( + self, + start_time: float, + written_files: list[ds.WrittenFile], + ) -> None: + """Parse written files from write and log statistics.""" + total_time = round(time.perf_counter() - start_time, 2) + total_files = len(written_files) + total_rows = sum( + [wf.metadata.num_rows for wf in written_files] # type: ignore[attr-defined] + ) + total_size = sum([wf.size for wf in written_files]) # type: ignore[attr-defined] + logger.info( + f"Dataset write complete - elapsed: " + f"{total_time}s, " + f"total files: {total_files}, " + f"total rows: {total_rows}, " + f"total size: {total_size}" + )