diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a81de92..7bd6ff8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -41,8 +41,8 @@ repos: rev: v1.9.0 hooks: - id: mypy - exclude: (settings.py|manage.py|models.py|(migrations/)|admin.py) - additional_dependencies: [pydantic, types-redis] + exclude: (manage.py|models.py|(migrations/)|admin.py) + additional_dependencies: [pydantic, types-redis, aiomqtt] language_version: python3.11 - repo: https://github.com/PyCQA/pylint rev: v3.1.0 @@ -58,6 +58,7 @@ repos: motor, redis, types-redis, + aiomqtt, ] exclude: django_project/ language_version: python3.11 diff --git a/Pipfile b/Pipfile index 0af6e8b..7d9247a 100644 --- a/Pipfile +++ b/Pipfile @@ -16,6 +16,7 @@ celery = {version = "*", extras = ["librabbitmq", "mongodb", "redis"]} #django = "~=4.2" #psycopg = {version = ">=3.2", extras = ["binary", "pool"]} motor = "*" +aiomqtt = "*" [dev-packages] black = "*" diff --git a/Pipfile.lock b/Pipfile.lock index f6fc17a..b57cbe8 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "b4a09e56daf0c935fb3ccb92c35b5a3dc7acd28ade3b4d4334347e72802a4fe9" + "sha256": "8703de67c838856ee792ecd2fba397e4b6bab0475c039c4ed254efc9c04925dd" }, "pipfile-spec": 6, "requires": { @@ -16,6 +16,14 @@ ] }, "default": { + "aiomqtt": { + "hashes": [ + "sha256:60f6451c8ab7235cfb392b1b0cab398e9bc6040f4b140628c0615371abcde15f", + "sha256:7c26a867212366ae0841571e6c2d06cebc00c2de029475b920c2cd7396aeacea" + ], + "index": "pypi", + "version": "==2.0.1" + }, "amqp": { "hashes": [ "sha256:827cb12fb0baa892aad844fd95258143bce4027fdac4fccddbc43330fd281637", @@ -137,11 +145,11 @@ }, "click-didyoumean": { "hashes": [ - "sha256:a0713dc7a1de3f06bc0df5a9567ad19ead2d3d5689b434768a6145bff77c0667", - "sha256:f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035" + "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463", + "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c" ], - "markers": "python_full_version >= '3.6.2' and python_full_version < '4.0.0'", - "version": "==0.3.0" + "markers": "python_full_version >= '3.6.2'", + "version": "==0.3.1" }, "click-plugins": { "hashes": [ @@ -216,11 +224,11 @@ "all" ], "hashes": [ - "sha256:266775f0dcc95af9d3ef39bad55cff525329a931d5fd51930aadd4f428bf7ff3", - "sha256:87a1f6fb632a218222c5984be540055346a8f5d8a68e8f6fb647b1dc9934de4b" + "sha256:5df913203c482f820d31f48e635e022f8cbfe7350e4830ef05a3163925b1addc", + "sha256:6feac43ec359dfe4f45b2c18ec8c94edb8dc2dfc461d417d9e626590c071baad" ], "index": "pypi", - "version": "==0.110.0" + "version": "==0.110.1" }, "h11": { "hashes": [ @@ -346,11 +354,11 @@ }, "httpcore": { "hashes": [ - "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73", - "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022" + "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61", + "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5" ], "markers": "python_version >= '3.8'", - "version": "==1.0.4" + "version": "==1.0.5" }, "httptools": { "hashes": [ @@ -424,11 +432,11 @@ }, "kombu": { "hashes": [ - "sha256:0eac1bbb464afe6fb0924b21bf79460416d25d8abc52546d4f16cad94f789488", - "sha256:30e470f1a6b49c70dc6f6d13c3e4cc4e178aa6c469ceb6bcd55645385fc84b93" + "sha256:49f1e62b12369045de2662f62cc584e7df83481a513db83b01f87b5b9785e378", + "sha256:f3da5b570a147a5da8280180aa80b03807283d63ea5081fcdb510d18242431d9" ], "markers": "python_version >= '3.8'", - "version": "==5.3.5" + "version": "==5.3.6" }, "markupsafe": { "hashes": [ @@ -498,66 +506,73 @@ }, "motor": { "hashes": [ - "sha256:6fe7e6f0c4f430b9e030b9d22549b732f7c2226af3ab71ecc309e4a1b7d19953", - "sha256:d2fc38de15f1c8058f389c1a44a4d4105c0405c48c061cd492a654496f7bc26a" + "sha256:4b1e1a0cc5116ff73be2c080a72da078f2bb719b53bc7a6bb9e9a2f7dcd421ed", + "sha256:c89b4e4eb2e711345e91c7c9b122cb68cce0e5e869ed0387dd0acb10775e3131" ], "index": "pypi", - "version": "==3.3.2" + "version": "==3.4.0" }, "orjson": { "hashes": [ - "sha256:001f4eb0ecd8e9ebd295722d0cbedf0748680fb9998d3993abaed2f40587257a", - "sha256:05a1f57fb601c426635fcae9ddbe90dfc1ed42245eb4c75e4960440cac667262", - "sha256:10c57bc7b946cf2efa67ac55766e41764b66d40cbd9489041e637c1304400494", - "sha256:12365576039b1a5a47df01aadb353b68223da413e2e7f98c02403061aad34bde", - "sha256:2973474811db7b35c30248d1129c64fd2bdf40d57d84beed2a9a379a6f57d0ab", - "sha256:2b5c0f532905e60cf22a511120e3719b85d9c25d0e1c2a8abb20c4dede3b05a5", - "sha256:2c51378d4a8255b2e7c1e5cc430644f0939539deddfa77f6fac7b56a9784160a", - "sha256:2d99e3c4c13a7b0fb3792cc04c2829c9db07838fb6973e578b85c1745e7d0ce7", - "sha256:2f256d03957075fcb5923410058982aea85455d035607486ccb847f095442bda", - "sha256:34cbcd216e7af5270f2ffa63a963346845eb71e174ea530867b7443892d77180", - "sha256:4228aace81781cc9d05a3ec3a6d2673a1ad0d8725b4e915f1089803e9efd2b99", - "sha256:4feeb41882e8aa17634b589533baafdceb387e01e117b1ec65534ec724023d04", - "sha256:57d5d8cf9c27f7ef6bc56a5925c7fbc76b61288ab674eb352c26ac780caa5b10", - "sha256:5bb399e1b49db120653a31463b4a7b27cf2fbfe60469546baf681d1b39f4edf2", - "sha256:62482873e0289cf7313461009bf62ac8b2e54bc6f00c6fabcde785709231a5d7", - "sha256:67384f588f7f8daf040114337d34a5188346e3fae6c38b6a19a2fe8c663a2f9b", - "sha256:6ae4e06be04dc00618247c4ae3f7c3e561d5bc19ab6941427f6d3722a0875ef7", - "sha256:6f7b65bfaf69493c73423ce9db66cfe9138b2f9ef62897486417a8fcb0a92bfe", - "sha256:6fc2fe4647927070df3d93f561d7e588a38865ea0040027662e3e541d592811e", - "sha256:71c6b009d431b3839d7c14c3af86788b3cfac41e969e3e1c22f8a6ea13139404", - "sha256:7413070a3e927e4207d00bd65f42d1b780fb0d32d7b1d951f6dc6ade318e1b5a", - "sha256:76bc6356d07c1d9f4b782813094d0caf1703b729d876ab6a676f3aaa9a47e37c", - "sha256:7f6cbd8e6e446fb7e4ed5bac4661a29e43f38aeecbf60c4b900b825a353276a1", - "sha256:8055ec598605b0077e29652ccfe9372247474375e0e3f5775c91d9434e12d6b1", - "sha256:809d653c155e2cc4fd39ad69c08fdff7f4016c355ae4b88905219d3579e31eb7", - "sha256:82425dd5c7bd3adfe4e94c78e27e2fa02971750c2b7ffba648b0f5d5cc016a73", - "sha256:87f1097acb569dde17f246faa268759a71a2cb8c96dd392cd25c668b104cad2f", - "sha256:920fa5a0c5175ab14b9c78f6f820b75804fb4984423ee4c4f1e6d748f8b22bc1", - "sha256:92255879280ef9c3c0bcb327c5a1b8ed694c290d61a6a532458264f887f052cb", - "sha256:946c3a1ef25338e78107fba746f299f926db408d34553b4754e90a7de1d44068", - "sha256:95cae920959d772f30ab36d3b25f83bb0f3be671e986c72ce22f8fa700dae061", - "sha256:9cf1596680ac1f01839dba32d496136bdd5d8ffb858c280fa82bbfeb173bdd40", - "sha256:9fe41b6f72f52d3da4db524c8653e46243c8c92df826ab5ffaece2dba9cccd58", - "sha256:b17f0f14a9c0ba55ff6279a922d1932e24b13fc218a3e968ecdbf791b3682b25", - "sha256:b3d336ed75d17c7b1af233a6561cf421dee41d9204aa3cfcc6c9c65cd5bb69a8", - "sha256:b66bcc5670e8a6b78f0313bcb74774c8291f6f8aeef10fe70e910b8040f3ab75", - "sha256:b725da33e6e58e4a5d27958568484aa766e825e93aa20c26c91168be58e08cbb", - "sha256:b72758f3ffc36ca566ba98a8e7f4f373b6c17c646ff8ad9b21ad10c29186f00d", - "sha256:bcef128f970bb63ecf9a65f7beafd9b55e3aaf0efc271a4154050fc15cdb386e", - "sha256:c8e8fe01e435005d4421f183038fc70ca85d2c1e490f51fb972db92af6e047c2", - "sha256:d61f7ce4727a9fa7680cd6f3986b0e2c732639f46a5e0156e550e35258aa313a", - "sha256:d6768a327ea1ba44c9114dba5fdda4a214bdb70129065cd0807eb5f010bfcbb5", - "sha256:e18668f1bd39e69b7fed19fa7cd1cd110a121ec25439328b5c89934e6d30d357", - "sha256:e88b97ef13910e5f87bcbc4dd7979a7de9ba8702b54d3204ac587e83639c0c2b", - "sha256:ea0b183a5fe6b2b45f3b854b0d19c4e932d6f5934ae1f723b07cf9560edd4ec7", - "sha256:ede0bde16cc6e9b96633df1631fbcd66491d1063667f260a4f2386a098393790", - "sha256:f541587f5c558abd93cb0de491ce99a9ef8d1ae29dd6ab4dbb5a13281ae04cbd", - "sha256:fbbeb3c9b2edb5fd044b2a070f127a0ac456ffd079cb82746fc84af01ef021a4", - "sha256:fdfa97090e2d6f73dced247a2f2d8004ac6449df6568f30e7fa1a045767c69a6", - "sha256:ff0f9913d82e1d1fadbd976424c316fbc4d9c525c81d047bbdd16bd27dd98cfc" - ], - "version": "==3.9.15" + "sha256:115498c4ad34188dcb73464e8dc80e490a3e5e88a925907b6fedcf20e545001a", + "sha256:13b5d3c795b09a466ec9fcf0bd3ad7b85467d91a60113885df7b8d639a9d374b", + "sha256:175a41500ebb2fdf320bf78e8b9a75a1279525b62ba400b2b2444e274c2c8bee", + "sha256:1897aa25a944cec774ce4a0e1c8e98fb50523e97366c637b7d0cddabc42e6643", + "sha256:1bef1050b1bdc9ea6c0d08468e3e61c9386723633b397e50b82fda37b3563d72", + "sha256:1de3fd5c7b208d836f8ecb4526995f0d5877153a4f6f12f3e9bf11e49357de98", + "sha256:22c2f7e377ac757bd3476ecb7480c8ed79d98ef89648f0176deb1da5cd014eb7", + "sha256:237ba922aef472761acd697eef77fef4831ab769a42e83c04ac91e9f9e08fa0e", + "sha256:23c12bb4ced1c3308eff7ba5c63ef8f0edb3e4c43c026440247dd6c1c61cea4b", + "sha256:30707e646080dd3c791f22ce7e4a2fc2438765408547c10510f1f690bd336217", + "sha256:30d795a24be16c03dca0c35ca8f9c8eaaa51e3342f2c162d327bd0225118794a", + "sha256:33e6655a2542195d6fd9f850b428926559dee382f7a862dae92ca97fea03a5ad", + "sha256:400c5b7c4222cb27b5059adf1fb12302eebcabf1978f33d0824aa5277ca899bd", + "sha256:4050920e831a49d8782a1720d3ca2f1c49b150953667eed6e5d63a62e80f46a2", + "sha256:414e5293b82373606acf0d66313aecb52d9c8c2404b1900683eb32c3d042dbd7", + "sha256:4251964db47ef090c462a2d909f16c7c7d5fe68e341dabce6702879ec26d1134", + "sha256:4329c1d24fd130ee377e32a72dc54a3c251e6706fccd9a2ecb91b3606fddd998", + "sha256:47af5d4b850a2d1328660661f0881b67fdbe712aea905dadd413bdea6f792c33", + "sha256:5127478260db640323cea131ee88541cb1a9fbce051f0b22fa2f0892f44da302", + "sha256:57d017863ec8aa4589be30a328dacd13c2dc49de1c170bc8d8c8a98ece0f2925", + "sha256:5d42768db6f2ce0162544845facb7c081e9364a5eb6d2ef06cd17f6050b048d8", + "sha256:5dcb32e949eae80fb335e63b90e5808b4b0f64e31476b3777707416b41682db5", + "sha256:60c0b1bdbccd959ebd1575bd0147bd5e10fc76f26216188be4a36b691c937077", + "sha256:658ca5cee3379dd3d37dbacd43d42c1b4feee99a29d847ef27a1cb18abdfb23f", + "sha256:6735dd4a5a7b6df00a87d1d7a02b84b54d215fb7adac50dd24da5997ffb4798d", + "sha256:6a3f53dc650bc860eb26ec293dfb489b2f6ae1cbfc409a127b01229980e372f7", + "sha256:73bbbdc43d520204d9ef0817ac03fa49c103c7f9ea94f410d2950755be2c349c", + "sha256:8acd4b82a5f3a3ec8b1dc83452941d22b4711964c34727eb1e65449eead353ca", + "sha256:90bfc137c75c31d32308fd61951d424424426ddc39a40e367704661a9ee97095", + "sha256:9587053e0cefc284e4d1cd113c34468b7d3f17666d22b185ea654f0775316a26", + "sha256:983db1f87c371dc6ffc52931eb75f9fe17dc621273e43ce67bee407d3e5476e9", + "sha256:98c1bfc6a9bec52bc8f0ab9b86cc0874b0299fccef3562b793c1576cf3abb570", + "sha256:9a667769a96a72ca67237224a36faf57db0c82ab07d09c3aafc6f956196cfa1b", + "sha256:9bf565a69e0082ea348c5657401acec3cbbb31564d89afebaee884614fba36b4", + "sha256:aa7d507c7493252c0a0264b5cc7e20fa2f8622b8a83b04d819b5ce32c97cf57b", + "sha256:ade1e21dfde1d37feee8cf6464c20a2f41fa46c8bcd5251e761903e46102dc6b", + "sha256:b2d014cf8d4dc9f03fc9f870de191a49a03b1bcda51f2a957943fb9fafe55aac", + "sha256:b6ebc17cfbbf741f5c1a888d1854354536f63d84bee537c9a7c0335791bb9009", + "sha256:b98345529bafe3c06c09996b303fc0a21961820d634409b8639bc16bd4f21b63", + "sha256:ba4d8cac5f2e2cff36bea6b6481cdb92b38c202bcec603d6f5ff91960595a1ed", + "sha256:c4f60db24161534764277f798ef53b9d3063092f6d23f8f962b4a97edfa997a0", + "sha256:c90681333619d78360d13840c7235fdaf01b2b129cb3a4f1647783b1971542b6", + "sha256:cd583341218826f48bd7c6ebf3310b4126216920853cbc471e8dbeaf07b0b80e", + "sha256:d16c6963ddf3b28c0d461641517cd312ad6b3cf303d8b87d5ef3fa59d6844337", + "sha256:d2817877d0b69f78f146ab305c5975d0618df41acf8811249ee64231f5953fee", + "sha256:e286a51def6626f1e0cc134ba2067dcf14f7f4b9550f6dd4535fd9d79000040b", + "sha256:e62ba42bfe64c60c1bc84799944f80704e996592c6b9e14789c8e2a303279912", + "sha256:eadecaa16d9783affca33597781328e4981b048615c2ddc31c47a51b833d6319", + "sha256:ef0f19fdfb6553342b1882f438afd53c7cb7aea57894c4490c43e4431739c700", + "sha256:f93e33f67729d460a177ba285002035d3f11425ed3cebac5f6ded4ef36b28344", + "sha256:feaed5bb09877dc27ed0d37f037ddef6cb76d19aa34b108db270d27d3d2ef747" + ], + "version": "==3.10.0" + }, + "paho-mqtt": { + "hashes": [ + "sha256:2a8291c81623aec00372b5a85558a372c747cbca8e9934dfe218638b8eefc26f" + ], + "version": "==1.6.1" }, "prompt-toolkit": { "hashes": [ @@ -569,10 +584,11 @@ }, "pycparser": { "hashes": [ - "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", - "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206" + "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", + "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc" ], - "version": "==2.21" + "markers": "python_version >= '3.8'", + "version": "==2.22" }, "pydantic": { "hashes": [ @@ -686,90 +702,90 @@ "srv" ], "hashes": [ - "sha256:097791d5a8d44e2444e0c8c4d6e14570ac11e22bcb833808885a5db081c3dc2a", - "sha256:0d002ae456a15b1d790a78bb84f87af21af1cb716a63efb2c446ab6bcbbc48ca", - "sha256:0fbdbf2fba1b4f5f1522e9f11e21c306e095b59a83340a69e908f8ed9b450070", - "sha256:1849fd6f1917b4dc5dbf744b2f18e41e0538d08dd8e9ba9efa811c5149d665a3", - "sha256:18c422e6b08fa370ed9d8670c67e78d01f50d6517cec4522aa8627014dfa38b6", - "sha256:1f251f287e6d42daa3654b686ce1fcb6d74bf13b3907c3ae25954978c70f2cd4", - "sha256:1f5f4cd2969197e25b67e24d5b8aa2452d381861d2791d06c493eaa0b9c9fcfe", - "sha256:1f706c1a644ed33eaea91df0a8fb687ce572b53eeb4ff9b89270cb0247e5d0e1", - "sha256:2160d9c8cd20ce1f76a893f0daf7c0d38af093f36f1b5c9f3dcf3e08f7142814", - "sha256:2b575fbe6396bbf21e4d0e5fd2e3cdb656dc90c930b6c5532192e9a89814f72d", - "sha256:2b65433c90e07dc252b4a55dfd885ca0df94b1cf77c5b8709953ec1983aadc03", - "sha256:2f7b98f8d2cf3eeebde738d080ae9b4276d7250912d9751046a9ac1efc9b1ce2", - "sha256:311794ef3ccae374aaef95792c36b0e5c06e8d5cf04a1bdb1b2bf14619ac881f", - "sha256:362a5adf6f3f938a8ff220a4c4aaa93e84ef932a409abecd837c617d17a5990f", - "sha256:397949a9cc85e4a1452f80b7f7f2175d557237177120954eff00bf79553e89d3", - "sha256:3a5280f496297537301e78bde250c96fadf4945e7b2c397d8bb8921861dd236d", - "sha256:3e03c732cb64b96849310e1d8688fb70d75e2571385485bf2f1e7ad1d309fa53", - "sha256:3e9f6e2f3da0a6af854a3e959a6962b5f8b43bbb8113cd0bff0421c5059b3106", - "sha256:4522ad69a4ab0e1b46a8367d62ad3865b8cd54cf77518c157631dac1fdc97584", - "sha256:477914e13501bb1d4608339ee5bb618be056d2d0e7267727623516cfa902e652", - "sha256:4993593de44c741d1e9f230f221fe623179f500765f9855936e4ff6f33571bad", - "sha256:4d982c6db1da7cf3018183891883660ad085de97f21490d314385373f775915b", - "sha256:4e2129ec8f72806751b621470ac5d26aaa18fae4194796621508fa0e6068278a", - "sha256:4fa30494601a6271a8b416554bd7cde7b2a848230f0ec03e3f08d84565b4bf8c", - "sha256:5379ca6fd325387a34cda440aec2bd031b5ef0b0aa2e23b4981945cff1dab84c", - "sha256:579508536113dbd4c56e4738955a18847e8a6c41bf3c0b4ab18b51d81a6b7be8", - "sha256:57c05f2e310701fc17ae358caafd99b1830014e316f0242d13ab6c01db0ab1c2", - "sha256:5c2f258489de12a65b81e1b803a531ee8cf633fa416ae84de65cd5f82d2ceb37", - "sha256:5db133d6ec7a4f7fc7e2bd098e4df23d7ad949f7be47b27b515c9fb9301c61e4", - "sha256:5f6bcd2d012d82d25191a911a239fd05a8a72e8c5a7d81d056c0f3520cad14d1", - "sha256:6125f73503407792c8b3f80165f8ab88a4e448d7d9234c762681a4d0b446fcb4", - "sha256:64ec3e2dcab9af61bdbfcb1dd863c70d1b0c220b8e8ac11df8b57f80ee0402b3", - "sha256:658f6c028edaeb02761ebcaca8d44d519c22594b2a51dcbc9bd2432aa93319e3", - "sha256:68109c13176749fbbbbbdb94dd4a58dcc604db6ea43ee300b2602154aebdd55f", - "sha256:6ceaaff4b812ae368cf9774989dea81b9bbb71e5bed666feca6a9f3087c03e49", - "sha256:707d28a822b918acf941cff590affaddb42a5d640614d71367c8956623a80cbc", - "sha256:7640d176ee5b0afec76a1bda3684995cb731b2af7fcfd7c7ef8dc271c5d689af", - "sha256:7dd63f7c2b3727541f7f37d0fb78d9942eb12a866180fbeb898714420aad74e2", - "sha256:8110b78fc4b37dced85081d56795ecbee6a7937966e918e05e33a3900e8ea07d", - "sha256:84593447a5c5fe7a59ba86b72c2c89d813fbac71c07757acdf162fbfd5d005b9", - "sha256:8caa73fb19070008e851a589b744aaa38edd1366e2487284c61158c77fdf72af", - "sha256:91ddf95cedca12f115fbc5f442b841e81197d85aa3cc30b82aee3635a5208af2", - "sha256:94637941fe343000f728e28d3fe04f1f52aec6376b67b85583026ff8dab2a0e0", - "sha256:97d81d357e1a2a248b3494d52ebc8bf15d223ee89d59ee63becc434e07438a24", - "sha256:991e406db5da4d89fb220a94d8caaf974ffe14ce6b095957bae9273c609784a0", - "sha256:9aebddb2ec2128d5fc2fe3aee6319afef8697e0374f8a1fcca3449d6f625e7b4", - "sha256:9d511db310f43222bc58d811037b176b4b88dc2b4617478c5ef01fea404f8601", - "sha256:9eec7140cf7513aa770ea51505d312000c7416626a828de24318fdcc9ac3214c", - "sha256:9f86ba0c781b497a3c9c886765d7b6402a0e3ae079dd517365044c89cd7abb06", - "sha256:a509db602462eb736666989739215b4b7d8f4bb8ac31d0bffd4be9eae96c63ef", - "sha256:aaecfafb407feb6f562c7f2f5b91f22bfacba6dd739116b1912788cff7124c4a", - "sha256:ab7d01ac832a1663dad592ccbd92bb0f0775bc8f98a1923c5e1a7d7fead495af", - "sha256:ac20dd0c7b42555837c86f5ea46505f35af20a08b9cf5770cd1834288d8bd1b4", - "sha256:b2d445f1cf147331947cc35ec10342f898329f29dd1947a3f8aeaf7e0e6878d1", - "sha256:b2dd8c874927a27995f64a3b44c890e8a944c98dec1ba79eab50e07f1e3f801b", - "sha256:ba052446a14bd714ec83ca4e77d0d97904f33cd046d7bb60712a6be25eb31dbb", - "sha256:bea62f03a50f363265a7a651b4e2a4429b4f138c1864b2d83d4bf6f9851994be", - "sha256:bff601fbfcecd2166d9a2b70777c2985cb9689e2befb3278d91f7f93a0456cae", - "sha256:c3797e0a628534e07a36544d2bfa69e251a578c6d013e975e9e3ed2ac41f2d95", - "sha256:c43205e85cbcbdf03cff62ad8f50426dd9d20134a915cfb626d805bab89a1844", - "sha256:c68bf4a399e37798f1b5aa4f6c02886188ef465f4ac0b305a607b7579413e366", - "sha256:c9519c9d341983f3a1bd19628fecb1d72a48d8666cf344549879f2e63f54463b", - "sha256:ca5877754f3fa6e4fe5aacf5c404575f04c2d9efc8d22ed39576ed9098d555c8", - "sha256:d0257e0eebb50f242ca28a92ef195889a6ad03dcdde5bf1c7ab9f38b7e810801", - "sha256:d788cb5cc947d78934be26eef1623c78cec3729dc93a30c23f049b361aa6d835", - "sha256:d7d227a60b00925dd3aeae4675575af89c661a8e89a1f7d1677e57eba4a3693c", - "sha256:df813f0c2c02281720ccce225edf39dc37855bf72cdfde6f789a1d1cf32ffb4b", - "sha256:e0b208ebec3b47ee78a5c836e2e885e8c1e10f8ffd101aaec3d63997a4bdcd04", - "sha256:e571434633f99a81e081738721bb38e697345281ed2f79c2f290f809ba3fbb2f", - "sha256:e78af59fd0eb262c2a5f7c7d7e3b95e8596a75480d31087ca5f02f2d4c6acd19", - "sha256:e942945e9112075a84d2e2d6e0d0c98833cdcdfe48eb8952b917f996025c7ffa", - "sha256:ebd343ca44982d480f1e39372c48e8e263fc6f32e9af2be456298f146a3db715", - "sha256:ed694c0d1977cb54281cb808bc2b247c17fb64b678a6352d3b77eb678ebe1bd9", - "sha256:ee30a9d4c27a88042d0636aca0275788af09cc237ae365cd6ebb34524bddb9cc", - "sha256:f1febca6f79e91feafc572906871805bd9c271b6a2d98a8bb5499b6ace0befed", - "sha256:f251db26c239aec2a4d57fbe869e0a27b7f6b5384ec6bf54aeb4a6a5e7408234", - "sha256:f3bae553ca39ed52db099d76acd5e8566096064dc7614c34c9359bb239ec4081", - "sha256:f673b64a0884edcc56073bda0b363428dc1bf4eb1b5e7d0b689f7ec6173edad6", - "sha256:fa0bbbfbd1f8ebbd5facaa10f9f333b20027b240af012748555148943616fdf3", - "sha256:fb24abcd50501b25d33a074c1790a1389b6460d2509e4b240d03fd2e5c79f463", - "sha256:fbafe3a1df21eeadb003c38fc02c1abf567648b6477ec50c4a3c042dca205371", - "sha256:fe010154dfa9e428bd2fb3e9325eff2216ab20a69ccbd6b5cac6785ca2989161" - ], - "version": "==4.6.2" + "sha256:00e6cfce111883ca63a3c12878286e0b89871f4b840290e61fb6f88ee0e687be", + "sha256:01277a7e183c59081368e4efbde2b8f577014431b257959ca98d3a4e8682dd51", + "sha256:0182899aafe830f25cf96c5976d724efeaaf7b6646c15424ad8dd25422b2efe1", + "sha256:098d420a8214ad25f872de7e8b309441995d12ece0376218a04d9ed5d2222cf3", + "sha256:0a4ea44e5a913bdb7c9abd34c69e9fcfac10dfaf49765463e0dc1ea922dd2a9d", + "sha256:0e208f2ab7b495eff8fd175022abfb0abce6307ac5aee3f4de51fc1a459b71c9", + "sha256:138b9fa18d40401c217bc038a48bcde4160b02d36d8632015b1804971a2eaa2f", + "sha256:14a82593528cddc93cfea5ee78fac95ae763a3a4e124ca79ee0b24fbbc6da1c9", + "sha256:151361c101600a85cb1c1e0db4e4b28318b521fcafa9b62d389f7342faaaee80", + "sha256:17c1c143ba77d6e21fc8b48e93f0a5ed982a23447434e9ee4fbb6d633402506b", + "sha256:18e5c161b18660f1c9d1f78236de45520a436be65e42b7bb51f25f74ad22bdde", + "sha256:1c2761302b6cbfd12e239ce1b8061d4cf424a361d199dcb32da534985cae9350", + "sha256:26d036e0f5de09d0b21d0fc30314fcf2ae6359e4d43ae109aa6cf27b4ce02d30", + "sha256:2a6ae9a600bbc2dbff719c98bf5da584fb8a4f2bb23729a09be2e9c3dbc61c8a", + "sha256:2ef1b4992ee1cb8bb16745e70afa0c02c5360220a7a8bb4775888721f052d0a6", + "sha256:36d7049fc183fe4edda3eae7f66ea14c660921429e082fe90b4b7f4dc6664a70", + "sha256:391aea047bba928006114282f175bc8d09c53fe1b7d8920bf888325e229302fe", + "sha256:3b909e5b1864de01510079b39bbdc480720c37747be5552b354bc73f02c24a3c", + "sha256:3e1ba5a037c526a3f4060c28f8d45d71ed9626e2bf954b0cd9a8dcc3b45172ee", + "sha256:400074090b9a631f120b42c61b222fd743490c133a5d2f99c0208cefcccc964e", + "sha256:462684a6f5ce6f2661c30eab4d1d459231e0eed280f338e716e31a24fc09ccb3", + "sha256:4670edbb5ddd71a4d555668ef99b032a5f81b59e4145d66123aa0d831eac7883", + "sha256:48c60bd32ec141c0d45d8471179430003d9fb4490da181b8165fb1dce9cc255c", + "sha256:4955be64d943b30f2a7ff98d818ca530f7cb37450bc6b32c37e0e74821907ef8", + "sha256:4a0660ce32d8459b7f12dc3ca0141528fead62d3cce31b548f96f30902074cc0", + "sha256:4d167d546352869125dc86f6fda6dffc627d8a9c8963eaee665825f2520d542b", + "sha256:53451190b8628e1ce7d1fe105dc376c3f10705127bd3b51fe3e107b9ff1851e6", + "sha256:5c8a4982f5eb767c6fbfb8fb378683d09bcab7c3251ba64357eef600d43f6c23", + "sha256:5f465cca9b178e7bb782f952dd58e9e92f8ba056e585959465f2bb50feddef5f", + "sha256:60931b0e07448afe8866ffff764cd5bf4b1a855dc84c7dcb3974c6aa6a377a59", + "sha256:664c64b6bdb31aceb80f0556951e5e2bf50d359270732268b4e7af00a1cf5d6c", + "sha256:6b5aec78aa4840e8d6c3881900259892ab5733a366696ca10d99d68c3d73eaaf", + "sha256:6cec7279e5a1b74b257d0270a8c97943d745811066630a6bc6beb413c68c6a33", + "sha256:6d5b35da9e16cda630baed790ffc3d0d01029d269523a7cec34d2ec7e6823e75", + "sha256:6de33f1b2eed91b802ec7abeb92ffb981d052f3604b45588309aae9e0f6e3c02", + "sha256:705a9bfd619301ee7e985d6f91f68b15dfcb2f6f36b8cc225cc82d4260d2bce5", + "sha256:722f2b709b63311c0efda4fa4c603661faa4bec6bad24a6cc41a3bc6d841bf09", + "sha256:731a92dfc4022db763bfa835c6bd160f2d2cba6ada75749c2ed500e13983414b", + "sha256:7330245253fbe2e09845069d2f4d35dd27f63e377034c94cb0ddac18bc8b0d82", + "sha256:75107a386d4ccf5291e75cce8ca3898430e7907f4cc1208a17c9efad33a1ea84", + "sha256:7df8b166d3db6cfead4cf55b481408d8f0935d8bd8d6dbf64507c49ef82c7200", + "sha256:7ee79e02a7c5ed34706ecb5dad19e6c7d267cf86d28c075ef3127c58f3081279", + "sha256:872bad5c83f7eec9da11e1fef5f858c6a4c79fe4a83c7780e7b0fe95d560ae3f", + "sha256:8b3853fb66bf34ce1b6e573e1bbb3cb28763be9d1f57758535757faf1ab2f24a", + "sha256:8d0ea740a2faa56f930dc82c5976d96c017ece26b29a1cddafb58721c7aab960", + "sha256:8e97c138d811e9367723fcd07c4402a9211caae20479fdd6301d57762778a69f", + "sha256:90525454546536544307e6da9c81f331a71a1b144e2d038fec587cc9f9250285", + "sha256:9066dff9dc0a182478ca5885d0b8a2b820b462e19459ada109df7a3ced31b272", + "sha256:9757602fb45c8ecc1883fe6db7c59c19d87eb3c645ec9342d28a6026837da931", + "sha256:98877a9c4ad42df8253a12d8d17a3265781d1feb5c91c767bd153f88feb0b670", + "sha256:994386a4d6ad39e18bcede6dc8d1d693ec3ed897b88f86b1841fbc37227406da", + "sha256:9b35f8bded43ff91475305445fedf0613f880ff7e25c75ae1028e1260a9b7a86", + "sha256:9c9340c7161e112e36ebb97fbba1cdbe7db3dfacb694d2918b1f155a01f3d859", + "sha256:9e51e30d67b468a2a634ade928b30cb3e420127f148a9aec60de33f39087bdc4", + "sha256:a023804a3ac0f85d4510265b60978522368b5815772262e61e3a2222a8b315c9", + "sha256:aa310096450e9c461b7dfd66cbc1c41771fe36c06200440bb3e062b1d4a06b6e", + "sha256:af039afc6d787502c02089759778b550cb2f25dbe2780f5b050a2e37031c3fbf", + "sha256:af5c5112db04cf62a5d9d224a24f289aaecb47d152c08a457cca81cee061d5bd", + "sha256:b3d10bdd46cbc35a2109737d36ffbef32e7420569a87904738ad444ccb7ac2c5", + "sha256:b7cf28d9c90e40d4e385b858e4095739829f466f23e08674085161d86bb4bb10", + "sha256:bec8e4e88984be157408f1923d25869e1b575c07711cdbdde596f66931800934", + "sha256:becfa816545a48c8e740ac2fd624c1c121e1362072d68ffcf37a6b1be8ea187e", + "sha256:c2ad3e5bfcd345c0bfe9af69a82d720860b5b043c1657ffb513c18a0dee19c19", + "sha256:c4726e36a2f7e92f09f5b8e92ba4db7525daffe31a0dcbcf0533edc0ade8c7d8", + "sha256:c67c19f653053ef2ebd7f1837c2978400058d6d7f66ec5760373a21eaf660158", + "sha256:c701de8e483fb5e53874aab642235361aac6de698146b02c644389eaa8c137b6", + "sha256:cc7a26edf79015c58eea46feb5b262cece55bc1d4929a8a9e0cbe7e6d6a9b0eb", + "sha256:ccc15a7c7a99aed7d0831eaf78a607f1db0c7a255f96e3d18984231acd72f70c", + "sha256:cd6c15242d9306ff1748681c3235284cbe9f807aeaa86cd17d85e72af626e9a7", + "sha256:cdbea2aac1a4caa66ee912af3601557d2bda2f9f69feec83601c78c7e53ece64", + "sha256:d30d5d7963453b478016bf7b0d87d7089ca24d93dbdecfbc9aa32f1b4772160a", + "sha256:dde9fb6e105ce054339256a8b7a9775212ebb29596ef4e402d7bbc63b354d202", + "sha256:e097f877de4d6af13a33ef938bf2a2350f424be5deabf8b857da95f5b080487a", + "sha256:e1e1586ebdebe0447a24842480defac17c496430a218486c96e2da3f164c0f05", + "sha256:e344d0afdd7c06c1f1e66a4736593293f432defc2191e6b411fc9c82fa8c5adc", + "sha256:e4056bc421d4df2c61db4e584415f2b0f1eebb92cbf9222f7f38303467c37117", + "sha256:e420e74c6db4594a6d09f39b58c0772679006cb0b4fc40901ba608794d87dad2", + "sha256:e458e6fc2b7dd40d15cda04898bd2d8c9ff7ae086c516bc261628d54eb4e3158", + "sha256:eaf3d594ebfd5e1f3503d81e06a5d78e33cda27418b36c2491c3d4ad4fca5972", + "sha256:ebcc145c74d06296ce0cad35992185064e5cb2aadef719586778c144f0cd4d37", + "sha256:f4330c022024e7994b630199cdae909123e4b0e9cf15335de71b146c0f6a2435", + "sha256:ff7d1f449fcad23d9bc8e8dc2b9972be38bcd76d99ea5f7d29b2efa929c2a7ff" + ], + "version": "==4.6.3" }, "python-dateutil": { "hashes": [ @@ -879,11 +895,11 @@ }, "starlette": { "hashes": [ - "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044", - "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080" + "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee", + "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823" ], "markers": "python_version >= '3.8'", - "version": "==0.36.3" + "version": "==0.37.2" }, "types-pyopenssl": { "hashes": [ diff --git a/README.md b/README.md index e7ef2b7..42bd3f3 100644 --- a/README.md +++ b/README.md @@ -222,8 +222,8 @@ ### Redis -- [**`redis-py`**: Sync / Async](https://lucas-six.github.io/python-cookbook/cookbook/system_services/redis) -- [`aioredis`: Async (Obsoleted by `redis-py`)](https://aioredis.readthedocs.io/en/latest/) +- [**`redis-py`**: Sync + Async](https://lucas-six.github.io/python-cookbook/cookbook/system_services/redis) +- [~~`aioredis`: Async (Obsoleted by `redis-py`)~~](https://aioredis.readthedocs.io/en/latest/) - `pyton-redis-orm`: ORM ### RabbitMQ @@ -234,7 +234,7 @@ ### MQTT -- [**`asyncio-mqtt`**: Async](https://pypi.org/project/asyncio-mqtt/) ([中文](https://blog.alexsun.top/vuepress-python-notes/pypi-package/async/asyncio-mqtt.html)) +- [**`aiomqtt`**: Async](https://lucas-six.github.io/python-cookbook/cookbook/system_services/mqtt_aiomqtt) ## Recipes diff --git a/cookbook/build/project.md b/cookbook/build/project.md index 4861edc..8e7d73d 100644 --- a/cookbook/build/project.md +++ b/cookbook/build/project.md @@ -138,7 +138,6 @@ disable = [ "locally-disabled", "file-ignored", "suppressed-message", - "useless-suppression", "deprecated-pragma", "use-symbolic-message-instead", "logging-fstring-interpolation", @@ -148,6 +147,7 @@ disable = [ ] enable = [ "c-extension-no-member", + "useless-suppression", ] [tool.pylint.design] diff --git a/cookbook/system_services/mqtt_aiomqtt.md b/cookbook/system_services/mqtt_aiomqtt.md new file mode 100644 index 0000000..daae6ad --- /dev/null +++ b/cookbook/system_services/mqtt_aiomqtt.md @@ -0,0 +1,58 @@ +# `aiomqtt` - Python Asyncio APIs for MQTT + +## Set Up + +```toml +# pyproject.toml + +dependencies = [ + "aiomqtt", +] +``` + +```bash +pipenv install aiomqtt +``` + +## Usage + +```python +"""MQTT `aiomqtt` Usage. +""" + +import asyncio +import os +import sys + +import aiomqtt + +MQTT_HOST = 'localhost' +MQTT_TOPIC_PREFIX = 'python-cookbook' + + +async def main(): + async with aiomqtt.Client(MQTT_HOST, timeout=3.5) as client: + + # Subscribe + await client.subscribe(f'{MQTT_TOPIC_PREFIX}/#') + async for message in client.messages: + if isinstance(message.payload, bytes): + print(message.payload.decode('utf-8')) + + # Publish + # await client.publish(f'{MQTT_TOPIC_PREFIX}/example', payload={'msg': 'hello'}) + + +# Change to the "Selector" event loop if platform is Windows +if sys.platform.lower() == "win32" or os.name.lower() == "nt": + from asyncio import WindowsSelectorEventLoopPolicy # type: ignore + from asyncio import set_event_loop_policy + + set_event_loop_policy(WindowsSelectorEventLoopPolicy()) + +asyncio.run(main()) +``` + +## References + +- [`aiomqtt` Documentation](https://sbtinstruments.github.io/aiomqtt/index.html) diff --git a/cookbook/system_services/redis.md b/cookbook/system_services/redis.md index ed43468..1f9d619 100644 --- a/cookbook/system_services/redis.md +++ b/cookbook/system_services/redis.md @@ -13,6 +13,10 @@ dependencies = [ #"redis[hiredis]", "types-redis", ] + +[[tool.mypy.overrides]] +module = "redis.*" +ignore_missing_imports = true ``` ```bash diff --git a/cookbook/web/fastapi.md b/cookbook/web/fastapi.md index 1a45abb..c319cfc 100644 --- a/cookbook/web/fastapi.md +++ b/cookbook/web/fastapi.md @@ -3,22 +3,12 @@ ## Installation ```bash -# HTTP Request -pipenv install aiohttp - -# Cache: Redis -pipenv install redis[hiredis] -pipenv install types-redis - # MQ: RabbitMQ/MongoDB/Redis pipenv install pika pipenv install types-pika # Task Queue: Celery pipenv install celery[librabbitmq, mongodb, redis] - -# MQTT -pipenv install asyncio-mqtt ``` ## MongoDB diff --git a/cookbook/web/fastapi/fastapi_mongodb.md b/cookbook/web/fastapi/fastapi_mongodb.md index 90b4855..e0bb91d 100644 --- a/cookbook/web/fastapi/fastapi_mongodb.md +++ b/cookbook/web/fastapi/fastapi_mongodb.md @@ -151,7 +151,7 @@ async def redoc_html() -> HTMLResponse: @app.get('/api') async def root() -> dict[str, str]: - await app.state.mongodb_db['x'].find_one({''}) + await DB_XXX['x'].find_one({'name': 'fastapi'}) return {'Hello': 'World'} diff --git a/cookbook/web/fastapi/fastapi_quickstart.md b/cookbook/web/fastapi/fastapi_quickstart.md index 530e0b6..8c134f2 100644 --- a/cookbook/web/fastapi/fastapi_quickstart.md +++ b/cookbook/web/fastapi/fastapi_quickstart.md @@ -15,6 +15,12 @@ pipenv install --dev pylint-pydantic # JWT pipenv install python-jose[cryptography] pipenv install types-python-jose + +# HTTP Request +pipenv install aiohttp + +# MQTT +pipenv install aiomqtt ``` ## `pyproject.toml` @@ -53,6 +59,9 @@ dependencies = [ "python-jose[cryptography]", "types-python-jose", + + #"aiohttp", + #"aio-mqtt", ] dynamic = ["version"] @@ -121,7 +130,7 @@ follow_imports = "silent" warn_redundant_casts = true warn_unused_ignores = true warn_unused_configs = true -disallow_any_generics = true +disallow_any_generics = false check_untyped_defs = true no_implicit_reexport = true disallow_untyped_defs = true @@ -158,14 +167,15 @@ disable = [ "bad-inline-option", "locally-disabled", "file-ignored", + "suppressed-message", "deprecated-pragma", "use-symbolic-message-instead", "logging-fstring-interpolation", "missing-function-docstring", + "missing-class-docstring", ] enable = [ "c-extension-no-member", - "suppressed-message", "useless-suppression", ] @@ -357,7 +367,6 @@ async def redoc_html() -> HTMLResponse: @app.get('/api') async def root() -> dict[str, str]: - await app.state.mongodb_db['x'].find_one({''}) return {'Hello': 'World'} @@ -377,8 +386,9 @@ See [Uvicorn: ASGI, WebSockets - Python Cookbook](../uvicorn). - [Python Project - Python Cookbook](../../build/project) - [ASGI Web Server: **`Uvicorn`** - Python Cookbook](../uvicorn) -- [Data Model: **`Pydantic`**](../pydantic) -- [with MongoDB: **`motor`**](fastapi_mongodb) +- [Data Model: **`Pydantic`** - Python Cookbook](../pydantic) +- [with MongoDB: **`motor`** - Python Cookbook](fastapi_mongodb) +- [with Redis: **`redis`** - Python Cookbook](../../system_services/redis) ## References diff --git a/django_project/django_project/settings.py b/django_project/django_project/settings.py index 0924d87..7222f38 100644 --- a/django_project/django_project/settings.py +++ b/django_project/django_project/settings.py @@ -26,7 +26,7 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = [] +ALLOWED_HOSTS: list[str] = [] # Application definition @@ -53,7 +53,7 @@ ROOT_URLCONF = 'django_project.urls' -TEMPLATES = [ # type: ignore +TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], diff --git a/examples/system_services/mqtt_aiomqtt_usage.py b/examples/system_services/mqtt_aiomqtt_usage.py new file mode 100644 index 0000000..d85b2ed --- /dev/null +++ b/examples/system_services/mqtt_aiomqtt_usage.py @@ -0,0 +1,34 @@ +"""MQTT `aiomqtt` Usage. +""" + +import asyncio +import os +import sys + +import aiomqtt + +MQTT_HOST = 'localhost' +MQTT_TOPIC_PREFIX = 'python-cookbook' + + +async def main() -> None: + async with aiomqtt.Client(MQTT_HOST, timeout=3.5) as client: + + # Subscribe + await client.subscribe(f'{MQTT_TOPIC_PREFIX}/#') + async for message in client.messages: + if isinstance(message.payload, bytes): + print(message.payload.decode('utf-8')) + + # Publish + # await client.publish(f'{MQTT_TOPIC_PREFIX}/example', payload={'msg': 'hello'}) + + +# Change to the "Selector" event loop if platform is Windows +if sys.platform.lower() == 'win32' or os.name.lower() == 'nt': + from asyncio import WindowsSelectorEventLoopPolicy # type: ignore + from asyncio import set_event_loop_policy + + set_event_loop_policy(WindowsSelectorEventLoopPolicy()) + +asyncio.run(main()) diff --git a/examples/web/fastapi/main_mongodb.py b/examples/web/fastapi/main_mongodb.py index a69572d..01611d6 100644 --- a/examples/web/fastapi/main_mongodb.py +++ b/examples/web/fastapi/main_mongodb.py @@ -79,7 +79,7 @@ async def redoc_html() -> HTMLResponse: @app.get('/api') async def root() -> dict[str, str]: - await app.state.mongodb_db['x'].find_one({''}) + await DB_XXX['x'].find_one({'name': 'fastapi'}) return {'Hello': 'World'} diff --git a/examples/web/fastapi/main_openapi_static.py b/examples/web/fastapi/main_openapi_static.py index 479749b..fcbd7d8 100644 --- a/examples/web/fastapi/main_openapi_static.py +++ b/examples/web/fastapi/main_openapi_static.py @@ -74,7 +74,6 @@ async def redoc_html() -> HTMLResponse: @app.get('/api') async def root() -> dict[str, str]: - await app.state.mongodb_db['x'].find_one({''}) return {'Hello': 'World'} diff --git a/pyproject.toml b/pyproject.toml index 1e5d7dd..cadaaa5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,9 @@ dependencies = [ "redis[hiredis]", "types-redis", + + "aiomqtt", + "celery[librabbitmq, mongodb, redis]", #"requests", #"types-requests", @@ -129,11 +132,14 @@ init_typed = true warn_required_dynamic_aliases = true warn_untyped_fields = true -# mypy for MongoDB motor [[tool.mypy.overrides]] module = "motor.*" ignore_missing_imports = true +[[tool.mypy.overrides]] +module = "redis.*" +ignore_missing_imports = true + [tool.pylint.main] recursive = true py-version = 3.11 diff --git a/recipes/core/python_project.md b/recipes/core/python_project.md index e543700..d91a7da 100644 --- a/recipes/core/python_project.md +++ b/recipes/core/python_project.md @@ -12,7 +12,6 @@ pipenv install --dev flake8 pytest coverage[toml] pytest-cov pre-commit pyupgrad [project] dependencies = [ "psycopg2 >= 2.8", - "redis >= 4.0", "requests >=2.6", "configparser; python_version == '2.7'", @@ -21,7 +20,6 @@ dynamic = ["version"] [project.optional-dependencies] test = [ - "flake8", "pytest", "coverage", "pytest-cov", @@ -109,52 +107,6 @@ skip_empty = true # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 - hooks: - - id: trailing-whitespace - args: [--markdown-linebreak-ext=md] - - id: end-of-file-fixer - - id: check-yaml - - id: check-json - - id: check-toml - - id: check-added-large-files - args: ['--maxkb=500'] - - id: mixed-line-ending - - id: fix-byte-order-marker - - id: detect-private-key - - id: double-quote-string-fixer - exclude: manage.py - - id: name-tests-test - args: [--django] - - repo: https://github.com/psf/black - rev: 22.12.0 - hooks: - - id: black - exclude: migrations/ - args: ['--verbose'] - # It is recommended to specify the latest version of Python - # supported by your project here, or alternatively use - # pre-commit's default_language_version, see - # https://pre-commit.com/#top_level-default_language_version - language_version: python3.10 - - repo: https://github.com/pycqa/isort - rev: v5.11.3 - hooks: - - id: isort - name: isort (python) - language_version: python3.10 - - repo: https://github.com/pre-commit/mirrors-mypy - rev: v0.991 - hooks: - - id: mypy - additional_dependencies: [pydantic, types-redis] - language_version: python3.10 - - repo: https://github.com/PyCQA/pylint - rev: v2.15.9 - hooks: - - id: pylint - language_version: python3.10 - repo: https://github.com/PyCQA/flake8 rev: 5.0.4 hooks: @@ -166,23 +118,6 @@ repos: '--max-line-length', '88', ] - - repo: https://github.com/asottile/pyupgrade - rev: v2.37.1 - hooks: - - id: pyupgrade - -default_language_version: - # force all unspecified python hooks to run python3 - python: python3 - -ci: - autofix_prs: true - autofix_commit_msg: '[pre-commit.ci] auto fixes from pre-commit.com hooks' - autoupdate_branch: '' - autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate' - autoupdate_schedule: weekly - skip: [] - submodules: false ``` ```bash @@ -195,9 +130,6 @@ pre-commit install # .git/hooks/pre-commit # chmod u+x .git/hooks/pre-commit -pipenv run isort . -pipenv run mypy . - # IDE may included #pipenv run flake8 . ```