diff --git a/components/paddock/Pipfile b/components/paddock/Pipfile index 96017884..0d785763 100644 --- a/components/paddock/Pipfile +++ b/components/paddock/Pipfile @@ -52,6 +52,7 @@ openai = "*" pydub = "*" django-bootstrap5 = "*" django-bootstrap-icons = "*" +pathway = "*" [dev-packages] black = "*" diff --git a/components/paddock/Pipfile.lock b/components/paddock/Pipfile.lock index 1875a25a..85436c94 100644 --- a/components/paddock/Pipfile.lock +++ b/components/paddock/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "2e539ee09703812ef905ff5ebf2c97bc0c4cab6a3e0aff0c9104fba8353cb707" + "sha256": "c6d2520bac94aaad5acabe7a9015d399a6cb980e57ed1203ebd7243a59041aa3" }, "pipfile-spec": 6, "requires": { @@ -130,6 +130,7 @@ "sha256:f800164276eec54e0af5c99feb9494c295118fc10a11b997bbb1348ba1a52065", "sha256:ffcd828e37dc219a72c9012ec44ad2e7e3066bec6ff3aaa19e7d435dbf4032ca" ], + "markers": "python_version >= '3.8'", "version": "==3.9.1" }, "aiosignal": { @@ -158,11 +159,11 @@ }, "anyio": { "hashes": [ - "sha256:56a415fbc462291813a94528a779597226619c8e78af7de0507333f700011e5f", - "sha256:5a0bec7085176715be77df87fc66d6c9d70626bd752fcc85f57cdbee5b3760da" + "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee", + "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f" ], "markers": "python_version >= '3.8'", - "version": "==4.1.0" + "version": "==4.2.0" }, "appnope": { "hashes": [ @@ -271,6 +272,14 @@ "markers": "python_version >= '3.7'", "version": "==2.14.0" }, + "beartype": { + "hashes": [ + "sha256:2af6a8d8a7267ccf7d271e1a3bd908afbc025d2a09aa51123567d7d7b37438df", + "sha256:52cd2edea72fdd84e4e7f8011a9e3007bf0125c3d6d7219e937b9d8868169177" + ], + "markers": "python_full_version >= '3.8.0'", + "version": "==0.15.0" + }, "beautifulsoup4": { "hashes": [ "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da", @@ -303,6 +312,38 @@ "markers": "python_version >= '3.8'", "version": "==1.7.0" }, + "bokeh": { + "hashes": [ + "sha256:ae180f86f776525f7eb81673a1f27e0eb56887d733771662c512ec0d82a433f5", + "sha256:f70bcea96c72f85bbeae01b9dcd30a9f27aa48fbfaf8e6f45b6958dfcd08e5c5" + ], + "markers": "python_version >= '3.9'", + "version": "==3.3.2" + }, + "boto3": { + "hashes": [ + "sha256:77e055bd44c7ffc593928d2a272f4931a7f68c22f8d984530fc76cf063b7cc05", + "sha256:d2fa7c1c65108fd984ac7b6d21cca640a6a005ff1ad99e4429b9f6ef835996f9" + ], + "markers": "python_version >= '3.8'", + "version": "==1.34.3" + }, + "botocore": { + "hashes": [ + "sha256:8e5b32c63db8963af0008e36ceb13c236a46878a3722ffc6dd3be7351fba7163", + "sha256:c0e7910a118ad497738a327f3456582c69f761ba9d004007570d64093f767a5e" + ], + "markers": "python_version >= '3.8'", + "version": "==1.34.3" + }, + "cachetools": { + "hashes": [ + "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2", + "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1" + ], + "markers": "python_version >= '3.7'", + "version": "==5.3.2" + }, "celery": { "hashes": [ "sha256:870cc71d737c0200c397290d730344cc991d13a057534353d124c9380267aab9", @@ -694,6 +735,14 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==0.7.1" }, + "diskcache": { + "hashes": [ + "sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc", + "sha256:5e31b2d5fbad117cc363ebaf6b689474db18a1f6438bc82358b024abd4c2ca19" + ], + "markers": "python_version >= '3'", + "version": "==5.6.3" + }, "distro": { "hashes": [ "sha256:02e111d1dc6a50abb8eed6bf31c3e48ed8b0830d1ea2a1b78c61765c2513fdd8", @@ -906,51 +955,51 @@ }, "fonttools": { "hashes": [ - "sha256:13ac0cba2fc63fa4b232f2a7971f35f35c6eaf10bd1271fa96d4ce6253a8acfd", - "sha256:156ae342a1ed1fe38e180de471e98fbf5b2b6ae280fa3323138569c4ca215844", - "sha256:1a9f9cdd7ef63d1b8ac90db335762451452426b3207abd79f60da510cea62da5", - "sha256:1c9937c4dd1061afd22643389445fabda858af5e805860ec3082a4bc07c7a720", - "sha256:25852f0c63df0af022f698464a4a80f7d1d5bd974bcd22f995f6b4ad198e32dd", - "sha256:2ae45716c27a41807d58a9f3f59983bdc8c0a46cb259e4450ab7e196253a9853", - "sha256:2c23c59d321d62588620f2255cf951270bf637d88070f38ed8b5e5558775b86c", - "sha256:2cf923a4a556ab4cc4c52f69a4a2db624cf5a2cf360394368b40c5152fe3321e", - "sha256:2d0eba685938c603f2f648dfc0aadbf8c6a4fe1c7ca608c2970a6ef39e00f254", - "sha256:3033b55f401a622de2630b3982234d97219d89b058607b87927eccb0f922313c", - "sha256:49ea0983e55fd7586a809787cd4644a7ae471e53ab8ddc016f9093b400e32646", - "sha256:5200b01f463d97cc2b7ff8a1e3584151f4413e98cb8419da5f17d1dbb84cc214", - "sha256:5b627ed142398ea9202bd752c04311592558964d1a765fb2f78dc441a05633f4", - "sha256:6d4a4ebcc76e30898ff3296ea786491c70e183f738319ae2629e0d44f17ece42", - "sha256:795150d5edc595e1a2cfb3d65e8f4f3d027704fc2579f8990d381bef6b188eb6", - "sha256:7b460720ce81773da1a3e7cc964c48e1e11942b280619582a897fa0117b56a62", - "sha256:7b5636f5706d49f13b6d610fe54ee662336cdf56b5a6f6683c0b803e23d826d2", - "sha256:8485cc468288e213f31afdaf1fdda3c79010f542559fbba936a54f4644df2570", - "sha256:87c214197712cc14fd2a4621efce2a9c501a77041232b789568149a8a3161517", - "sha256:87c3299da7da55394fb324349db0ede38114a46aafd0e7dfcabfecd28cdd94c3", - "sha256:89c2c520f9492844ecd6316d20c6c7a157b5c0cb73a1411b3db28ee304f30122", - "sha256:8be6adfa4e15977075278dd0a0bae74dec59be7b969b5ceed93fb86af52aa5be", - "sha256:8bee9f4fc8c99824a424ae45c789ee8c67cb84f8e747afa7f83b7d3cef439c3b", - "sha256:982f69855ac258260f51048d9e0c53c5f19881138cc7ca06deb38dc4b97404b6", - "sha256:9e6aeb5c340416d11a3209d75c48d13e72deea9e1517837dd1522c1fd1f17c11", - "sha256:a0e94244ec24a940ecfbe5b31c975c8a575d5ed2d80f9a280ce3b21fa5dc9c34", - "sha256:a4a50a1dfad7f7ba5ca3f99cc73bf5cdac67ceade8e4b355a877521f20ad1b63", - "sha256:a9fa52ef8fd14d7eb3d813e1451e7ace3e1eebfa9b7237d3f81fee8f3de6a114", - "sha256:adab73618d0a328b203a0e242b3eba60a2b5662d9cb2bd16ed9c52af8a7d86af", - "sha256:c506e3d3a9e898caee4dc094f34b49c5566870d5a2d1ca2125f0a9f35ecc2205", - "sha256:c779f8701deedf41908f287aeb775b8a6f59875ad1002b98ac6034ae4ddc1b7b", - "sha256:c94564b1f3b5dd87e73577610d85115b1936edcc596deaf84a31bbe70e17456b", - "sha256:c9a0e422ab79e5cb2b47913be6a4b5fd20c4c7ac34a24f3691a4e099e965e0b8", - "sha256:ca9eceebe70035b057ce549e2054cad73e95cac3fe91a9d827253d1c14618204", - "sha256:ce199227ce7921eaafdd4f96536f16b232d6b580ce74ce337de544bf06cb2752", - "sha256:d00fc63131dcac6b25f50a5a129758438317e54e3ce5587163f7058de4b0e933", - "sha256:d3d7b96aba96e05e8c911ce2dfc5acc6a178b8f44f6aa69371ab91aa587563da", - "sha256:d4e69e2c7f93b695d2e6f18f709d501d945f65c1d237dafaabdd23cd935a5276", - "sha256:e26e7fb908ae4f622813e7cb32cd2db6c24e3122bb3b98f25e832a2fe0e7e228", - "sha256:e5b7905fd68eacb7cc56a13139da5c312c45baae6950dd00b02563c54508a041", - "sha256:f5f1423a504ccc329efb5aa79738de83d38c072be5308788dde6bd419969d7f5", - "sha256:f8bc3973ed58893c4107993e0a7ae34901cb572b5e798249cbef35d30801ffd4" - ], - "markers": "python_version >= '3.8'", - "version": "==4.46.0" + "sha256:084511482dd265bce6dca24c509894062f0117e4e6869384d853f46c0e6d43be", + "sha256:1193fb090061efa2f9e2d8d743ae9850c77b66746a3b32792324cdce65784154", + "sha256:174995f7b057e799355b393e97f4f93ef1f2197cbfa945e988d49b2a09ecbce8", + "sha256:253bb46bab970e8aae254cebf2ae3db98a4ef6bd034707aa68a239027d2b198d", + "sha256:2a78dba8c2a1e9d53a0fb5382979f024200dc86adc46a56cbb668a2249862fda", + "sha256:2d2404107626f97a221dc1a65b05396d2bb2ce38e435f64f26ed2369f68675d9", + "sha256:40bdbe90b33897d9cc4a39f8e415b0fcdeae4c40a99374b8a4982f127ff5c767", + "sha256:495369c660e0c27233e3c572269cbe520f7f4978be675f990f4005937337d391", + "sha256:4a9a51745c0439516d947480d4d884fa18bd1458e05b829e482b9269afa655bc", + "sha256:511482df31cfea9f697930f61520f6541185fa5eeba2fa760fe72e8eee5af88b", + "sha256:52c82df66201f3a90db438d9d7b337c7c98139de598d0728fb99dab9fd0495ca", + "sha256:562681188c62c024fe2c611b32e08b8de2afa00c0c4e72bed47c47c318e16d5c", + "sha256:59a6c8b71a245800e923cb684a2dc0eac19c56493e2f896218fcf2571ed28984", + "sha256:5dde0eab40faaa5476133123f6a622a1cc3ac9b7af45d65690870620323308b4", + "sha256:61df4dee5d38ab65b26da8efd62d859a1eef7a34dcbc331299a28e24d04c59a7", + "sha256:62d8ddb058b8e87018e5dc26f3258e2c30daad4c87262dfeb0e2617dd84750e6", + "sha256:66c92ec7f95fd9732550ebedefcd190a8d81beaa97e89d523a0d17198a8bda4d", + "sha256:843509ae9b93db5aaf1a6302085e30bddc1111d31e11d724584818f5b698f500", + "sha256:854421e328d47d70aa5abceacbe8eef231961b162c71cbe7ff3f47e235e2e5c5", + "sha256:97620c4af36e4c849e52661492e31dc36916df12571cb900d16960ab8e92a980", + "sha256:9acfa1cdc479e0dde528b61423855913d949a7f7fe09e276228298fef4589540", + "sha256:a77a60315c33393b2bd29d538d1ef026060a63d3a49a9233b779261bad9c3f71", + "sha256:b4fabb8cc9422efae1a925160083fdcbab8fdc96a8483441eb7457235df625bd", + "sha256:bf1810635c00f7c45d93085611c995fc130009cec5abdc35b327156aa191f982", + "sha256:c01f409be619a9a0f5590389e37ccb58b47264939f0e8d58bfa1f3ba07d22671", + "sha256:c59227d7ba5b232281c26ae04fac2c73a79ad0e236bca5c44aae904a18f14faf", + "sha256:c75e19971209fbbce891ebfd1b10c37320a5a28e8d438861c21d35305aedb81c", + "sha256:ce0e2c88c8c985b7b9a7efcd06511fb0a1fe3ddd9a6cd2895ef1dbf9059719d7", + "sha256:d6477ba902dd2d7adda7f0fd3bfaeb92885d45993c9e1928c9f28fc3961415f7", + "sha256:d986b66ff722ef675b7ee22fbe5947a41f60a61a4da15579d5e276d897fbc7fa", + "sha256:dd23848f877c3754f53a4903fb7a593ed100924f9b4bff7d5a4e2e8a7001ae11", + "sha256:e3f4d61f3a8195eac784f1d0c16c0a3105382c1b9a74d99ac4ba421da39a8826", + "sha256:e6b968543fde4119231c12c2a953dcf83349590ca631ba8216a8edf9cd4d36a9", + "sha256:e77bdf52185bdaf63d39f3e1ac3212e6cfa3ab07d509b94557a8902ce9c13c82", + "sha256:e79f1a3970d25f692bbb8c8c2637e621a66c0d60c109ab48d4a160f50856deff", + "sha256:e7a0a8848726956e9d9fb18c977a279013daadf0cbb6725d2015a6dd57527992", + "sha256:e869da810ae35afb3019baa0d0306cdbab4760a54909c89ad8904fa629991812", + "sha256:e8acf6dd0434b211b3bd30d572d9e019831aae17a54016629fa8224783b22df8", + "sha256:e8fa20748de55d0021f83754b371432dca0439e02847962fc4c42a0e444c2d78", + "sha256:ea592e6a09b71cb7a7661dd93ac0b877a6228e2d677ebacbad0a4d118494c86d", + "sha256:ec13a10715eef0e031858c1c23bfaee6cba02b97558e4a7bfa089dba4a8c2ebf", + "sha256:f4da089f6dfdb822293bde576916492cd708c37c2501c3651adde39804630538" + ], + "markers": "python_version >= '3.8'", + "version": "==4.47.0" }, "fqdn": { "hashes": [ @@ -1042,6 +1091,61 @@ "markers": "python_version >= '3.8'", "version": "==1.4.1" }, + "geographiclib": { + "hashes": [ + "sha256:6b7225248e45ff7edcee32becc4e0a1504c606ac5ee163a5656d482e0cd38734", + "sha256:f7f41c85dc3e1c2d3d935ec86660dc3b2c848c83e17f9a9e51ba9d5146a15859" + ], + "markers": "python_version >= '3.7'", + "version": "==2.0" + }, + "geopy": { + "hashes": [ + "sha256:50283d8e7ad07d89be5cb027338c6365a32044df3ae2556ad3f52f4840b3d0d1", + "sha256:ae8b4bc5c1131820f4d75fce9d4aaaca0c85189b3aa5d64c3dcaf5e3b7b882a7" + ], + "markers": "python_version >= '3.7'", + "version": "==2.4.1" + }, + "google-api-core": { + "hashes": [ + "sha256:2aa56d2be495551e66bbff7f729b790546f87d5c90e74781aa77233bcb395a8a", + "sha256:abc978a72658f14a2df1e5e12532effe40f94f868f6e23d95133bd6abcca35ca" + ], + "markers": "python_version >= '3.7'", + "version": "==2.15.0" + }, + "google-api-python-client": { + "hashes": [ + "sha256:3a45a53c031478d1c82c7162dd25c9a965247bca6bd438af0838a9d9b8219405", + "sha256:b605adee2d09a843b97a59925757802904679e44e5599708cedb8939900dfbc7" + ], + "markers": "python_version >= '3.7'", + "version": "==2.111.0" + }, + "google-auth": { + "hashes": [ + "sha256:42f707937feb4f5e5a39e6c4f343a17300a459aaf03141457ba505812841cc40", + "sha256:473a8dfd0135f75bb79d878436e568f2695dce456764bf3a02b6f8c540b1d256" + ], + "markers": "python_version >= '3.7'", + "version": "==2.25.2" + }, + "google-auth-httplib2": { + "hashes": [ + "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05", + "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d" + ], + "version": "==0.2.0" + }, + "googleapis-common-protos": { + "hashes": [ + "sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07", + "sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277" + ], + "markers": "python_version >= '3.7'", + "version": "==1.62.0" + }, "h11": { "hashes": [ "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", @@ -1050,6 +1154,49 @@ "markers": "python_version >= '3.7'", "version": "==0.14.0" }, + "h3": { + "hashes": [ + "sha256:02faa911f2d8425c641a1f7c08f3dc9c10a5a3d81408832afa40748534b999c8", + "sha256:0724d4645c1da59e02b3305050c52b93ce1d8971d1d139433d464fcc103249a6", + "sha256:1471ff4d3875b25b521eeec5c2b72abe27b8e6af10ab99b7da5c0de545b0e832", + "sha256:198718ab20a06ebe52f0aaafc02469e4a51964e5ba7990c3cc1d2fc32e7a54d9", + "sha256:1b4db92ceaeb9a51cc875c302cdc5e1aa27eed776d95943ee55c941bc2f219a3", + "sha256:1bdc790d91138e781973dcaade5231db7fe8a876330939e0903f602acc4fb64c", + "sha256:1cd4f07c49721023c5fef401a4de03c47000705dfd116579dc6b61cad821305d", + "sha256:1d3b93e3f38eb6c8fc5051d1b289b74614fb5f2415d272fea18085dea260d6b0", + "sha256:211ef3317dcf7863e2d01a97ab6da319b8451d78cd1633dd28faaf69e66bc321", + "sha256:231959dceb4cc4ae86fe4fe2c385b176ed81712549e787b889dfa66f583676df", + "sha256:26f3175bd3ea3ee528dbf49308e7215a58351ce425e1c3a9838ae22526663311", + "sha256:36ea935833c37fdfd7ffbfc000d7cd20addcdf67f30b26a6b9bccb9210b03704", + "sha256:3bae8b95f21f20f04141a35f15c8caa74f2046eb01ef49e35fc45e6a8edfc8df", + "sha256:4810ddb3d91411a6cbf87a28108fe31712f618ef223c349e1f6675602af2c473", + "sha256:495e37b1dee0ec46ccd88b278e571234b0d0d30648f161799d65a8d7f390b3f2", + "sha256:6ca9dd410e250d37f24a87c4ecb0615bb6d44a3f90eb5dbbf1b5e3d4489b8703", + "sha256:76abc02f14a8df42fb5d80e6045023fb756c49d3cb08d69a8ceb9362b95d4bec", + "sha256:783b2ca4448360c5a184fd43b84fc5554e3a8fd02738ff31349506189c5b4b49", + "sha256:7d7b69015f5bab2525914fad370b96dc386437e19a14cfed3eb13868589263db", + "sha256:8bf1e080b9a47774754834e7f10155f3d2e3542bf895488a0519b2ae7d5b15db", + "sha256:98c3951c3b67ca3de06ef70aa74a9752640a3eca9b4d68e0d5d8e4fc6fa72337", + "sha256:991ee991f2ae41f629feb1cd32fa677b8512c72696eb0ad94fcf359d61184b2e", + "sha256:99b81620608378fc9910a5c630b0f17eb939156fa13e1adc55229d31f8c3f5ca", + "sha256:9bbd3dbac99532fa521d7d2e288ff55877bea3223b070f659ed7b5f8f1f213eb", + "sha256:a2872f695168c4700c73edd6eab9c6181387d7ea177de13b130ae61e613ff7de", + "sha256:b1b1bce0dee05175f8d422e50ffa1afacb9a7e78ae0963059aebfbef50e10175", + "sha256:b2e2c4808b7691b176c89ebf23c173b3b23dd4ce42f8f494b32c6e31ceee49af", + "sha256:b58b1298bf1068704c6d9426749c8ae6021b53d982d5153cc4161c7042ecd810", + "sha256:b9de9da755c90bbc90d6c041396a20c91816cd86a0bafa3b8899681cfdc2c4c6", + "sha256:cd4a5103a86a7d98cffa3be77eb82080aa2e9d676bbd1661f3db9ecad7a4ef2b", + "sha256:cda9a427b0de0d4069115ec765118888f180d0db915b5bc0dba52f5ae957b789", + "sha256:d0c2890fa10fa8695c020569c8d55da79e2c552a39533de4ae6991c7acb122e1", + "sha256:e1f6ec0f2246381ce3a7f72da1ce825a5474eb7c8fb25a2ea1f16c6606ce34a7", + "sha256:eb96f2caae519d0ed17acde625af528476dca121b0336d3eb776429d40284ef6", + "sha256:eddf10d1d2139b3ea3ad1618c2074e1c47d3d36bddb5359e4955f5fd0b089d93", + "sha256:f8d1db3dcd8f6ce7f54e061e6c9fbecbb5c3978b9e54e44af05a53787c4f99b3", + "sha256:fc8030968586a7810aa192397ad9a4f7d7a963f57c9b3e210fc38de0aa5c2533", + "sha256:fcbfff87d223279f8e38bbee3ebf52b1b96ae280e9e7de24674d3c284373d946" + ], + "version": "==3.7.6" + }, "httpcore": { "hashes": [ "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7", @@ -1058,6 +1205,14 @@ "markers": "python_version >= '3.8'", "version": "==1.0.2" }, + "httplib2": { + "hashes": [ + "sha256:14ae0a53c1ba8f3d37e9e27cf37eabb0fb9980f435ba405d546948b009dd64dc", + "sha256:d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==0.22.0" + }, "httpx": { "hashes": [ "sha256:8b8fcaa0c8ea7b05edd69a094e63a2094c4efcb48129fb757361bc423c0ad9e8", @@ -1140,6 +1295,14 @@ "markers": "python_version >= '3.7'", "version": "==3.1.2" }, + "jmespath": { + "hashes": [ + "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", + "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe" + ], + "markers": "python_version >= '3.7'", + "version": "==1.0.1" + }, "joblib": { "hashes": [ "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1", @@ -1190,6 +1353,14 @@ "index": "pypi", "version": "==1.0.0" }, + "jupyter-bokeh": { + "hashes": [ + "sha256:2da8c3ddc734d15737bf06126d9e31e84d30f18ac3da3a3f95be40a95a054c87", + "sha256:676d74bd8b95c7467d5e7ea1c954b306c7768b7bfa2bb3dd32e64efdf7dc09ee" + ], + "markers": "python_version >= '3.8'", + "version": "==3.0.7" + }, "jupyter-client": { "hashes": [ "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7", @@ -1208,11 +1379,11 @@ }, "jupyter-core": { "hashes": [ - "sha256:880b86053bf298a8724994f95e99b99130659022a4f7f45f563084b6223861d3", - "sha256:e11e02cd8ae0a9de5c6c44abf5727df9f2581055afe00b22183f621ba3585805" + "sha256:1553311a97ccd12936037f36b9ab4d6ae8ceea6ad2d5c90d94a909e752178e40", + "sha256:220dfb00c45f0d780ce132bb7976b58263f81a3ada6e90a9b6823785a424f739" ], "markers": "python_version >= '3.8'", - "version": "==5.5.0" + "version": "==5.5.1" }, "jupyter-events": { "hashes": [ @@ -1408,6 +1579,44 @@ "markers": "python_version >= '3.8'", "version": "==5.3.4" }, + "linkify-it-py": { + "hashes": [ + "sha256:19f3060727842c254c808e99d465c80c49d2c7306788140987a1a7a29b0d6ad2", + "sha256:a3a24428f6c96f27370d7fe61d2ac0be09017be5190d68d8658233171f1b6541" + ], + "markers": "python_version >= '3.7'", + "version": "==2.0.2" + }, + "llvmlite": { + "hashes": [ + "sha256:04725975e5b2af416d685ea0769f4ecc33f97be541e301054c9f741003085802", + "sha256:0dd0338da625346538f1173a17cabf21d1e315cf387ca21b294ff209d176e244", + "sha256:150d0bc275a8ac664a705135e639178883293cf08c1a38de3bbaa2f693a0a867", + "sha256:1eee5cf17ec2b4198b509272cf300ee6577229d237c98cc6e63861b08463ddc6", + "sha256:210e458723436b2469d61b54b453474e09e12a94453c97ea3fbb0742ba5a83d8", + "sha256:2181bb63ef3c607e6403813421b46982c3ac6bfc1f11fa16a13eaafb46f578e6", + "sha256:24091a6b31242bcdd56ae2dbea40007f462260bc9bdf947953acc39dffd54f8f", + "sha256:2b76acee82ea0e9304be6be9d4b3840208d050ea0dcad75b1635fa06e949a0ae", + "sha256:2d92c51e6e9394d503033ffe3292f5bef1566ab73029ec853861f60ad5c925d0", + "sha256:5940bc901fb0325970415dbede82c0b7f3e35c2d5fd1d5e0047134c2c46b3281", + "sha256:8454c1133ef701e8c050a59edd85d238ee18bb9a0eb95faf2fca8b909ee3c89a", + "sha256:855f280e781d49e0640aef4c4af586831ade8f1a6c4df483fb901cbe1a48d127", + "sha256:880cb57ca49e862e1cd077104375b9d1dfdc0622596dfa22105f470d7bacb309", + "sha256:8b0a9a47c28f67a269bb62f6256e63cef28d3c5f13cbae4fab587c3ad506778b", + "sha256:92c32356f669e036eb01016e883b22add883c60739bc1ebee3a1cc0249a50828", + "sha256:92f093986ab92e71c9ffe334c002f96defc7986efda18397d0f08534f3ebdc4d", + "sha256:9564c19b31a0434f01d2025b06b44c7ed422f51e719ab5d24ff03b7560066c9a", + "sha256:b67340c62c93a11fae482910dc29163a50dff3dfa88bc874872d28ee604a83be", + "sha256:bf14aa0eb22b58c231243dccf7e7f42f7beec48970f2549b3a6acc737d1a4ba4", + "sha256:c1e1029d47ee66d3a0c4d6088641882f75b93db82bd0e6178f7bd744ebce42b9", + "sha256:df75594e5a4702b032684d5481db3af990b69c249ccb1d32687b8501f0689432", + "sha256:f19f767a018e6ec89608e1f6b13348fa2fcde657151137cb64e56d48598a92db", + "sha256:f8afdfa6da33f0b4226af8e64cfc2b28986e005528fbf944d0a24a72acfc9432", + "sha256:fa1469901a2e100c17eb8fe2678e34bd4255a3576d1a543421356e9c14d6e2ae" + ], + "markers": "python_version >= '3.8'", + "version": "==0.41.1" + }, "locked-dict": { "hashes": [ "sha256:7b4f42e59c429595310310d45e0579751dddcc300079d0535f5512ea7a36a3fa", @@ -1417,6 +1626,14 @@ "markers": "python_version >= '3.9'", "version": "==2023.10.22" }, + "markdown": { + "hashes": [ + "sha256:5874b47d4ee3f0b14d764324d2c94c03ea66bee56f2d929da9f2508d65e722dc", + "sha256:b65d7beb248dc22f2e8a31fb706d93798093c308dc1aba295aedeb9d41a813bd" + ], + "markers": "python_version >= '3.8'", + "version": "==3.5.1" + }, "markdown-it-py": { "hashes": [ "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", @@ -1534,6 +1751,14 @@ "markers": "python_version >= '3.5'", "version": "==0.1.6" }, + "mdit-py-plugins": { + "hashes": [ + "sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9", + "sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b" + ], + "markers": "python_version >= '3.8'", + "version": "==0.4.0" + }, "mdurl": { "hashes": [ "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", @@ -1640,11 +1865,11 @@ }, "nbconvert": { "hashes": [ - "sha256:5b6c848194d270cc55fb691169202620d7b52a12fec259508d142ecbe4219310", - "sha256:b1564bd89f69a74cd6398b0362da94db07aafb991b7857216a766204a71612c0" + "sha256:22521cfcc10ba5755e44acb6a70d2bd8a891ce7aed6746481e10cd548b169e19", + "sha256:c6f61c86fca5b28bd17f4f9a308248e59fa2b54919e1589f6cc3575c5dfec2bd" ], "markers": "python_version >= '3.8'", - "version": "==7.12.0" + "version": "==7.13.0" }, "nbformat": { "hashes": [ @@ -1678,6 +1903,33 @@ "markers": "python_version >= '3.7'", "version": "==0.2.3" }, + "numba": { + "hashes": [ + "sha256:07f2fa7e7144aa6f275f27260e73ce0d808d3c62b30cff8906ad1dec12d87bbe", + "sha256:240e7a1ae80eb6b14061dc91263b99dc8d6af9ea45d310751b780888097c1aaa", + "sha256:45698b995914003f890ad839cfc909eeb9c74921849c712a05405d1a79c50f68", + "sha256:487ded0633efccd9ca3a46364b40006dbdaca0f95e99b8b83e778d1195ebcbaa", + "sha256:4e79b6cc0d2bf064a955934a2e02bf676bc7995ab2db929dbbc62e4c16551be6", + "sha256:55a01e1881120e86d54efdff1be08381886fe9f04fc3006af309c602a72bc44d", + "sha256:5c765aef472a9406a97ea9782116335ad4f9ef5c9f93fc05fd44aab0db486954", + "sha256:6fe7a9d8e3bd996fbe5eac0683227ccef26cba98dae6e5cee2c1894d4b9f16c1", + "sha256:7bf1ddd4f7b9c2306de0384bf3854cac3edd7b4d8dffae2ec1b925e4c436233f", + "sha256:811305d5dc40ae43c3ace5b192c670c358a89a4d2ae4f86d1665003798ea7a1a", + "sha256:81fe5b51532478149b5081311b0fd4206959174e660c372b94ed5364cfb37c82", + "sha256:898af055b03f09d33a587e9425500e5be84fc90cd2f80b3fb71c6a4a17a7e354", + "sha256:9e9356e943617f5e35a74bf56ff6e7cc83e6b1865d5e13cee535d79bf2cae954", + "sha256:a1eaa744f518bbd60e1f7ccddfb8002b3d06bd865b94a5d7eac25028efe0e0ff", + "sha256:bc2d904d0319d7a5857bd65062340bed627f5bfe9ae4a495aef342f072880d50", + "sha256:bcecd3fb9df36554b342140a4d77d938a549be635d64caf8bd9ef6c47a47f8aa", + "sha256:bd3dda77955be03ff366eebbfdb39919ce7c2620d86c906203bed92124989032", + "sha256:bf68df9c307fb0aa81cacd33faccd6e419496fdc621e83f1efce35cdc5e79cac", + "sha256:d3e2fe81fe9a59fcd99cc572002101119059d64d31eb6324995ee8b0f144a306", + "sha256:e63d6aacaae1ba4ef3695f1c2122b30fa3d8ba039c8f517784668075856d79e2", + "sha256:ea5bfcf7d641d351c6a80e8e1826eb4a145d619870016eeaf20bbd71ef5caa22" + ], + "markers": "python_version < '3.12'", + "version": "==0.58.1" + }, "numpy": { "hashes": [ "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a", @@ -1730,12 +1982,12 @@ }, "openai": { "hashes": [ - "sha256:173e2a63822e73d6a8c971adacd98ed350301be755617b61b47d39e05b90a3f0", - "sha256:b5561e897bf6b42d3876552e06ce0e7960688791ec4090ed0e780e56fe3f1848" + "sha256:42d8c84b0714c990e18afe81d37f8a64423e8196bf7157b8ea665b8d8f393253", + "sha256:4cd91e97988ccd6c44f815107def9495cbc718aeb8b28be33a87b6fa2c432508" ], "index": "pypi", "markers": "python_full_version >= '3.7.1'", - "version": "==1.4.0" + "version": "==1.5.0" }, "overrides": { "hashes": [ @@ -1800,6 +2052,22 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.5.0" }, + "panel": { + "hashes": [ + "sha256:d49cde574958e5b766357c456f0bc832530dde4c02e9ae7b5065cc82003a15a8", + "sha256:fdf8db8cd1a1fa96f86cecb2dfb83b8792e9e8088f284d4d5163fd787602a2b6" + ], + "markers": "python_version >= '3.9'", + "version": "==1.3.5" + }, + "param": { + "hashes": [ + "sha256:4bfc94c0e4127626fa833e30c71c91ea73e7675b80c26dbdd4a6e5a8f6dc46db", + "sha256:7943a04607822efd46e96e1827dc5fa929a2fc3b1fe9fc7b7dca7d17a8031a5b" + ], + "markers": "python_version >= '3.8'", + "version": "==2.0.1" + }, "parso": { "hashes": [ "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0", @@ -1808,6 +2076,16 @@ "markers": "python_version >= '3.6'", "version": "==0.8.3" }, + "pathway": { + "hashes": [ + "sha256:611f85a805c05a950236b507f8cf4a4446e0772744903ae6534c4e6ca68855a5", + "sha256:e59dd366db4f5f7837e869e8e5ce92cbc262d519e95fbcf5e435047bd5951d86", + "sha256:f96cc665991494de1292656b9c74201c55e451d12d47eb2f8d53d1ff87a3a5c3" + ], + "index": "pypi", + "markers": "python_version >= '3.10'", + "version": "==0.7.5" + }, "pexpect": { "hashes": [ "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", @@ -1916,27 +2194,44 @@ "markers": "python_full_version >= '3.7.0'", "version": "==3.0.43" }, + "protobuf": { + "hashes": [ + "sha256:0bf384e75b92c42830c0a679b0cd4d6e2b36ae0cf3dbb1e1dfdda48a244f4bcd", + "sha256:0f881b589ff449bf0b931a711926e9ddaad3b35089cc039ce1af50b21a4ae8cb", + "sha256:1484f9e692091450e7edf418c939e15bfc8fc68856e36ce399aed6889dae8bb0", + "sha256:193f50a6ab78a970c9b4f148e7c750cfde64f59815e86f686c22e26b4fe01ce7", + "sha256:3497c1af9f2526962f09329fd61a36566305e6c72da2590ae0d7d1322818843b", + "sha256:57d65074b4f5baa4ab5da1605c02be90ac20c8b40fb137d6a8df9f416b0d0ce2", + "sha256:8bdbeaddaac52d15c6dce38c71b03038ef7772b977847eb6d374fc86636fa510", + "sha256:a19731d5e83ae4737bb2a089605e636077ac001d18781b3cf489b9546c7c80d6", + "sha256:abc0525ae2689a8000837729eef7883b9391cd6aa7950249dcf5a4ede230d5dd", + "sha256:becc576b7e6b553d22cbdf418686ee4daa443d7217999125c045ad56322dda10", + "sha256:ca37bf6a6d0046272c152eea90d2e4ef34593aaa32e8873fc14c16440f22d4b7" + ], + "markers": "python_version >= '3.8'", + "version": "==4.25.1" + }, "psutil": { "hashes": [ - "sha256:10e8c17b4f898d64b121149afb136c53ea8b68c7531155147867b7b1ac9e7e28", - "sha256:18cd22c5db486f33998f37e2bb054cc62fd06646995285e02a51b1e08da97017", - "sha256:3ebf2158c16cc69db777e3c7decb3c0f43a7af94a60d72e87b2823aebac3d602", - "sha256:51dc3d54607c73148f63732c727856f5febec1c7c336f8f41fcbd6315cce76ac", - "sha256:6e5fb8dc711a514da83098bc5234264e551ad980cec5f85dabf4d38ed6f15e9a", - "sha256:70cb3beb98bc3fd5ac9ac617a327af7e7f826373ee64c80efd4eb2856e5051e9", - "sha256:748c9dd2583ed86347ed65d0035f45fa8c851e8d90354c122ab72319b5f366f4", - "sha256:91ecd2d9c00db9817a4b4192107cf6954addb5d9d67a969a4f436dbc9200f88c", - "sha256:92e0cc43c524834af53e9d3369245e6cc3b130e78e26100d1f63cdb0abeb3d3c", - "sha256:a6f01f03bf1843280f4ad16f4bde26b817847b4c1a0db59bf6419807bc5ce05c", - "sha256:c69596f9fc2f8acd574a12d5f8b7b1ba3765a641ea5d60fb4736bf3c08a8214a", - "sha256:ca2780f5e038379e520281e4c032dddd086906ddff9ef0d1b9dcf00710e5071c", - "sha256:daecbcbd29b289aac14ece28eca6a3e60aa361754cf6da3dfb20d4d32b6c7f57", - "sha256:e4b92ddcd7dd4cdd3f900180ea1e104932c7bce234fb88976e2a3b296441225a", - "sha256:fb8a697f11b0f5994550555fcfe3e69799e5b060c8ecf9e2f75c69302cc35c0d", - "sha256:ff18b8d1a784b810df0b0fff3bcb50ab941c3b8e2c8de5726f9c71c601c611aa" + "sha256:032f4f2c909818c86cea4fe2cc407f1c0f0cde8e6c6d702b28b8ce0c0d143340", + "sha256:0bd41bf2d1463dfa535942b2a8f0e958acf6607ac0be52265ab31f7923bcd5e6", + "sha256:1132704b876e58d277168cd729d64750633d5ff0183acf5b3c986b8466cd0284", + "sha256:1d4bc4a0148fdd7fd8f38e0498639ae128e64538faa507df25a20f8f7fb2341c", + "sha256:3c4747a3e2ead1589e647e64aad601981f01b68f9398ddf94d01e3dc0d1e57c7", + "sha256:3f02134e82cfb5d089fddf20bb2e03fd5cd52395321d1c8458a9e58500ff417c", + "sha256:44969859757f4d8f2a9bd5b76eba8c3099a2c8cf3992ff62144061e39ba8568e", + "sha256:4c03362e280d06bbbfcd52f29acd79c733e0af33d707c54255d21029b8b32ba6", + "sha256:5794944462509e49d4d458f4dbfb92c47539e7d8d15c796f141f474010084056", + "sha256:b27f8fdb190c8c03914f908a4555159327d7481dac2f01008d483137ef3311a9", + "sha256:c727ca5a9b2dd5193b8644b9f0c883d54f1248310023b5ad3e92036c5e2ada68", + "sha256:e469990e28f1ad738f65a42dcfc17adaed9d0f325d55047593cb9033a0ab63df", + "sha256:ea36cc62e69a13ec52b2f625c27527f6e4479bca2b340b7a452af55b34fcbe2e", + "sha256:f37f87e4d73b79e6c5e749440c3113b81d1ee7d26f21c19c47371ddea834f414", + "sha256:fe361f743cb3389b8efda21980d93eb55c1f1e3898269bc9a2a1d0bb7b1f6508", + "sha256:fe8b7f07948f1304497ce4f4684881250cd859b16d06a1dc4d7941eeb6233bfe" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==5.9.6" + "version": "==5.9.7" }, "psycopg2-binary": { "hashes": [ @@ -2031,6 +2326,64 @@ ], "version": "==0.2.2" }, + "pyarrow": { + "hashes": [ + "sha256:059bd8f12a70519e46cd64e1ba40e97eae55e0cbe1695edd95384653d7626b23", + "sha256:06ff1264fe4448e8d02073f5ce45a9f934c0f3db0a04460d0b01ff28befc3696", + "sha256:1e6987c5274fb87d66bb36816afb6f65707546b3c45c44c28e3c4133c010a881", + "sha256:209bac546942b0d8edc8debda248364f7f668e4aad4741bae58e67d40e5fcf75", + "sha256:20e003a23a13da963f43e2b432483fdd8c38dc8882cd145f09f21792e1cf22a1", + "sha256:22a768987a16bb46220cef490c56c671993fbee8fd0475febac0b3e16b00a10e", + "sha256:2cc61593c8e66194c7cdfae594503e91b926a228fba40b5cf25cc593563bcd07", + "sha256:2dbba05e98f247f17e64303eb876f4a80fcd32f73c7e9ad975a83834d81f3fda", + "sha256:32356bfb58b36059773f49e4e214996888eeea3a08893e7dbde44753799b2a02", + "sha256:36cef6ba12b499d864d1def3e990f97949e0b79400d08b7cf74504ffbd3eb025", + "sha256:37c233ddbce0c67a76c0985612fef27c0c92aef9413cf5aa56952f359fcb7379", + "sha256:3c0fa3bfdb0305ffe09810f9d3e2e50a2787e3a07063001dcd7adae0cee3601a", + "sha256:3f16111f9ab27e60b391c5f6d197510e3ad6654e73857b4e394861fc79c37200", + "sha256:52809ee69d4dbf2241c0e4366d949ba035cbcf48409bf404f071f624ed313a2b", + "sha256:5c1da70d668af5620b8ba0a23f229030a4cd6c5f24a616a146f30d2386fec422", + "sha256:63ac901baec9369d6aae1cbe6cca11178fb018a8d45068aaf5bb54f94804a866", + "sha256:64df2bf1ef2ef14cee531e2dfe03dd924017650ffaa6f9513d7a1bb291e59c15", + "sha256:66e986dc859712acb0bd45601229021f3ffcdfc49044b64c6d071aaf4fa49e98", + "sha256:6dd4f4b472ccf4042f1eab77e6c8bce574543f54d2135c7e396f413046397d5a", + "sha256:75ee0efe7a87a687ae303d63037d08a48ef9ea0127064df18267252cfe2e9541", + "sha256:76fc257559404ea5f1306ea9a3ff0541bf996ff3f7b9209fc517b5e83811fa8e", + "sha256:78ea56f62fb7c0ae8ecb9afdd7893e3a7dbeb0b04106f5c08dbb23f9c0157591", + "sha256:87482af32e5a0c0cce2d12eb3c039dd1d853bd905b04f3f953f147c7a196915b", + "sha256:87e879323f256cb04267bb365add7208f302df942eb943c93a9dfeb8f44840b1", + "sha256:a01d0052d2a294a5f56cc1862933014e696aa08cc7b620e8c0cce5a5d362e976", + "sha256:a25eb2421a58e861f6ca91f43339d215476f4fe159eca603c55950c14f378cc5", + "sha256:a51fee3a7db4d37f8cda3ea96f32530620d43b0489d169b285d774da48ca9785", + "sha256:a898d134d00b1eca04998e9d286e19653f9d0fcb99587310cd10270907452a6b", + "sha256:b0c4a18e00f3a32398a7f31da47fefcd7a927545b396e1f15d0c85c2f2c778cd", + "sha256:ba9fe808596c5dbd08b3aeffe901e5f81095baaa28e7d5118e01354c64f22807", + "sha256:c65bf4fd06584f058420238bc47a316e80dda01ec0dfb3044594128a6c2db794", + "sha256:c87824a5ac52be210d32906c715f4ed7053d0180c1060ae3ff9b7e560f53f944", + "sha256:e354fba8490de258be7687f341bc04aba181fc8aa1f71e4584f9890d9cb2dec2", + "sha256:e4b123ad0f6add92de898214d404e488167b87b5dd86e9a434126bc2b7a5578d", + "sha256:f7d029f20ef56673a9730766023459ece397a05001f4e4d13805111d7c2108c0", + "sha256:fc0de7575e841f1595ac07e5bc631084fd06ca8b03c0f2ecece733d23cd5102a" + ], + "markers": "python_version >= '3.8'", + "version": "==14.0.2" + }, + "pyasn1": { + "hashes": [ + "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58", + "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==0.5.1" + }, + "pyasn1-modules": { + "hashes": [ + "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c", + "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==0.3.0" + }, "pycparser": { "hashes": [ "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", @@ -2208,6 +2561,99 @@ "markers": "python_version >= '3.6'", "version": "==2.0.7" }, + "python-sat": { + "hashes": [ + "sha256:01684dccad16da0ab58a1170954b3a9bc820b7f25a85d3f54590f466a630d989", + "sha256:01f201a20e4f04290dbe4305a5c5b14ff039cdbf0d1850aa1a5a2f2f495af7df", + "sha256:028ba1d23aea9bd58b653766a8abab978a848d4192e54929ff118329704ad8e6", + "sha256:079f50039b02e75d71b52754ee6a4f7d2862653e411eb661382e654df33c38ca", + "sha256:082bc57ed9766b9c4db2d8cf6c55906ea3615feb5ece88ffee94c64645f80dfd", + "sha256:08ce58696b24bb80eef2ae0e1ac8966c0efa345278b1cee8dc22c10d1bfe2675", + "sha256:0a08666e2c99519f7b672dbb76a4c71d08595bd569dedfa01eb53526b6ba81d3", + "sha256:0d6a5097bcb4dc3168e1606bab8dbce4f0bd18c0c17bc9ce9130b5ee8f47cbb8", + "sha256:16c58a4f683c25de2297649e1c50881c486a84d008e08df1e9ad86e279b3297e", + "sha256:17d028652239d58471782a76f2536fad71575941a9916dc15fab6c749162efaa", + "sha256:1844d48fc2f0d2ab431b965d2e667e68422611189f9ce897fd9d1228fbe7567f", + "sha256:1997d4a083c95f7b29c644436062a8646f5071783b410ec6b915bd17b3b9c2ba", + "sha256:1d83af8248ca67ecb6ecc34de5e2100808bc8927f887760ff6486e039678ab3b", + "sha256:20a72cc8dce8c3bbe55a9d71ae397dc261f8651294324312b2eb356158d46a14", + "sha256:21502b10bf96c1cd5f8b84b7c7e38faa9bbb5d37461b80605ba4cc64d97240cc", + "sha256:215839613bef298fb4d2c385020757db85a1bdb8d40c65bf39b029ef6ffa12b8", + "sha256:2323dd12de26e4b4c28980ce90db33e120dd6e46100b7c22a13097d42e5432a3", + "sha256:2ae119644f9d05a6655c6ad8083388971709349c7e979d149c9586856df1fdee", + "sha256:31148650f9c9462723e84ad55cc6859df8d7770c2ee7340475fcb2170b03cd8a", + "sha256:311f91efe619ccfab8074ed8e793c19cd0276f6f7e04a22529af18ba5ab71098", + "sha256:35db11dd3d78dad87b4681e3ab759b9947122b558e3cf5379d97fbc004ac61ec", + "sha256:3651f98ef3949bb16888c1500e976a92c3bfcd533408dc333a0780d6da9fdb0d", + "sha256:3cdfd2e8fe899141a41e4d937481af74cc77e5a91a3ce3832271e55f26d512e9", + "sha256:3ecaac3085a1df2f9f62b7b65b8b13b9ce801c5859f5c04ced47fde0976bd59d", + "sha256:4032626157673d775aa3d7bcc4d2fac2922b9228fdaa171bed09435e8a4de20d", + "sha256:43856d2bce9eaed4071e57770297e44d3ceeb5b24f42eddfe9605a0a8aaff0e9", + "sha256:439346b565b61eba9ecb304c89cf7c57e93b7c5f87ac4021af8ab9236be82fae", + "sha256:43c114fd2730773fee004525eb0f0c1e588e49f487c1acbe2383cfa6a0c060d6", + "sha256:4770a8a7bd0bcd6a1206b4997672d1096d2805813c81f25a48ce85bee2cc1a29", + "sha256:4d09ab1f1bc371c34ba744673ef26c0873faf660bb8abcc102ada84c3f69d718", + "sha256:4d88bb64a771a80344719c79d7b494638217094ee7488717b49ddb73c9bd00d6", + "sha256:5824bd848852c4616fa870ed422e400d7cb51be0f1fc37d99c1762f0b72db30f", + "sha256:5a6d05aed2fc7c237881466cb7cfa46ab09be0a71f66832f0ee23f0463cb8a1c", + "sha256:5b76fa7ff825184fab15c61a7158eeec2977565a986a8f14de7ee1a331e1f531", + "sha256:5c628f84327bd4b6f35af0e5c8bffb8b871b1fd20b6e6d2eab79423fb5171db1", + "sha256:627218f231a88fc51466da276f5c140faf5c6b4e227903bd8e6351cedb8ec3c9", + "sha256:63776cf7e3e8dc0830e608487ff82217a399d6b0997e409fed0015ab111a1235", + "sha256:66933eae2268167116f8e464242c30ec50ddd7d4e70b8ad7602e8c9b4db8548e", + "sha256:6da1404216a3faf37dc944676966d3057777f030043968a5b3e4e14875176d5b", + "sha256:6fa6cd132878f6146baa0b8fd213ff2c9d0cfe216a75e8b3a6ee6663709cb8ff", + "sha256:719dade05f7d2cd29b54eb92a01979d173ae0eebfe77c3803db47d1ceb121ef9", + "sha256:774eb2a58233f7c710f7a029eae7f4290b6a6fddf4145280e2b6c4cac664ddda", + "sha256:7b9beccfa6172bbe174e7a4e42cfab18b2e519365c26126bd6386bc79a5d6da3", + "sha256:7bb2d33db71aa04ca69d3e2d1995c71601fb42770e92440725fde9688f93e8b5", + "sha256:7ccfc5d2826ab6c25a80cd6b5005b0d8b28155a56aaa4be4849eeab2454cb952", + "sha256:7d15abe2a4b3edaeaece1bf239b9cf655eea215a9f41ea0be139036d415d2ef4", + "sha256:7d5ce01d7173356cba1f364052fd71d58176bcc896aa05a08d9a995b99bb4be6", + "sha256:7f4e1348804f5183a45db829ca3ffadfecc4e67d2fc5ef2fc7d2d59c67f642b8", + "sha256:840101433866ce526116ffb2e89ce0b33125243e1da06583fa901551c697102f", + "sha256:854ecae8e7daf5eeb997c05768d930b4d99c8994b3c0e33e5ad7654da5f2f251", + "sha256:89d928ed48cbab6c1514eb17d2098ec74c372b6c622693ff98a763476794aa5d", + "sha256:9052bb736df995d29161f1a0c3501f070b1bd049a73c90f5e57efedc1959e5ad", + "sha256:96327aa6304d2ba7aa8109079b5999a5f0f5270b9e819d13913a41e88c53fa45", + "sha256:9654a356e618e38f66593ff527955b8ca926b580ad0f908034a47d122507b315", + "sha256:97033e452763d0e781b9435caf60a222ae57db70c45dc22b14669b6086dc7eba", + "sha256:98ce5a408a4490f320cc9d24c46a200c5adc21631988e90dbb844256afbeb942", + "sha256:9fc814a70b24df10a16cacbdae40582e17c91253e473c1426a2cfafa742f2f5a", + "sha256:a70c9c0ffff1d54ceaa89c4d79a9c0b886a6deac8b9f59a42d4e32a4938f9a87", + "sha256:aa585df2dfadaa04d37cca92b49ed0d9fafd20e79afd278e71b4ab799c5d6655", + "sha256:b204786f3e4417a195009daebccf7aca23e8649d7cd92ad328049f4471f7e9b1", + "sha256:b2c71009d5e3efca8d3c35c4f93a9fcec931c036246a0cdb9379c41866c501fa", + "sha256:b2e8d09dd3137defa2dd83046ae8bc8dd6a591129b19255527fd27ebf65d4e96", + "sha256:b3d5b3a305bf384cf8e3cdb88abd69719b7e42059a59206f2031e2a7fd86ab31", + "sha256:bb075413a566abc5fb08ea66979d1de062fdb1d3a26bcf4fe40f46fffa3567b2", + "sha256:c295e90a06b4370be97ef5ca6a33adb4ff6b877a57adcf0be727559d2a96da85", + "sha256:cd46e8f6a91d204f3811e38c4b02237378d346d9c40151699018c68117b9ba29", + "sha256:ce9db9e0c9e5d42dde7c553993a166e511b8ec9d96f399744fab39cdbaeb514c", + "sha256:d051563591bf3510863d9dd28966a9641c2fe249fdbc6f1c84b10bf629dce745", + "sha256:d0d0d8b4d12259cddbaafb626bc8f26717647c8d6ef232bd4fb4fda46f8e6d77", + "sha256:d1029e0fe3c0ee6c825c572906b3f862c4ecf68bb8031c509fb29f0c30d00d92", + "sha256:de08c865d31589a5347eb8635457336a399229c22d911e510374d06d989f1b30", + "sha256:df34c6cc6905fb3ca115e2ab18e440de7d1b8a015ea8a340e0c8fe71b72fafbe", + "sha256:e3300404cd04dca4994f3e9d386169de7bd29783a2e456f3905addd1c2dc727c", + "sha256:e3c25198c32cefc1d8b87b831351bb4b091e2f42de80b8522df75cc76486fcc1", + "sha256:e4502fc37925532284d83ab89e1d93a18d07428952028e2570680fd1aa867fa6", + "sha256:e48dc2b63c5c876e3affdb1912645a24c53aff53a3d2495c7e1f3cbc64765ccf", + "sha256:e8ce72cf6e23f91e278b572edc4074797f405a3ce12de08a3fb81033b45ad65c", + "sha256:eacfd4e0f23ec126dd9176056ff1ab3ef601391580ce7dd6beb681c614b039cd", + "sha256:f1625f08c42d31aa821b89b80b9f8e9bf134ea90af511680a4efcdd03b26ac4d", + "sha256:f2cffd5f8169d7bc58a52f218eeb5aa56104c1a53808c0244f89ae888dc4e66d", + "sha256:f39c150b75f3185cbc56d4fd4da72870c3ecf966bc27d4e30729266a2c212dd6", + "sha256:f4cf1c827667d93798a06e35ae4c6659a5b5c2ef656a0974cb9c1a293eb98d58", + "sha256:f7d1ca65672e0c356d4f470ff73e85b5992c5f3c6829864158bc69cf80dd9dec", + "sha256:f7f7b10406f1ce7d6ba99ae1aa61033da23eadb12660a27837909a0db5383c6a", + "sha256:f878665120d0b8e5024f3d185e8dba5b26dac732e73bf472a3afe2e4529546ed", + "sha256:fb9ea77108a6784b230bb886feb5011879c6443fef5e4a4e6dc5a38b98133939", + "sha256:fbcfc9b5ca1e8608cb55bbfbf945b50e34506e10aac8af1f5ee75caee99f0bf7", + "sha256:ff7d5944fe4345176a8d0a3151bcb8fb3b595d34d2ff49df9a590d0e23e63ac4" + ], + "version": "==0.1.8.dev12" + }, "python3-openid": { "hashes": [ "sha256:33fbf6928f401e0b790151ed2b5290b02545e8775f982485205a066f874aaeaf", @@ -2222,6 +2668,14 @@ ], "version": "==2023.3.post1" }, + "pyviz-comms": { + "hashes": [ + "sha256:91c967151b1e4d436c458c147a31991a42fbe7567e49176e4eb5b8dc8e20f1ff", + "sha256:f4ca91e4157a64e3abed7cc249e60b9a8d2532f8832f1cb075914d19337d2ba6" + ], + "markers": "python_version >= '3.8'", + "version": "==3.0.0" + }, "pyyaml": { "hashes": [ "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", @@ -2452,108 +2906,124 @@ }, "rpds-py": { "hashes": [ - "sha256:06d218e4464d31301e943b65b2c6919318ea6f69703a351961e1baaf60347276", - "sha256:12ecf89bd54734c3c2c79898ae2021dca42750c7bcfb67f8fb3315453738ac8f", - "sha256:15253fff410873ebf3cfba1cc686a37711efcd9b8cb30ea21bb14a973e393f60", - "sha256:188435794405c7f0573311747c85a96b63c954a5f2111b1df8018979eca0f2f0", - "sha256:1ceebd0ae4f3e9b2b6b553b51971921853ae4eebf3f54086be0565d59291e53d", - "sha256:244e173bb6d8f3b2f0c4d7370a1aa341f35da3e57ffd1798e5b2917b91731fd3", - "sha256:25b28b3d33ec0a78e944aaaed7e5e2a94ac811bcd68b557ca48a0c30f87497d2", - "sha256:25ea41635d22b2eb6326f58e608550e55d01df51b8a580ea7e75396bafbb28e9", - "sha256:29d311e44dd16d2434d5506d57ef4d7036544fc3c25c14b6992ef41f541b10fb", - "sha256:2a1472956c5bcc49fb0252b965239bffe801acc9394f8b7c1014ae9258e4572b", - "sha256:2a7bef6977043673750a88da064fd513f89505111014b4e00fbdd13329cd4e9a", - "sha256:2ac26f50736324beb0282c819668328d53fc38543fa61eeea2c32ea8ea6eab8d", - "sha256:2e72f750048b32d39e87fc85c225c50b2a6715034848dbb196bf3348aa761fa1", - "sha256:31e220a040b89a01505128c2f8a59ee74732f666439a03e65ccbf3824cdddae7", - "sha256:35f53c76a712e323c779ca39b9a81b13f219a8e3bc15f106ed1e1462d56fcfe9", - "sha256:38d4f822ee2f338febcc85aaa2547eb5ba31ba6ff68d10b8ec988929d23bb6b4", - "sha256:38f9bf2ad754b4a45b8210a6c732fe876b8a14e14d5992a8c4b7c1ef78740f53", - "sha256:3a44c8440183b43167fd1a0819e8356692bf5db1ad14ce140dbd40a1485f2dea", - "sha256:3ab96754d23372009638a402a1ed12a27711598dd49d8316a22597141962fe66", - "sha256:3c55d7f2d817183d43220738270efd3ce4e7a7b7cbdaefa6d551ed3d6ed89190", - "sha256:46e1ed994a0920f350a4547a38471217eb86f57377e9314fbaaa329b71b7dfe3", - "sha256:4a5375c5fff13f209527cd886dc75394f040c7d1ecad0a2cb0627f13ebe78a12", - "sha256:4c2d26aa03d877c9730bf005621c92da263523a1e99247590abbbe252ccb7824", - "sha256:4c4e314d36d4f31236a545696a480aa04ea170a0b021e9a59ab1ed94d4c3ef27", - "sha256:4d0c10d803549427f427085ed7aebc39832f6e818a011dcd8785e9c6a1ba9b3e", - "sha256:4dcc5ee1d0275cb78d443fdebd0241e58772a354a6d518b1d7af1580bbd2c4e8", - "sha256:51967a67ea0d7b9b5cd86036878e2d82c0b6183616961c26d825b8c994d4f2c8", - "sha256:530190eb0cd778363bbb7596612ded0bb9fef662daa98e9d92a0419ab27ae914", - "sha256:5379e49d7e80dca9811b36894493d1c1ecb4c57de05c36f5d0dd09982af20211", - "sha256:5493569f861fb7b05af6d048d00d773c6162415ae521b7010197c98810a14cab", - "sha256:5a4c1058cdae6237d97af272b326e5f78ee7ee3bbffa6b24b09db4d828810468", - "sha256:5d75d6d220d55cdced2f32cc22f599475dbe881229aeddba6c79c2e9df35a2b3", - "sha256:5d97e9ae94fb96df1ee3cb09ca376c34e8a122f36927230f4c8a97f469994bff", - "sha256:5feae2f9aa7270e2c071f488fab256d768e88e01b958f123a690f1cc3061a09c", - "sha256:603d5868f7419081d616dab7ac3cfa285296735e7350f7b1e4f548f6f953ee7d", - "sha256:61d42d2b08430854485135504f672c14d4fc644dd243a9c17e7c4e0faf5ed07e", - "sha256:61dbc1e01dc0c5875da2f7ae36d6e918dc1b8d2ce04e871793976594aad8a57a", - "sha256:65cfed9c807c27dee76407e8bb29e6f4e391e436774bcc769a037ff25ad8646e", - "sha256:67a429520e97621a763cf9b3ba27574779c4e96e49a27ff8a1aa99ee70beb28a", - "sha256:6aadae3042f8e6db3376d9e91f194c606c9a45273c170621d46128f35aef7cd0", - "sha256:6ba8858933f0c1a979781272a5f65646fca8c18c93c99c6ddb5513ad96fa54b1", - "sha256:6bc568b05e02cd612be53900c88aaa55012e744930ba2eeb56279db4c6676eb3", - "sha256:729408136ef8d45a28ee9a7411917c9e3459cf266c7e23c2f7d4bb8ef9e0da42", - "sha256:751758d9dd04d548ec679224cc00e3591f5ebf1ff159ed0d4aba6a0746352452", - "sha256:76d59d4d451ba77f08cb4cd9268dec07be5bc65f73666302dbb5061989b17198", - "sha256:79bf58c08f0756adba691d480b5a20e4ad23f33e1ae121584cf3a21717c36dfa", - "sha256:7de12b69d95072394998c622cfd7e8cea8f560db5fca6a62a148f902a1029f8b", - "sha256:7f55cd9cf1564b7b03f238e4c017ca4794c05b01a783e9291065cb2858d86ce4", - "sha256:80e5acb81cb49fd9f2d5c08f8b74ffff14ee73b10ca88297ab4619e946bcb1e1", - "sha256:87a90f5545fd61f6964e65eebde4dc3fa8660bb7d87adb01d4cf17e0a2b484ad", - "sha256:881df98f0a8404d32b6de0fd33e91c1b90ed1516a80d4d6dc69d414b8850474c", - "sha256:8a776a29b77fe0cc28fedfd87277b0d0f7aa930174b7e504d764e0b43a05f381", - "sha256:8c2a61c0e4811012b0ba9f6cdcb4437865df5d29eab5d6018ba13cee1c3064a0", - "sha256:8fa6bd071ec6d90f6e7baa66ae25820d57a8ab1b0a3c6d3edf1834d4b26fafa2", - "sha256:96f2975fb14f39c5fe75203f33dd3010fe37d1c4e33177feef1107b5ced750e3", - "sha256:96fb0899bb2ab353f42e5374c8f0789f54e0a94ef2f02b9ac7149c56622eaf31", - "sha256:97163a1ab265a1073a6372eca9f4eeb9f8c6327457a0b22ddfc4a17dcd613e74", - "sha256:9c95a1a290f9acf7a8f2ebbdd183e99215d491beea52d61aa2a7a7d2c618ddc6", - "sha256:9d94d78418203904730585efa71002286ac4c8ac0689d0eb61e3c465f9e608ff", - "sha256:a6ba2cb7d676e9415b9e9ac7e2aae401dc1b1e666943d1f7bc66223d3d73467b", - "sha256:aa0379c1935c44053c98826bc99ac95f3a5355675a297ac9ce0dfad0ce2d50ca", - "sha256:ac96d67b37f28e4b6ecf507c3405f52a40658c0a806dffde624a8fcb0314d5fd", - "sha256:ade2ccb937060c299ab0dfb2dea3d2ddf7e098ed63ee3d651ebfc2c8d1e8632a", - "sha256:aefbdc934115d2f9278f153952003ac52cd2650e7313750390b334518c589568", - "sha256:b07501b720cf060c5856f7b5626e75b8e353b5f98b9b354a21eb4bfa47e421b1", - "sha256:b5267feb19070bef34b8dea27e2b504ebd9d31748e3ecacb3a4101da6fcb255c", - "sha256:b5f6328e8e2ae8238fc767703ab7b95785521c42bb2b8790984e3477d7fa71ad", - "sha256:b8996ffb60c69f677245f5abdbcc623e9442bcc91ed81b6cd6187129ad1fa3e7", - "sha256:b981a370f8f41c4024c170b42fbe9e691ae2dbc19d1d99151a69e2c84a0d194d", - "sha256:b9d121be0217787a7d59a5c6195b0842d3f701007333426e5154bf72346aa658", - "sha256:bcef4f2d3dc603150421de85c916da19471f24d838c3c62a4f04c1eb511642c1", - "sha256:bed0252c85e21cf73d2d033643c945b460d6a02fc4a7d644e3b2d6f5f2956c64", - "sha256:bfdfbe6a36bc3059fff845d64c42f2644cf875c65f5005db54f90cdfdf1df815", - "sha256:c0095b8aa3e432e32d372e9a7737e65b58d5ed23b9620fea7cb81f17672f1fa1", - "sha256:c1f41d32a2ddc5a94df4b829b395916a4b7f103350fa76ba6de625fcb9e773ac", - "sha256:c45008ca79bad237cbc03c72bc5205e8c6f66403773929b1b50f7d84ef9e4d07", - "sha256:c82bbf7e03748417c3a88c1b0b291288ce3e4887a795a3addaa7a1cfd9e7153e", - "sha256:c918621ee0a3d1fe61c313f2489464f2ae3d13633e60f520a8002a5e910982ee", - "sha256:d204957169f0b3511fb95395a9da7d4490fb361763a9f8b32b345a7fe119cb45", - "sha256:d329896c40d9e1e5c7715c98529e4a188a1f2df51212fd65102b32465612b5dc", - "sha256:d3a61e928feddc458a55110f42f626a2a20bea942ccedb6fb4cee70b4830ed41", - "sha256:d48db29bd47814671afdd76c7652aefacc25cf96aad6daefa82d738ee87461e2", - "sha256:d5593855b5b2b73dd8413c3fdfa5d95b99d657658f947ba2c4318591e745d083", - "sha256:d79c159adea0f1f4617f54aa156568ac69968f9ef4d1e5fefffc0a180830308e", - "sha256:db09b98c7540df69d4b47218da3fbd7cb466db0fb932e971c321f1c76f155266", - "sha256:ddf23960cb42b69bce13045d5bc66f18c7d53774c66c13f24cf1b9c144ba3141", - "sha256:e06cfea0ece444571d24c18ed465bc93afb8c8d8d74422eb7026662f3d3f779b", - "sha256:e7c564c58cf8f248fe859a4f0fe501b050663f3d7fbc342172f259124fb59933", - "sha256:e86593bf8637659e6a6ed58854b6c87ec4e9e45ee8a4adfd936831cef55c2d21", - "sha256:eaffbd8814bb1b5dc3ea156a4c5928081ba50419f9175f4fc95269e040eff8f0", - "sha256:ee353bb51f648924926ed05e0122b6a0b1ae709396a80eb583449d5d477fcdf7", - "sha256:ee6faebb265e28920a6f23a7d4c362414b3f4bb30607141d718b991669e49ddc", - "sha256:efe093acc43e869348f6f2224df7f452eab63a2c60a6c6cd6b50fd35c4e075ba", - "sha256:f03a1b3a4c03e3e0161642ac5367f08479ab29972ea0ffcd4fa18f729cd2be0a", - "sha256:f0d320e70b6b2300ff6029e234e79fe44e9dbbfc7b98597ba28e054bd6606a57", - "sha256:f252dfb4852a527987a9156cbcae3022a30f86c9d26f4f17b8c967d7580d65d2", - "sha256:f5f4424cb87a20b016bfdc157ff48757b89d2cc426256961643d443c6c277007", - "sha256:f8eae66a1304de7368932b42d801c67969fd090ddb1a7a24f27b435ed4bed68f", - "sha256:fdb82eb60d31b0c033a8e8ee9f3fc7dfbaa042211131c29da29aea8531b4f18f" - ], - "markers": "python_version >= '3.8'", - "version": "==0.13.2" + "sha256:02744236ac1895d7be837878e707a5c35fb8edc5137602f253b63623d7ad5c8c", + "sha256:03f9c5875515820633bd7709a25c3e60c1ea9ad1c5d4030ce8a8c203309c36fd", + "sha256:044f6f46d62444800402851afa3c3ae50141f12013060c1a3a0677e013310d6d", + "sha256:07a2e1d78d382f7181789713cdf0c16edbad4fe14fe1d115526cb6f0eef0daa3", + "sha256:082e0e55d73690ffb4da4352d1b5bbe1b5c6034eb9dc8c91aa2a3ee15f70d3e2", + "sha256:13152dfe7d7c27c40df8b99ac6aab12b978b546716e99f67e8a67a1d441acbc3", + "sha256:13716e53627ad97babf72ac9e01cf9a7d4af2f75dd5ed7b323a7a9520e948282", + "sha256:13ff62d3561a23c17341b4afc78e8fcfd799ab67c0b1ca32091d71383a98ba4b", + "sha256:1607cda6129f815493a3c184492acb5ae4aa6ed61d3a1b3663aa9824ed26f7ac", + "sha256:164fcee32f15d04d61568c9cb0d919e37ff3195919cd604039ff3053ada0461b", + "sha256:1c24e30d720c0009b6fb2e1905b025da56103c70a8b31b99138e4ed1c2a6c5b0", + "sha256:1e6fcd0a0f62f2997107f758bb372397b8d5fd5f39cc6dcb86f7cb98a2172d6c", + "sha256:1fd0f0b1ccd7d537b858a56355a250108df692102e08aa2036e1a094fd78b2dc", + "sha256:2181e86d4e1cdf49a7320cb72a36c45efcb7670d0a88f09fd2d3a7967c0540fd", + "sha256:2974e6dff38afafd5ccf8f41cb8fc94600b3f4fd9b0a98f6ece6e2219e3158d5", + "sha256:2dccc623725d0b298f557d869a68496a2fd2a9e9c41107f234fa5f7a37d278ac", + "sha256:2df3d07a16a3bef0917b28cd564778fbb31f3ffa5b5e33584470e2d1b0f248f0", + "sha256:2e7e5633577b3bd56bf3af2ef6ae3778bbafb83743989d57f0e7edbf6c0980e4", + "sha256:2ee066a64f0d2ba45391cac15b3a70dcb549e968a117bd0500634754cfe0e5fc", + "sha256:2f1f295a5c28cfa74a7d48c95acc1c8a7acd49d7d9072040d4b694fe11cd7166", + "sha256:2faa97212b0dc465afeedf49045cdd077f97be1188285e646a9f689cb5dfff9e", + "sha256:30479a9f1fce47df56b07460b520f49fa2115ec2926d3b1303c85c81f8401ed1", + "sha256:337a8653fb11d2fbe7157c961cc78cb3c161d98cf44410ace9a3dc2db4fad882", + "sha256:3423007fc0661827e06f8a185a3792c73dda41f30f3421562f210cf0c9e49569", + "sha256:373b76eeb79e8c14f6d82cb1d4d5293f9e4059baec6c1b16dca7ad13b6131b39", + "sha256:3b79c63d29101cbaa53a517683557bb550462394fb91044cc5998dd2acff7340", + "sha256:3bbc89ce2a219662ea142f0abcf8d43f04a41d5b1880be17a794c39f0d609cb0", + "sha256:3c11bc5814554b018f6c5d6ae0969e43766f81e995000b53a5d8c8057055e886", + "sha256:3cd61e759c4075510052d1eca5cddbd297fe1164efec14ef1fce3f09b974dfe4", + "sha256:3d40fb3ca22e3d40f494d577441b263026a3bd8c97ae6ce89b2d3c4b39ac9581", + "sha256:3db0c998c92b909d7c90b66c965590d4f3cd86157176a6cf14aa1f867b77b889", + "sha256:422b0901878a31ef167435c5ad46560362891816a76cc0d150683f3868a6f0d1", + "sha256:46b4f3d47d1033db569173be62365fbf7808c2bd3fb742314d251f130d90d44c", + "sha256:485fbdd23becb822804ed05622907ee5c8e8a5f43f6f43894a45f463b2217045", + "sha256:53304cc14b1d94487d70086e1cb0cb4c29ec6da994d58ae84a4d7e78c6a6d04d", + "sha256:5595c80dd03d7e6c6afb73f3594bf3379a7d79fa57164b591d012d4b71d6ac4c", + "sha256:56b51ba29a18e5f5810224bcf00747ad931c0716e3c09a76b4a1edd3d4aba71f", + "sha256:580182fa5b269c2981e9ce9764367cb4edc81982ce289208d4607c203f44ffde", + "sha256:5e99d6510c8557510c220b865d966b105464740dcbebf9b79ecd4fbab30a13d9", + "sha256:5eb05b654a41e0f81ab27a7c3e88b6590425eb3e934e1d533ecec5dc88a6ffff", + "sha256:62b292fff4739c6be89e6a0240c02bda5a9066a339d90ab191cf66e9fdbdc193", + "sha256:6a5122b17a4faf5d7a6d91fa67b479736c0cacc7afe791ddebb7163a8550b799", + "sha256:6a8ff8e809da81363bffca2b965cb6e4bf6056b495fc3f078467d1f8266fe27f", + "sha256:6c43e1b89099279cc03eb1c725c5de12af6edcd2f78e2f8a022569efa639ada3", + "sha256:709dc11af2f74ba89c68b1592368c6edcbccdb0a06ba77eb28c8fe08bb6997da", + "sha256:7e072f5da38d6428ba1fc1115d3cc0dae895df671cb04c70c019985e8c7606be", + "sha256:813a65f95bfcb7c8f2a70dd6add9b51e9accc3bdb3e03d0ff7a9e6a2d3e174bf", + "sha256:86c01299942b0f4b5b5f28c8701689181ad2eab852e65417172dbdd6c5b3ccc8", + "sha256:893e38d0f4319dfa70c0f36381a37cc418985c87b11d9784365b1fff4fa6973b", + "sha256:8a5f574b92b3ee7d254e56d56e37ec0e1416acb1ae357c4956d76a1788dc58fb", + "sha256:8b9650f92251fdef843e74fc252cdfd6e3c700157ad686eeb0c6d7fdb2d11652", + "sha256:8ec464f20fe803ae00419bd1610934e3bda963aeba1e6181dfc9033dc7e8940c", + "sha256:8f333bfe782a2d05a67cfaa0cc9cd68b36b39ee6acfe099f980541ed973a7093", + "sha256:8ffdeb7dbd0160d4e391e1f857477e4762d00aa2199c294eb95dfb9451aa1d9f", + "sha256:911e600e798374c0d86235e7ef19109cf865d1336942d398ff313375a25a93ba", + "sha256:9235be95662559141934fced8197de6fee8c58870f36756b0584424b6d708393", + "sha256:938518a11780b39998179d07f31a4a468888123f9b00463842cd40f98191f4d3", + "sha256:93c18a1696a8e0388ed84b024fe1a188a26ba999b61d1d9a371318cb89885a8c", + "sha256:97532802f14d383f37d603a56e226909f825a83ff298dc1b6697de00d2243999", + "sha256:98ee201a52a7f65608e5494518932e1473fd43535f12cade0a1b4ab32737fe28", + "sha256:9d2ae79f31da5143e020a8d4fc74e1f0cbcb8011bdf97453c140aa616db51406", + "sha256:9d38494a8d21c246c535b41ecdb2d562c4b933cf3d68de03e8bc43a0d41be652", + "sha256:9d41ebb471a6f064c0d1c873c4f7dded733d16ca5db7d551fb04ff3805d87802", + "sha256:9e09d017e3f4d9bd7d17a30d3f59e4d6d9ba2d2ced280eec2425e84112cf623f", + "sha256:a6945c2d61c42bb7e818677f43638675b8c1c43e858b67a96df3eb2426a86c9d", + "sha256:a72e00826a2b032dda3eb25aa3e3579c6d6773d22d8446089a57a123481cc46c", + "sha256:aa1e626c524d2c7972c0f3a8a575d654a3a9c008370dc2a97e46abd0eaa749b9", + "sha256:ab095edf1d840a6a6a4307e1a5b907a299a94e7b90e75436ee770b8c35d22a25", + "sha256:ac2ac84a4950d627d84b61f082eba61314373cfab4b3c264b62efab02ababe83", + "sha256:ac7187bee72384b9cfedf09a29a3b2b6e8815cc64c095cdc8b5e6aec81e9fd5f", + "sha256:ae9d83a81b09ce3a817e2cbb23aabc07f86a3abc664c613cd283ce7a03541e95", + "sha256:afeabb382c1256a7477b739820bce7fe782bb807d82927102cee73e79b41b38b", + "sha256:b2a4cd924d0e2f4b1a68034abe4cadc73d69ad5f4cf02db6481c0d4d749f548f", + "sha256:b414ef79f1f06fb90b5165db8aef77512c1a5e3ed1b4807da8476b7e2c853283", + "sha256:b4ecbba7efd82bd2a4bb88aab7f984eb5470991c1347bdd1f35fb34ea28dba6e", + "sha256:b61d5096e75fd71018b25da50b82dd70ec39b5e15bb2134daf7eb7bbbc103644", + "sha256:b629db53fe17e6ce478a969d30bd1d0e8b53238c46e3a9c9db39e8b65a9ef973", + "sha256:b70b45a40ad0798b69748b34d508259ef2bdc84fb2aad4048bc7c9cafb68ddb3", + "sha256:b88c3ab98556bc351b36d6208a6089de8c8db14a7f6e1f57f82a334bd2c18f0b", + "sha256:baf744e5f9d5ee6531deea443be78b36ed1cd36c65a0b95ea4e8d69fa0102268", + "sha256:bbc7421cbd28b4316d1d017db338039a7943f945c6f2bb15e1439b14b5682d28", + "sha256:c31272c674f725dfe0f343d73b0abe8c878c646967ec1c6106122faae1efc15b", + "sha256:c51a899792ee2c696072791e56b2020caff58b275abecbc9ae0cb71af0645c95", + "sha256:c61e42b4ceb9759727045765e87d51c1bb9f89987aca1fcc8a040232138cad1c", + "sha256:c7cd0841a586b7105513a7c8c3d5c276f3adc762a072d81ef7fae80632afad1e", + "sha256:c827a931c6b57f50f1bb5de400dcfb00bad8117e3753e80b96adb72d9d811514", + "sha256:d2aa3ca9552f83b0b4fa6ca8c6ce08da6580f37e3e0ab7afac73a1cfdc230c0e", + "sha256:d46ee458452727a147d7897bb33886981ae1235775e05decae5d5d07f537695a", + "sha256:d64a657de7aae8db2da60dc0c9e4638a0c3893b4d60101fd564a3362b2bfeb34", + "sha256:d800a8e2ac62db1b9ea5d6d1724f1a93c53907ca061de4d05ed94e8dfa79050c", + "sha256:d9d7ebcd11ea76ba0feaae98485cd8e31467c3d7985210fab46983278214736b", + "sha256:dd7d3608589072f63078b4063a6c536af832e76b0b3885f1bfe9e892abe6c207", + "sha256:ec19e823b4ccd87bd69e990879acbce9e961fc7aebe150156b8f4418d4b27b7f", + "sha256:ee40206d1d6e95eaa2b7b919195e3689a5cf6ded730632de7f187f35a1b6052c", + "sha256:f138f550b83554f5b344d6be35d3ed59348510edc3cb96f75309db6e9bfe8210", + "sha256:f3e6e2e502c4043c52a99316d89dc49f416acda5b0c6886e0dd8ea7bb35859e8", + "sha256:fb10bb720348fe1647a94eb605accb9ef6a9b1875d8845f9e763d9d71a706387", + "sha256:fc066395e6332da1e7525d605b4c96055669f8336600bef8ac569d5226a7c76f", + "sha256:fc33267d58dfbb2361baed52668c5d8c15d24bc0372cecbb79fed77339b55e0d" + ], + "markers": "python_version >= '3.8'", + "version": "==0.15.2" + }, + "rsa": { + "hashes": [ + "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7", + "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21" + ], + "markers": "python_version >= '3.6' and python_version < '4'", + "version": "==4.9" + }, + "s3transfer": { + "hashes": [ + "sha256:01d4d2c35a016db8cb14f9a4d5e84c1f8c96e7ffc211422555eed45c11fa7eb1", + "sha256:9e1b186ec8bb5907a1e82b51237091889a9973a2bb799a924bcd9f301ff79d3d" + ], + "markers": "python_version >= '3.8'", + "version": "==0.9.0" }, "sanitize-filename": { "hashes": [ @@ -2653,6 +3123,53 @@ "markers": "python_version >= '3.8'", "version": "==69.0.2" }, + "shapely": { + "hashes": [ + "sha256:03e63a99dfe6bd3beb8d5f41ec2086585bb969991d603f9aeac335ad396a06d4", + "sha256:0521d76d1e8af01e712db71da9096b484f081e539d4f4a8c97342e7971d5e1b4", + "sha256:06f193091a7c6112fc08dfd195a1e3846a64306f890b151fa8c63b3e3624202c", + "sha256:084b023dae8ad3d5b98acee9d3bf098fdf688eb0bb9b1401e8b075f6a627b611", + "sha256:1713cc04c171baffc5b259ba8531c58acc2a301707b7f021d88a15ed090649e7", + "sha256:1f217d28ecb48e593beae20a0082a95bd9898d82d14b8fcb497edf6bff9a44d7", + "sha256:2d217e56ae067e87b4e1731d0dc62eebe887ced729ba5c2d4590e9e3e9fdbd88", + "sha256:34eac2337cbd67650248761b140d2535855d21b969d76d76123317882d3a0c1a", + "sha256:36480e32c434d168cdf2f5e9862c84aaf4d714a43a8465ae3ce8ff327f0affb7", + "sha256:394e5085b49334fd5b94fa89c086edfb39c3ecab7f669e8b2a4298b9d523b3a5", + "sha256:42997ac806e4583dad51c80a32d38570fd9a3d4778f5e2c98f9090aa7db0fe91", + "sha256:45ac6906cff0765455a7b49c1670af6e230c419507c13e2f75db638c8fc6f3bd", + "sha256:4ef753200cbffd4f652efb2c528c5474e5a14341a473994d90ad0606522a46a2", + "sha256:5324be299d4c533ecfcfd43424dfd12f9428fd6f12cda38a4316da001d6ef0ea", + "sha256:5b0c052709c8a257c93b0d4943b0b7a3035f87e2d6a8ac9407b6a992d206422f", + "sha256:6a21353d28209fb0d8cc083e08ca53c52666e0d8a1f9bbe23b6063967d89ed24", + "sha256:6ca8cffbe84ddde8f52b297b53f8e0687bd31141abb2c373fd8a9f032df415d6", + "sha256:72b5997272ae8c25f0fd5b3b967b3237e87fab7978b8d6cd5fa748770f0c5d68", + "sha256:737dba15011e5a9b54a8302f1748b62daa207c9bc06f820cd0ad32a041f1c6f2", + "sha256:78128357a0cee573257a0c2c388d4b7bf13cb7dbe5b3fe5d26d45ebbe2a39e25", + "sha256:794affd80ca0f2c536fc948a3afa90bd8fb61ebe37fe873483ae818e7f21def4", + "sha256:7e92e7c255f89f5cdf777690313311f422aa8ada9a3205b187113274e0135cd8", + "sha256:87dc2be34ac3a3a4a319b963c507ac06682978a5e6c93d71917618b14f13066e", + "sha256:94ac128ae2ab4edd0bffcd4e566411ea7bdc738aeaf92c32a8a836abad725f9f", + "sha256:a5533a925d8e211d07636ffc2fdd9a7f9f13d54686d00577eeb11d16f00be9c4", + "sha256:a9a41ff4323fc9d6257759c26eb1cf3a61ebc7e611e024e6091f42977303fd3a", + "sha256:b8eb0a92f7b8c74f9d8fdd1b40d395113f59bd8132ca1348ebcc1f5aece94b96", + "sha256:baa14fc27771e180c06b499a0a7ba697c7988c7b2b6cba9a929a19a4d2762de3", + "sha256:be46d5509b9251dd9087768eaf35a71360de6afac82ce87c636990a0871aa18b", + "sha256:c6fd29fbd9cd76350bd5cc14c49de394a31770aed02d74203e23b928f3d2f1aa", + "sha256:ccfd5fa10a37e67dbafc601c1ddbcbbfef70d34c3f6b0efc866ddbdb55893a6c", + "sha256:d41a116fcad58048d7143ddb01285e1a8780df6dc1f56c3b1e1b7f12ed296651", + "sha256:dc9342fc82e374130db86a955c3c4525bfbf315a248af8277a913f30911bed9e", + "sha256:dea9a0651333cf96ef5bb2035044e3ad6a54f87d90e50fe4c2636debf1b77abc", + "sha256:e7c95d3379ae3abb74058938a9fcbc478c6b2e28d20dace38f8b5c587dde90aa", + "sha256:e7d897e6bdc6bc64f7f65155dbbb30e49acaabbd0d9266b9b4041f87d6e52b3a", + "sha256:ea84d1cdbcf31e619d672b53c4532f06253894185ee7acb8ceb78f5f33cbe033", + "sha256:ed1e99702125e7baccf401830a3b94d810d5c70b329b765fe93451fe14cf565b", + "sha256:eebe544df5c018134f3c23b6515877f7e4cd72851f88a8d0c18464f414d141a2", + "sha256:fa3ee28f5e63a130ec5af4dc3c4cb9c21c5788bb13c15e89190d163b14f9fb89", + "sha256:fd3ad17b64466a033848c26cb5b509625c87d07dcf39a1541461cacdb8f7e91c" + ], + "markers": "python_version >= '3.7'", + "version": "==2.0.2" + }, "six": { "hashes": [ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", @@ -2733,6 +3250,13 @@ "markers": "python_version >= '3.7'", "version": "==2.0.23" }, + "sqlglot": { + "hashes": [ + "sha256:7f1999056d98602757e50d189bec1a47c09e3d9f07e5945601b9ba6c61b22deb", + "sha256:b3da8638a2aaeb961e5bf3cb78aa63bda64b5619b2b404bf36ae32b79282963c" + ], + "version": "==10.6.1" + }, "sqlparse": { "hashes": [ "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3", @@ -2861,6 +3385,14 @@ "markers": "python_version >= '3.8'", "version": "==5.2" }, + "uc-micro-py": { + "hashes": [ + "sha256:30ae2ac9c49f39ac6dce743bd187fcd2b574b16ca095fa74cd9396795c954c54", + "sha256:8c9110c309db9d9e87302e2f4ad2c3152770930d88ab385cd544e7a7e75f3de0" + ], + "markers": "python_version >= '3.7'", + "version": "==1.0.2" + }, "uri-template": { "hashes": [ "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", @@ -2868,13 +3400,21 @@ ], "version": "==1.3.0" }, + "uritemplate": { + "hashes": [ + "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0", + "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e" + ], + "markers": "python_version >= '3.6'", + "version": "==4.1.1" + }, "urllib3": { "hashes": [ - "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3", - "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54" + "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84", + "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e" ], - "markers": "python_version >= '3.8'", - "version": "==2.1.0" + "markers": "python_version >= '3.6'", + "version": "==2.0.7" }, "uwsgi": { "hashes": [ @@ -2945,6 +3485,14 @@ "markers": "python_version >= '3.7'", "version": "==4.0.9" }, + "xyzservices": { + "hashes": [ + "sha256:091229269043bc8258042edbedad4fcb44684b0473ede027b5672ad40dc9fa02", + "sha256:6a4c38d3a9f89d3e77153eff9414b36a8ee0850c9e8b85796fd1b2a85b8dfd68" + ], + "markers": "python_version >= '3.8'", + "version": "==2023.10.1" + }, "yarl": { "hashes": [ "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51", @@ -3122,6 +3670,7 @@ "sha256:f800164276eec54e0af5c99feb9494c295118fc10a11b997bbb1348ba1a52065", "sha256:ffcd828e37dc219a72c9012ec44ad2e7e3066bec6ff3aaa19e7d435dbf4032ca" ], + "markers": "python_version >= '3.8'", "version": "==3.9.1" }, "aiosignal": { diff --git a/components/paddock/telemetry/pitcrew/application/application.py b/components/paddock/telemetry/pitcrew/application/application.py index aefa6055..96786b37 100644 --- a/components/paddock/telemetry/pitcrew/application/application.py +++ b/components/paddock/telemetry/pitcrew/application/application.py @@ -2,7 +2,7 @@ from collections import deque from telemetry.pitcrew.history import History -from telemetry.pitcrew.logging import LoggingMixin +from components.paddock.telemetry.pitcrew.logging_mixin import LoggingMixin from .response import Response, ResponseInstant from .session import Session diff --git a/components/paddock/telemetry/pitcrew/coach.py b/components/paddock/telemetry/pitcrew/coach.py index d35cec8c..2c2f876c 100755 --- a/components/paddock/telemetry/pitcrew/coach.py +++ b/components/paddock/telemetry/pitcrew/coach.py @@ -4,7 +4,7 @@ from telemetry.models import Coach as DbCoach from telemetry.models import TrackGuide -from telemetry.pitcrew.logging import LoggingMixin +from telemetry.pitcrew.logging_mixin import LoggingMixin from .history import History from .message import ( diff --git a/components/paddock/telemetry/pitcrew/coach_app.py b/components/paddock/telemetry/pitcrew/coach_app.py index b52e921a..c130fa76 100755 --- a/components/paddock/telemetry/pitcrew/coach_app.py +++ b/components/paddock/telemetry/pitcrew/coach_app.py @@ -3,7 +3,7 @@ import django.utils.timezone from telemetry.models import Coach, SessionType -from telemetry.pitcrew.logging import LoggingMixin +from components.paddock.telemetry.pitcrew.logging_mixin import LoggingMixin from .application.debug_application import DebugApplication from .application.response import ResponseInstant diff --git a/components/paddock/telemetry/pitcrew/history.py b/components/paddock/telemetry/pitcrew/history.py index b7419b9e..dc605fea 100755 --- a/components/paddock/telemetry/pitcrew/history.py +++ b/components/paddock/telemetry/pitcrew/history.py @@ -7,7 +7,7 @@ from telemetry.analyzer import Analyzer from telemetry.fast_lap_analyzer import FastLapAnalyzer from telemetry.models import Coach, Driver, FastLap, Game -from telemetry.pitcrew.logging import LoggingMixin +from telemetry.pitcrew.logging_mixin import LoggingMixin from telemetry.pitcrew.segment import Segment from telemetry.racing_stats import RacingStats diff --git a/components/paddock/telemetry/pitcrew/logging.py b/components/paddock/telemetry/pitcrew/logging_mixin.py similarity index 100% rename from components/paddock/telemetry/pitcrew/logging.py rename to components/paddock/telemetry/pitcrew/logging_mixin.py diff --git a/components/paddock/telemetry/pitcrew/output.csv b/components/paddock/telemetry/pitcrew/output.csv new file mode 100644 index 00000000..766eff74 --- /dev/null +++ b/components/paddock/telemetry/pitcrew/output.csv @@ -0,0 +1,2 @@ +sum,time,diff +136,1702980135662,1 diff --git a/components/paddock/telemetry/pitcrew/output_stream.csv b/components/paddock/telemetry/pitcrew/output_stream.csv new file mode 100644 index 00000000..b832f204 --- /dev/null +++ b/components/paddock/telemetry/pitcrew/output_stream.csv @@ -0,0 +1,32 @@ +sum,time,diff +1,1702979416630,1 +1,1702979418130,-1 +3,1702979418130,1 +3,1702979418204,-1 +6,1702979418204,1 +6,1702979419626,-1 +10,1702979419626,1 +10,1702979421130,-1 +15,1702979421130,1 +15,1702979421228,-1 +21,1702979421228,1 +21,1702979422626,-1 +28,1702979422626,1 +28,1702979424130,-1 +36,1702979424130,1 +36,1702979424258,-1 +45,1702979424258,1 +45,1702979425630,-1 +55,1702979425630,1 +55,1702979427128,-1 +66,1702979427128,1 +66,1702979427286,-1 +78,1702979427286,1 +78,1702979428630,-1 +91,1702979428630,1 +91,1702979430130,-1 +105,1702979430130,1 +105,1702979430312,-1 +120,1702979430312,1 +120,1702979431630,-1 +136,1702979431630,1 diff --git a/components/paddock/telemetry/pitcrew/session.py b/components/paddock/telemetry/pitcrew/session.py index a881feab..b46a3406 100755 --- a/components/paddock/telemetry/pitcrew/session.py +++ b/components/paddock/telemetry/pitcrew/session.py @@ -1,7 +1,7 @@ import django.utils.timezone from telemetry.models import Game -from telemetry.pitcrew.logging import LoggingMixin +from telemetry.pitcrew.logging_mixin import LoggingMixin class Lap: diff --git a/components/paddock/telemetry/pitcrew/session_stream.py b/components/paddock/telemetry/pitcrew/session_stream.py new file mode 100644 index 00000000..2aeb007c --- /dev/null +++ b/components/paddock/telemetry/pitcrew/session_stream.py @@ -0,0 +1,39 @@ +import pathway as pw +import logging + +class MqttClient(): + + def __init__(self, subject) -> None: + self._subject = subject + + def notify(self, topic, payload) -> None: + self._subject.next_json(payload) + + def run(self) -> None: + # start the mqtt client and subscribe to the topic + logging.info("Starting client") + self._subject.run() + +class TelemetrySubject(pw.io.python.ConnectorSubject): + def __init__(self) -> None: + super().__init__() + + def set_client(self, client) -> None: + self._mqtt_client = client + + def notify(self, topic, payload) -> None: + self.next_json(payload) + + def run(self) -> None: + logging.info("TelemetrySubject running") + self._mqtt_client.run() + + def on_stop(self) -> None: + pass + # self._mqtt_client.disconnect() + + +class InputSchema(pw.Schema): + key: int = pw.column_definition(primary_key=True) + text: str + diff --git a/components/paddock/telemetry/pitcrew/stream_writer.py b/components/paddock/telemetry/pitcrew/stream_writer.py new file mode 100644 index 00000000..5df65825 --- /dev/null +++ b/components/paddock/telemetry/pitcrew/stream_writer.py @@ -0,0 +1,14 @@ +import pathway as pw + +class InputSchema(pw.Schema): + value: int + + +t = pw.io.csv.read( + './sum_input_data/', + schema=InputSchema, + mode="streaming" +) +t = t.reduce(sum=pw.reducers.sum(t.value)) +pw.io.csv.write(t, "output_stream.csv") +pw.run() diff --git a/components/paddock/telemetry/tests/test_session_streaming.py b/components/paddock/telemetry/tests/test_session_streaming.py new file mode 100644 index 00000000..dbde05c8 --- /dev/null +++ b/components/paddock/telemetry/tests/test_session_streaming.py @@ -0,0 +1,195 @@ +from pprint import pprint + +import django.utils.timezone +import logging +from django.db import IntegrityError +from django.test import TestCase + +from telemetry.models import Car, Driver, Game +from telemetry.models import Session as SessionModel +from telemetry.models import SessionType, Track +from telemetry.pitcrew.firehose import Firehose +from telemetry.pitcrew.session import Lap, Session +from telemetry.pitcrew.session_stream import MqttClient, TelemetrySubject, InputSchema +from telemetry.pitcrew.mqtt import Mqtt + +from .utils import get_session_df + +import pathway as pw + +class TestSessionStreaming(TestCase): + def _test_session_firehose(self, session_id, measurement="fast_laps", bucket="fast_laps"): + session_df = get_session_df(session_id, measurement=measurement, bucket=bucket) + + # create a subject + subject = TelemetrySubject() + # client = MqttClient(subject) + client = Mqtt(subject, "crewchief/#") + subject.set_client(client) + + table = pw.io.python.read( + subject, + schema=InputSchema + ) + pw.io.csv.write(table, "output.csv") + + # pw.debug.compute_and_print(table) + + # client.notify("topic", {"key": 1, "text": "hello"}) + + pw.debug.compute_and_print(table) + # pw.run() + + # mqtt_client = Mqtt(client, "crewchief/#") + # mqtt_client.run() + # logging.info("Starting MQTT client") + # pw.debug.compute_and_print(table) + + + # session = Session(666) + # for index, row in session_df.iterrows(): + # # convert row to dict + # row = row.to_dict() + # now = row["_time"] + # firehose.notify(row["topic"], row, now) + # if index == 0: + # session = firehose.sessions[row["topic"]] + + # pprint(session.laps) + # return session + + # def _test_session(self, session_id, measurement="fast_laps", bucket="fast_laps"): + # session_df = get_session_df(session_id, measurement=measurement, bucket=bucket) + + # # Create an instance of the Session class + # test_session = Session(666) + + # for index, row in session_df.iterrows(): + # # convert row to dict + # row = row.to_dict() + # now = row["_time"] + # test_session.signal(row, now) + + # pprint(test_session.laps) + # return test_session + + def _assert_laps(self, test_session, expected_laps): + # Iterate over the expected_laps dictionary and compare to the test_session.laps + for lap_number, expected_lap in expected_laps.items(): + lap = test_session.laps[lap_number] + + self.assertEqual(lap.number, expected_lap.number) + self.assertEqual(lap.time, expected_lap.time) + self.assertEqual(lap.valid, expected_lap.valid) + self.assertEqual(lap.finished, expected_lap.finished) + self.assertAlmostEqual(int(lap.length), int(expected_lap.length), places=0) + + if lap.time != -1: + # the difference between lap.end and lap.start should be equal to lap.time + time_delta = lap.end - lap.start + self.assertAlmostEqual(time_delta.total_seconds(), expected_lap.time, places=0) + + def test_iracing(self): + # measurement = "fast_laps" + # bucket = "fast_laps" + # start = "-10y" + session_id = "1681021274" + + expected_laps = { + 1: Lap(1, time=100.818, valid=True, length=4409), + 2: Lap(2, time=-1, valid=False, length=4408), + 3: Lap(3, time=101.0466, valid=True, length=4408), + 4: Lap(4, time=100.823, valid=True, length=4408), + 5: Lap(5, time=99.4026, valid=True, length=4410), + 6: Lap(6, time=107.9166, valid=False, length=4410), + 7: Lap(7, time=99.0674, valid=False, length=4410), + 8: Lap(8, time=-1, valid=False, length=4409), + 9: Lap(9, time=101.7361, valid=False, length=4409), + 10: Lap(10, time=-1, valid=False, length=1890), + } + for lap_number, expected_lap in expected_laps.items(): + expected_lap.finished = True + expected_laps[10].finished = False + session = self._test_session_firehose(session_id) + # self._assert_laps(session, expected_laps) + + # def test_ac(self): + # # measurement = "fast_laps" + # # bucket = "fast_laps" + # # start = "-10y" + # session_id = "1673613558" + + # # For this session the following laps are valid: + # expected_laps = { + # 2: Lap(2, time=63.79, valid=False, length=2338.449), + # 3: Lap(3, time=62.4660034, valid=True, length=2341.24487), + # 4: Lap(4, time=64.097, valid=False, length=2339.07666), + # 5: Lap(5, time=61.833, valid=True, length=2340.87329), + # 6: Lap(6, time=70.983, valid=False, length=2342.41357), + # 7: Lap(7, time=61.465, valid=True, length=2337.27051), + # 8: Lap(8, time=67.749, valid=True, length=2337.886), + # 9: Lap(9, time=61.703, valid=True, length=2338.9856), + # 10: Lap(10, time=73.402, valid=False, length=2341.15625), + # 11: Lap(11, time=85.821, valid=False, length=2340.723), + # # 12: Lap(12, time=169.38, valid=False, length=2338.358), # during this lap the game was paused + # # 12: Lap(12, time=174.319331, valid=False, length=2338.358), + # 13: Lap(13, time=64.435, valid=False, length=2337.65625), + # 14: Lap(14, time=62.7619972, valid=False, length=2341.5625), + # 15: Lap(15, time=77.178, valid=False, length=2341.84863), + # 16: Lap(16, time=79.708, valid=False, length=2342.23486), + # 17: Lap(17, time=-1.0, valid=True, length=33.61092), + # } + # for lap_number, expected_lap in expected_laps.items(): + # expected_lap.finished = True + # expected_laps[17].finished = False + + # session = self._test_session(session_id) + # self._assert_laps(session, expected_laps) + + # def test_car_class(self): + # session_id = "1692140843" + + # session = self._test_session_firehose(session_id) + + # self.assertEqual(session.car_class, "ARC_CAMERO") + + # def test_telemetry_invalid(self): + # # 2390.0: LapTimePrevious: None -> None + # # 2390.0: CurrentLapIsValid: None -> None + # # 2390.0: PreviousLapWasValid: None -> None + # # these values are always None in that session + # session_id = "1672395579" + # session = self._test_session(session_id) + # self.assertEqual(session.laps, {}) + + # def test_telemetry_missing_fields(self): + # # last lap CurrentLapIsValid is None + # session_id = "1680321341" + # session = self._test_session(session_id) + + # expected_laps = { + # 11: Lap(11, time=-1, length=82, valid=True, finished=False), + # } + # self._assert_laps(session, expected_laps) + + # def test_duplicate_lap(self): + # # create 2 laps with the same number + # game = Game.objects.create(name="test_game") + # track = Track.objects.create(name="test_track", game=game) + # car = Car.objects.create(name="test_car", game=game) + # driver = Driver.objects.create(name="test_driver") + # session_type = SessionType.objects.create(type="test_session_type") + # session = SessionModel.objects.create(session_id=666, driver=driver, game=game, session_type=session_type) + + # now = django.utils.timezone.now() + + # session.laps.create(number=1, car=car, track=track, start=now) + # try: + # session.laps.create(number=2, car=car, track=track, start=now) + # except IntegrityError as e: + # self.assertEqual( + # e.args[0], + # "UNIQUE constraint failed: telemetry_lap.session_id, telemetry_lap.start", + # ) + # except Exception as e: + # self.fail(f"Unexpected exception: {e}")