From c49787f780e2f2f865b6a4c8ecc6861361b7b3ee Mon Sep 17 00:00:00 2001 From: Gerald Iakobinyi-Pich Date: Mon, 24 Jul 2023 13:20:57 +0200 Subject: [PATCH] feat(cgrants): adding command to import contributions made on the allo protocol --- api/Pipfile | 2 + api/Pipfile.lock | 683 +++++++++--------- api/cgrants/admin.py | 25 +- .../management/commands/import_allo_votes.py | 148 ++++ ...=> 0005_protocolcontributions_and_more.py} | 34 +- api/cgrants/models.py | 23 +- api/scorer/scorer_admin.py | 27 + api/scorer/settings/__init__.py | 1 + api/scorer/settings/base.py | 10 + api/scorer/settings/s3.py | 7 + interface/.env.example | 6 + 11 files changed, 623 insertions(+), 343 deletions(-) create mode 100644 api/cgrants/management/commands/import_allo_votes.py rename api/cgrants/migrations/{0005_protocolcontributions.py => 0005_protocolcontributions_and_more.py} (56%) create mode 100644 api/scorer/scorer_admin.py create mode 100644 api/scorer/settings/s3.py diff --git a/api/Pipfile b/api/Pipfile index 746ddd3c1..ba70e0780 100644 --- a/api/Pipfile +++ b/api/Pipfile @@ -34,6 +34,8 @@ django-structlog = "*" django-ipware = "*" django-debug-toolbar = "*" django-filter = "*" +boto3 = "*" +tqdm = "*" [dev-packages] black = "*" diff --git a/api/Pipfile.lock b/api/Pipfile.lock index fc69ec4e6..91b1f3822 100644 --- a/api/Pipfile.lock +++ b/api/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "c37bd722a72784ec61431c6dd9ade286ff6c1d41f9878191a94a6760384fb68e" + "sha256": "140f65c83b50231295494e6949fb74cf40003913497c57844897b66d71bf5470" }, "pipfile-spec": 6, "requires": { @@ -26,96 +26,96 @@ }, "aiohttp": { "hashes": [ - "sha256:03543dcf98a6619254b409be2d22b51f21ec66272be4ebda7b04e6412e4b2e14", - "sha256:03baa76b730e4e15a45f81dfe29a8d910314143414e528737f8589ec60cf7391", - "sha256:0a63f03189a6fa7c900226e3ef5ba4d3bd047e18f445e69adbd65af433add5a2", - "sha256:10c8cefcff98fd9168cdd86c4da8b84baaa90bf2da2269c6161984e6737bf23e", - "sha256:147ae376f14b55f4f3c2b118b95be50a369b89b38a971e80a17c3fd623f280c9", - "sha256:176a64b24c0935869d5bbc4c96e82f89f643bcdf08ec947701b9dbb3c956b7dd", - "sha256:17b79c2963db82086229012cff93ea55196ed31f6493bb1ccd2c62f1724324e4", - "sha256:1a45865451439eb320784918617ba54b7a377e3501fb70402ab84d38c2cd891b", - "sha256:1b3ea7edd2d24538959c1c1abf97c744d879d4e541d38305f9bd7d9b10c9ec41", - "sha256:22f6eab15b6db242499a16de87939a342f5a950ad0abaf1532038e2ce7d31567", - "sha256:3032dcb1c35bc330134a5b8a5d4f68c1a87252dfc6e1262c65a7e30e62298275", - "sha256:33587f26dcee66efb2fff3c177547bd0449ab7edf1b73a7f5dea1e38609a0c54", - "sha256:34ce9f93a4a68d1272d26030655dd1b58ff727b3ed2a33d80ec433561b03d67a", - "sha256:3a80464982d41b1fbfe3154e440ba4904b71c1a53e9cd584098cd41efdb188ef", - "sha256:3b90467ebc3d9fa5b0f9b6489dfb2c304a1db7b9946fa92aa76a831b9d587e99", - "sha256:3d89efa095ca7d442a6d0cbc755f9e08190ba40069b235c9886a8763b03785da", - "sha256:3d8ef1a630519a26d6760bc695842579cb09e373c5f227a21b67dc3eb16cfea4", - "sha256:3f43255086fe25e36fd5ed8f2ee47477408a73ef00e804cb2b5cba4bf2ac7f5e", - "sha256:40653609b3bf50611356e6b6554e3a331f6879fa7116f3959b20e3528783e699", - "sha256:41a86a69bb63bb2fc3dc9ad5ea9f10f1c9c8e282b471931be0268ddd09430b04", - "sha256:493f5bc2f8307286b7799c6d899d388bbaa7dfa6c4caf4f97ef7521b9cb13719", - "sha256:4a6cadebe132e90cefa77e45f2d2f1a4b2ce5c6b1bfc1656c1ddafcfe4ba8131", - "sha256:4c745b109057e7e5f1848c689ee4fb3a016c8d4d92da52b312f8a509f83aa05e", - "sha256:4d347a172f866cd1d93126d9b239fcbe682acb39b48ee0873c73c933dd23bd0f", - "sha256:4dac314662f4e2aa5009977b652d9b8db7121b46c38f2073bfeed9f4049732cd", - "sha256:4ddaae3f3d32fc2cb4c53fab020b69a05c8ab1f02e0e59665c6f7a0d3a5be54f", - "sha256:5393fb786a9e23e4799fec788e7e735de18052f83682ce2dfcabaf1c00c2c08e", - "sha256:59f029a5f6e2d679296db7bee982bb3d20c088e52a2977e3175faf31d6fb75d1", - "sha256:5a7bdf9e57126dc345b683c3632e8ba317c31d2a41acd5800c10640387d193ed", - "sha256:5b3f2e06a512e94722886c0827bee9807c86a9f698fac6b3aee841fab49bbfb4", - "sha256:5ce45967538fb747370308d3145aa68a074bdecb4f3a300869590f725ced69c1", - "sha256:5e14f25765a578a0a634d5f0cd1e2c3f53964553a00347998dfdf96b8137f777", - "sha256:618c901dd3aad4ace71dfa0f5e82e88b46ef57e3239fc7027773cb6d4ed53531", - "sha256:652b1bff4f15f6287550b4670546a2947f2a4575b6c6dff7760eafb22eacbf0b", - "sha256:6c08e8ed6fa3d477e501ec9db169bfac8140e830aa372d77e4a43084d8dd91ab", - "sha256:6ddb2a2026c3f6a68c3998a6c47ab6795e4127315d2e35a09997da21865757f8", - "sha256:6e601588f2b502c93c30cd5a45bfc665faaf37bbe835b7cfd461753068232074", - "sha256:6e74dd54f7239fcffe07913ff8b964e28b712f09846e20de78676ce2a3dc0bfc", - "sha256:7235604476a76ef249bd64cb8274ed24ccf6995c4a8b51a237005ee7a57e8643", - "sha256:7ab43061a0c81198d88f39aaf90dae9a7744620978f7ef3e3708339b8ed2ef01", - "sha256:7c7837fe8037e96b6dd5cfcf47263c1620a9d332a87ec06a6ca4564e56bd0f36", - "sha256:80575ba9377c5171407a06d0196b2310b679dc752d02a1fcaa2bc20b235dbf24", - "sha256:80a37fe8f7c1e6ce8f2d9c411676e4bc633a8462844e38f46156d07a7d401654", - "sha256:8189c56eb0ddbb95bfadb8f60ea1b22fcfa659396ea36f6adcc521213cd7b44d", - "sha256:854f422ac44af92bfe172d8e73229c270dc09b96535e8a548f99c84f82dde241", - "sha256:880e15bb6dad90549b43f796b391cfffd7af373f4646784795e20d92606b7a51", - "sha256:8b631e26df63e52f7cce0cce6507b7a7f1bc9b0c501fcde69742130b32e8782f", - "sha256:8c29c77cc57e40f84acef9bfb904373a4e89a4e8b74e71aa8075c021ec9078c2", - "sha256:91f6d540163f90bbaef9387e65f18f73ffd7c79f5225ac3d3f61df7b0d01ad15", - "sha256:92c0cea74a2a81c4c76b62ea1cac163ecb20fb3ba3a75c909b9fa71b4ad493cf", - "sha256:9bcb89336efa095ea21b30f9e686763f2be4478f1b0a616969551982c4ee4c3b", - "sha256:a1f4689c9a1462f3df0a1f7e797791cd6b124ddbee2b570d34e7f38ade0e2c71", - "sha256:a3fec6a4cb5551721cdd70473eb009d90935b4063acc5f40905d40ecfea23e05", - "sha256:a5d794d1ae64e7753e405ba58e08fcfa73e3fad93ef9b7e31112ef3c9a0efb52", - "sha256:a86d42d7cba1cec432d47ab13b6637bee393a10f664c425ea7b305d1301ca1a3", - "sha256:adfbc22e87365a6e564c804c58fc44ff7727deea782d175c33602737b7feadb6", - "sha256:aeb29c84bb53a84b1a81c6c09d24cf33bb8432cc5c39979021cc0f98c1292a1a", - "sha256:aede4df4eeb926c8fa70de46c340a1bc2c6079e1c40ccf7b0eae1313ffd33519", - "sha256:b744c33b6f14ca26b7544e8d8aadff6b765a80ad6164fb1a430bbadd593dfb1a", - "sha256:b7a00a9ed8d6e725b55ef98b1b35c88013245f35f68b1b12c5cd4100dddac333", - "sha256:bb96fa6b56bb536c42d6a4a87dfca570ff8e52de2d63cabebfd6fb67049c34b6", - "sha256:bbcf1a76cf6f6dacf2c7f4d2ebd411438c275faa1dc0c68e46eb84eebd05dd7d", - "sha256:bca5f24726e2919de94f047739d0a4fc01372801a3672708260546aa2601bf57", - "sha256:bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c", - "sha256:c4eb3b82ca349cf6fadcdc7abcc8b3a50ab74a62e9113ab7a8ebc268aad35bb9", - "sha256:c6cc15d58053c76eacac5fa9152d7d84b8d67b3fde92709195cb984cfb3475ea", - "sha256:c6cd05ea06daca6ad6a4ca3ba7fe7dc5b5de063ff4daec6170ec0f9979f6c332", - "sha256:c844fd628851c0bc309f3c801b3a3d58ce430b2ce5b359cd918a5a76d0b20cb5", - "sha256:c9cb1565a7ad52e096a6988e2ee0397f72fe056dadf75d17fa6b5aebaea05622", - "sha256:cab9401de3ea52b4b4c6971db5fb5c999bd4260898af972bf23de1c6b5dd9d71", - "sha256:cd468460eefef601ece4428d3cf4562459157c0f6523db89365202c31b6daebb", - "sha256:d1e6a862b76f34395a985b3cd39a0d949ca80a70b6ebdea37d3ab39ceea6698a", - "sha256:d1f9282c5f2b5e241034a009779e7b2a1aa045f667ff521e7948ea9b56e0c5ff", - "sha256:d265f09a75a79a788237d7f9054f929ced2e69eb0bb79de3798c468d8a90f945", - "sha256:db3fc6120bce9f446d13b1b834ea5b15341ca9ff3f335e4a951a6ead31105480", - "sha256:dbf3a08a06b3f433013c143ebd72c15cac33d2914b8ea4bea7ac2c23578815d6", - "sha256:de04b491d0e5007ee1b63a309956eaed959a49f5bb4e84b26c8f5d49de140fa9", - "sha256:e4b09863aae0dc965c3ef36500d891a3ff495a2ea9ae9171e4519963c12ceefd", - "sha256:e595432ac259af2d4630008bf638873d69346372d38255774c0e286951e8b79f", - "sha256:e75b89ac3bd27d2d043b234aa7b734c38ba1b0e43f07787130a0ecac1e12228a", - "sha256:ea9eb976ffdd79d0e893869cfe179a8f60f152d42cb64622fca418cd9b18dc2a", - "sha256:eafb3e874816ebe2a92f5e155f17260034c8c341dad1df25672fb710627c6949", - "sha256:ee3c36df21b5714d49fc4580247947aa64bcbe2939d1b77b4c8dcb8f6c9faecc", - "sha256:f352b62b45dff37b55ddd7b9c0c8672c4dd2eb9c0f9c11d395075a84e2c40f75", - "sha256:fabb87dd8850ef0f7fe2b366d44b77d7e6fa2ea87861ab3844da99291e81e60f", - "sha256:fe11310ae1e4cd560035598c3f29d86cef39a83d244c7466f95c27ae04850f10", - "sha256:fe7ba4a51f33ab275515f66b0a236bcde4fb5561498fe8f898d4e549b2e4509f" + "sha256:00ad4b6f185ec67f3e6562e8a1d2b69660be43070bd0ef6fcec5211154c7df67", + "sha256:0175d745d9e85c40dcc51c8f88c74bfbaef9e7afeeeb9d03c37977270303064c", + "sha256:01d4c0c874aa4ddfb8098e85d10b5e875a70adc63db91f1ae65a4b04d3344cda", + "sha256:043d2299f6dfdc92f0ac5e995dfc56668e1587cea7f9aa9d8a78a1b6554e5755", + "sha256:0c413c633d0512df4dc7fd2373ec06cc6a815b7b6d6c2f208ada7e9e93a5061d", + "sha256:0d21c684808288a98914e5aaf2a7c6a3179d4df11d249799c32d1808e79503b5", + "sha256:0e584a10f204a617d71d359fe383406305a4b595b333721fa50b867b4a0a1548", + "sha256:1274477e4c71ce8cfe6c1ec2f806d57c015ebf84d83373676036e256bc55d690", + "sha256:13bf85afc99ce6f9ee3567b04501f18f9f8dbbb2ea11ed1a2e079670403a7c84", + "sha256:153c2549f6c004d2754cc60603d4668899c9895b8a89397444a9c4efa282aaf4", + "sha256:1f7372f7341fcc16f57b2caded43e81ddd18df53320b6f9f042acad41f8e049a", + "sha256:23fb25a9f0a1ca1f24c0a371523546366bb642397c94ab45ad3aedf2941cec6a", + "sha256:28c543e54710d6158fc6f439296c7865b29e0b616629767e685a7185fab4a6b9", + "sha256:2a482e6da906d5e6e653be079b29bc173a48e381600161c9932d89dfae5942ef", + "sha256:2ad5c3c4590bb3cc28b4382f031f3783f25ec223557124c68754a2231d989e2b", + "sha256:2ce2ac5708501afc4847221a521f7e4b245abf5178cf5ddae9d5b3856ddb2f3a", + "sha256:2cf57fb50be5f52bda004b8893e63b48530ed9f0d6c96c84620dc92fe3cd9b9d", + "sha256:2e1b1e51b0774408f091d268648e3d57f7260c1682e7d3a63cb00d22d71bb945", + "sha256:2e2e9839e14dd5308ee773c97115f1e0a1cb1d75cbeeee9f33824fa5144c7634", + "sha256:2e460be6978fc24e3df83193dc0cc4de46c9909ed92dd47d349a452ef49325b7", + "sha256:312fcfbacc7880a8da0ae8b6abc6cc7d752e9caa0051a53d217a650b25e9a691", + "sha256:33279701c04351a2914e1100b62b2a7fdb9a25995c4a104259f9a5ead7ed4802", + "sha256:33776e945d89b29251b33a7e7d006ce86447b2cfd66db5e5ded4e5cd0340585c", + "sha256:34dd0c107799dcbbf7d48b53be761a013c0adf5571bf50c4ecad5643fe9cfcd0", + "sha256:3562b06567c06439d8b447037bb655ef69786c590b1de86c7ab81efe1c9c15d8", + "sha256:368a42363c4d70ab52c2c6420a57f190ed3dfaca6a1b19afda8165ee16416a82", + "sha256:4149d34c32f9638f38f544b3977a4c24052042affa895352d3636fa8bffd030a", + "sha256:461908b2578955045efde733719d62f2b649c404189a09a632d245b445c9c975", + "sha256:4a01951fabc4ce26ab791da5f3f24dca6d9a6f24121746eb19756416ff2d881b", + "sha256:4e874cbf8caf8959d2adf572a78bba17cb0e9d7e51bb83d86a3697b686a0ab4d", + "sha256:4f21e83f355643c345177a5d1d8079f9f28b5133bcd154193b799d380331d5d3", + "sha256:5443910d662db951b2e58eb70b0fbe6b6e2ae613477129a5805d0b66c54b6cb7", + "sha256:5798a9aad1879f626589f3df0f8b79b3608a92e9beab10e5fda02c8a2c60db2e", + "sha256:5d20003b635fc6ae3f96d7260281dfaf1894fc3aa24d1888a9b2628e97c241e5", + "sha256:5db3a5b833764280ed7618393832e0853e40f3d3e9aa128ac0ba0f8278d08649", + "sha256:5ed1c46fb119f1b59304b5ec89f834f07124cd23ae5b74288e364477641060ff", + "sha256:62360cb771707cb70a6fd114b9871d20d7dd2163a0feafe43fd115cfe4fe845e", + "sha256:6809a00deaf3810e38c628e9a33271892f815b853605a936e2e9e5129762356c", + "sha256:68c5a82c8779bdfc6367c967a4a1b2aa52cd3595388bf5961a62158ee8a59e22", + "sha256:6e4a280e4b975a2e7745573e3fc9c9ba0d1194a3738ce1cbaa80626cc9b4f4df", + "sha256:6e6783bcc45f397fdebc118d772103d751b54cddf5b60fbcc958382d7dd64f3e", + "sha256:72a860c215e26192379f57cae5ab12b168b75db8271f111019509a1196dfc780", + "sha256:7607ec3ce4993464368505888af5beb446845a014bc676d349efec0e05085905", + "sha256:773dd01706d4db536335fcfae6ea2440a70ceb03dd3e7378f3e815b03c97ab51", + "sha256:78d847e4cde6ecc19125ccbc9bfac4a7ab37c234dd88fbb3c5c524e8e14da543", + "sha256:7dde0009408969a43b04c16cbbe252c4f5ef4574ac226bc8815cd7342d2028b6", + "sha256:80bd372b8d0715c66c974cf57fe363621a02f359f1ec81cba97366948c7fc873", + "sha256:841cd8233cbd2111a0ef0a522ce016357c5e3aff8a8ce92bcfa14cef890d698f", + "sha256:84de26ddf621d7ac4c975dbea4c945860e08cccde492269db4e1538a6a6f3c35", + "sha256:84f8ae3e09a34f35c18fa57f015cc394bd1389bce02503fb30c394d04ee6b938", + "sha256:8af740fc2711ad85f1a5c034a435782fbd5b5f8314c9a3ef071424a8158d7f6b", + "sha256:8b929b9bd7cd7c3939f8bcfffa92fae7480bd1aa425279d51a89327d600c704d", + "sha256:910bec0c49637d213f5d9877105d26e0c4a4de2f8b1b29405ff37e9fc0ad52b8", + "sha256:96943e5dcc37a6529d18766597c491798b7eb7a61d48878611298afc1fca946c", + "sha256:a0215ce6041d501f3155dc219712bc41252d0ab76474615b9700d63d4d9292af", + "sha256:a3cf433f127efa43fee6b90ea4c6edf6c4a17109d1d037d1a52abec84d8f2e42", + "sha256:a6ce61195c6a19c785df04e71a4537e29eaa2c50fe745b732aa937c0c77169f3", + "sha256:a7a75ef35f2df54ad55dbf4b73fe1da96f370e51b10c91f08b19603c64004acc", + "sha256:a94159871304770da4dd371f4291b20cac04e8c94f11bdea1c3478e557fbe0d8", + "sha256:aa1990247f02a54185dc0dff92a6904521172a22664c863a03ff64c42f9b5410", + "sha256:ab88bafedc57dd0aab55fa728ea10c1911f7e4d8b43e1d838a1739f33712921c", + "sha256:ad093e823df03bb3fd37e7dec9d4670c34f9e24aeace76808fc20a507cace825", + "sha256:ae871a964e1987a943d83d6709d20ec6103ca1eaf52f7e0d36ee1b5bebb8b9b9", + "sha256:b0ba0d15164eae3d878260d4c4df859bbdc6466e9e6689c344a13334f988bb53", + "sha256:b5411d82cddd212644cf9360879eb5080f0d5f7d809d03262c50dad02f01421a", + "sha256:b9552ec52cc147dbf1944ac7ac98af7602e51ea2dcd076ed194ca3c0d1c7d0bc", + "sha256:bfb9162dcf01f615462b995a516ba03e769de0789de1cadc0f916265c257e5d8", + "sha256:c0a9034379a37ae42dea7ac1e048352d96286626251862e448933c0f59cbd79c", + "sha256:c1161b345c0a444ebcf46bf0a740ba5dcf50612fd3d0528883fdc0eff578006a", + "sha256:c11f5b099adafb18e65c2c997d57108b5bbeaa9eeee64a84302c0978b1ec948b", + "sha256:c44e65da1de4403d0576473e2344828ef9c4c6244d65cf4b75549bb46d40b8dd", + "sha256:c48c5c0271149cfe467c0ff8eb941279fd6e3f65c9a388c984e0e6cf57538e14", + "sha256:c7a815258e5895d8900aec4454f38dca9aed71085f227537208057853f9d13f2", + "sha256:cae533195e8122584ec87531d6df000ad07737eaa3c81209e85c928854d2195c", + "sha256:cc14be025665dba6202b6a71cfcdb53210cc498e50068bc088076624471f8bb9", + "sha256:cd56db019015b6acfaaf92e1ac40eb8434847d9bf88b4be4efe5bfd260aee692", + "sha256:d827176898a2b0b09694fbd1088c7a31836d1a505c243811c87ae53a3f6273c1", + "sha256:df72ac063b97837a80d80dec8d54c241af059cc9bb42c4de68bd5b61ceb37caa", + "sha256:e5980a746d547a6ba173fd5ee85ce9077e72d118758db05d229044b469d9029a", + "sha256:e5d47ae48db0b2dcf70bc8a3bc72b3de86e2a590fc299fdbbb15af320d2659de", + "sha256:e91d635961bec2d8f19dfeb41a539eb94bd073f075ca6dae6c8dc0ee89ad6f91", + "sha256:ea353162f249c8097ea63c2169dd1aa55de1e8fecbe63412a9bc50816e87b761", + "sha256:eaeed7abfb5d64c539e2db173f63631455f1196c37d9d8d873fc316470dfbacd", + "sha256:eca4bf3734c541dc4f374ad6010a68ff6c6748f00451707f39857f429ca36ced", + "sha256:f83a552443a526ea38d064588613aca983d0ee0038801bc93c0c916428310c28", + "sha256:fb1558def481d84f03b45888473fc5a1f35747b5f334ef4e7a571bc0dfcb11f8", + "sha256:fd1ed388ea7fbed22c4968dd64bab0198de60750a25fe8c0c9d4bef5abe13824" ], "markers": "python_version >= '3.6'", - "version": "==3.8.4" + "version": "==3.8.5" }, "aiosignal": { "hashes": [ @@ -191,110 +191,126 @@ }, "bitarray": { "hashes": [ - "sha256:02a871ee6f460d03febdd1577ddab66c7f297a43eff3293ee4cb34f6eb5cacb6", - "sha256:07ac65cae21d79a4642a85109e40da48903c58fd14b7e42f31c48c37b7b8a37a", - "sha256:08abec79d033ee10d6f4cb2fa9aec952d18eb06ce034b9cdf0cd8e6f2d023254", - "sha256:0efcd03263f70f76298e56b6c5ed454ba89c01777ac25a790725bc063c6170b9", - "sha256:0f8e85acce0c3434776fc82819dfd09d9003595456f838d50b1009d6ac0be031", - "sha256:1211d16de1814f910fc7f2de74930ea22b4feb9b699eed5ceaef8ed14736fe50", - "sha256:13734e42f83a7ef75c876458619e11863f1d60644c83ff9a5ce21abf2935f331", - "sha256:17c13936465e4dd2f4b58ce93f4d1fc92a684f1870830581bf950991e1e56eaa", - "sha256:17d2df5517ab961b6ce679c050884141439695a931539597fea76933891f04a0", - "sha256:17df9b29105beec4dc4a489041783ddfe9de2628706bd4255863acfe3a78e648", - "sha256:1802d92ba8b97a758f61f6aef8324c7705fe35a4b32ce9ed1569a8ddb43f0e33", - "sha256:190d7e018565f0745c76ced5060c2a0a218efb5b3e5df71f8a0da5661decaaf7", - "sha256:1b8f439bf3939133ca2a12bfdc6fc2408b50099fd8fec88e5829f1eb9d49d636", - "sha256:1bc7466820fae5376e2c0c9592e67ffd2a5fb1ab261942357ba23b5252b5eae5", - "sha256:1e90774f5453c610a0b62f6d235120c459c1dc0f2c7e8b4871a14f2dcf4d74cc", - "sha256:1eeeb25912fc4832546d328032e345d281720c2c73effd2234feb24045cfb10e", - "sha256:216c113c68523b0d3a0f98c5d12236a1998b5c3bf79bfa17324368bf9d20cd26", - "sha256:249e5d52785de2615264e579e25d85038e4bea9797e24e47b577e614c1187a2d", - "sha256:24f7804bd40deba52fb14c5c1510273e6e4a084ef7c9896a30bd9ee5353dbc40", - "sha256:26e4f99f5bdb20c9275dcb5bde44aaae74c52224f328bf1f691be43d6eaccc2b", - "sha256:2ad866b82dd457239e2d0de864a09cc6efd4ccd2e0706314368835773e2b6018", - "sha256:2b3527f41bbfd4b8b64b9d7541cd9f8234b0d5a477e59b8c7f666f6f9635ea09", - "sha256:2c2bbb73b8dbc52dd26ae40ae83f2e863fc48db6c37ea7fbfd5a750ec62c0a30", - "sha256:2cdcd0b5f6952ed7187f46a7f0ea72436ddbd7111af2263adcbfe2850d0c26e7", - "sha256:2d6a93eb2af22deba0e6f7353a68457fa04f933d59c6a0ca420759c0527850cd", - "sha256:30a9347acb24a0ee50cc932c52f58337d5b9503bb5b78f435cf3a47cd7031d86", - "sha256:31b2855bd566c965ec00ca5629a2637786e0605005826be0f6f192f3756f2aa2", - "sha256:31be9ffbb6dd777233331b2fc08d30957cb01f86e2ee11aa5d7652158fa3b795", - "sha256:31c118dcaaad605c3d8ef953c79554f4822e454e85649dd9fe82e3fcd5017eef", - "sha256:37429158856fe0548786910ebc16e56606a60f01946f746cb7a6a78acf787711", - "sha256:3807f9323c308bc3f9b58cbe5d04dc28f34ac32d852999334da96b42f64b5356", - "sha256:3e9065cbc14ac490e4b1b5520ef33d61e9bdb41d066c7f18b20429c3025ea07e", - "sha256:3ffcde9d694bfb34f82e6739b33fd267bad25e6b4042b43bfffbe3ba31184318", - "sha256:4d054a65a9b3848744e49f195ef7399841c545c05ad11854982e271331a4577c", - "sha256:4d77b8ed242fa4b70a609e0bf81dd1f2db161ff4a082f7dfe233b491fe4c0c39", - "sha256:523de6f222c310a865f4070f79b2ad0e0b35b9f26b34ee9f93a3dc8ad293dbfb", - "sha256:557cc0858e5171b542ed48bbb58ae83bc65da82fb3fd88dafd21e33ba1b685d3", - "sha256:56e4f09d684337e33f6ad24bf4cda984de07b969865bfe2a8fd556ee1e1581cc", - "sha256:5ac235eb59737bffce44d605a2c1af47e56e28a98bc7c9c763587e8bd8c5ebe0", - "sha256:5b803225158bbe17384e0a9f15cffecb5ae019b4d225a21887670ef20acfa4c8", - "sha256:5df77a37750fff8a107fba2e7adb887d171ae923306fa9a6c6c6c1a22c73da7f", - "sha256:5ebb24415e5838a729484ae698e1a17e27b826d2691d5cc6d4dc44a90f6a89e6", - "sha256:5ecdb1f22f9aae4405393cf845b1a43bbf786536fa673aae92745508ca8c84ef", - "sha256:5f36666371fcf8c1adaa0184b5762a7ce8310fdd33f5c39bf085c6dfe5fb0699", - "sha256:60acdb34def45f72f50a2277763b2a979e4c42dcb4c183a3a9a75bfe195e0b65", - "sha256:66ebfee12371d9cf7f59eb8964fcb1e711f075df6a2e29880c9aa8b55fa5bce4", - "sha256:6897bfadf3077685c73cd6ca60ebeaaa40b3bbe060f38f0a6c577bebe37935f4", - "sha256:689859e796d39d0151d1d7a0f50b8119547cbd76d815884e8d8ff5e7e3ce8244", - "sha256:6ad4c0e7e20c7384a111ce1883b91e203fc7950a6d4bb3ccdad23422b359ab4a", - "sha256:6f21b59a436ec2f8226c397292e24f9dfb9c3eba904038f50778f2365e68fdea", - "sha256:72f638b6e56480c588580d10e3185dc9770d66a2bee49735ae6ac4277eb701da", - "sha256:732642e9284a7dbaca00d8a4837f997462fc01e8207f2be598e179c3b51e20e2", - "sha256:790aa2272aa6a2b792404a9f672dd136801a3a3860f74298c2542f63a206ed49", - "sha256:79da57026eb2c6b266c55d578b607f71d2eb9c5ae1bb3b32232d7dae059d63ed", - "sha256:7a8d697e201a2f9b16d292d7fa066b9bbc0123abd9058885e408db984a1b4776", - "sha256:7cc2fd90298cb5e4c5882a8d8f4b39db23280a94387ba10ca266c311135ca57a", - "sha256:7e40be8a46062ff89c07fe00a0ea7e06a069805cf1f9cb57196a89f52fdcaf80", - "sha256:82816e361303817ac79d6870d51a3c7f1f343e816a0b1d885b713389d9bba425", - "sha256:87fd489d5b82679528fe096084c4e6976199874edc3c126bb41cd668987bd784", - "sha256:88bfe996b1adb811690333523e2500d700f6d3dfb282b0b77194e8ff1d168873", - "sha256:8a13774c45e9f59941b374a0e489f6660fcb4d027005748036a829cfab097c14", - "sha256:900cc391b38bf098f30ae5847c2df30f413b9311f27f13ced1818cbc28da928c", - "sha256:90a246583ff481c869227058988f5d2cfe5dd5a6cf76596b6e8de88cc10d440a", - "sha256:913e767a3d9a50d2213f5e22db4e87b8a29acc38be5001d29b6be42b1361b812", - "sha256:915abc5db73dd2e15182bc2b281e0aa565124068a6f36f8237d3479804478ea8", - "sha256:94333a9f419ddf2f92ddbdb34a10a4b2c13e346f077511a35de87a0acea4289f", - "sha256:9439459b58ff0cd29883445662c5d80cee109c4ce5984001798bb74a31b1ac9e", - "sha256:952170c03bc415719156594aed10c7b20ce7d4389551f6bc89969e23486d245c", - "sha256:95749278b59247a2a5779f1a0fc216f110eea1aa8af330609b8bdb5f8f55b78f", - "sha256:97496cca479e2b30a5c5354359f1fb85c4a0678b8d651656cc96a6ba3028bc94", - "sha256:98959be5e864bed9c4fcd90d47d96cf5250d86a2a22b39ec41514c54c80f29bd", - "sha256:98afc87b14868bb51f478f01c4d1578a190efb60c1b44dd7fc6dea7a61764889", - "sha256:98e1abda299b516573aa916e4c58bb870dd55f17dd544041d9290cb1c005be30", - "sha256:9e1da9ebd148389bce250403c02ef1f1495984612db534072b0aa101fd051a0b", - "sha256:a56e6e68d0a508b0a2bd81840e31c41f4858585cd72f192264c4f0f8f48fd0c1", - "sha256:aafd10decf8940e8f2d21e25b32b21ae9fd1aa58f168ea97f0f82adb0f6aa33a", - "sha256:ab8fc4de49c75ef358fa9a30a367a163f62b92048a3da084500b88283aba47a6", - "sha256:ae83573d9f30f085755c7ba519f0498ecb773a0f2a7e428ed2a33324975e1cec", - "sha256:b4451de47a3b2b378f03bc12d4cf49e64895dc263befee2af38420a91e38d4f9", - "sha256:b798d37fcd8e78e381660a65c434c3f60713c6f076fcecfd22544ec46d7416e6", - "sha256:bbb093c86e2c747ba3e81b01924353d982d4f6b62cce76a5eb1eb157cdf499e9", - "sha256:bcc8bd9fe25b48cff1702a6ef700f7a7726c8084be8edcae67a1df0d23caa822", - "sha256:bff837274244e1dcf57e43820ccd8f95736ab30e7f5f0c79e81f655717060d37", - "sha256:c237144123f1eb563c305d70634a97729716bfcd841f1519c33396e62d8ea3bd", - "sha256:c6a13db2090c16a8753a6b6fb0e5ac0c7ece1930d4fa85c20e885aec550bceb3", - "sha256:c9778c56a4f9cda3c61941ea95db279b52c38e9b9ad174d52fd7174f9ec44c46", - "sha256:ca4dc98b56461d3656f3219cfcc4a6845479ab7e6cdc134c7fa2615336c55f76", - "sha256:cff6588ec89b276bab617b15778b20aeb5124df1e04b1c0b5364e9cb8dce6a7f", - "sha256:d15685830b607088f040ec512d045ab762678d33e813e882a260ae3ee3d381db", - "sha256:da810a6704723bbaae3d9d5a0c552c52e15f2b97aff599c5243464e04a9bc5ac", - "sha256:db83ad25c3ea908f1c983b4b28ab5b9408a18962fa21724a5d1d65887842462d", - "sha256:e095f92ba7c6424fc4918f28ddc998e1628bbf83bd5b0405c08c5591f74560a3", - "sha256:e1ec302eda30e87793bd31c16c18a92118a1072831200247d0a8430e095e9563", - "sha256:e373bd92a6caf9bb6bb2918e3f6e64ba10045d62c2e376d80d0ec062dcdb19ef", - "sha256:e38fe19d4f6ddc669f8a13fa21b482ec72bc32d2def6b97018dba4db53823848", - "sha256:e6f228712a5696f3e13048894fc1f6d70d32421e154476b74595b0309a9d9dcf", - "sha256:efe64997aeabedbaf24543020cc5c672d00cb373e126c12fe7e21e128f548001", - "sha256:f16a5e4fd0614d43c1bd5bd0887deca1fcf292253662bce040c169492005fd8a", - "sha256:f57e3e6362d2ca7ab797e423a2d5ed1934b8599d197097458c714cf107f4dc4a", - "sha256:f5b133a161bb4426e0bdd0e53be979dfdc5f63f14043b8e194d1fba6391e1672", - "sha256:ffd1d8edb67b8ca264e033a349b611426b5b84c3eec410aeb6df67b784450131", - "sha256:ffdb9106fd0d36b0a87db9903e3078877a9cdde98e064b76f24f6d8eb46067e6" - ], - "version": "==2.7.6" + "sha256:00a7df14e82b0da37b47f51a1e6a053dbdccbad52627ae6ce6f2516e3ca7db13", + "sha256:03425503093f28445b7e8c7df5faf2a704e32ee69c80e6dc5518ccea0b876ac9", + "sha256:06984d12925e595a26da7855a5e868ce9b19b646e4b130e69a85bfcd6ce9227b", + "sha256:089c707a4997b49cd3a4fb9a4239a9b0aaac59cc937dfa84c9a6862f08634d6f", + "sha256:0cd43f0943af45a1056f5dbdd10dc07f513d80ede72cac0306a342db6bf87d1d", + "sha256:0d19fd86aa02dbbec68ffb961a237a0bd2ecfbd92a6815fea9f20e9a3536bd92", + "sha256:0d47baae8d5618cce60c20111a4ceafd6ed155e5501e0dc9fb9db55408e63e4a", + "sha256:11447698f2ae9ac6417d25222ab1e6ec087c32d603a9131b2c09ce0911766002", + "sha256:117d53e1ada8d7f9b8a350bb78597488311637c036da1a6aeb7071527672fdf7", + "sha256:123d3802e7eafada61854d16c20d0df0c5f1d68da98f9e16059a23d200b5057a", + "sha256:13dde9b590e27e9b8be9b96b1d697dbb19ca5c790b7d45a5ed310049fe9221b5", + "sha256:143c9ac7a7f7e155f42bbf1fa547feaf9b4b2c226a25f17ae0d0d537ce9a328d", + "sha256:16b6144c30aa6661787a25e489335065e44fc4f74518e1e66e4591d669460516", + "sha256:181394e0da1817d7a72a9b6cad6a77f6cfac5aa70007e21aadfa702fcf0d89eb", + "sha256:18f7a8d4ebb8c8750e9aafbcfa1b2bfa9b6291baec6d4a31186762956f88cada", + "sha256:1ddb75bd9bfbdff5231f0218e7cd4fd72653dc0c7baa782c3a95ff3dac4d5556", + "sha256:1deaaebbae83cf7b6fd252c36a4f03bd820bcf209da1ca400dddbf11064e35ec", + "sha256:1dfa4b66779ea4bba23ca655edbdd7e8c839daea160c6a1f1c1e6587fb8c79af", + "sha256:1f90c59309f7208792f46d84adac58d8fdf6db3b1479b40e6386dd39a12950eb", + "sha256:1fdba2209df0ca379b5276dc48c189f424ec6701158a666876265b2669db9ed7", + "sha256:216af36c9885a229d493ebdd5aa5648aae8db15b1c79ca6c2ad11b7f9bf4062f", + "sha256:28dced57e7ee905f0a6287b6288d220d35d0c52ea925d2461b4eef5c16a40263", + "sha256:2e3636c073b501029256fda1546020b60e0af572a9a5b11f5c50c855113b1fbc", + "sha256:323d1b9710d1ef320c0b6c1f3d422355b8c371f4c898d0a9d9acb46586fd30d4", + "sha256:3619bd30f163a3748325677996d4095b56ab1eb21610797f2b59f30e26ad1a7a", + "sha256:36eb9bdeee9c5988beca491741c4e2611abbea7fbbe3f4ebe35e00d509c40847", + "sha256:37fe92915561dd688ff450235ce75faa6679940c78f7e002ebc092aa71cadce9", + "sha256:3a83eedc91f88d31e1e7e386bd7bf65eacd5064af95d5b1ccd512bef3d516a4b", + "sha256:3d6922dffc5e123e09907b79291951655ec0a2fde7c36a5584eb67c3b769d118", + "sha256:40997802289d647952449b8bf0ee5c56f1f767e65ab33c63e8f756ba463343a7", + "sha256:40e6047a049595147518e6fe40759e609559799402efade093a3b67cda9e7ea9", + "sha256:432ff0eaf79414df582be023748d48c9b3a7d20cead494b7bc70a66cb62fb34f", + "sha256:45c5e6d5970ade6f98e91341b47722c3d0d68742bf62e3d47b586897c447e78a", + "sha256:46fb5fbde325fd0bfcd9efd7ea3c5e2c1fd7117ad06e5cf37ca2c6dab539abc4", + "sha256:4b6650d05ebb92379465393bd279d298ff0a13fbf23bacbd1bcb20d202fccc67", + "sha256:4e5c53500ee060c36303210d34df0e18636584ae1a70eb427e96fed70189896f", + "sha256:524b5898248b47a1f39cd54ab739e823bb6469d4b3619e84f246b654a2239262", + "sha256:5557e41cd92a9f05795980d762e9eca4dee3b393b8a005cb5e091d1e5c319181", + "sha256:561e6b5a8f4498240f34de67dc672f7a6867c6f28681574a41dc73bb4451b0cb", + "sha256:599a57c5f0082311bccf7b35a3eaa4fdca7bf59179cb45958a6a418a9b8339d1", + "sha256:5ff04386b9868cc5961d95c84a8389f5fc4e3a2cbea52499a907deea13f16ae4", + "sha256:6167bf10c3f773612a65b925edb4c8e002f1b826db6d3e91839153d6030fec17", + "sha256:62899c1102b47637757ad3448cb32caa4d4d8070986c29abe091711535644192", + "sha256:639f8ebaad5cec929dd73859d5ab850d4df746272754987720cf52fbbe2ec08e", + "sha256:66cf402bc4154a074d95f4dec3260497f637112fb982c2335d3bbc174d8c0a2d", + "sha256:67af0a5f32ec1de99c6baaa2359c47adac245fda20969c169da9b03dacb48fb7", + "sha256:6897cd0c67c9433faca9023cb5eff25678e056764ce158998e6f30137e9a7f17", + "sha256:6bd66672c9695e75cf54d1f3f143a85e6b57078a7b86faf0de2c0c97736dfbb4", + "sha256:6f45bffd00892afa7e455990a9da0bbe0ac2bee978b4bdbb70439345f61b618a", + "sha256:706835e0e40b4707894af0ddd193eb8bbfb72835db8e4a8be7f6697ddc63c3eb", + "sha256:741fc4eb77847b5f046559f77e0f822b3ce270774098f075bc712ef9f5c5948d", + "sha256:74dd172224a2e9fea2818a0d8c892b273fa6de434b953b97a2252572fcf01fb3", + "sha256:7885e5c23bb2954d913b4e8bb1486a7d2fbf69d27438ef096178eccf1d9e1e7a", + "sha256:7cd2df3c507ee85219b38e2812174ba8236a77a729f6d9ba3f66faed8661dc3b", + "sha256:816510e83e61d1f44ff2f138863068451840314774bad1cc2911a1f86c93eb2f", + "sha256:83f80d6f752d40d633c99c12d24d11774a6c3c3fd02dfd038a0496892fb15ed3", + "sha256:84137be7d55bed08e3ef507b0bde8311290bf92fba5a9d05069b0d1910217f16", + "sha256:844e12f06e7167855c7db6838ea4ef08e44621dd4606039a4b5c0c6ca0801edf", + "sha256:86a563fa4d2bfb2394ac21f71f8e8bb1d606d030b003398efe37c5323df664aa", + "sha256:8a6593023d03dc71f015efba1ce9319982a49add363050a3e298904ca19b60ef", + "sha256:8d59ddee615c64a8c37c5bfd48ceea5b88d8808f90234e9154e1e209981a4683", + "sha256:8d5fc3e73f189daf8f351fefdbad77a6f4edc5ad001aca4a541615322dbe8ee9", + "sha256:8fb89f6b229ef8fa0e70d9206c57118c2f9bd98c54e3d73c4de00ab8147eed1c", + "sha256:90f3c63e44eb11424745453da1798ed6abcf6f467a92b75fda7b182cb1fb3e01", + "sha256:93c5937df1bfbfb17ee17c7717b49cbe04d88fa5d9dcfc1846914318dcf0135b", + "sha256:951b39a515ed07487df02f0480617500f87b5e01cb36ec775dd30577633bec44", + "sha256:991dfaee77ecd82d96ddd85d242836de9471940dd89e943feea26549a9170ecb", + "sha256:9a89b32c81e3e8a5f3fe9b458881ef03c1ba60829ae97999a15e86ea476489c6", + "sha256:9d4723b41afbd3574d3a72a383f80112aeceaeebbe6204b1e0ac8d4d7f2353b2", + "sha256:a13d7cfdbcc5604670abb1faaa8e2082b4ce70475922f07bbee3cd999b092698", + "sha256:a5618e50873f8a5ba96facbf61c5f342ee3212fee4b64c21061a89cb09df4428", + "sha256:aa54a847ae50050099e23ddc2bf20c7f2792706f95e997095e3551048841fc68", + "sha256:aa6e51062a9eba797d97390a4c1f7941e489dd807b2de01d6a190d1a69eacf0a", + "sha256:aabceebde1a450eb363a7ad7a531ab54992520f0a7386844bac7f700d00bb2d3", + "sha256:ae79e0ed10cf221845e036bc7c3501e467a3bf288768941da1d8d6aaf12fec34", + "sha256:b101a770d11b4fb0493e649cf3160d8de582e32e517ff3a7d024fad2e6ffe9e1", + "sha256:b3381e75bb34ca0f455c4a0ac3625e5d9472f79914a3fd15ee1230584eab7d00", + "sha256:b70caaec1eece68411dfeded34466ad259e852ac4be8ee4001ee7dea4b37a5b2", + "sha256:b7bf3667e4cb9330b5dc5ae3753e833f398d12cbe14db1baf55cfd6a3ff0052d", + "sha256:b8c607bfcb43c8230e24c18c368c9773cf37040fb14355ecbc51ad7b7b89be5a", + "sha256:ba2870bc136b2e76d02a64621e5406daf97b3a333287132344d4029d91ad4197", + "sha256:bc347f9a869a9c2b224bae65f9ed12bd1f7f97c0cbdfe47e520d6a7ba5aeec52", + "sha256:cc6b74eef97dc84acb429bb9c48363f88767f02b7d4a3e6dfd274334e0dc002e", + "sha256:cd0a807a04e69aa9e4ea3314b43beb120dad231fce55c718aa00691595df628f", + "sha256:cd151c59b3756b05d8d616230211e0fb9ee10826b080f51f3e0bf85775027f8c", + "sha256:cd69a926a3363e25e94a64408303283c59085be96d71524bdbe6bfc8da2e34e0", + "sha256:d0952c8417c21ea9eb2532475b2927753d6080f346f953a520e28794297d45f3", + "sha256:d6b0ce7a00a1b886e2410c20e089f3c701bc179429c681060419bbbf6ea263b7", + "sha256:dd5dcc4c26d7ef55934fcecea7ebd765313554d86747282c716fa64954cf103d", + "sha256:dd7aa632610fe03272e01fd006c9db2c102340344b034c9bd63e2ed9e3f895cc", + "sha256:e006e43ee096922cdaca797b313292a7ee29b43361da7d3d85d859455a0b6339", + "sha256:e1df5bc9768861178632dab044725ad305170161c08e9aa1d70b074287d5cbd3", + "sha256:e28b9af8ebeeb19396b7836a06fc1b375a5867cff6a558f7d35420d428a3e2ad", + "sha256:eb45c7170c84c14d67978ccae74def18076a7e07cece0fc514078f4d5f8d0b71", + "sha256:ebe2a6a8e714e5845fba173c05e26ca50616a7a7845c304f5c3ffccecda98c11", + "sha256:ee6df5243fcab8bb2bd14396556f1a28eebf94862bf14c1333ff309177ac62ba", + "sha256:f00dc03d1c909712a14edafd7edeccf77aca1590928f02f29901d767153b95ef", + "sha256:f06680947298dca47437a79660c69db6442570dd492e8066ab3bf7166246dee1", + "sha256:f4916b09f5dafe74133224956ce72399de1be7ca7b4726ce7bf8aac93f9b0ab6", + "sha256:f59f189ed38ad6fc3ef77a038eae75757b2fe0e3e869085c5db7472f59eaefb3", + "sha256:f89cd1a17b57810b640344a559de60039bf50de36e0d577f6f72fab7c23ee023", + "sha256:fb33df6bbe32d2146229e7ad885f654adc1484c7f734633e6dba2af88000b947" + ], + "version": "==2.8.0" + }, + "boto3": { + "hashes": [ + "sha256:01f078047eb4d238c6b9c6cc623f2af33b4ae67980c5326691e35cb5493ff6c7", + "sha256:4cc0c6005be910e52077227e670930ab55a41ba86cdb6d1c052571d08cd4d32c" + ], + "index": "pypi", + "version": "==1.28.9" + }, + "botocore": { + "hashes": [ + "sha256:bd849d3ac95f1781385ed831d753a04a3ec870a59d6598175aaedd71dc2baf5f", + "sha256:e56ccd3536a90094ea5b176b5dd33bfe4f049efdf71af468ea1661bd424c787d" + ], + "markers": "python_version >= '3.7'", + "version": "==1.31.9" }, "celery": { "extras": [ @@ -309,11 +325,11 @@ }, "certifi": { "hashes": [ - "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", - "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" + "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", + "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" ], "markers": "python_version >= '3.6'", - "version": "==2023.5.7" + "version": "==2023.7.22" }, "cffi": { "hashes": [ @@ -467,11 +483,11 @@ }, "click": { "hashes": [ - "sha256:4be4b1af8d665c6d942909916d31a213a106800c47d0eeba73d34da3cbc11367", - "sha256:e576aa487d679441d7d30abb87e1b43d24fc53bffb8758443b1a9e1cee504548" + "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd", + "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5" ], "markers": "python_version >= '3.7'", - "version": "==8.1.5" + "version": "==8.1.6" }, "click-didyoumean": { "hashes": [ @@ -535,107 +551,102 @@ }, "cytoolz": { "hashes": [ - "sha256:02975e2b1e61e47e9afa311f4c1783d155136fad37c54a1cebfe991c5a0798a1", - "sha256:03ab22c9aeb1535f8647d23b6520b0c3d41aaa18d04ef42b352dde1931f2e2b1", - "sha256:061387aa39b9c1576c25d0c59142513c09e77a2a07bd5d6211a43c7a758b6f45", - "sha256:06d38a40fe153f23cda0e823413fe9d9ebee89dd461827285316eff929fb121e", - "sha256:0d474dacbafbdbb44c7de986bbf71ff56ae62df0d52ab3b6fa966784dc88737a", - "sha256:117871f036926e42d3abcee587eafa9dc7383f1064ac53a806d33e76604de311", - "sha256:14f4dbc3f0ec8f6fc68865489af21dcf042ff007d2737c27bfd73296f15db544", - "sha256:1a1eae39656a1685e8b3f433eecfd72015ce5c1d7519e9c8f9402153c68331bb", - "sha256:1b6761791973b1e839b8309d5853b40eeb413368e31beaf5f2b6ed44c6fc7cf0", - "sha256:1be368623e46ad3c1ce807e7a436acb119c26001507b31f92ceb21b86e08c386", - "sha256:1c29dd04e282ddfd45b457e3551075beec9128aa9271245e58ce924bf6e055f8", - "sha256:23c3f57c48eb939d2986eba4aeaeedf930ebf94d58c91a42d4e0fc45ed5427dc", - "sha256:25ff13c468c06da9ef26651dc389e7e8bb7af548f8c1dfb96305f57f18d398a8", - "sha256:2a48940ff0449ffcf690310bf9228bb57885f7571406ed2fe05c98e299987195", - "sha256:2b245b824f4705aef0e4a03fafef3ad6cb59ef43cc564cdbf683ee28dfc11ad5", - "sha256:2ec296f01c29c809698eaf677211b6255691295c2b35caab2131e1e7eaadfbac", - "sha256:2eed428b5e68c28abf2c71195e799850e040d67a27c05f7785319c611665b86a", - "sha256:2f32452e833f0605b871626e6c61b71b0cba24233aad0e04accc3240497d4995", - "sha256:3032c0ba42dee5836d6b57a72a569b65df2c29e8ed266cb900d569003cf933a9", - "sha256:30936ae8fa68b6a1ac8ad6c4bacb5a8a00d51bc6c89f9614a1557b0105d09f8a", - "sha256:31131b54a0c72efc0eb432dc66df546c6a54f2a7d396c9a34cf65ac1c26b1df8", - "sha256:35fae4eaa0eaf9072a5fe2d244a79e65baae4e5ddbe9cc629c5037af800213a2", - "sha256:37320669c364f7d370392af33cc1034b4563da66c22cd3261e3530f4d30dbe4b", - "sha256:37c53f456a1c84566a7d911eec57c4c6280b915ab0600e7671582793cc2769fe", - "sha256:3c9a16a5b4f54d5c0a131f56b0ca65998a9a74958b5b36840c280edba4f8b907", - "sha256:3cb95d23defb2322cddf70efb4af6dac191d95edaa343e8c1f58f1afa4f92ecd", - "sha256:3d6d0b0075731832343eb88229cea4bf39e96f3fc7acbc449aadbdfec2842703", - "sha256:421b224dc4157a0d66625acb5798cf50858cfa06a5232d39a8bd6cf1fa88aca3", - "sha256:4284120c978fb7039901bf6e66832cb3e82ac1b2a107512e735bdb04fd5533ed", - "sha256:42c9e5cd2a48a257b1f2402334b48122501f249b8dcf77082f569f2680f185eb", - "sha256:4534cbfad73cdb1a6dad495530d4186d57d73089c01e9cb0558caab50e46cb3b", - "sha256:48bc2f30d1b2646d675bb8e7778ab59379bf9edc59fe06fb0e7f85ba1271bf44", - "sha256:49911cb533c96d275e31e7eaeb0742ac3f7afe386a1d8c40937814d75039a0f7", - "sha256:499af2aff04f65b4c23de1df08e1d1484a93b23ddaaa0163e44b5070b68356eb", - "sha256:4a0055943074c6c85b77fcc3f42f7c54010a3478daa2ed9d6243d0411c84a4d3", - "sha256:4d700e011156ff112966c6d77faaae125fcaf538f4cec2b9ce8957de82858f0f", - "sha256:50db41e875e36aec11881b8b12bc69c6f4836b7dd9e88a9e5bbf26c2cb3ba6cd", - "sha256:5158ae6d8dd112d003f677039a3613ca7d2592bfe35d7accf23684edb961fc26", - "sha256:56e1ebf6eb4438b8c45cbe7e7b22fc65df0c9efa97a70d3bf2f51e08b19756a5", - "sha256:59641eb1f41cb688b3cb2f98c9003c493a5024325f76b5c02333d08dd972127c", - "sha256:5af43ca7026ead3dd08b261e4f7163cd2cf3ceaa74fa5a81f7b7ea5d445e41d6", - "sha256:5c59bb4ca88e1c69931468bf21f91c8f64d8bf1999eb163b7a2df336f60c304a", - "sha256:633f19d1990b1cf9c67dce9c28bf8b5a18e42785d15548607a100e1236384d5d", - "sha256:6716855f9c669c9e25a185d88e0f169839bf8553d16496796325acd114607c11", - "sha256:6805b007af3557ee6c20dab491b6e55a8177f5b6845d9e6c653374d540366ba7", - "sha256:695dd8231e4f1bfb9a2363775a6e4e56ad9d2058058f817203a49614f4bfe33b", - "sha256:6fa7009c843667868aa8bdb3d68e5ef3d6356dd418b17ed5ca4e1340e82483a5", - "sha256:794cce219bbcb2f36ca220f27d5afd64eaa854e04901bd6f240be156a578b607", - "sha256:7b60caf0fa5f1b49f1062f7dc0f66c7b23e2736bad50fa8296bfb845995e3051", - "sha256:7e903df991f0957e2b271a37bb25d28e0d260c52825ae67507d15ca55a935961", - "sha256:7eb9e6fa8a82c3d2f519f7d3942898a97792e3895569e9501b9431048289b82f", - "sha256:816c2038008ebf50d81171ddfae377f1af9e71d504ec609469dcb0906bfcf2ae", - "sha256:849f461bffa1e7700ccfcb5186df29cd4cdcc9efdb7199cb8b5681dc37045d72", - "sha256:8506d1863f30d26f577c4ed59d2cfd03d2f39569f9cbaa02a764a9de73d312d5", - "sha256:867bebe6be30ee36a836f9b835790762a74f46be8cc339ea57b68dcecdbc1133", - "sha256:97a24c0d0806fcf9a6e75fc18aeb95adc37eb0baf6451f10a2de23ffd815329d", - "sha256:980e7eb7205e01816a92f3290cfc80507957e64656b9271a0dfebb85fe3718c0", - "sha256:9bae431a5985cdb2014be09d37206c288e0d063940cf9539e9769bd2ec26b220", - "sha256:9bebe58f7a160db7838eb70990c704db4bdc2d58bd364290fd69be0587be8bac", - "sha256:9e324a94856d88ecf10f34c102d0ded67d7c3cf644153d77e34a29720ce6aa47", - "sha256:a6e63fc67b23830947b51e0a488992e3c904fce825ead565f3904dcf621d05f7", - "sha256:a72440305f634604827f96810e4469877b89f5c060d6852267650a49b0e3768c", - "sha256:a734511144309ea6e105406633affb74e303a3df07d8a3954f9b01946e27ecb1", - "sha256:a816bff6bf424753e1ac2441902ceaf37ae6718b745a53f6aa1a60c617fb4f5f", - "sha256:a8a7a325b8fe885a6dd91093616c703134f2dacbd869bc519970df3849c2a15b", - "sha256:aa61e3da751a2dfe95aeca603f3ef510071a136ba9905f61ae6cb5d0696271ad", - "sha256:ac5895d5f78dbd8646fe37266655ba4995f9cfec38a86595282fee69e41787da", - "sha256:ac6784cc43aec51a86cf9058a2a343084f8cf46a9281bea5762bfa608127c53b", - "sha256:b1bd8017ef0da935a20106272c5f5ff6b1114add1ccb09cfed1ff7ec5cc01c6d", - "sha256:b2ac288f27a2689d9e39f4cf4df5437a8eb038eaae515169586c77f9f8fb343a", - "sha256:b30cd083ef8af4ba66d9fe5cc75c653ede3f2655f97a032db1a14cc8a006719c", - "sha256:b46ebc463bb45f278a2b94e630061c26e10077cb68d4c93583d8f4199699a5ef", - "sha256:b575393dd431b8e211de35bd593d831dac870172b16e2b7934f3566b8fc89377", - "sha256:b6569f6038133909cd658dbdcc6fc955f791dc47a7f5b55d2066f742253dcbfe", - "sha256:b8b8f88251b84b3877254cdd59c86a1dc6b2b39a03c6c9c067d344ef879562e0", - "sha256:b8eceaa12b7f152b046b67cb053ec2b5b00f73593983de69bc5e63a8aca4a7a8", - "sha256:ba74c239fc6cb6e962eabc420967c7565f3f363b776c89b3df5234caecf1f463", - "sha256:be5a454a95797343d0fb1ed02caecae73a023b1393c112951c84f17ec9f4076c", - "sha256:bef934bd3e024d512c6c0ad1c66eb173f61d9ccb4dbca8d75f727a5604f7c2f6", - "sha256:c1964dcb5f250fd13fac210944b20810d61ef4094a17fbbe502ab7a7eaeeace7", - "sha256:c34e69be4429633fc614febe3127fa03aa418a1abb9252f29d9ba5b3394573a5", - "sha256:c576bd63495150385b8d05eaae775387f378be2fd9805d3ffb4d17c87271fbad", - "sha256:cb8b10405960a8e6801a4702af98ea640130ec6ecfc1208195762de3f5503ba9", - "sha256:cc3645cf6b9246cb8e179db2803e4f0d148211d2a2cf22d5c9b5219111cd91a0", - "sha256:cd35c0be4c46274129dd1678bb911dd4e93d23968b26f4e39cd55bc7cb3b1bac", - "sha256:d540e9c34a61b53b6a374ea108794a48388178f7889d772e364cdbd6df37774c", - "sha256:d72415b0110f7958dd3a5ee98a70166f47bd42ede85e3535669c794d06f57406", - "sha256:dbae37d48ef5a0ab90cfaf2b9312d96f034b1c828208a9cbe25377a1b19ba129", - "sha256:e1c5434db53f3a94a37ad8aedb231901e001995d899af6ed1165f3d27fa04a6a", - "sha256:e75e287787e6adafed9d8c3d3e7647c0b5eb460221f9f92d7dfe48b45ba77c0d", - "sha256:e797c4afb1b7962d3205b1959e1051f7e6bfbba29da44042a9efc2391f1feb38", - "sha256:efd1b2da3ee577fcfa723a214f73186aef9674dd5b28242d90443c7a82722b0f", - "sha256:f5b43ce952a5a31441556c55f5f5f5a8e62c28581a0ff2a2c31c04ef992d73bd", - "sha256:f7194a22a4a24f3561cb6ad1cca9c9b2f2cf34cc8d4bce6d6a24c80960323fa8", - "sha256:f8101ab6de5aa0b26a2b5032bc488d430010c91863e701812d65836b03a12f61", - "sha256:fc33909397481c90de3cec831bfb88d97e220dc91939d996920202f184b4648e", - "sha256:fcc378fa97f02fbcef090b3611305425d72bd1c0afdd13ef4a82dc67d40638b6", - "sha256:ff478682e8ee6dbaa37201bb71bf4a6eee744006ab000e8f5cea05066fc7c845" + "sha256:00547da587f124b32b072ce52dd5e4b37cf199fedcea902e33c67548523e4678", + "sha256:0295289c4510efa41174850e75bc9188f82b72b1b54d0ea57d1781729c2924d5", + "sha256:03b58f843f09e73414e82e57f7e8d88f087eaabf8f276b866a40661161da6c51", + "sha256:0568d4da0a9ee9f9f5ab318f6501557f1cfe26d18c96c8e0dac7332ae04c6717", + "sha256:08a0e03f287e45eb694998bb55ac1643372199c659affa8319dfbbdec7f7fb3c", + "sha256:0a9d12436fd64937bd2c9609605f527af7f1a8db6e6637639b44121c0fe715d6", + "sha256:101b5bd32badfc8b1f9c7be04ba3ae04fb47f9c8736590666ce9449bff76e0b1", + "sha256:14108cafb140dd68fdda610c2bbc6a37bf052cd48cfebf487ed44145f7a2b67f", + "sha256:18580d060fa637ff01541640ecde6de832a248df02b8fb57e6dd578f189d62c7", + "sha256:18a0f838677f9510aef0330c0096778dd6406d21d4ff9504bf79d85235a18460", + "sha256:1ce324d1b413636ea5ee929f79637821f13c9e55e9588f38228947294944d2ed", + "sha256:246368e983eaee9851b15d7755f82030eab4aa82098d2a34f6bef9c689d33fcc", + "sha256:24c0d71e9ac91f4466b1bd280f7de43aa4d94682daaf34d85d867a9b479b87cc", + "sha256:275d53fd769df2102d6c9fc98e553bd8a9a38926f54d6b20cf29f0dd00bf3b75", + "sha256:294d24edc747ef4e1b28e54365f713becb844e7898113fafbe3e9165dc44aeea", + "sha256:2fb740482794a72e2e5fec58e4d9b00dcd5a60a8cef68431ff12f2ba0e0d9a7e", + "sha256:31d4b0455d72d914645f803d917daf4f314d115c70de0578d3820deb8b101f66", + "sha256:388f840fd911d61a96e9e595eaf003f9dc39e847c9060b8e623ab29e556f009b", + "sha256:3e993804e6b04113d61fdb9541b6df2f096ec265a506dad7437517470919c90f", + "sha256:4180b2785d1278e6abb36a72ac97c92432db53fa2df00ee943d2c15a33627d31", + "sha256:4416ee86a87180b6a28e7483102c92debc077bec59c67eda8cc63fc52a218ac0", + "sha256:45c7b4eac7571707269ebc2893facdf87e359cd5c7cfbfa9e6bd8b33fb1079c5", + "sha256:460c05238fbfe6d848141669d17a751a46c923f9f0c9fd8a3a462ab737623a44", + "sha256:478051e5ef8278b2429864c8d148efcebdc2be948a61c9a44757cd8c816c98f5", + "sha256:481e3129a76ea01adcc0e7097ccb8dbddab1cfc40b6f0e32c670153512957c0f", + "sha256:48425107fbb1af3f0f2410c004f16be10ffc9374358e5600b57fa543f46f8def", + "sha256:4a7d8b869ded171f6cdf584fc2fc6ae03b30a0e1e37a9daf213a59857a62ed90", + "sha256:4bff49986c9bae127928a2f9fd6313146a342bfae8292f63e562f872bd01b871", + "sha256:51d3495235af09f21aa92a7cdd51504bda640b108b6be834448b774f52852c09", + "sha256:5556acde785a61d4cf8b8534ae109b023cbd2f9df65ee2afbe070be47c410f8c", + "sha256:55e94124af9c8fbb1df54195cc092688fdad0765641b738970b6f1d5ea72e776", + "sha256:5616d386dfbfba7c39e9418ba668c734f6ceaacc0130877e8a100cad11e6838b", + "sha256:57233e1600560ceb719bed759dc78393edd541b9a3e7fefc3079abd83c26a6ea", + "sha256:593e89e2518eaf81e96edcc9ef2c5fca666e8fc922b03d5cb7a7b8964dbee336", + "sha256:5998f81bf6a2b28a802521efe14d9fc119f74b64e87b62ad1b0e7c3d8366d0c7", + "sha256:5e4e612b7ecc9596e7c859cd9e0cd085e6d0c576b4f0d917299595eb56bf9c05", + "sha256:5fef7b602ccf8a3c77ab483479ccd7a952a8c5bb1c263156671ba7aaa24d1035", + "sha256:63b31345e20afda2ae30dba246955517a4264464d75e071fc2fa641e88c763ec", + "sha256:663911786dcde3e4a5d88215c722c531c7548903dc07d418418c0d1c768072c0", + "sha256:673d6e9e3aa86949343b46ac2b7be266c36e07ce77fa1d40f349e6987a814d6e", + "sha256:68ae7091cc73a752f0b938f15bb193de80ca5edf5ae2ea6360d93d3e9228357b", + "sha256:698da4fa1f7baeea0607738cb1f9877ed1ba50342b29891b0223221679d6f729", + "sha256:6a93644d7996fd696ab7f1f466cd75d718d0a00d5c8118b9fe8c64231dc1f85e", + "sha256:6c8d0dff4865da54ae825d43e1721925721b19f3b9aca8e730c2ce73dee2c630", + "sha256:732d08228fa8d366fec284f7032cc868d28a99fa81fc71e3adf7ecedbcf33a0f", + "sha256:735147aa41b8eeb104da186864b55e2a6623c758000081d19c93d759cd9523e3", + "sha256:7a92aab8dd1d427ac9bc7480cfd3481dbab0ef024558f2f5a47de672d8a5ffaa", + "sha256:7d352d4de060604e605abdc5c8a5d0429d5f156cb9866609065d3003454d4cea", + "sha256:81074edf3c74bc9bd250d223408a5df0ff745d1f7a462597536cd26b9390e2d6", + "sha256:81e6a9a8fda78a2f4901d2915b25bf620f372997ca1f20a14f7cefef5ad6f6f4", + "sha256:843500cd3e4884b92fd4037912bc42d5f047108d2c986d36352e880196d465b0", + "sha256:89247ac220031a4f9f689688bcee42b38fd770d4cce294e5d914afc53b630abe", + "sha256:8bb624dbaef4661f5e3625c1e39ad98ecceef281d1380e2774d8084ad0810275", + "sha256:9007bb1290c79402be6b84bcf9e7a622a073859d61fcee146dc7bc47afe328f3", + "sha256:9070ae35c410d644e6df98a8f69f3ed2807e657d0df2a26b2643127cbf6944a5", + "sha256:908c13f305d34322e11b796de358edaeea47dd2d115c33ca22909c5e8fb036fd", + "sha256:9480b4b327be83c4d29cb88bcace761b11f5e30198ffe2287889455c6819e934", + "sha256:960d85ebaa974ecea4e71fa56d098378fa51fd670ee744614cbb95bf95e28fc7", + "sha256:96796594c770bc6587376e74ddc7d9c982d68f47116bb69d90873db5e0ea88b6", + "sha256:97cf514a9f3426228d8daf880f56488330e4b2948a6d183a106921217850d9eb", + "sha256:997b7e0960072f6bb445402da162f964ea67387b9f18bda2361edcc026e13597", + "sha256:9b28787eaf2174e68f0acb3c66f9c6b98bdfeb0930c0d0b08e1941c7aedc8d27", + "sha256:9bf51354e15520715f068853e6ab8190e77139940e8b8b633bdb587956a08fb0", + "sha256:9e5075e30be626ef0f9bedf7a15f55ed4d7209e832bc314fdc232dbd61dcbf44", + "sha256:a08b4346350660799d81d4016e748bcb134a9083301d41f9618f64a6077f89f2", + "sha256:a67f75cc51a2dc7229a8ac84291e4d61dc5abfc8940befcf37a2836d95873340", + "sha256:a973f5286758f76824ecf19ae1999f6697371a9121c8f163295d181d19a819d7", + "sha256:ab911033e5937fc221a2c165acce7f66ae5ac9d3e54bec56f3c9c197a96be574", + "sha256:ad92e37be0b106fdbc575a3a669b43b364a5ef334495c9764de4c2d7541f7a99", + "sha256:ad9ea4a50d2948738351790047d45f2b1a023facc01bf0361988109b177e8b2f", + "sha256:b029bdd5a8b6c9a7c0e8fdbe4fc25ffaa2e09b77f6f3462314696e3a20511829", + "sha256:b41a85b9b9a2530b72b0d3d10e383fc3c2647ae88169d557d5e216f881860318", + "sha256:baf020f4b708f800b353259cd7575e335a79f1ac912d9dda55b2aa0bf3616e42", + "sha256:c08094b9e5d1b6dfb0845a0253cc2655ca64ce70d15162dfdb102e28c8993493", + "sha256:c26805b6c8dc8565ed91045c44040bf6c0fe5cb5b390c78cd1d9400d08a6cd39", + "sha256:c6ee222671eed5c5b16a5ad2aea07f0a715b8b199ee534834bc1dd2798f1ade7", + "sha256:c820608e7077416f766b148d75e158e454881961881b657cff808529d261dd24", + "sha256:cb081b2b02bf4405c804de1ece6f904916838ab0e057f1446e4ac12fac827960", + "sha256:cbe038bb78d599b5a29d09c438905defaa615a522bc7e12f8016823179439497", + "sha256:cd461e402e24929d866f05061d2f8337e3a8456e75e21b72c125abff2477c7f7", + "sha256:cde6dbb788a4cbc4a80a72aa96386ba4c2b17bdfff3ace0709799adbe16d6476", + "sha256:ce7889dc3701826d519ede93cdff11940fb5567dbdc165dce0e78047eece02b7", + "sha256:d0086ba8d41d73647b13087a3ca9c020f6bfec338335037e8f5172b4c7c8dce5", + "sha256:d29988bde28a90a00367edcf92afa1a2f7ecf43ea3ae383291b7da6d380ccc25", + "sha256:d494befe648c13c98c0f3d56d05489c839c9228a32f58e9777305deb6c2c1cee", + "sha256:df4e32badb2ccf1773e1e74020b7e3b8caf9e92f842c6be7d14888ecdefc2c6c", + "sha256:e6de6a4bdfaee382c2de2a3580b3ae76fce6105da202bbd835e5efbeae6a9c6e", + "sha256:f039c5373f7b314b151432c73219216857b19ab9cb834f0eb5d880f74fc7851c", + "sha256:f6e86ac2b45a95f75c6f744147483e0fc9697ce7dfe1726083324c236f873f8b", + "sha256:f9c690b359f503f18bf1c46a6456370e4f6f3fc4320b8774ae69c4f85ecc6c94", + "sha256:fa436abd4ac9ca71859baf5794614e6ec8fa27362f0162baedcc059048da55f7", + "sha256:fa44215bc31675a6380cd896dadb7f2054a7b94cfb87e53e52af844c65406a54", + "sha256:ff451d614ca1d4227db0ffa627fb51df71968cf0d9baf0210528dad10fdbc3ab" ], "markers": "implementation_name == 'cpython'", - "version": "==0.12.1" + "version": "==0.12.2" }, "dag-cbor": { "hashes": [ @@ -958,11 +969,11 @@ }, "gunicorn": { "hashes": [ - "sha256:11fc98ea214a5845f614891e8c90b0211fbe595e677d204d7cd7d80f6f348891", - "sha256:37ced4b6622f263a6483eb7cbe9606df81afd57dc0fa464883600624790271c5" + "sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0", + "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033" ], "index": "pypi", - "version": "==21.1.0" + "version": "==21.2.0" }, "h11": { "hashes": [ @@ -1003,6 +1014,14 @@ ], "version": "==0.20.1" }, + "jmespath": { + "hashes": [ + "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", + "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe" + ], + "markers": "python_version >= '3.7'", + "version": "==1.0.1" + }, "jsonschema": { "hashes": [ "sha256:971be834317c22daaa9132340a51c01b50910724082c2c1a2ac87eeec153a3fe", @@ -1469,11 +1488,11 @@ "crypto" ], "hashes": [ - "sha256:ba2b425b15ad5ef12f200dc67dd56af4e26de2331f965c5439994dad075876e1", - "sha256:bd6ca4a3c4285c1a2d4349e5a035fdf8fb94e04ccd0fcbe6ba289dae9cc3e074" + "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de", + "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320" ], "markers": "python_version >= '3.7'", - "version": "==2.7.0" + "version": "==2.8.0" }, "pyrsistent": { "hashes": [ @@ -1824,6 +1843,14 @@ "markers": "python_version >= '3.8'", "version": "==0.9.2" }, + "s3transfer": { + "hashes": [ + "sha256:3c0da2d074bf35d6870ef157158641178a4204a6e689e82546083e31e0311346", + "sha256:640bb492711f4c0c0905e1f62b6aaeb771881935ad27884852411f8e9cacbca9" + ], + "markers": "python_version >= '3.7'", + "version": "==0.6.1" + }, "setuptools": { "hashes": [ "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f", @@ -1896,6 +1923,14 @@ "markers": "python_version >= '3.5'", "version": "==0.12.0" }, + "tqdm": { + "hashes": [ + "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5", + "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671" + ], + "index": "pypi", + "version": "==4.65.0" + }, "typing-extensions": { "hashes": [ "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36", @@ -1930,11 +1965,11 @@ }, "urllib3": { "hashes": [ - "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1", - "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825" + "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f", + "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14" ], - "markers": "python_version >= '3.7'", - "version": "==2.0.3" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==1.26.16" }, "uvicorn": { "hashes": [ @@ -2193,11 +2228,11 @@ }, "click": { "hashes": [ - "sha256:4be4b1af8d665c6d942909916d31a213a106800c47d0eeba73d34da3cbc11367", - "sha256:e576aa487d679441d7d30abb87e1b43d24fc53bffb8758443b1a9e1cee504548" + "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd", + "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5" ], "markers": "python_version >= '3.7'", - "version": "==8.1.5" + "version": "==8.1.6" }, "coverage": { "hashes": [ @@ -2267,11 +2302,11 @@ }, "dill": { "hashes": [ - "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0", - "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373" + "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e", + "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03" ], "markers": "python_version < '3.11'", - "version": "==0.3.6" + "version": "==0.3.7" }, "distlib": { "hashes": [ @@ -2322,11 +2357,11 @@ }, "identify": { "hashes": [ - "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4", - "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d" + "sha256:7243800bce2f58404ed41b7c002e53d4d22bcf3ae1b7900c2d7aefd95394bf7f", + "sha256:c22a8ead0d4ca11f1edd6c9418c3220669b3b7533ada0a0ffa6cc0ef85cf9b54" ], - "markers": "python_version >= '3.7'", - "version": "==2.5.24" + "markers": "python_version >= '3.8'", + "version": "==2.5.26" }, "iniconfig": { "hashes": [ @@ -2712,10 +2747,10 @@ }, "types-pyyaml": { "hashes": [ - "sha256:662fa444963eff9b68120d70cda1af5a5f2aa57900003c2006d7626450eaae5f", - "sha256:ebab3d0700b946553724ae6ca636ea932c1b0868701d4af121630e78d695fc97" + "sha256:7d340b19ca28cddfdba438ee638cd4084bde213e501a3978738543e27094775b", + "sha256:a461508f3096d1d5810ec5ab95d7eeecb651f3a15b71959999988942063bf01d" ], - "version": "==6.0.12.10" + "version": "==6.0.12.11" }, "typing-extensions": { "hashes": [ @@ -2727,11 +2762,11 @@ }, "virtualenv": { "hashes": [ - "sha256:18d1b37fc75cc2670625702d76849a91ebd383768b4e91382a8d51be3246049e", - "sha256:e2a7cef9da880d693b933db7654367754f14e20650dc60e8ee7385571f8593a3" + "sha256:01aacf8decd346cf9a865ae85c0cdc7f64c8caa07ff0d8b1dfc1733d10677442", + "sha256:2ef6a237c31629da6442b0bcaa3999748108c7166318d1f55cc9f8d7294e97bd" ], "markers": "python_version >= '3.7'", - "version": "==20.24.0" + "version": "==20.24.1" }, "wrapt": { "hashes": [ diff --git a/api/cgrants/admin.py b/api/cgrants/admin.py index ab8a95b16..47a3dfcb0 100644 --- a/api/cgrants/admin.py +++ b/api/cgrants/admin.py @@ -1,4 +1,5 @@ from django.contrib import admin +from scorer.scorer_admin import ScorerModelAdmin from .models import ( Contribution, @@ -7,57 +8,65 @@ GrantCLRCalculation, GrantContributionIndex, Profile, + ProtocolContributions, SquelchProfile, Subscription, ) @admin.register(Profile) -class ProfileAdmin(admin.ModelAdmin): +class ProfileAdmin(ScorerModelAdmin): list_display = ("handle",) search_fields = ("handle",) @admin.register(Grant) -class GrantAdmin(admin.ModelAdmin): +class GrantAdmin(ScorerModelAdmin): list_display = ("admin_profile", "hidden", "active", "is_clr_eligible") list_filter = ("hidden", "active", "is_clr_eligible") search_fields = ("admin_profile__handle",) @admin.register(Subscription) -class SubscriptionAdmin(admin.ModelAdmin): +class SubscriptionAdmin(ScorerModelAdmin): list_display = ("grant", "contributor_profile") search_fields = ("grant__admin_profile__handle", "contributor_profile__handle") @admin.register(Contribution) -class ContributionAdmin(admin.ModelAdmin): +class ContributionAdmin(ScorerModelAdmin): list_display = ("subscription",) @admin.register(GrantCLR) -class GrantCLRAdmin(admin.ModelAdmin): +class GrantCLRAdmin(ScorerModelAdmin): list_display = ("type",) list_filter = ("type",) @admin.register(GrantCLRCalculation) -class GrantCLRCalculationAdmin(admin.ModelAdmin): +class GrantCLRCalculationAdmin(ScorerModelAdmin): list_display = ("active", "latest", "grant", "grantclr") list_filter = ("active", "latest") search_fields = ("grant__admin_profile__handle", "grantclr__type") @admin.register(SquelchProfile) -class SquelchProfileAdmin(admin.ModelAdmin): +class SquelchProfileAdmin(ScorerModelAdmin): list_display = ("profile", "active") list_filter = ("active",) search_fields = ("profile__handle",) @admin.register(GrantContributionIndex) -class GrantContributionIndexAdmin(admin.ModelAdmin): +class GrantContributionIndexAdmin(ScorerModelAdmin): list_display = ("profile", "contribution", "grant", "round_num", "amount") list_filter = ("round_num",) search_fields = ("profile__handle", "grant__admin_profile__handle") + + +@admin.register(ProtocolContributions) +class ProtocolContributionsAdmin(ScorerModelAdmin): + list_display = ("ext_id", "round", "contributor", "amount") + list_filter = ("round",) + search_fields = ("contributor", "round", "project") diff --git a/api/cgrants/management/commands/import_allo_votes.py b/api/cgrants/management/commands/import_allo_votes.py new file mode 100644 index 000000000..fea512fe8 --- /dev/null +++ b/api/cgrants/management/commands/import_allo_votes.py @@ -0,0 +1,148 @@ +import itertools +import json +from urllib.parse import urlparse + +import boto3 +from cgrants.models import ProtocolContributions +from django.conf import settings +from django.core.management.base import BaseCommand +from tqdm import tqdm + + +def iterate_array_in_chunks(arr, chunk_size): + for i in range(0, len(arr), chunk_size): + yield arr[i : i + chunk_size] + + +def batch_iterator(iterable, batch_size): + it = iter(iterable) + while True: + batch = list(itertools.islice(it, batch_size)) + if not batch: + break + yield batch + + +def get_prodocol_contribution_for_json(json_data): + return ProtocolContributions( + ext_id=json_data["id"], + contributor=json_data["voter"], + amount=json_data["amountUSD"], + project=json_data["projectId"], + round=json_data["roundId"], + data=json_data, + ) + + +class Command(BaseCommand): + help = ( + "This command will import votes and contribution amounts for the Allo protocol." + ) + + def add_arguments(self, parser): + parser.add_argument( + "--in", + required=True, + help="""S3 uri for input file, for example 's3://your_bucket_name/your_folder_name/your_file_name.txt'. + Input file must be in JSONL format (that is 1 JSON record per line).)""", + ) + + def stream_jsonl_from_s3_uri(self, s3_uri): + # Parse the S3 URI to get the bucket name, folder, and file name + parsed_uri = urlparse(s3_uri) + bucket_name = parsed_uri.netloc + path = parsed_uri.path.strip("/") + folder_name, file_name = path.rsplit("/", 1) + + s3 = boto3.client( + "s3", + aws_access_key_id=settings.S3_DATA_AWS_SECRET_KEY_ID, + aws_secret_access_key=settings.S3_DATA_AWS_SECRET_ACCESS_KEY, + ) + + try: + response = s3.get_object( + Bucket=bucket_name, Key=f"{folder_name}/{file_name}" + ) + return response["Body"] + except Exception as e: + self.stdout.write(self.style.ERROR(f"Error reading file from S3: {e}")) + return None + + def read_file_contents_from_s3_uri(self, s3_uri): + # Parse the S3 URI to get the bucket name, folder, and file name + parsed_uri = urlparse(s3_uri) + bucket_name = parsed_uri.netloc + path = parsed_uri.path.strip("/") + folder_name, file_name = path.rsplit("/", 1) + + s3 = boto3.client( + "s3", + aws_access_key_id=settings.S3_DATA_AWS_SECRET_KEY_ID, + aws_secret_access_key=settings.S3_DATA_AWS_SECRET_ACCESS_KEY, + ) + + try: + response = s3.get_object( + Bucket=bucket_name, Key=f"{folder_name}/{file_name}" + ) + contents = response["Body"].read().decode("utf-8") + return contents + except Exception as e: + self.stdout.write(self.style.ERROR(f"Error reading file from S3: {e}")) + return None + + def handle(self, *args, **options): + s3_uri = options["in"] + self.stdout.write(f'Input file "{s3_uri}"') + num_errors = 0 + stream = self.stream_jsonl_from_s3_uri(s3_uri) + if stream: + self.stdout.write(self.style.SUCCESS(f"Got stream, processing JSONL")) + + total_size = None + + # Process each line of the JSONL file with a progress bar + with tqdm( + total=total_size, unit="B", unit_scale=True, desc="Processing JSONL" + ) as pbar: + self.stdout.write(f"reading lines ...") + chunk_size = 1000 + + for dataset in batch_iterator(stream.iter_lines(), chunk_size): + protocol_contributions = [] + for line in dataset: + try: + json_data = json.loads(line) + protocol_contributions.append( + get_prodocol_contribution_for_json(json_data) + ) + except json.JSONDecodeError as e: + self.stdout.write( + self.style.ERROR(f"Error parsing JSON line: '{line}'") + ) + self.stdout.write(self.style.ERROR(f"Error: '{e}'")) + num_errors = num_errors + 1 + + # Update the progress bar with the number of bytes read + pbar.update(len(line)) + + ProtocolContributions.objects.bulk_create( + protocol_contributions, + ignore_conflicts=True, + ) + else: + self.stdout.write(self.style.ERROR(f"Empty file read from S3: {s3_uri}")) + + if num_errors == 0: + self.stdout.write( + self.style.SUCCESS( + "JSONL loading status: All records loaded succefully!" + ) + ) + else: + self.stdout.write( + self.style.ERROR( + f"JSONL loading status: {num_errors} records failed to parse" + ) + ) diff --git a/api/cgrants/migrations/0005_protocolcontributions.py b/api/cgrants/migrations/0005_protocolcontributions_and_more.py similarity index 56% rename from api/cgrants/migrations/0005_protocolcontributions.py rename to api/cgrants/migrations/0005_protocolcontributions_and_more.py index 4e4aa0b47..a166db7e3 100644 --- a/api/cgrants/migrations/0005_protocolcontributions.py +++ b/api/cgrants/migrations/0005_protocolcontributions_and_more.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.3 on 2023-07-20 14:29 +# Generated by Django 4.2.3 on 2023-07-24 11:02 import account.models from django.db import migrations, models @@ -22,26 +22,32 @@ class Migration(migrations.Migration): verbose_name="ID", ), ), + ( + "ext_id", + models.CharField( + db_index=True, default="", max_length=66, unique=True + ), + ), ( "contributor", account.models.EthAddressField( - db_index=True, max_length=100, null=True + db_index=True, default="", max_length=100 ), ), ( "round", account.models.EthAddressField( - db_index=True, max_length=100, null=True + db_index=True, default="", max_length=100 ), ), ( "project", account.models.EthAddressField( - db_index=True, max_length=100, null=True + db_index=True, default="", max_length=100 ), ), ( - "amount_usd", + "amount", models.DecimalField( db_index=True, decimal_places=18, @@ -50,6 +56,24 @@ class Migration(migrations.Migration): max_digits=64, ), ), + ( + "data", + models.JSONField( + default=dict, + help_text="Original contribution data in JSON format", + ), + ), ], ), + migrations.AlterField( + model_name="grantcontributionindex", + name="amount", + field=models.DecimalField( + db_index=True, + decimal_places=18, + default=0, + help_text="The USD amount contributed", + max_digits=64, + ), + ), ] diff --git a/api/cgrants/models.py b/api/cgrants/models.py index be145e429..b4e5c7f7a 100644 --- a/api/cgrants/models.py +++ b/api/cgrants/models.py @@ -195,7 +195,7 @@ class GrantContributionIndex(models.Model): decimal_places=18, max_digits=64, db_index=True, - help_text=_("The amount contributed"), + help_text=_("The USD amount contributed"), ) @@ -205,14 +205,25 @@ class ProtocolContributions(models.Model): The data in this table was produced by the allo indexer, see: https://github.com/gitcoinco/allo-indexer """ - contributor = EthAddressField(null=True, blank=False, max_length=100, db_index=True) - round = EthAddressField(null=True, blank=False, max_length=100, db_index=True) - project = EthAddressField(null=True, blank=False, max_length=100, db_index=True) - amount_usd = models.DecimalField( + ext_id = models.CharField( + null=False, blank=False, max_length=66, db_index=True, unique=True, default="" + ) + contributor = EthAddressField( + null=False, blank=False, max_length=100, db_index=True, default="" + ) + round = EthAddressField( + null=False, blank=False, max_length=100, db_index=True, default="" + ) + project = EthAddressField( + null=False, blank=False, max_length=100, db_index=True, default="" + ) + amount = models.DecimalField( default=0, decimal_places=18, max_digits=64, db_index=True, help_text=_("The USD amount contributed"), ) - # TODO: add also other fields, like transaction hash, etc. + data = models.JSONField( + help_text=_("Original contribution data in JSON format"), default=dict + ) diff --git a/api/scorer/scorer_admin.py b/api/scorer/scorer_admin.py new file mode 100644 index 000000000..f86869d0a --- /dev/null +++ b/api/scorer/scorer_admin.py @@ -0,0 +1,27 @@ +from django.contrib import admin +from django.core.paginator import Paginator +from django.utils.functional import cached_property + +# class NoCountPaginator(Paginator): +# @cached_property +# def count(self): +# """Return a fix number for the total count. We want to avoid slow loading of page ...""" +# from django.apps import apps + +# model = apps.get_model("app_name", "model_name") +# return 1000 + + +class ScorerModelAdmin(admin.ModelAdmin): + """ + This extends the default ModelAdmin in django and: + - sets `show_full_result_count` to `False` + - sets `paginator` to `NoCountPaginator` -> the reasoning here is that + having the count slows queries down a lot, making the admin list page unusable and issuing a Gatway timeout. + Also, that count & pagination have no real value. Users should rely on the search function, + to narrow down the list of results to a small enough number. + """ + + show_full_result_count = False + # TODO: holding back on changing the NoCountPaginator for now ... + # paginator = NoCountPaginator diff --git a/api/scorer/settings/__init__.py b/api/scorer/settings/__init__.py index 01658b2f1..65c43e940 100644 --- a/api/scorer/settings/__init__.py +++ b/api/scorer/settings/__init__.py @@ -5,3 +5,4 @@ from .gitcoin_passport_weights import * from .ninja_jwt import * from .ratelimit import * +from .s3 import * diff --git a/api/scorer/settings/base.py b/api/scorer/settings/base.py index 2b2d43eeb..60142f773 100644 --- a/api/scorer/settings/base.py +++ b/api/scorer/settings/base.py @@ -327,6 +327,16 @@ "handlers": [], "propagate": False, }, + "urllib3": { + "level": "DEBUG", + "handlers": [], + "propagate": False, + }, + "botocore": { + "level": "DEBUG", + "handlers": [], + "propagate": False, + }, }, } diff --git a/api/scorer/settings/s3.py b/api/scorer/settings/s3.py new file mode 100644 index 000000000..c9d4459a6 --- /dev/null +++ b/api/scorer/settings/s3.py @@ -0,0 +1,7 @@ +from .env import env + +# These configuration settings will be used when accessing data +# on S3 URIs. This should typically be the case when importing or exporting +# data. Seet the `import_allo_votes` command for an example. +S3_DATA_AWS_SECRET_KEY_ID = env("S3_DATA_AWS_SECRET_KEY_ID") +S3_DATA_AWS_SECRET_ACCESS_KEY = env("S3_DATA_AWS_SECRET_ACCESS_KEY") diff --git a/interface/.env.example b/interface/.env.example index 351f6c605..96ab16d80 100644 --- a/interface/.env.example +++ b/interface/.env.example @@ -13,3 +13,9 @@ NEXT_PUBLIC_PASSPORT_SCORER_TESTING_CYPRESS="on" NEXT_PUBLIC_MAINTENANCE_MODE_ON=["2023-06-07T21:00:00.000Z", "2023-06-08T22:15:00.000Z"] NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=YOUR_WALLET_CONNECT_PROJECT_ID NEXT_PUBLIC_WEB3_ONBOARD_EXPLORE_URL=http://localhost:3000/ + +# The following credentials are used for accessing files in the AWS S3 bucket when +# importing (or exporting) data from the database. +# See the command `import_allo_votes` for example +S3_DATA_AWS_SECRET_KEY_ID= +S3_DATA_AWS_SECRET_ACCESS_KEY=