diff --git a/.gitignore b/.gitignore index d9c982e..d7aa92c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,11 @@ __pycache__/ *$py.class .DS_store +config +.vscode +.ruff_cache + + # C extensions *.so .idea diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ee9f29..3cc9909 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.4.0] Add more fine grained configuration flow + +### Added + +- Configuration flow options for enable / disable + - "advanced audio" features (NightMode, Bassmode, VoiceEnhancer) + - "woofer" feature + - "soundmode" feature + - "eq" feature + ## [0.3.2] Fix division by zero ### Added diff --git a/Pipfile b/Pipfile index ad3563b..0105088 100644 --- a/Pipfile +++ b/Pipfile @@ -13,4 +13,4 @@ black = "*" isort = "*" [requires] -python_version = "3.11" +python_version = "3.12" diff --git a/Pipfile.lock b/Pipfile.lock index 5c7e7cb..b94cb04 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "b2cca395b77ebd7a51f7e12e78fc2be53e8a1fad3d9571f0ccca03693af16148" + "sha256": "85085018e13f56f20890876b98b93577caeabed06c331c9ada170bcab21928d9" }, "pipfile-spec": 6, "requires": { - "python_version": "3.11" + "python_version": "3.12" }, "sources": [ { @@ -16,13 +16,13 @@ ] }, "default": { - "aiofiles": { + "acme": { "hashes": [ - "sha256:19297512c647d4b27a2cf7c34caa7e405c0d60b5560618a29a9fe027b18b0107", - "sha256:84ec2218d8419404abcb9f0c02df3f34c6e0a68ed41072acfb1cef5cbc29051a" + "sha256:68a9adee0e6e9dd8a9c1b6d8cef8c3df7d42646082c50418fe5b94dd0366e189", + "sha256:f7fb2aa4f7ccd132f4ece307d9de6d30b94b2a08c302531f4f43f85ed18673ea" ], - "markers": "python_version >= '3.7'", - "version": "==23.2.1" + "markers": "python_version >= '3.8'", + "version": "==2.9.0" }, "aiohttp": { "hashes": [ @@ -129,6 +129,15 @@ "markers": "python_version >= '3.8' and python_version < '4.0'", "version": "==0.3.1" }, + "aiooui": { + "hashes": [ + "sha256:68015a428c46521cdf82896d920376ebac885711a937179cf1deca20b8e1f3ea", + "sha256:e03f77f1b0c1ed775404792dec321f2e11740aa4b3c142e6890b3902502d6444", + "sha256:f92e485a9d2fb7aea5b626c107485517ff93dc2507d957dcc24bd60c2024b19e" + ], + "markers": "python_version >= '3.9' and python_version < '4.0'", + "version": "==0.1.5" + }, "aiosignal": { "hashes": [ "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc", @@ -139,11 +148,11 @@ }, "anyio": { "hashes": [ - "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee", - "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f" + "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8", + "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6" ], "markers": "python_version >= '3.8'", - "version": "==4.2.0" + "version": "==4.3.0" }, "astral": { "hashes": [ @@ -153,6 +162,22 @@ "markers": "python_version >= '3.6'", "version": "==2.2" }, + "async-interrupt": { + "hashes": [ + "sha256:1e5999f0980b5db21293e4cd022518eeaf52284c0499631932a1df250cb99215", + "sha256:b0d8c8228b75834fd39608382e1c721d3e68e0011443e0f434b8e8e1cc7bd391" + ], + "markers": "python_version >= '3.9' and python_version < '4.0'", + "version": "==1.1.1" + }, + "async-timeout": { + "hashes": [ + "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", + "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028" + ], + "markers": "python_version >= '3.7'", + "version": "==4.0.3" + }, "atomicwrites-homeassistant": { "hashes": [ "sha256:01457de800961db7d5b575f3c92e7fb56e435d88512c366afb0873f4f092bb0d", @@ -179,30 +204,36 @@ }, "bcrypt": { "hashes": [ - "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535", - "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0", - "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410", - "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd", - "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665", - "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab", - "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71", - "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215", - "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b", - "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda", - "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9", - "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a", - "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344", - "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f", - "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d", - "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c", - "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c", - "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2", - "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d", - "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e", - "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3" + "sha256:02d9ef8915f72dd6daaef40e0baeef8a017ce624369f09754baf32bb32dba25f", + "sha256:1c28973decf4e0e69cee78c68e30a523be441972c826703bb93099868a8ff5b5", + "sha256:2a298db2a8ab20056120b45e86c00a0a5eb50ec4075b6142db35f593b97cb3fb", + "sha256:33313a1200a3ae90b75587ceac502b048b840fc69e7f7a0905b5f87fac7a1258", + "sha256:3566a88234e8de2ccae31968127b0ecccbb4cddb629da744165db72b58d88ca4", + "sha256:387e7e1af9a4dd636b9505a465032f2f5cb8e61ba1120e79a0e1cd0b512f3dfc", + "sha256:44290ccc827d3a24604f2c8bcd00d0da349e336e6503656cb8192133e27335e2", + "sha256:57fa9442758da926ed33a91644649d3e340a71e2d0a5a8de064fb621fd5a3326", + "sha256:68e3c6642077b0c8092580c819c1684161262b2e30c4f45deb000c38947bf483", + "sha256:69057b9fc5093ea1ab00dd24ede891f3e5e65bee040395fb1e66ee196f9c9b4a", + "sha256:6cad43d8c63f34b26aef462b6f5e44fdcf9860b723d2453b5d391258c4c8e966", + "sha256:71b8be82bc46cedd61a9f4ccb6c1a493211d031415a34adde3669ee1b0afbb63", + "sha256:732b3920a08eacf12f93e6b04ea276c489f1c8fb49344f564cca2adb663b3e4c", + "sha256:9800ae5bd5077b13725e2e3934aa3c9c37e49d3ea3d06318010aa40f54c63551", + "sha256:a97e07e83e3262599434816f631cc4c7ca2aa8e9c072c1b1a7fec2ae809a1d2d", + "sha256:ac621c093edb28200728a9cca214d7e838529e557027ef0581685909acd28b5e", + "sha256:b8df79979c5bae07f1db22dcc49cc5bccf08a0380ca5c6f391cbb5790355c0b0", + "sha256:b90e216dc36864ae7132cb151ffe95155a37a14e0de3a8f64b49655dd959ff9c", + "sha256:ba4e4cc26610581a6329b3937e02d319f5ad4b85b074846bf4fef8a8cf51e7bb", + "sha256:ba55e40de38a24e2d78d34c2d36d6e864f93e0d79d0b6ce915e4335aa81d01b1", + "sha256:be3ab1071662f6065899fe08428e45c16aa36e28bc42921c4901a191fda6ee42", + "sha256:d75fc8cd0ba23f97bae88a6ec04e9e5351ff3c6ad06f38fe32ba50cbd0d11946", + "sha256:e51c42750b7585cee7892c2614be0d14107fad9581d1738d954a262556dd1aab", + "sha256:ea505c97a5c465ab8c3ba75c0805a102ce526695cd6818c6de3b1a38f6f60da1", + "sha256:eb3bd3321517916696233b5e0c67fd7d6281f0ef48e66812db35fc963a422a1c", + "sha256:f70d9c61f9c4ca7d57f3bfe88a5ccf62546ffbadf3681bb1e268d9d2e41c91a7", + "sha256:fbe188b878313d01b7718390f31528be4010fed1faa798c5a1d0469c9c48c369" ], - "markers": "python_version >= '3.6'", - "version": "==4.0.1" + "markers": "python_version >= '3.7'", + "version": "==4.1.2" }, "bleak": { "hashes": [ @@ -222,19 +253,19 @@ }, "bluetooth-adapters": { "hashes": [ - "sha256:24a8d485e77289f037494fe52877b5c20051feb4747f0173b768a66d8e2b13c4", - "sha256:6a82ec713a4a5eccb870d7e9ff98e4002bbae885e1ab0f98f5056fc68db22325" + "sha256:31c560bff8a1688028fc94bc42790bb2738f6de2b5603c08fe9476f8064220b6", + "sha256:d2ff76ca3ee7aa27df18e0c233e36e16251bd92225d0c1d5712f07360f607176" ], "markers": "python_version < '3.13' and python_version >= '3.9'", - "version": "==0.17.0" + "version": "==0.18.0" }, "bluetooth-auto-recovery": { "hashes": [ - "sha256:36ebf08e7cf44e35c15175323aed91e1bf2418792a4c3f76165d16d0f437614b", - "sha256:f804c59f1302830f9343f96bf0d150e6e51983e951ecd7ffe6f28d2286932717" + "sha256:49438830f49d9fb7e57bcd8ace526b0e523505a797ec7225a7a28c3641144d30", + "sha256:8bac63dda39a8dfd7164af88d43c1ef27661108ec182a9327677b76e3222698d" ], "markers": "python_version >= '3.9' and python_version < '4.0'", - "version": "==1.3.0" + "version": "==1.4.0" }, "bluetooth-data-tools": { "hashes": [ @@ -269,6 +300,22 @@ "markers": "python_version >= '3.10' and python_version < '4.0'", "version": "==1.19.0" }, + "boto3": { + "hashes": [ + "sha256:71f551491fb12fe07727d371d5561c5919fdf33dbc1d4251c57940d267a53a9e", + "sha256:b703e22775561a748adc4576c30424b81abd2a00d3c6fb28eec2e5cde92c1eed" + ], + "markers": "python_version >= '3.8'", + "version": "==1.34.74" + }, + "botocore": { + "hashes": [ + "sha256:32bb519bae62483893330c18a0ea4fd09d1ffa32bc573cd8559c2d9a08fb8c5c", + "sha256:5d2015b5d91d6c402c122783729ce995ed7283a746b0380957026dc2b3b75969" + ], + "markers": "python_version >= '3.8'", + "version": "==1.34.74" + }, "btsocket": { "hashes": [ "sha256:0d33893039284fa3a496dd31cb15227e1cf07f0d42d3843d3284b522cccf575a", @@ -440,91 +487,100 @@ }, "ciso8601": { "hashes": [ - "sha256:0136d49f2265bf3d06ffb7bc649a64ed316e921ba6cd05e0fecc477c80fe5097", - "sha256:161dc428d1735ed6dee6ce599c4275ef3fe280fe37308e3cc2efd4301781a7ff", - "sha256:19e3fbd786d8bec3358eac94d8774d365b694b604fd1789244b87083f66c8900", - "sha256:1aba1f59b6d27ec694128f9ba85e22c1f17e67ffc5b1b0a991628bb402e25e81", - "sha256:2188dd4784d87e4008cc765c80e26a503450c57a98655321de777679c556b133", - "sha256:243ffcbee824ed74b21bd1cede72050d36095df5fad8f1704730669d2b0db5be", - "sha256:2785f374388e48c21420e820295d36a8d0734542e4e7bd3899467dc4d56016da", - "sha256:2b4596c9d92719af4f06082c59182ce9de3a73e2bda67304498d9ac78264dd5c", - "sha256:2cf6dfa22f21f838b730f977bc7ad057c37646f683bf42a727b4e763f44d47dc", - "sha256:352809f24dc0fa7e05b85046f8bd34165a20fa5ebb5b43e053668fa69d57e657", - "sha256:374275a329138b9b70c857c9ea460f65dc7f01ed2513f991e57090f39bf01de5", - "sha256:3b135cda50be4ed52e44e815794cb19b268baf75d6c2a2a34eb6c2851bbe9423", - "sha256:47cc66899e5facdccc28f183b978ace9edbebdea6545c013ec1d369fdea3de61", - "sha256:47d7d0f84fb0276c031bf606da484e9dc52ebdf121695732609dc49b30e8cf7c", - "sha256:4cc04399f79a62338d4f4c19560d2b30f2d257021df1b0e55bae9209d8844c0c", - "sha256:4e0fa37c6d58be990c10d537ed286a35c018b5f038039ad796cf2352bc26799e", - "sha256:5817bd895c0d083c161ea38459de8e2b90d798de09769aaba003fe53c1418aba", - "sha256:58517dfe06c30ad65fb1b4e9de66ccb72752d79bc71d7b7d26cbc0d008b7265a", - "sha256:58910c03b5464d6b766ac5d894c6089ee8279432b85181283571b0e2bf502df4", - "sha256:59e6ac990dc31b14a39344a6a0f651658829bc59666cfff13c8deca37e360d86", - "sha256:74c4b0fe3fd0ce1a0da941f3f50af1a81970d7e4536cbae43f27e041b4ae4d3e", - "sha256:7667faf021314315a3c498e4c7c8cf57a7014af0960ddd5b671bcf03b2d0132b", - "sha256:7d115fc2501a316256dd0b961b0b384a12998c626ab1e91cd06164f7792e3908", - "sha256:7d68741fe53cd0134e8e94109ede36d7aeaa65a36682680d53b69f790291d80f", - "sha256:7e8e78f8c7d35e6b43ad7316f652e2d53bf4b8798725d481abff14657852a88c", - "sha256:87a6f58bdda833cb8d78c6482a179fff663903a8f562755e119bf815b1014f2e", - "sha256:896dd46c7f2129140fc36dbe9ccf78cec02143b941b5a608e652cd40e39f6064", - "sha256:8b1a217967083ac295d9239f5ba5235c66697fdadc2d5399c7bac53353218201", - "sha256:8f884d6a0b7384f8b1c57f740196988dd1229242c1be7c30a75424725590e0b3", - "sha256:a002a8dc91e63730f7ca8eae0cb1e2832ee057fedf65e5b9bf416aefb1dd8cab", - "sha256:a0f4a649e9693e5a46843b0ebd288de1e45b8852a2cff684e3a6b6f3fd56ec4e", - "sha256:a3f781561401c8666accae823ed8f2a5d1fa50b3e65eb65c21a2bd0374e14f19", - "sha256:a8c4aa6880fd698075d5478615d4668e70af6424d90b1686c560c1ec3459926a", - "sha256:aa58f55ed5c8b1e9962b56b2ecbfcca32f056edf8ecdce73b6623c55a2fd11e8", - "sha256:b12d314415ba1e4e4bfcfa3db782335949ca1866a2b6fe22c47099fed9c82826", - "sha256:b247b4a854119d438d28e0efd0258a5bb710be59ffeba3d2bea5bdab82f90ef3", - "sha256:b6cae7a74d9485a2f191adc5aad2563756af89cc1f3190e7d89f401b2349eb2b", - "sha256:b9f7608a276fa46d28255906c341752a87fe5353d8060932e0ec71745148a4d8", - "sha256:c66032757d314ad232904f91a54df4907bd9af41b0d0b4acc19bfde1ab52983b", - "sha256:d39aa3d7148fcd9db1007c258e47c9e0174f383d82f5504b80db834c6215b7e4", - "sha256:e20d14155f7b069f2aa2387a3f31de98f93bb94da63ad1b5aae78445b33f0529", - "sha256:e4affe0e72debf18c98d2f9e41c24a8ec8421ea65fafba96919f20a8d0f9bf87", - "sha256:e838b694b009e2d9b3b680008fa4c56e52f83935a31ea86fe4203dfff0086f88", - "sha256:fa1085b47c15df627d6bea783a8f7c89a59268af85e204992a013df174b339aa", - "sha256:fa90488666ee44796932850fc419cd55863b320f77b1474991e60f321b5ac7d2" + "sha256:013410263cba46748d2de29e9894341ae41223356cde7970478c32bd0984d10c", + "sha256:024c52d5d0670f15ca3dc53eff7345b6eaee22fba929675f6a408f9d1e159d98", + "sha256:025859ec286a994aa3f2120c0f27d053b719cabc975398338374f2cc1f961125", + "sha256:02828107880848ff497971ebc98e6dc851ad7af8ec14a58089e0e11f3111cad6", + "sha256:02ecbd7c8336c4e1c6bb725b898e29414ee92bdc0be6c72fb07036836b1ac867", + "sha256:06941e2ee46701f083aeb21d13eb762d74d5ed6c46ff22119f27a42ed6edc8f9", + "sha256:070f568de3bc269268296cb9265704dc5fcb9d4c12b1f1c67536624174df5d09", + "sha256:0d980a2a88030d4d8b2434623c250866a75b4979d289eba69bec445c51ace99f", + "sha256:121d27c55f4455eaa27ba3bd602beca915df9a352f235e935636a4660321070e", + "sha256:21204d98496cf5c0511dc21533be55c2a2d34b8c65603946a116812ffbae3b2d", + "sha256:21cf83ca945bb26ecd95364ae2c9ed0276378e5fe35ce1b64d4c6d5b33038ea3", + "sha256:22128f0def36fa3c4cf0c482a216e8b8ad722def08bc11c07438eff82bdcd02a", + "sha256:2a64ff58904d4418d60fa9619014ae820ae21f7aef58da46df78a4c647f951ec", + "sha256:2c1ef17d1ea52a39b2dce6535583631ae4bfb65c76f0ee8c99413a6861a46c9e", + "sha256:2c690ac24ec3407f68cdfd5e032c6cb18126ef33d6c4b3db0669b9cbb8c96bd4", + "sha256:3212c7ffe5d8080270548b5f2692ffd2039683b6628a8d2ad456122cc5793c4c", + "sha256:364702e338212b6c1a8643d9399ada21560cf132f363853473560625cb4207f1", + "sha256:36525b1f380f4601533f4631c69911e44efb9cb50beab1da3248b0daa32bced4", + "sha256:3771049ba29bd1077588c0a24be1d53f7493e7cc686b2caa92f7cae129636a0e", + "sha256:46a3663c2cf838f0149e1cdb8e4bdc95716e03cf2d5f803a6eb755d825896ebe", + "sha256:473288cd63efe6a2cf3f4b5f90394e53095358ccb13d6128f87a2da85d0f389b", + "sha256:4ac00d293cdb3d1a5c78e09b3d75c7b0292ab45d5b26853b436ff5087eba2165", + "sha256:4e30501eed43eea7ef64f032c81cd1d8b2020035cbdcefad40db72e2f3bc97ff", + "sha256:55381365366dacb57207cec610d26c9a6c0d237cb65a0cf67a2baaa5299f2366", + "sha256:566b4a8b2f9717e54ffcdd732a7c8051a91da30a60a4f1dafb62e303a1dbac69", + "sha256:57db9a28e87f9e4fccba643fb70a9ba1515adc5e1325508eb2c10dd96620314c", + "sha256:58a749d63f28c2eda71416c9d6014113b0748abf5fd14c502b01bd515502fedf", + "sha256:6850889813f3135e0aa18f0aaec64249dd81d36a1b9bce60bb45182930c86663", + "sha256:695583810836a42945084b33621b22b0309701c6916689f6a3588fa44c5bc413", + "sha256:6a25da209193134842cd573464a5323f46fcc3ed781b633f15a34793ba7e1064", + "sha256:7533256af90724b8b7a707dcd1be4b67989447595c8e1e1c28399d4fd51dac50", + "sha256:7eb7b5ef8714d3d1fe9f3256b7a679ad783da899a0b7503a5ace78186735f840", + "sha256:874d20c6339e9096baaadfd1b9610bb8d5b373a0f2858cc06de8142b98d2129c", + "sha256:87721de54e008fb1c4c3978553b05a9c417aa25b76ddf5702d6f7e8d9b109288", + "sha256:8acb45545e6a654310c6ef788aacb2d73686646c414ceacdd9f5f78a83165af5", + "sha256:8c29ea2b03dee2dc0a5d3e4a0b7d7768c597781e9fa451fe1025600f7cb55a89", + "sha256:8c59646197ddbf84909b6c31d55f744cfeef51811e3910b61d0f58f2885823fd", + "sha256:9065053c034c80c0afd74c71a4906675d07078a05cfd1cb5ff70661378cdbe60", + "sha256:99addd8b113f85fac549167073f317a318cd2b5841552598ceb97b97c5708a38", + "sha256:9f107a4c051e7c0416824279264d94f4ed3da0fbd82bd96ec3c3293426826de4", + "sha256:9f25647803c9a5aaaed130c53bbec7ea06a4f95ba5c7016f59e444b4ef7ac39e", + "sha256:ad8f417c45eea973a694599b96f40d841215bfee352cb9963383e8d66b309981", + "sha256:b26935687ef1837b56997d8c61f1d789e698be58b261410e629eda9c89812141", + "sha256:b869396e9756a7c0696d8eb69ce1d8980bea5e25c86e5996b10d78c900a4362c", + "sha256:cb135de0e3b8feb7e74a4f7a234e8c8545957fe8d26316a1a549553f425c629d", + "sha256:d1f85c0b7fa742bbfd18177137ccbaa3f867dd06157f91595075bb959a733048", + "sha256:d4bc9d577c0d1e57532513fc2899f5231727e28981a426767f7fa13dacb18c06", + "sha256:e4ac59453664781dfddebee51f9a36e41819993823fdb09ddc0ce0e4bd3ff0c3", + "sha256:e7ae2c3442d042de5330672d0d28486ed92f9d7c6dc010943aa618fd361d4638", + "sha256:e8e76825f80ce313d75bbbef1d3b8bd9e0ce31dbc157d1981e9593922c9983e7", + "sha256:eaecca7e0c3ef9e8f5e963e212b083684e849f9a9bb25834d3042363223a73cd", + "sha256:ef44cb4dc83f37019a356c7a72692cbe17072456f4879ca6bc0339f67eee5d00", + "sha256:f39bb5936debf21c52e5d52b89f26857c303da80c43a72883946096a6ef5e561", + "sha256:f3ae83f4e60fc7e260a4188e4ec4ac1bdd40bdb382eeda92fc266c5aa2f0a1ee" ], - "version": "==2.3.0" + "version": "==2.3.1" }, "cryptography": { "hashes": [ - "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380", - "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589", - "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea", - "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65", - "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a", - "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3", - "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008", - "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1", - "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2", - "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635", - "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2", - "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90", - "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee", - "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a", - "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242", - "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12", - "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2", - "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d", - "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be", - "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee", - "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6", - "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529", - "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929", - "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1", - "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6", - "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a", - "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446", - "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9", - "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888", - "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4", - "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33", - "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f" + "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee", + "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576", + "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d", + "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30", + "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413", + "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb", + "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da", + "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4", + "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd", + "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc", + "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8", + "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1", + "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc", + "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e", + "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8", + "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940", + "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400", + "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7", + "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16", + "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278", + "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74", + "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec", + "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1", + "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2", + "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c", + "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922", + "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a", + "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6", + "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1", + "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e", + "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac", + "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7" ], "markers": "python_version >= '3.7'", - "version": "==42.0.2" + "version": "==42.0.5" }, "dbus-fast": { "hashes": [ @@ -563,9 +619,56 @@ "sha256:e2309b9cafba799e9d343fdfdd5ae46276adf3929fef60f296f23b97ed1aa2f6", "sha256:ffc2b6beb212d0d231816dcb7bd8bcdafccd04750ba8f5e915f40ad312f5adf2" ], - "markers": "python_version >= '3.7' and python_version < '4.0'", + "markers": "platform_system == 'Linux'", "version": "==2.21.1" }, + "envs": { + "hashes": [ + "sha256:4a1fcf85e4d4443e77c348ff7cdd3bfc4c0178b181d447057de342e4172e5ed1", + "sha256:9d8435c6985d1cdd68299e04c58e2bdb8ae6cf66b2596a8079e6f9a93f2a0398" + ], + "markers": "python_version >= '3.6' and python_version < '4.0'", + "version": "==1.4" + }, + "fnv-hash-fast": { + "hashes": [ + "sha256:039fdedae8477ddfee4b2782425925074106255f437f68646ce668bec4adeec3", + "sha256:0e59aff764117c0028c2140dce61b4a824dc8a49406716d0ea1e60606f5c3814", + "sha256:109151d3d23de4fbf7b49de8033f19c56c6cfd9fa1095f5c5212547dd3df7e64", + "sha256:115dbb3e04bfa0ea5e09696cd2e7a63f93439e734368dfdd32cbba07a31bc51b", + "sha256:12382a5e11dc39581ae8d7b5b937c6d6d4a51f2bf83a5e7e8e956de493ad62aa", + "sha256:29c22ae398597fb4b6481cd95f1539a742495c575b9d0d1518ba9dfae0a206b4", + "sha256:3e7bcb1618f80385d0799b167ffa86ce6cc74f25d6948cfb717f40958cd192dd", + "sha256:40ccc145ea20b42183fd638581842b5204a6496db25d6b32d3440ed2b63b463c", + "sha256:49ee198d194495b475b71cfda9196d113d0d7ff50b28197bce0fbd15f40cc192", + "sha256:4f895efdb9af5f8abbb9e5eef80b2b222cd77bcb9193663332eb80c804f052cf", + "sha256:5963d85de3b18339389e9cf7d2b30470f94e3b2c8e32f1c4a9637cc5d7cda1c0", + "sha256:6422453655b35a9576569b443c4e986585c25e2c9c08dc1bb65f1434edc5d633", + "sha256:65c5f0261d76f6286666ace17ee2fe32728e630933b8fc28e3e0971099b51591", + "sha256:6630bfd86727d528d3648996f793baea2c75941f6fb6caa23741964adf8883e2", + "sha256:8c550e4e2137b1216cede5522700db2ca92a5dd9648dda95c8ac0a3b4881c2be", + "sha256:9a3c383c25aa09da89bd84a9ec6c7c017bfc9211107d9d480038c1bf5635ffce", + "sha256:9cc395e99837d535f9507136041d491c5625c7c89f676f39cff0b587db497d11", + "sha256:9fac882a8c3cb3e72676094d29b3dbf022e6b254bbb284d46b29f5fe145f6146", + "sha256:a84d658952776a186418f4158fc8e55ff3c576ac32cc9ef7f8077efdf2d0b89f", + "sha256:b8acc0b43c0b6df451c6d45a95a9d738fdf7203a23324e88aaccb18cbc6f8ca5", + "sha256:ca1b381ef81cd8787ea6f1a72822441ad97f7e2591694554b29010236917136a", + "sha256:cbc1c983d3c9eb44d3d47fbb57c458bb9759667dfe00827b3b0db83e7112fbc9", + "sha256:e22adf32d635f1202d5a07a61bd493e56cda3940139fe800456992a53662726f", + "sha256:eec5cb2477c97c1a3c7628eda58406d7d6e86ab4832f9c21e043b7c21f156092", + "sha256:f589a7bf389e28e25fd07c7b80049b4c036fb2211b272f53caedd02851d54d4d", + "sha256:f5d4791f6e9f3d6e192a208c2ff69686d9a8aed9c084030365e6f002eafbd403", + "sha256:fb3f4d9a10f517a37b3fc854140fd402dc47d85ba51ce6052b93b2876f0abe9a" + ], + "markers": "python_version >= '3.7' and python_version < '4.0'", + "version": "==0.5.0" + }, + "fnvhash": { + "hashes": [ + "sha256:3e82d505054f9f3987b2b5b649f7e7b6f48349f6af8a1b8e4d66779699c85a8e" + ], + "version": "==0.1.0" + }, "frozenlist": { "hashes": [ "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7", @@ -649,6 +752,70 @@ "markers": "python_version >= '3.8'", "version": "==1.4.1" }, + "greenlet": { + "hashes": [ + "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67", + "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6", + "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257", + "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4", + "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676", + "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61", + "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc", + "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca", + "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7", + "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728", + "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305", + "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6", + "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379", + "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414", + "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04", + "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a", + "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf", + "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491", + "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559", + "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e", + "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274", + "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb", + "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b", + "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9", + "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b", + "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be", + "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506", + "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405", + "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113", + "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f", + "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5", + "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230", + "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d", + "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f", + "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a", + "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e", + "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61", + "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6", + "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d", + "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71", + "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22", + "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2", + "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3", + "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067", + "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc", + "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881", + "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3", + "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e", + "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac", + "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53", + "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0", + "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b", + "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83", + "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41", + "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c", + "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf", + "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da", + "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33" + ], + "markers": "platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))", + "version": "==3.0.3" + }, "h11": { "hashes": [ "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", @@ -659,36 +826,44 @@ }, "habluetooth": { "hashes": [ - "sha256:131bff116f668c7c69a458bb99770746fa99a4603e18f86b9ebe0cdebce92b36", - "sha256:17384117a49373fe79bc162b32413534bb95f3eb7bc65d216fd326125c42437b", - "sha256:1c2a7c9909947879f39d640381d58d4b33050b683280084defe10486504b4d92", - "sha256:2279a8f4b0fd22d97d03094b283e4c928c1341ab1f7f2395f04668d1a8c28aed", - "sha256:37c1e5df5cd92d0c14842cb81890d7967824c814367f683e6407d7d96a5b3961", - "sha256:385970bb6035bbfcd07b762f20e9da090daa0edd1de934e47f8226a5869e390f", - "sha256:3bb97f3d4d28a23c72ff2b9575355ece362a2ef9623e374e1a2daa96e9cbdaa3", - "sha256:3e80369d28a86740a0574c6a86dcfdfb149822a1095b7c6f7a682b92baed1d97", - "sha256:49162796f00954369ef9995bfc7ef94ab9e7f212f1db15da26e05eafafc7040d", - "sha256:5de96beeed7df7ac5e328fd9a2c5cec2116a009cbf6c40a77189298f204cf0a4", - "sha256:73323c9fd60e5521fce4a4a6d89c22ca2b46904ec04dfa85e638bffc163a16a0", - "sha256:7934bc8f433116232ee8aa01f5d232ab5e08098c1c12e684d422228cd40d8259", - "sha256:79995345fc0a4d10fe98d894f67708bbcf1dd60efddc9b2fa5a3443f4bd59170", - "sha256:7d0b424b80ed787883cc9d936bc88158a1bb06c36cc8f30626bec119c10a38e3", - "sha256:880ea213372fec4a1de8dd8fab1ec10a2042c2a3c40209490ce823ffb3cad60b", - "sha256:89313e67c4b3eabae59bc3ac99490b95cdb49cbce1f94015ebbd74aaf37ccfc2", - "sha256:93b70fedda825a56e8812d7a5f43f8dc6b94bb1ea770c6cb57c87f8ac5068bf4", - "sha256:9f8dccde07a1f0417b01d03bef88a2b01059096a85ca7b30e9a9dd16802887df", - "sha256:acebfd58ec93a5c005284fe7c759559716b8490b3be9fd96ecf2bfb653891f01", - "sha256:b4717d742e8d5099d71d4a049d465886b5e2e80fe6a8868f2e878a43545a21b4", - "sha256:b90ed2a72caa68fca1e7b05a853ae4ee3e29b392e04101e57e9abc642e90815b", - "sha256:bef13236920f669d5148059892387c68c6b8dec11a32bf775e2b4303327d37c5", - "sha256:c0b983c073bb8ad45987d2775bb537b72bca9d9c9c2c5cd149426e1683bd0285", - "sha256:cd895f5003a398d8ba0057e68ea06e5d02f9033617ca67c365219294b2c138af", - "sha256:e26e0f268f76c4bb2c52cc900dccbae6f25c6b1e7dfb5f81735aea4138584b3c", - "sha256:e29ab2201325ef55fbbbb22af6141908208d069b7ff279952e5f028b7d89b731", - "sha256:ef1ebe93e64907bb5cd6228aa1e9fc6b635e12bce4b593cb9a6925692dd0232c" + "sha256:04830c4533cfe5ca88311115a13e113c9d3126457e76ad68d94e679f470b2daa", + "sha256:07a99595bb30327927ba6ee24c3e1479bbf8e5b8e9c1eb0718e7a3835f30fb12", + "sha256:0823b9e39b8c83d6a58182fb998efa97cbd93b014dd013afc25db1ac50cdd9d5", + "sha256:13c0a1d1517381941cc1988971614c22897e7866c888af6198f4d07d9aae73e6", + "sha256:16f7368250890a0a93fb5c525dd171b8267992daa1f079bb739aa8a4701e579b", + "sha256:1c2a80b9deb969712219021f6101bdc239d67063b8fbb2184f7085a60e0f91bd", + "sha256:2471942679d85c4e463c02161146ae1a2a29b2bb1aafad559df938849eb22e10", + "sha256:26fe348c63fe6586984f88c4a564affcf53c9aefa72685da4fcfdbeba5702942", + "sha256:2ab1ab3064259ffd8f5632c29ebfe08a46d538a90f4a523399f6ffe7d5894c3a", + "sha256:2b17b6d7ea1d500a6fca9050f467609610f07e3100e4b95fb1906594c350fdc7", + "sha256:2db257155411bd3b13e0dbebcdf04d076d5c07d8e4cd0086a92c31743cc01832", + "sha256:30f2c2a89fe5f49ca95d58d16c4104f1390d9ecb4ba9b46eb805d4e163fac2e7", + "sha256:37f5a02ac5d30387051ff37474addb62c6e795589ef33e17703e22ce341239be", + "sha256:3dbbd2ee1237a0fc51545618526f304db06112d2b2fbc0b6f51c307f39c02dbe", + "sha256:514445d8bd5685d09274fcbf1925869dbca33251107f6ec064422b43caaee9ea", + "sha256:58ed457f32a6536bf3ad8578aea727c618d77fb257ac06a78aa751931ce51075", + "sha256:6958de4f20a7e4e663ff1392d76eb73dbfe59c5fb0afea9db973e5072af1c5b7", + "sha256:705ad0a1ae7e4392e9e1b37cb7332232bd5f6e0845594406ef4b6888d21e1bc3", + "sha256:86a861264c81d46cdc478b5a95d12b7787b2c519e901fed1308a1b78d7075192", + "sha256:89dc8c4e9d79a25c2666dafde0f49241144ac29e69d9d9f5bbf1122733c7f42c", + "sha256:903b235689f20b5101faae21568217d38b16af34363b3234e03dd9144940fd07", + "sha256:9b18c9aa09642590f9e01356f622906bd71f3c9b78160e8574932f2e808da967", + "sha256:a2d5771ed89e9191655df47ce52d0ac241def3d41e2c398d58108ba52ae4f791", + "sha256:c5ee91f251ca0a61d2726a9fc5557552238b5ea28e5b514e60be018f10bfc6ea", + "sha256:daf15ba2eef04656e416d642287931df0f8279c63bf62e3448349e9a594a7ad4", + "sha256:e74ef7018ea1425cb924de83ef2c066fddd82a17aea69637f4ee15c46880afa9", + "sha256:f2d03cd718f79c617e885cca37a919a50ccbf8f284ca882c3d752f98a8fcfe13" ], "markers": "python_version >= '3.10' and python_version < '3.13'", - "version": "==2.4.0" + "version": "==2.4.2" + }, + "hass-nabucasa": { + "hashes": [ + "sha256:01565b5488d478a48bffc026e4e565d6304aa1dfabe182989f808d8a75cb8461", + "sha256:f109ed5a593c47fbcfb547017041d7c5d3db390129fc2640fb13f695280862cd" + ], + "markers": "python_version >= '3.11'", + "version": "==0.79.0" }, "home-assistant-bluetooth": { "hashes": [ @@ -700,28 +875,28 @@ }, "homeassistant": { "hashes": [ - "sha256:380281aeb9bb9ebd82f86571bd7d883a01a080d4a6b290b218faabe7930410ff", - "sha256:7a813e8a75cfb12a3db0a710db1562c36bccb4c5050cc6d0cbaee8908b71d02d" + "sha256:14013e8c9d26b7d7c569bc0098489a2db7a3237acbabbe732be0ee40e6c7ff5d", + "sha256:8da570c8fef7bd5cf9963be510cac4d046b62e1e6ede0cd04a399933677ce0ba" ], "index": "pypi", - "markers": "python_full_version >= '3.11.0'", - "version": "==2024.2.0" + "markers": "python_full_version >= '3.12.0'", + "version": "==2024.4.0b3" }, "httpcore": { "hashes": [ - "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7", - "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535" + "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61", + "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5" ], "markers": "python_version >= '3.8'", - "version": "==1.0.2" + "version": "==1.0.5" }, "httpx": { "hashes": [ - "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf", - "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd" + "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5", + "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5" ], "markers": "python_version >= '3.8'", - "version": "==0.26.0" + "version": "==0.27.0" }, "idna": { "hashes": [ @@ -746,6 +921,22 @@ "markers": "python_version >= '3.7'", "version": "==3.1.3" }, + "jmespath": { + "hashes": [ + "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", + "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe" + ], + "markers": "python_version >= '3.7'", + "version": "==1.0.1" + }, + "josepy": { + "hashes": [ + "sha256:308b3bf9ce825ad4d4bba76372cf19b5dc1c2ce96a9d298f9642975e64bd13dd", + "sha256:d2b36a30f316269f3242f4c2e45e15890784178af5ec54fa3e49cf9234ee22e0" + ], + "markers": "python_version >= '3.7' and python_version < '4.0'", + "version": "==1.14.0" + }, "lru-dict": { "hashes": [ "sha256:0213ab4e3d9a8d386c18e485ad7b14b615cb6f05df6ef44fb2a0746c6ea9278b", @@ -833,13 +1024,6 @@ "markers": "python_version >= '3.8'", "version": "==1.3.0" }, - "mac-vendor-lookup": { - "hashes": [ - "sha256:aeec6eac01b07e6558d889b51f475a1e1e938e09cab409a069ab6a43b13cba58" - ], - "markers": "python_version >= '3.5' and python_version < '4'", - "version": "==0.1.12" - }, "markdown-it-py": { "hashes": [ "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", @@ -1020,67 +1204,141 @@ }, "orjson": { "hashes": [ - "sha256:031df1026c7ea8303332d78711f180231e3ae8b564271fb748a03926587c5546", - "sha256:0d3ba9d88e20765335260d7b25547d7c571eee2b698200f97afa7d8c7cd668fc", - "sha256:0d691c44604941945b00e0a13b19a7d9c1a19511abadf0080f373e98fdeb6b31", - "sha256:0fd9a2101d04e85086ea6198786a3f016e45475f800712e6833e14bf9ce2832f", - "sha256:16946d095212a3dec552572c5d9bca7afa40f3116ad49695a397be07d529f1fa", - "sha256:1ab9dbdec3f13f3ea6f937564ce21651844cfbf2725099f2f490426acf683c23", - "sha256:23f21faf072ed3b60b5954686f98157e073f6a8068eaa58dbde83e87212eda84", - "sha256:266e55c83f81248f63cc93d11c5e3a53df49a5d2598fa9e9db5f99837a802d5d", - "sha256:2cc03a35bfc71c8ebf96ce49b82c2a7be6af4b3cd3ac34166fdb42ac510bbfff", - "sha256:2f37f0cdd026ef777a4336e599d8194c8357fc14760c2a5ddcfdf1965d45504b", - "sha256:31372ba3a9fe8ad118e7d22fba46bbc18e89039e3bfa89db7bc8c18ee722dca8", - "sha256:31fb66b41fb2c4c817d9610f0bc7d31345728d7b5295ac78b63603407432a2b2", - "sha256:3869d65561f10071d3e7f35ae58fd377056f67d7aaed5222f318390c3ad30339", - "sha256:3deadd8dc0e9ff844b5b656fa30a48dbee1c3b332d8278302dd9637f6b09f627", - "sha256:43fd6036b16bb6742d03dae62f7bdf8214d06dea47e4353cde7e2bd1358d186f", - "sha256:446d9ad04204e79229ae19502daeea56479e55cbc32634655d886f5a39e91b44", - "sha256:4584e8eb727bc431baaf1bf97e35a1d8a0109c924ec847395673dfd5f4ef6d6f", - "sha256:49b7e3fe861cb246361825d1a238f2584ed8ea21e714bf6bb17cebb86772e61c", - "sha256:5b98cd948372f0eb219bc309dee4633db1278687161e3280d9e693b6076951d2", - "sha256:5ef58869f3399acbbe013518d8b374ee9558659eef14bca0984f67cb1fbd3c37", - "sha256:60da7316131185d0110a1848e9ad15311e6c8938ee0b5be8cbd7261e1d80ee8f", - "sha256:62e9a99879c4d5a04926ac2518a992134bfa00d546ea5a4cae4b9be454d35a22", - "sha256:63ef57a53bfc2091a7cd50a640d9ae866bd7d92a5225a1bab6baa60ef62583f2", - "sha256:6e47153db080f5e87e8ba638f1a8b18995eede6b0abb93964d58cf11bcea362f", - "sha256:730385fdb99a21fce9bb84bb7fcbda72c88626facd74956bda712834b480729d", - "sha256:7ccd5bd222e5041069ad9d9868ab59e6dbc53ecde8d8c82b919954fbba43b46b", - "sha256:7e8e4a571d958910272af8d53a9cbe6599f9f5fd496a1bc51211183bb2072cbd", - "sha256:811ac076855e33e931549340288e0761873baf29276ad00f221709933c644330", - "sha256:828c502bb261588f7de897e06cb23c4b122997cb039d2014cb78e7dabe92ef0c", - "sha256:838b898e8c1f26eb6b8d81b180981273f6f5110c76c22c384979aca854194f1b", - "sha256:860d0f5b42d0c0afd73fa4177709f6e1b966ba691fcd72175affa902052a81d6", - "sha256:8a730bf07feacb0863974e67b206b7c503a62199de1cece2eb0d4c233ec29c11", - "sha256:9156b96afa38db71344522f5517077eaedf62fcd2c9148392ff93d801128809c", - "sha256:9171e8e1a1f221953e38e84ae0abffe8759002fd8968106ee379febbb5358b33", - "sha256:978117122ca4cc59b28af5322253017f6c5fc03dbdda78c7f4b94ae984c8dd43", - "sha256:9b1b5adc5adf596c59dca57156b71ad301d73956f5bab4039b0e34dbf50b9fa0", - "sha256:9bcf56efdb83244cde070e82a69c0f03c47c235f0a5cb6c81d9da23af7fbaae4", - "sha256:a8c83718346de08d68b3cb1105c5d91e5fc39885d8610fdda16613d4e3941459", - "sha256:ae77275a28667d9c82d4522b681504642055efa0368d73108511647c6499b31c", - "sha256:b57c0954a9fdd2b05b9cec0f5a12a0bdce5bf021a5b3b09323041613972481ab", - "sha256:b812417199eeb169c25f67815cfb66fd8de7ff098bf57d065e8c1943a7ba5c8f", - "sha256:cfad553a36548262e7da0f3a7464270e13900b898800fb571a5d4b298c3f8356", - "sha256:d3222db9df629ef3c3673124f2e05fb72bc4a320c117e953fec0d69dde82e36d", - "sha256:d714595d81efab11b42bccd119977d94b25d12d3a806851ff6bfd286a4bce960", - "sha256:d92a3e835a5100f1d5b566fff79217eab92223ca31900dba733902a182a35ab0", - "sha256:ddc089315d030c54f0f03fb38286e2667c05009a78d659f108a8efcfbdf2e585", - "sha256:e3b0c4da61f39899561e08e571f54472a09fa71717d9797928af558175ae5243", - "sha256:eaaf80957c38e9d3f796f355a80fad945e72cd745e6b64c210e635b7043b673e", - "sha256:fa6b67f8bef277c2a4aadd548d58796854e7d760964126c3209b19bccc6a74f1", - "sha256:fc6bc65b0cf524ee042e0bc2912b9206ef242edfba7426cf95763e4af01f527a" + "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" ], "markers": "python_version >= '3.8'", - "version": "==3.9.13" + "version": "==3.9.15" }, "packaging": { "hashes": [ - "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", - "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" + "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", + "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9" ], "markers": "python_version >= '3.7'", - "version": "==23.2" + "version": "==24.0" + }, + "pillow": { + "hashes": [ + "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8", + "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39", + "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac", + "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869", + "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e", + "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04", + "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9", + "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e", + "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe", + "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef", + "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56", + "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa", + "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f", + "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f", + "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e", + "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a", + "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2", + "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2", + "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5", + "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a", + "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2", + "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213", + "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563", + "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591", + "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c", + "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2", + "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb", + "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757", + "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0", + "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452", + "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad", + "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01", + "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f", + "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5", + "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61", + "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e", + "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b", + "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068", + "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9", + "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588", + "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483", + "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f", + "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67", + "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7", + "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311", + "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6", + "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72", + "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6", + "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129", + "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13", + "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67", + "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c", + "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516", + "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e", + "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e", + "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364", + "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023", + "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1", + "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04", + "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d", + "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a", + "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7", + "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb", + "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4", + "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e", + "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1", + "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48", + "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868" + ], + "markers": "python_version >= '3.8'", + "version": "==10.2.0" }, "pip": { "hashes": [ @@ -1090,12 +1348,50 @@ "markers": "python_version >= '3.7'", "version": "==24.0" }, + "psutil": { + "hashes": [ + "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d", + "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73", + "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8", + "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2", + "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e", + "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36", + "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7", + "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c", + "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee", + "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421", + "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf", + "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81", + "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0", + "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631", + "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4", + "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8" + ], + "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.8" + }, + "psutil-home-assistant": { + "hashes": [ + "sha256:35a782e93e23db845fc4a57b05df9c52c2d5c24f5b233bd63b01bae4efae3c41", + "sha256:ebe4f3a98d76d93a3140da2823e9ef59ca50a59761fdc453b30b4407c4c1bdb8" + ], + "markers": "python_version >= '3.8'", + "version": "==0.0.1" + }, + "pycognito": { + "hashes": [ + "sha256:19814ca0cd40e47ab797dec4c2a5bae6c6df8c8e6c3ced191d22008d66eb3df1", + "sha256:ff46fe3682ead8eb727bd5107c36a28ccef0950a13c7f4bab0cb59aa38cbabda" + ], + "version": "==2024.2.0" + }, "pycparser": { "hashes": [ - "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", - "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206" + "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", + "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc" ], - "version": "==2.21" + "markers": "python_version >= '3.8'", + "version": "==2.22" }, "pygments": { "hashes": [ @@ -1106,6 +1402,9 @@ "version": "==2.17.2" }, "pyjwt": { + "extras": [ + "crypto" + ], "hashes": [ "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de", "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320" @@ -1113,65 +1412,20 @@ "markers": "python_version >= '3.7'", "version": "==2.8.0" }, - "pyobjc-core": { - "hashes": [ - "sha256:0fa950f092673883b8bd28bc18397415cabb457bf410920762109b411789ade9", - "sha256:2d23ee539f2ba5e9f5653d75a13f575c7e36586fc0086792739e69e4c2617eda", - "sha256:41189c2c680931c0395a55691763c481fc681f454f21bb4f1644f98c24a45954", - "sha256:586e4cae966282eaa61b21cae66ccdcee9d69c036979def26eebdc08ddebe20f", - "sha256:b9809cf96678797acb72a758f34932fe8e2602d5ab7abec15c5ac68ddb481720", - "sha256:bbc8de304ee322a1ee530b4d2daca135a49b4a49aa3cedc6b2c26c43885f4842", - "sha256:d734b9291fec91ff4e3ae38b9c6839debf02b79c07314476e87da8e90b2c68c3", - "sha256:fa674a39949f5cde8e5c7bbcd24496446bfc67592b028aedbec7f81dc5fc4daa" - ], - "markers": "platform_system == 'Darwin'", - "version": "==9.2" - }, - "pyobjc-framework-cocoa": { - "hashes": [ - "sha256:312977ce2e3989073c6b324c69ba24283de206fe7acd6dbbbaf3e29238a22537", - "sha256:32d9ac1033fac1b821ddee8c68f972a7074ad8c50bec0bea9a719034c1c2fb94", - "sha256:3b1e6287b3149e4c6679cdbccd8e9ef6557a4e492a892e80a77df143f40026d2", - "sha256:739a421e14382a46cbeb9a883f192dceff368ad28ec34d895c48c0ad34cf2c1d", - "sha256:9e02d8a7cc4eb7685377c50ba4f17345701acf4c05b1e7480d421bff9e2f62a4", - "sha256:aae7841cf40c26dd915f4dd828f91c6616e6b7998630b72e704750c09e00f334", - "sha256:b236bb965e41aeb2e215d4e98a5a230d4b63252c6d26e00924ea2e69540a59d6", - "sha256:efd78080872d8c8de6c2b97e0e4eac99d6203a5d1637aa135d071d464eb2db53" - ], - "markers": "python_version >= '3.7'", - "version": "==9.2" - }, - "pyobjc-framework-corebluetooth": { - "hashes": [ - "sha256:179532882126526e38fe716a50fb0ee8f440e0b838d290252c515e622b5d0e49", - "sha256:256a5031ea9d8a7406541fa1b0dfac549b1de93deae8284605f9355b13fb58be", - "sha256:53d888742119d0f0c725d0b0c2389f68e8f21f0cba6d6aec288c53260a0196b6", - "sha256:cb2481b1dfe211ae9ce55f36537dc8155dbf0dc8ff26e0bc2e13f7afb0a291d1" - ], - "markers": "platform_system == 'Darwin'", - "version": "==9.2" - }, - "pyobjc-framework-libdispatch": { - "hashes": [ - "sha256:1a67b007113328538b57893cc7829a722270764cdbeae6d5e1460a1d911314df", - "sha256:1b107e5c3580b09553030961ea6b17abad4a5132101eab1af3ad2cb36d0f08bb", - "sha256:2e835495860d04f63c2d2f73ae3dd79da4222864c107096dc0f99e8382700026", - "sha256:542e7f7c2b041939db5ed6f3119c1d67d73ec14a996278b92485f8513039c168", - "sha256:6eba747b7ad91b0463265a7aee59235bb051fb97687f35ca2233690369b5e4e4", - "sha256:6fccea1a57436cf1ac50d9ebc6e3e725bcf77f829ba6b118e62e6ed7866d359d", - "sha256:83cdb672acf722717b5ecf004768f215f02ac02d7f7f2a9703da6e921ab02222", - "sha256:88d4091d4bcb5702783d6e86b4107db973425a17d1de491543f56bd348909b60" - ], - "markers": "platform_system == 'Darwin'", - "version": "==9.2" - }, "pyopenssl": { "hashes": [ - "sha256:6aa33039a93fffa4563e655b61d11364d01264be8ccb49906101e02a334530bf", - "sha256:ba07553fb6fd6a7a2259adb9b84e12302a9a8a75c44046e8bb5d3e5ee887e3c3" + "sha256:17ed5be5936449c5418d1cd269a1a9e9081bc54c17aed272b45856a3d3dc86ad", + "sha256:cabed4bfaa5df9f1a16c0ef64a0cb65318b5cd077a7eda7d6970131ca2f41a6f" ], "markers": "python_version >= '3.7'", - "version": "==24.0.0" + "version": "==24.1.0" + }, + "pyrfc3339": { + "hashes": [ + "sha256:67196cb83b470709c580bb4738b83165e67c6cc60e1f2e4f286cfcb402a926f4", + "sha256:81b8cbe1519cdb79bed04910dd6fa4e181faf8c88dff1e1b987b5f7ab23a5b1a" + ], + "version": "==1.1" }, "pyric": { "hashes": [ @@ -1187,13 +1441,21 @@ "index": "pypi", "version": "==0.7.8" }, + "python-dateutil": { + "hashes": [ + "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", + "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.9.0.post0" + }, "python-slugify": { "hashes": [ - "sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395", - "sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27" + "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", + "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856" ], "markers": "python_version >= '3.7'", - "version": "==8.0.1" + "version": "==8.0.4" }, "pytz": { "hashes": [ @@ -1269,20 +1531,106 @@ }, "rich": { "hashes": [ - "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa", - "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235" + "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222", + "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432" ], "index": "pypi", "markers": "python_full_version >= '3.7.0'", - "version": "==13.7.0" + "version": "==13.7.1" + }, + "s3transfer": { + "hashes": [ + "sha256:5683916b4c724f799e600f41dd9e10a9ff19871bf87623cc8f491cb4f5fa0a19", + "sha256:ceb252b11bcf87080fb7850a224fb6e05c8a776bab8f2b64b7f25b969464839d" + ], + "markers": "python_version >= '3.8'", + "version": "==0.10.1" + }, + "setuptools": { + "hashes": [ + "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e", + "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c" + ], + "markers": "python_version >= '3.8'", + "version": "==69.2.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" }, "sniffio": { "hashes": [ - "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101", - "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384" + "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", + "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" ], "markers": "python_version >= '3.7'", - "version": "==1.3.0" + "version": "==1.3.1" + }, + "snitun": { + "hashes": [ + "sha256:a51b4331acb77d72e6f9d6d34a9721d9411d09c804d75abbbccceb76d90076d1", + "sha256:f8f142a3b57aea887a3091a8182daefe3bb105e0d30f3aa9e2164ea1d00f6577" + ], + "version": "==0.36.2" + }, + "sqlalchemy": { + "hashes": [ + "sha256:01d10638a37460616708062a40c7b55f73e4d35eaa146781c683e0fa7f6c43fb", + "sha256:04c487305ab035a9548f573763915189fc0fe0824d9ba28433196f8436f1449c", + "sha256:0dfefdb3e54cd15f5d56fd5ae32f1da2d95d78319c1f6dfb9bcd0eb15d603d5d", + "sha256:0f3ca96af060a5250a8ad5a63699180bc780c2edf8abf96c58af175921df847a", + "sha256:205f5a2b39d7c380cbc3b5dcc8f2762fb5bcb716838e2d26ccbc54330775b003", + "sha256:25664e18bef6dc45015b08f99c63952a53a0a61f61f2e48a9e70cec27e55f699", + "sha256:296195df68326a48385e7a96e877bc19aa210e485fa381c5246bc0234c36c78e", + "sha256:2a0732dffe32333211801b28339d2a0babc1971bc90a983e3035e7b0d6f06b93", + "sha256:3071ad498896907a5ef756206b9dc750f8e57352113c19272bdfdc429c7bd7de", + "sha256:308ef9cb41d099099fffc9d35781638986870b29f744382904bf9c7dadd08513", + "sha256:334184d1ab8f4c87f9652b048af3f7abea1c809dfe526fb0435348a6fef3d380", + "sha256:38b624e5cf02a69b113c8047cf7f66b5dfe4a2ca07ff8b8716da4f1b3ae81567", + "sha256:471fcb39c6adf37f820350c28aac4a7df9d3940c6548b624a642852e727ea586", + "sha256:4c142852ae192e9fe5aad5c350ea6befe9db14370b34047e1f0f7cf99e63c63b", + "sha256:4f6d971255d9ddbd3189e2e79d743ff4845c07f0633adfd1de3f63d930dbe673", + "sha256:52c8011088305476691b8750c60e03b87910a123cfd9ad48576d6414b6ec2a1d", + "sha256:52de4736404e53c5c6a91ef2698c01e52333988ebdc218f14c833237a0804f1b", + "sha256:5c7b02525ede2a164c5fa5014915ba3591730f2cc831f5be9ff3b7fd3e30958e", + "sha256:5ef3fbccb4058355053c51b82fd3501a6e13dd808c8d8cd2561e610c5456013c", + "sha256:5f20cb0a63a3e0ec4e169aa8890e32b949c8145983afa13a708bc4b0a1f30e03", + "sha256:61405ea2d563407d316c63a7b5271ae5d274a2a9fbcd01b0aa5503635699fa1e", + "sha256:77d29cb6c34b14af8a484e831ab530c0f7188f8efed1c6a833a2c674bf3c26ec", + "sha256:7b184e3de58009cc0bf32e20f137f1ec75a32470f5fede06c58f6c355ed42a72", + "sha256:7e614d7a25a43a9f54fcce4675c12761b248547f3d41b195e8010ca7297c369c", + "sha256:8197d6f7a3d2b468861ebb4c9f998b9df9e358d6e1cf9c2a01061cb9b6cf4e41", + "sha256:87a1d53a5382cdbbf4b7619f107cc862c1b0a4feb29000922db72e5a66a5ffc0", + "sha256:8c37f1050feb91f3d6c32f864d8e114ff5545a4a7afe56778d76a9aec62638ba", + "sha256:90453597a753322d6aa770c5935887ab1fc49cc4c4fdd436901308383d698b4b", + "sha256:988569c8732f54ad3234cf9c561364221a9e943b78dc7a4aaf35ccc2265f1930", + "sha256:99a1e69d4e26f71e750e9ad6fdc8614fbddb67cfe2173a3628a2566034e223c7", + "sha256:9b19836ccca0d321e237560e475fd99c3d8655d03da80c845c4da20dda31b6e1", + "sha256:9d6753305936eddc8ed190e006b7bb33a8f50b9854823485eed3a886857ab8d1", + "sha256:a13b917b4ffe5a0a31b83d051d60477819ddf18276852ea68037a144a506efb9", + "sha256:a88913000da9205b13f6f195f0813b6ffd8a0c0c2bd58d499e00a30eb508870c", + "sha256:b2a0e3cf0caac2085ff172c3faacd1e00c376e6884b5bc4dd5b6b84623e29e4f", + "sha256:b5d7ed79df55a731749ce65ec20d666d82b185fa4898430b17cb90c892741520", + "sha256:bab41acf151cd68bc2b466deae5deeb9e8ae9c50ad113444151ad965d5bf685b", + "sha256:bd9566b8e58cabd700bc367b60e90d9349cd16f0984973f98a9a09f9c64e86f0", + "sha256:bda7ce59b06d0f09afe22c56714c65c957b1068dee3d5e74d743edec7daba552", + "sha256:c2f9c762a2735600654c654bf48dad388b888f8ce387b095806480e6e4ff6907", + "sha256:c4520047006b1d3f0d89e0532978c0688219857eb2fee7c48052560ae76aca1e", + "sha256:d96710d834a6fb31e21381c6d7b76ec729bd08c75a25a5184b1089141356171f", + "sha256:dba622396a3170974f81bad49aacebd243455ec3cc70615aeaef9e9613b5bca5", + "sha256:dc4ee2d4ee43251905f88637d5281a8d52e916a021384ec10758826f5cbae305", + "sha256:dddaae9b81c88083e6437de95c41e86823d150f4ee94bf24e158a4526cbead01", + "sha256:de7202ffe4d4a8c1e3cde1c03e01c1a3772c92858837e8f3879b497158e4cb44", + "sha256:e5bbe55e8552019c6463709b39634a5fc55e080d0827e2a3a11e18eb73f5cdbd", + "sha256:ea311d4ee9a8fa67f139c088ae9f905fcf0277d6cd75c310a21a88bf85e130f5", + "sha256:fecd5089c4be1bcc37c35e9aa678938d2888845a134dd016de457b942cf5a758" + ], + "markers": "python_version >= '3.7'", + "version": "==2.0.29" }, "text-unidecode": { "hashes": [ @@ -1293,11 +1641,11 @@ }, "typing-extensions": { "hashes": [ - "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", - "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" + "sha256:6f1117ac0cbe64536f34520c4688cd144794f9b1d79690bfe0389aa12a347976", + "sha256:7427ef26efa5e4e465e3765af0e52d3897e3684c908efe20e3331e1ce51884b3" ], "markers": "python_version >= '3.8'", - "version": "==4.9.0" + "version": "==4.11.0rc1" }, "ulid-transform": { "hashes": [ @@ -1460,83 +1808,83 @@ }, "zlib-ng": { "hashes": [ - "sha256:0261b43542d1525dfd3475a9e083b624b61dfc5b7fec2a3a7be5908af867fd1b", - "sha256:07694a956028a66133c52ebf802d6185c6e986fbec5c4e403b997e044b30db8d", - "sha256:08a52fb23236870b956d02400a372f1c3a8adef298552466b6476a05ba061027", - "sha256:096d319b94454c174dde78886a8d4a0f488186a4fbd006bd1819360e0e8b5348", - "sha256:0b87aba7e64de1efb5a965d51551b63efc24d9cc77671b7ea28f336162edc733", - "sha256:1d4df3e5d779ded9451c3e14686233d0a75762512f2eaa74386eadf8fbb2850d", - "sha256:209a4a2bb0797598f49aa7b7a9e8714b9f69a64777957eba476209d26bfec17b", - "sha256:274da13e42dc2197f8c24e321cc9cc4d1eef790512485462d72832343fe8f72a", - "sha256:2b53d72a2787ad5170a1c4b2444f14f064017bdc575ac43547054fdf0e8f8c4e", - "sha256:39f69f92c7f8d107f406d981c1383c749894d737699116138de14497b0e0b041", - "sha256:3b730881aaeb86f9a4995de5e22499406ccf92f8508b5c017c343d27570a8c0a", - "sha256:4a05cafa6a15284406a8c92eed06faa439dfd26b6c9c697719be450b919b459d", - "sha256:4edeb933440e94d2c47331314edfda20f51a3640eb8e12a7a478859874d35a4a", - "sha256:55a47ce2249581bc00decc5fc4aadf1f48c5edde770ff5aa649c2f0b782c9aba", - "sha256:57c53634157142b208b6dd4dbb21b6b67392afb7b181be0e97a09bfc7201819b", - "sha256:5f338be6e62e05636467b89c26e0404d0e3d726da74aa3510be1e19e7681832b", - "sha256:676221d0abb724d97a1b693b99b63fe164b65cd419c31556f5bf538f5a950031", - "sha256:67d37a39ed6521dfc31230f78ba095141d2317ad41bed9270eddfd1a37b9f076", - "sha256:690d1ee223a75c61bb628b7203d06d08ea4e10e88c822a4fe4fa8bdad0955608", - "sha256:6cf9e47962c86973543fd5c8fe46148063950fbb591da5775cde54abf6aa95aa", - "sha256:6db621bdd34ef500ec1b44a5190fe5e967eee9386140be6bc8769ec15e355c4b", - "sha256:70e192695fd7bac2c3db529a873f57e10a8d42383223b0c5dc281793be4b1b83", - "sha256:7ae20fde7487931146ea1d95b5ea524012c2b20d26d8a8458bf6befff1feaf1b", - "sha256:7dca9af5f84edcc98408af60c4fd220fe2ba3f6e7324b6b97483ac430e1ba89b", - "sha256:7fd8a3cd1c108e714b08263a9b62d85d2bb1ba91ede319267ed998b6ac73bac8", - "sha256:8430bbbca7689ce87735970bc3b9dcb1b6d1453aa6c01f5a6850a7c323e100c4", - "sha256:8ac2405b42420abd9dccfe5d5f05c052aaf88ee66aec0d3fb4ee171826846d8a", - "sha256:8b2a635d018b3dbed6844ceca08c0f9a170ebdcc9299ab080e4f63b757faaeae", - "sha256:8faa04e00261afd0e532392f70e74428687d00a37b6c3e63e6eb27ad8a81a629", - "sha256:9480339df63dc83dbe17ed01ac2fcac2e1e3fcf95811d86f9118823b6434ac58", - "sha256:959f8951cb7a44df190cbd69327c3ea467b6d6398c448727ecdbd520b6c4ba14", - "sha256:9b49346d528da8e13575bb8bfa2ee5f74398422e81d4be6001afb5c0621dc412", - "sha256:9b53458b4baa0554df93430bfda71a6861510d6641ac75192e6b9c2485d01a3a", - "sha256:a1ec74451bf33678a77ebbb9f24364390469396d6a1be69114063343dc654167", - "sha256:a3731a1e44290a2ca568690b8c6b62994377d929fd9b2808e60ea371f21781f4", - "sha256:ab9cf1fca3128da63a1b67490fb4c753b6a880b183d826d49d4cd0c61951d0fa", - "sha256:b585e8ddd357fe4677c0c738e5962ca867e157257f3c33f2fa8965e04bdb5836", - "sha256:ba917d5e574ae67b3984835791b5887592d0cb2877d5bfe22c3ab7ef30a28979", - "sha256:cd4c9d4945f366a0f295e9356dd9ef291544adbe42cabcc121a28b202dd8809b", - "sha256:d62b1eaee0ae8fd6f544e199b4de90c018deaf1572f5e0c67ea5eb1adac7bfd3", - "sha256:e1e122967cacce2f1f04b5ee1ea89642997f8a312be6b527dc4a8e92deb834dd", - "sha256:e926e2f8a31a3bfd0e1e2ffc3fb9956126ee17b4477ee98aa4e51b7bdc7ad41d", - "sha256:ec04f0a21e711a654a9ea1dc5966c29231301625cfc199ca1ec0cdedbf921377" + "sha256:00efbff00164a26944cf1b5c5f409656b476a865090d463915755b7ed9aedb7b", + "sha256:02d14d7788847d823a49841cb3508162406279115925d48d591d0a0bcf44cb42", + "sha256:05838107b371bead74c0363e0dfcf36d79f6b4b5c7c5fa0f493934ae403cbe4d", + "sha256:07bb673dc930d970dfe1969ff634a1d1ee11310af8fe14d3a99653b157ba73a4", + "sha256:0dc8807f646112a8cefecf39f1ac1ecce2c22b642246a2ba80413e394dd905a5", + "sha256:14d2da8eb4bbc38371cdab7743784cac3a39e4cd18d0124f1a8c39995d3552bf", + "sha256:151f38c6b79ea011ba1914945ce86fae89a22b2c18fec49593f2b992c7ccd940", + "sha256:153183724143711c92bd243528b97fdd3b2426c778079498b882fce445a68421", + "sha256:1cbb59732a3b2bdeb5be19acde5357369b5314d560b080b7b5046abd88cc87b0", + "sha256:23e0e3c2a475ef3f2c24e885c405e2b98e74e06f481fda2c61aec3653f21d905", + "sha256:2414540d1432a7e2d84b84aa2ebfd692f297ec002ab1f13af6c4970d0c1c0a6c", + "sha256:289c1b6cf6c2de657f6227ca4718444eaada615c26387e9a55f6ba40bea3392f", + "sha256:34151df24b2c4f24380d00f4ba1a148adbb095c91158efbfc44220dfa6cabc10", + "sha256:37d3acb56414aebbb1c1d8baaa911597c3bdf2d2e6e21ee02192fd963c37b053", + "sha256:392e4f276be121c57ad68948409a9c525e25c577a8f751cc0c1b282dce9dc047", + "sha256:40cc64134e180e654d507f6de9193db2f7a037b114af9c85a35eb26532d5b72e", + "sha256:4987816a8f0903a3d0905b9788faa3675e5e9b10e5b6e5b0f90117576a75f433", + "sha256:499f27d84ae14584a81c559c21287c8f3d4a16676daf55a719fa8b3714aa493c", + "sha256:49c52475f72abe1463a9f794e449e25c25f11d4fe0721e902f28ddf53def01ea", + "sha256:4f9fdce23a0195ce9c8f0f1997eca1fc1e0adf493cae0baff1a703cb1213f137", + "sha256:55eb1a3a79f32270ee64ca573451284962ffc0cb16763e9af6b0521bf19ef866", + "sha256:5d53cb442e676099638e4f3d073f56566c9a41afccfd8c41daf5f179289048b5", + "sha256:708077b3cba6f5dd345a4b6373e5e22249cc6aadc19ecbb20a136eb9db753527", + "sha256:742096a5e390ff45d6723acc7be778df6fa9ad232b1bea591210ad3a402d4544", + "sha256:776abd73644efd8556c92a0d2e65e73460e9fb081736bfc6dc8e39d49bb63901", + "sha256:792690523c866c1d352e947c7d7d442e24fe2c0c7563aec323aefeb12f279867", + "sha256:7bd3b482e8f79257cdada15044153a4f59157c9f64fe83a5ba627658ea19aa53", + "sha256:7f11fe6b797a522b44650de1c506c7a249606ce2aa3b9d2f2ed8d9bf809af22d", + "sha256:88c74e151547613555e1a75b1ab5bd2c0c49751878ee348ee9d560bcfdec4b86", + "sha256:8f720e7feb7cc602f5e2207ca95b6b8fdcbaf8d9bf34cbcb4801257d0b8eede6", + "sha256:90df01485e034474d5b4f61880136dadc49dfc0c504223b938ff4aa649dd39f9", + "sha256:a240dec6baee7353c6adb87cd5e5207325ba26b8649c35ce0be389d93ef9f01c", + "sha256:c92a9425149fbf8696876b8a15dc08ed88dc385d0d1c3a5a5452911d80a659ea", + "sha256:caf5287b7610f9f0ec27e21472487fe39c911157a29b1f5f9eead22d86c5b758", + "sha256:e3ae97d1720b6b2406dc2977b84799a4899bd4463dfb57ecf65442b1c39867ac", + "sha256:e4603e33e0501192c5f80a996c70b642c674fb7367d122715af21309bf906214", + "sha256:ece7d2e2e7bd627e4de3cb2a6c16c4d2c13379b959308d9b9cc2cec8f3e54ab9", + "sha256:ee55d6a761f47968a66d1eb51017c4d2c41e7931f18236f928da69ea289785bf", + "sha256:ee89f4f5ed7a154974ec4fc923cb3d23297710e9dbb52ff9006d0971c07e7efe", + "sha256:f19e32e0e08bd3417dd23c6c562e76b05deb2d34e8d0f84f0999d7ada5ec3bb1", + "sha256:f3e764c5a91aec55ebe6117cd56bdc06bb5cc4a6b828b8d6b68ba6c5de09b288", + "sha256:f4b6b330c15d4ae73d085b4fdb8bee3e2863a04a5679d37df881dd46bd5b8063", + "sha256:f9c4762827f85aa22b8c6fa761c1d7236718bd8b8c3af4637143287c31f2b9a8" ], "markers": "python_version >= '3.8'", - "version": "==0.4.0" + "version": "==0.4.1" } }, "develop": { "black": { "hashes": [ - "sha256:0269dfdea12442022e88043d2910429bed717b2d04523867a85dacce535916b8", - "sha256:07204d078e25327aad9ed2c64790d681238686bce254c910de640c7cc4fc3aa6", - "sha256:08b34e85170d368c37ca7bf81cf67ac863c9d1963b2c1780c39102187ec8dd62", - "sha256:1a95915c98d6e32ca43809d46d932e2abc5f1f7d582ffbe65a5b4d1588af7445", - "sha256:2588021038bd5ada078de606f2a804cadd0a3cc6a79cb3e9bb3a8bf581325a4c", - "sha256:2fa6a0e965779c8f2afb286f9ef798df770ba2b6cee063c650b96adec22c056a", - "sha256:34afe9da5056aa123b8bfda1664bfe6fb4e9c6f311d8e4a6eb089da9a9173bf9", - "sha256:3897ae5a21ca132efa219c029cce5e6bfc9c3d34ed7e892113d199c0b1b444a2", - "sha256:40657e1b78212d582a0edecafef133cf1dd02e6677f539b669db4746150d38f6", - "sha256:48b5760dcbfe5cf97fd4fba23946681f3a81514c6ab8a45b50da67ac8fbc6c7b", - "sha256:5242ecd9e990aeb995b6d03dc3b2d112d4a78f2083e5a8e86d566340ae80fec4", - "sha256:5cdc2e2195212208fbcae579b931407c1fa9997584f0a415421748aeafff1168", - "sha256:5d7b06ea8816cbd4becfe5f70accae953c53c0e53aa98730ceccb0395520ee5d", - "sha256:7258c27115c1e3b5de9ac6c4f9957e3ee2c02c0b39222a24dc7aa03ba0e986f5", - "sha256:854c06fb86fd854140f37fb24dbf10621f5dab9e3b0c29a690ba595e3d543024", - "sha256:a21725862d0e855ae05da1dd25e3825ed712eaaccef6b03017fe0853a01aa45e", - "sha256:a83fe522d9698d8f9a101b860b1ee154c1d25f8a82ceb807d319f085b2627c5b", - "sha256:b3d64db762eae4a5ce04b6e3dd745dcca0fb9560eb931a5be97472e38652a161", - "sha256:e298d588744efda02379521a19639ebcd314fba7a49be22136204d7ed1782717", - "sha256:e2c8dfa14677f90d976f68e0c923947ae68fa3961d61ee30976c388adc0b02c8", - "sha256:ecba2a15dfb2d97105be74bbfe5128bc5e9fa8477d8c46766505c1dda5883aac", - "sha256:fc1ec9aa6f4d98d022101e015261c056ddebe3da6a8ccfc2c792cbe0349d48b7" + "sha256:2818cf72dfd5d289e48f37ccfa08b460bf469e67fb7c4abb07edc2e9f16fb63f", + "sha256:41622020d7120e01d377f74249e677039d20e6344ff5851de8a10f11f513bf93", + "sha256:4acf672def7eb1725f41f38bf6bf425c8237248bb0804faa3965c036f7672d11", + "sha256:4be5bb28e090456adfc1255e03967fb67ca846a03be7aadf6249096100ee32d0", + "sha256:4f1373a7808a8f135b774039f61d59e4be7eb56b2513d3d2f02a8b9365b8a8a9", + "sha256:56f52cfbd3dabe2798d76dbdd299faa046a901041faf2cf33288bc4e6dae57b5", + "sha256:65b76c275e4c1c5ce6e9870911384bff5ca31ab63d19c76811cb1fb162678213", + "sha256:65c02e4ea2ae09d16314d30912a58ada9a5c4fdfedf9512d23326128ac08ac3d", + "sha256:6905238a754ceb7788a73f02b45637d820b2f5478b20fec82ea865e4f5d4d9f7", + "sha256:79dcf34b33e38ed1b17434693763301d7ccbd1c5860674a8f871bd15139e7837", + "sha256:7bb041dca0d784697af4646d3b62ba4a6b028276ae878e53f6b4f74ddd6db99f", + "sha256:7d5e026f8da0322b5662fa7a8e752b3fa2dac1c1cbc213c3d7ff9bdd0ab12395", + "sha256:9f50ea1132e2189d8dff0115ab75b65590a3e97de1e143795adb4ce317934995", + "sha256:a0c9c4a0771afc6919578cec71ce82a3e31e054904e7197deacbc9382671c41f", + "sha256:aadf7a02d947936ee418777e0247ea114f78aff0d0959461057cae8a04f20597", + "sha256:b5991d523eee14756f3c8d5df5231550ae8993e2286b8014e2fdea7156ed0959", + "sha256:bf21b7b230718a5f08bd32d5e4f1db7fc8788345c8aea1d155fc17852b3410f5", + "sha256:c45f8dff244b3c431b36e3224b6be4a127c6aca780853574c00faf99258041eb", + "sha256:c7ed6668cbbfcd231fa0dc1b137d3e40c04c7f786e626b405c62bcd5db5857e4", + "sha256:d7de8d330763c66663661a1ffd432274a2f92f07feeddd89ffd085b5744f85e7", + "sha256:e19cb1c6365fd6dc38a6eae2dcb691d7d83935c10215aef8e6c38edee3f77abd", + "sha256:e2af80566f43c85f5797365077fb64a393861a3730bd110971ab7a0c94e873e7" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==24.1.1" + "version": "==24.3.0" }, "click": { "hashes": [ @@ -1548,12 +1896,12 @@ }, "isort": { "hashes": [ - "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", - "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6" + "sha256:0ec8b74806e80fec33e6e7ba89d35e17b3eb1c4c74316ea44cf877cc26e8b118", + "sha256:cde11e804641edbe1b6b95d56582eb541f27eebc77864c6015545944bb0e9c76" ], "index": "pypi", - "markers": "python_full_version >= '3.8.0'", - "version": "==5.13.2" + "markers": "python_full_version >= '3.7.0'", + "version": "==6.0.0b2" }, "mypy-extensions": { "hashes": [ @@ -1565,11 +1913,11 @@ }, "packaging": { "hashes": [ - "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", - "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" + "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", + "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9" ], "markers": "python_version >= '3.7'", - "version": "==23.2" + "version": "==24.0" }, "pathspec": { "hashes": [ diff --git a/custom_components/samsung_soundbar/__init__.py b/custom_components/samsung_soundbar/__init__.py index aa03b87..7c7f890 100644 --- a/custom_components/samsung_soundbar/__init__.py +++ b/custom_components/samsung_soundbar/__init__.py @@ -6,9 +6,18 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession from pysmartthings import SmartThings from .api_extension.SoundbarDevice import SoundbarDevice -from .const import (CONF_ENTRY_API_KEY, CONF_ENTRY_DEVICE_ID, - CONF_ENTRY_DEVICE_NAME, CONF_ENTRY_MAX_VOLUME, DOMAIN, - SUPPORTED_DOMAINS) +from .const import ( + CONF_ENTRY_API_KEY, + CONF_ENTRY_DEVICE_ID, + CONF_ENTRY_DEVICE_NAME, + CONF_ENTRY_MAX_VOLUME, + CONF_ENTRY_SETTINGS_ADVANCED_AUDIO_SWITCHES, + CONF_ENTRY_SETTINGS_EQ_SELECTOR, + CONF_ENTRY_SETTINGS_SOUNDMODE_SELECTOR, + CONF_ENTRY_SETTINGS_WOOFER_NUMBER, + DOMAIN, + SUPPORTED_DOMAINS, +) from .models import DeviceConfig, SoundbarConfig _LOGGER = logging.getLogger(__name__) @@ -21,7 +30,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: # store shell object _LOGGER.info(f"[{DOMAIN}] Starting to setup a ConfigEntry") - _LOGGER.debug(f"[{DOMAIN}] Setting up ConfigEntry with the following data: {entry.data}") + _LOGGER.debug( + f"[{DOMAIN}] Setting up ConfigEntry with the following data: {entry.data}" + ) if not DOMAIN in hass.data: _LOGGER.debug(f"[{DOMAIN}] Domain not found in hass.data setting default") hass.data[DOMAIN] = SoundbarConfig( @@ -48,6 +59,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: session, entry.data.get(CONF_ENTRY_MAX_VOLUME), entry.data.get(CONF_ENTRY_DEVICE_NAME), + enable_eq=entry.data.get(CONF_ENTRY_SETTINGS_EQ_SELECTOR), + enable_advanced_audio=entry.data.get( + CONF_ENTRY_SETTINGS_ADVANCED_AUDIO_SWITCHES + ), + enable_soundmode=entry.data.get(CONF_ENTRY_SETTINGS_SOUNDMODE_SELECTOR), + enable_woofer=entry.data.get(CONF_ENTRY_SETTINGS_WOOFER_NUMBER), ) await soundbar_device.update() domain_config.devices[entry.data.get(CONF_ENTRY_DEVICE_ID)] = DeviceConfig( diff --git a/custom_components/samsung_soundbar/api_extension/SoundbarDevice.py b/custom_components/samsung_soundbar/api_extension/SoundbarDevice.py index 8ad4280..f6d1b77 100644 --- a/custom_components/samsung_soundbar/api_extension/SoundbarDevice.py +++ b/custom_components/samsung_soundbar/api_extension/SoundbarDevice.py @@ -14,7 +14,15 @@ log = logging.getLogger(__name__) class SoundbarDevice: def __init__( - self, device: DeviceEntity, session, max_volume: int, device_name: str + self, + device: DeviceEntity, + session, + max_volume: int, + device_name: str, + enable_eq: bool = False, + enable_soundmode: bool = False, + enable_advanced_audio: bool = False, + enable_woofer: bool = False, ): self.device = device self._device_id = self.device.device_id @@ -22,17 +30,21 @@ class SoundbarDevice: self.__session = session self.__device_name = device_name + self.__enable_soundmode = enable_soundmode self.__supported_soundmodes = [] self.__active_soundmode = "" + self.__enable_woofer = enable_woofer self.__woofer_level = 0 self.__woofer_connection = "" + self.__enable_eq = enable_eq self.__active_eq_preset = "" self.__supported_eq_presets = [] self.__eq_action = "" self.__eq_bands = [] + self.__enable_advanced_audio = enable_advanced_audio self.__voice_amplifier = 0 self.__night_mode = 0 self.__bass_mode = 0 @@ -48,11 +60,14 @@ class SoundbarDevice: async def update(self): await self.device.status.refresh() - await self._update_media() - await self._update_soundmode() - await self._update_advanced_audio() - await self._update_woofer() - await self._update_equalizer() + if self.__enable_soundmode: + await self._update_soundmode() + if self.__enable_advanced_audio: + await self._update_advanced_audio() + if self.__enable_soundmode: + await self._update_woofer() + if self.__enable_eq: + await self._update_equalizer() async def _update_media(self): self.__media_artist = self.device.status._attributes["audioTrackData"].value[ @@ -70,14 +85,14 @@ class SoundbarDevice: async def _update_soundmode(self): await self.update_execution_data(["/sec/networkaudio/soundmode"]) - await asyncio.sleep(0.1) + await asyncio.sleep(1) payload = await self.get_execute_status() retry = 0 while ( "x.com.samsung.networkaudio.supportedSoundmode" not in payload and retry < 10 ): - await asyncio.sleep(0.2) + await asyncio.sleep(1) payload = await self.get_execute_status() retry += 1 if retry == 10: @@ -376,7 +391,8 @@ class SoundbarDevice: # ------------ SUPPORT FUNCTIONS ------------ async def update_execution_data(self, argument: str): - return await self.device.command("main", "execute", "execute", argument) + stuff = await self.device.command("main", "execute", "execute", argument) + return stuff async def set_custom_execution_data(self, href: str, property: str, value): argument = [href, {property: value}] @@ -386,8 +402,8 @@ class SoundbarDevice: url = f"https://api.smartthings.com/v1/devices/{self._device_id}/components/main/capabilities/execute/status" request_headers = {"Authorization": "Bearer " + self._api_key} resp = await self.__session.get(url, headers=request_headers) - dict = await resp.json() - return dict["data"]["value"]["payload"] + dict_stuff = await resp.json() + return dict_stuff["data"]["value"]["payload"] async def get_song_title_artwork(self, artist: str, title: str) -> str: """ diff --git a/custom_components/samsung_soundbar/config_flow.py b/custom_components/samsung_soundbar/config_flow.py index fa9cff1..fdd764a 100644 --- a/custom_components/samsung_soundbar/config_flow.py +++ b/custom_components/samsung_soundbar/config_flow.py @@ -1,4 +1,5 @@ import logging +from typing import Any import pysmartthings import voluptuous as vol @@ -7,8 +8,17 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession from pysmartthings import APIResponseError from voluptuous import All, Range -from .const import (CONF_ENTRY_API_KEY, CONF_ENTRY_DEVICE_ID, - CONF_ENTRY_DEVICE_NAME, CONF_ENTRY_MAX_VOLUME, DOMAIN) +from .const import ( + CONF_ENTRY_API_KEY, + CONF_ENTRY_DEVICE_ID, + CONF_ENTRY_DEVICE_NAME, + CONF_ENTRY_MAX_VOLUME, + CONF_ENTRY_SETTINGS_ADVANCED_AUDIO_SWITCHES, + CONF_ENTRY_SETTINGS_EQ_SELECTOR, + CONF_ENTRY_SETTINGS_SOUNDMODE_SELECTOR, + CONF_ENTRY_SETTINGS_WOOFER_NUMBER, + DOMAIN, +) _LOGGER = logging.getLogger(__name__) @@ -24,20 +34,8 @@ async def validate_input(api, device_id: str): class ExampleConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): async def async_step_user(self, user_input=None): if user_input is not None: - try: - session = async_get_clientsession(self.hass) - api = pysmartthings.SmartThings( - session, user_input.get(CONF_ENTRY_API_KEY) - ) - device = await validate_input(api, user_input.get(CONF_ENTRY_DEVICE_ID)) - - _LOGGER.debug( - f"Successfully validated Input, Creating entry with title {DOMAIN} and data {user_input}" - ) - return self.async_create_entry(title=DOMAIN, data=user_input) - except Exception as excp: - _LOGGER.error(f"The ConfigFlow triggered an exception {excp}") - return self.async_abort(reason="fetch_failed") + self.user_input = user_input + return await self.async_step_device() return self.async_show_form( step_id="user", @@ -46,7 +44,98 @@ class ExampleConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): vol.Required(CONF_ENTRY_API_KEY): str, vol.Required(CONF_ENTRY_DEVICE_ID): str, vol.Required(CONF_ENTRY_DEVICE_NAME): str, - vol.Required(CONF_ENTRY_MAX_VOLUME, default=100): All(int, Range(min=1, max=100)) + vol.Required(CONF_ENTRY_MAX_VOLUME, default=100): All( + int, Range(min=1, max=100) + ), } ), ) + + async def async_step_device(self, user_input: dict[str, any] | None = None): + if user_input is not None: + self.user_input.update(user_input) + + try: + session = async_get_clientsession(self.hass) + api = pysmartthings.SmartThings( + session, self.user_input.get(CONF_ENTRY_API_KEY) + ) + device = await validate_input( + api, self.user_input.get(CONF_ENTRY_DEVICE_ID) + ) + _LOGGER.debug( + f"Successfully validated Input, Creating entry with title {DOMAIN} and data {user_input}" + ) + except Exception as excp: + _LOGGER.error(f"The ConfigFlow triggered an exception {excp}") + return self.async_abort(reason="fetch_failed") + return self.async_create_entry(title=DOMAIN, data=self.user_input) + + return self.async_show_form( + step_id="device", + data_schema=vol.Schema( + { + vol.Required(CONF_ENTRY_SETTINGS_ADVANCED_AUDIO_SWITCHES): bool, + vol.Required(CONF_ENTRY_SETTINGS_EQ_SELECTOR): bool, + vol.Required(CONF_ENTRY_SETTINGS_SOUNDMODE_SELECTOR): bool, + vol.Required(CONF_ENTRY_SETTINGS_WOOFER_NUMBER): bool, + } + ), + ) + + async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None): + """Handle a reconfiguration flow initialized by the user.""" + self.config_entry = self.hass.config_entries.async_get_entry( + self.context["entry_id"] + ) + return await self.async_step_reconfigure_confirm() + + async def async_step_reconfigure_confirm( + self, user_input: dict[str, Any] | None = None + ): + """Handle a reconfiguration flow initialized by the user.""" + errors: dict[str, str] = {} + assert self.config_entry + + if user_input is not None: + return self.async_update_reload_and_abort( + self.config_entry, + data={**self.config_entry.data, **user_input}, + reason="reconfigure_successful", + ) + + return self.async_show_form( + step_id="reconfigure_confirm", + data_schema=vol.Schema( + { + vol.Required( + CONF_ENTRY_SETTINGS_ADVANCED_AUDIO_SWITCHES, + default=self.config_entry.data.get( + CONF_ENTRY_SETTINGS_ADVANCED_AUDIO_SWITCHES + ), + ): bool, + vol.Required( + CONF_ENTRY_SETTINGS_EQ_SELECTOR, + default=self.config_entry.data.get( + CONF_ENTRY_SETTINGS_EQ_SELECTOR + ), + ): bool, + vol.Required( + CONF_ENTRY_SETTINGS_SOUNDMODE_SELECTOR, + default=self.config_entry.data.get( + CONF_ENTRY_SETTINGS_SOUNDMODE_SELECTOR + ), + ): bool, + vol.Required( + CONF_ENTRY_SETTINGS_WOOFER_NUMBER, + default=self.config_entry.data.get( + CONF_ENTRY_SETTINGS_WOOFER_NUMBER + ), + ): bool, + vol.Required(CONF_ENTRY_MAX_VOLUME, default=100): All( + int, Range(min=1, max=100) + ), + } + ), + errors=errors, + ) diff --git a/custom_components/samsung_soundbar/const.py b/custom_components/samsung_soundbar/const.py index 61365a2..53988cd 100644 --- a/custom_components/samsung_soundbar/const.py +++ b/custom_components/samsung_soundbar/const.py @@ -9,6 +9,12 @@ CONF_ENTRY_API_KEY = "api_key" CONF_ENTRY_DEVICE_ID = "device_id" CONF_ENTRY_DEVICE_NAME = "device_name" CONF_ENTRY_MAX_VOLUME = "device_volume" + +CONF_ENTRY_SETTINGS_ADVANCED_AUDIO_SWITCHES = "settings_advanced_audio" +CONF_ENTRY_SETTINGS_EQ_SELECTOR = "settings_eq" +CONF_ENTRY_SETTINGS_SOUNDMODE_SELECTOR = "settings_soundmode" +CONF_ENTRY_SETTINGS_WOOFER_NUMBER = "settings_woofer" + DEFAULT_NAME = DOMAIN BUTTON = BUTTON_DOMAIN diff --git a/custom_components/samsung_soundbar/manifest.json b/custom_components/samsung_soundbar/manifest.json index 70a039f..ce93edd 100644 --- a/custom_components/samsung_soundbar/manifest.json +++ b/custom_components/samsung_soundbar/manifest.json @@ -8,5 +8,5 @@ "iot_class": "cloud_polling", "issue_tracker": "https://github.com/samuelspagl/ha_samsung_soundbar/issues", "requirements": ["pysmartthings"], - "version": "0.3.2" + "version": "0.4.0" } diff --git a/custom_components/samsung_soundbar/media_player.py b/custom_components/samsung_soundbar/media_player.py index 09a6109..d9cac32 100644 --- a/custom_components/samsung_soundbar/media_player.py +++ b/custom_components/samsung_soundbar/media_player.py @@ -1,16 +1,22 @@ import logging from typing import Any, Mapping -from homeassistant.components.media_player import (DEVICE_CLASS_SPEAKER, - MediaPlayerEntity) -from homeassistant.components.media_player.const import \ - MediaPlayerEntityFeature +from homeassistant.components.media_player import ( + DEVICE_CLASS_SPEAKER, + MediaPlayerEntity, +) +from homeassistant.components.media_player.const import MediaPlayerEntityFeature from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.entity import DeviceInfo, generate_entity_id from .api_extension.SoundbarDevice import SoundbarDevice -from .const import (CONF_ENTRY_API_KEY, CONF_ENTRY_DEVICE_ID, - CONF_ENTRY_DEVICE_NAME, CONF_ENTRY_MAX_VOLUME, DOMAIN) +from .const import ( + CONF_ENTRY_API_KEY, + CONF_ENTRY_DEVICE_ID, + CONF_ENTRY_DEVICE_NAME, + CONF_ENTRY_MAX_VOLUME, + DOMAIN, +) from .models import DeviceConfig _LOGGER = logging.getLogger(__name__) diff --git a/custom_components/samsung_soundbar/number.py b/custom_components/samsung_soundbar/number.py index 24e9830..a3bf264 100644 --- a/custom_components/samsung_soundbar/number.py +++ b/custom_components/samsung_soundbar/number.py @@ -1,12 +1,14 @@ import logging -from homeassistant.components.number import (NumberEntity, - NumberEntityDescription, - NumberMode) +from homeassistant.components.number import ( + NumberEntity, + NumberEntityDescription, + NumberMode, +) from homeassistant.helpers.entity import DeviceInfo from .api_extension.SoundbarDevice import SoundbarDevice -from .const import CONF_ENTRY_DEVICE_ID, DOMAIN +from .const import CONF_ENTRY_DEVICE_ID, CONF_ENTRY_SETTINGS_WOOFER_NUMBER, DOMAIN from .models import DeviceConfig _LOGGER = logging.getLogger(__name__) @@ -19,7 +21,9 @@ async def async_setup_entry(hass, config_entry, async_add_entities): for key in domain_data.devices: device_config: DeviceConfig = domain_data.devices[key] device = device_config.device - if device.device_id == config_entry.data.get(CONF_ENTRY_DEVICE_ID): + if device.device_id == config_entry.data.get( + CONF_ENTRY_DEVICE_ID + ) and config_entry.data.get(CONF_ENTRY_SETTINGS_WOOFER_NUMBER): entities.append( SoundbarWooferNumberEntity( device, diff --git a/custom_components/samsung_soundbar/select.py b/custom_components/samsung_soundbar/select.py index 2250595..9f96088 100644 --- a/custom_components/samsung_soundbar/select.py +++ b/custom_components/samsung_soundbar/select.py @@ -1,14 +1,20 @@ import logging -from homeassistant.components.number import (NumberEntity, - NumberEntityDescription, - NumberMode) -from homeassistant.components.select import (SelectEntity, - SelectEntityDescription) +from homeassistant.components.number import ( + NumberEntity, + NumberEntityDescription, + NumberMode, +) +from homeassistant.components.select import SelectEntity, SelectEntityDescription from homeassistant.helpers.entity import DeviceInfo from .api_extension.SoundbarDevice import SoundbarDevice -from .const import CONF_ENTRY_DEVICE_ID, DOMAIN +from .const import ( + CONF_ENTRY_DEVICE_ID, + CONF_ENTRY_SETTINGS_EQ_SELECTOR, + CONF_ENTRY_SETTINGS_SOUNDMODE_SELECTOR, + DOMAIN, +) from .models import DeviceConfig _LOGGER = logging.getLogger(__name__) @@ -21,12 +27,17 @@ async def async_setup_entry(hass, config_entry, async_add_entities): device_config: DeviceConfig = domain_data.devices[key] device = device_config.device if device.device_id == config_entry.data.get(CONF_ENTRY_DEVICE_ID): - entities.append( - EqPresetSelectEntity(device, "eq_preset", "mdi:tune-vertical") - ) - entities.append( - SoundModeSelectEntity(device, "sound_mode_preset", "mdi:surround-sound") - ) + if config_entry.data.get(CONF_ENTRY_SETTINGS_EQ_SELECTOR): + entities.append( + EqPresetSelectEntity(device, "eq_preset", "mdi:tune-vertical") + ) + if config_entry.data.get(CONF_ENTRY_SETTINGS_SOUNDMODE_SELECTOR): + entities.append( + SoundModeSelectEntity( + device, "sound_mode_preset", "mdi:surround-sound" + ) + ) + entities.append( InputSelectEntity(device, "input_preset", "mdi:video-input-hdmi") ) diff --git a/custom_components/samsung_soundbar/sensor.py b/custom_components/samsung_soundbar/sensor.py index 2f6c957..9749af8 100644 --- a/custom_components/samsung_soundbar/sensor.py +++ b/custom_components/samsung_soundbar/sensor.py @@ -1,7 +1,10 @@ import logging -from homeassistant.components.sensor import (SensorDeviceClass, SensorEntity, - SensorStateClass) +from homeassistant.components.sensor import ( + SensorDeviceClass, + SensorEntity, + SensorStateClass, +) from homeassistant.helpers.entity import DeviceInfo from .api_extension.SoundbarDevice import SoundbarDevice diff --git a/custom_components/samsung_soundbar/switch.py b/custom_components/samsung_soundbar/switch.py index 28b3a63..b83c361 100644 --- a/custom_components/samsung_soundbar/switch.py +++ b/custom_components/samsung_soundbar/switch.py @@ -4,7 +4,11 @@ from homeassistant.components.switch import SwitchEntity from homeassistant.helpers.entity import DeviceInfo from .api_extension.SoundbarDevice import SoundbarDevice -from .const import CONF_ENTRY_DEVICE_ID, DOMAIN +from .const import ( + CONF_ENTRY_DEVICE_ID, + CONF_ENTRY_SETTINGS_ADVANCED_AUDIO_SWITCHES, + DOMAIN, +) from .models import DeviceConfig _LOGGER = logging.getLogger(__name__) @@ -18,36 +22,37 @@ async def async_setup_entry(hass, config_entry, async_add_entities): device_config: DeviceConfig = domain_data.devices[key] device = device_config.device if device.device_id == config_entry.data.get(CONF_ENTRY_DEVICE_ID): - entities.append( - SoundbarSwitchAdvancedAudio( - device, - "nightmode", - lambda: device.night_mode, - device.set_night_mode, - device.set_night_mode, - "mdi:weather-night", + if config_entry.data.get(CONF_ENTRY_SETTINGS_ADVANCED_AUDIO_SWITCHES): + entities.append( + SoundbarSwitchAdvancedAudio( + device, + "nightmode", + lambda: device.night_mode, + device.set_night_mode, + device.set_night_mode, + "mdi:weather-night", + ) ) - ) - entities.append( - SoundbarSwitchAdvancedAudio( - device, - "bassmode", - lambda: device.bass_mode, - device.set_bass_mode, - device.set_bass_mode, - "mdi:speaker-wireless", + entities.append( + SoundbarSwitchAdvancedAudio( + device, + "bassmode", + lambda: device.bass_mode, + device.set_bass_mode, + device.set_bass_mode, + "mdi:speaker-wireless", + ) ) - ) - entities.append( - SoundbarSwitchAdvancedAudio( - device, - "voice_amplifier", - lambda: device.voice_amplifier, - device.set_voice_amplifier, - device.set_voice_amplifier, - "mdi:account-voice", + entities.append( + SoundbarSwitchAdvancedAudio( + device, + "voice_amplifier", + lambda: device.voice_amplifier, + device.set_voice_amplifier, + device.set_voice_amplifier, + "mdi:account-voice", + ) ) - ) async_add_entities(entities) return True diff --git a/custom_components/samsung_soundbar/translations/de.json b/custom_components/samsung_soundbar/translations/de.json index d08f903..6eb7da1 100644 --- a/custom_components/samsung_soundbar/translations/de.json +++ b/custom_components/samsung_soundbar/translations/de.json @@ -10,6 +10,27 @@ }, "description": "Bitte gib deine Daten ein.", "title": "Authentifizierung" + }, + "device":{ + "data" : { + "settings_advanced_audio": "'Advanced Audio switches' aktivieren (NightMode, BassMode, VoiceEnhancer)", + "settings_eq": "'EQ selector' aktivieren", + "settings_soundmode": "'Soundmode selector' aktivieren", + "settings_woofer": "'Subwoofer Entität' aktivieren" + }, + "description": "Einige Soundbars haben verschiedene Featuresets. Wähle bitte aus welche Features von deiner Soundbar supported werden (einsehbar in der SmartThings App).", + "title": "Geräte Einstellungen" + }, + "reconfigure_confirm":{ + "data" : { + "settings_advanced_audio": "'Advanced Audio switches' aktivieren (NightMode, BassMode, VoiceEnhancer)", + "settings_eq": "'EQ selector' aktivieren", + "settings_soundmode": "'Soundmode selector' aktivieren", + "settings_woofer": "'Subwoofer Entität' aktivieren", + "device_volume": "Max Volume (int)" + }, + "description": "Einige Soundbars haben verschiedene Featuresets. Wähle bitte aus welche Features von deiner Soundbar supported werden (einsehbar in der SmartThings App).", + "title": "Geräte Einstellungen" } } } diff --git a/custom_components/samsung_soundbar/translations/en.json b/custom_components/samsung_soundbar/translations/en.json index a73c197..82399ea 100644 --- a/custom_components/samsung_soundbar/translations/en.json +++ b/custom_components/samsung_soundbar/translations/en.json @@ -10,6 +10,27 @@ }, "description": "Please enter your credentials.", "title": "Authentication" + }, + "device":{ + "data" : { + "settings_advanced_audio": "Enable 'Advanced Audio switches' capabilities (NightMode, BassMode, VoiceEnhancer)", + "settings_eq": "Enable 'EQ selector' capabilities", + "settings_soundmode": "Enable 'Soundmode selector' capabilities", + "settings_woofer": "Enable 'Woofer number' capability" + }, + "description": "Some soundbars have a different featureset than others. Please the features supported by your soundbar (visible in the SmartThings App).", + "title": "Device Settings" + }, + "reconfigure_confirm":{ + "data" : { + "settings_advanced_audio": "Enable 'Advanced Audio switches' capabilities (NightMode, BassMode, VoiceEnhancer)", + "settings_eq": "Enable 'EQ selector' capabilities", + "settings_soundmode": "Enable 'Soundmode selector' capabilities", + "settings_woofer": "Enable 'Woofer number' capability", + "device_volume": "Max Volume (int)" + }, + "description": "Some soundbars have a different featureset than others. Please the features supported by your soundbar (visible in the SmartThings App).", + "title": "Device Settings" } } } diff --git a/hacs.json b/hacs.json index 67f8abb..e5e98f5 100644 --- a/hacs.json +++ b/hacs.json @@ -3,5 +3,5 @@ "filename": "samsung_soundbar.zip", "render_readme": true, "zip_release": true, - "homeassistant": "2024.1.0" + "homeassistant": "2024.3.0" } \ No newline at end of file