casambi-bt-revamped 0.3.7.dev14__tar.gz → 0.3.8.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. {casambi_bt_revamped-0.3.7.dev14/src/casambi_bt_revamped.egg-info → casambi_bt_revamped-0.3.8.dev2}/PKG-INFO +1 -1
  2. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/setup.cfg +1 -1
  3. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/_client.py +27 -13
  4. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2/src/casambi_bt_revamped.egg-info}/PKG-INFO +1 -1
  5. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/LICENSE +0 -0
  6. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/README.md +0 -0
  7. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/pyproject.toml +0 -0
  8. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/__init__.py +0 -0
  9. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/_cache.py +0 -0
  10. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/_casambi.py +0 -0
  11. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/_constants.py +0 -0
  12. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/_discover.py +0 -0
  13. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/_encryption.py +0 -0
  14. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/_keystore.py +0 -0
  15. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/_network.py +0 -0
  16. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/_operation.py +0 -0
  17. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/_unit.py +0 -0
  18. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/errors.py +0 -0
  19. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/CasambiBt/py.typed +0 -0
  20. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/casambi_bt_revamped.egg-info/SOURCES.txt +0 -0
  21. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/casambi_bt_revamped.egg-info/dependency_links.txt +0 -0
  22. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/casambi_bt_revamped.egg-info/requires.txt +0 -0
  23. {casambi_bt_revamped-0.3.7.dev14 → casambi_bt_revamped-0.3.8.dev2}/src/casambi_bt_revamped.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: casambi-bt-revamped
3
- Version: 0.3.7.dev14
3
+ Version: 0.3.8.dev2
4
4
  Summary: Enhanced Casambi Bluetooth client library with switch event support
5
5
  Home-page: https://github.com/rankjie/casambi-bt
6
6
  Author: rankjie
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = casambi-bt-revamped
3
- version = 0.3.7.dev14
3
+ version = 0.3.8.dev2
4
4
  author = rankjie
5
5
  author_email = rankjie@gmail.com
6
6
  description = Enhanced Casambi Bluetooth client library with switch event support
@@ -233,18 +233,23 @@ class CasambiClient:
233
233
  self._callbackQueue.put_nowait((handle, data))
234
234
 
235
235
  async def _processCallbacks(self) -> None:
236
- while True:
237
- handle, data = await self._callbackQueue.get()
238
-
239
- # Try to loose any races here.
240
- # Otherwise a state change caused by the last packet might not have been handled yet
241
- await asyncio.sleep(0.001)
242
- await self._activityLock.acquire()
243
- try:
244
- self._callbackMulitplexer(handle, data)
245
- finally:
246
- self._callbackQueue.task_done()
247
- self._activityLock.release()
236
+ try:
237
+ while True:
238
+ handle, data = await self._callbackQueue.get()
239
+
240
+ # Try to loose any races here.
241
+ # Otherwise a state change caused by the last packet might not have been handled yet
242
+ await asyncio.sleep(0.001)
243
+ await self._activityLock.acquire()
244
+ try:
245
+ self._callbackMulitplexer(handle, data)
246
+ finally:
247
+ self._callbackQueue.task_done()
248
+ self._activityLock.release()
249
+ except asyncio.CancelledError:
250
+ # Task cancelled during shutdown; log at debug and exit cleanly.
251
+ self._logger.debug("Callback processing task cancelled during shutdown.")
252
+ raise
248
253
 
249
254
  def _callbackMulitplexer(
250
255
  self, handle: BleakGATTCharacteristic, data: bytes
@@ -759,8 +764,17 @@ class CasambiClient:
759
764
  self._logger.info("Disconnecting...")
760
765
 
761
766
  if self._callbackTask is not None:
767
+ # Cancel and await the background callback task to avoid
768
+ # 'Task was destroyed but it is pending' warnings.
762
769
  self._callbackTask.cancel()
763
- self._callbackTask = None
770
+ try:
771
+ await self._callbackTask
772
+ except asyncio.CancelledError:
773
+ pass
774
+ except Exception:
775
+ self._logger.debug("Callback task finished with exception during disconnect.", exc_info=True)
776
+ finally:
777
+ self._callbackTask = None
764
778
 
765
779
  if self._gattClient is not None and self._gattClient.is_connected:
766
780
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: casambi-bt-revamped
3
- Version: 0.3.7.dev14
3
+ Version: 0.3.8.dev2
4
4
  Summary: Enhanced Casambi Bluetooth client library with switch event support
5
5
  Home-page: https://github.com/rankjie/casambi-bt
6
6
  Author: rankjie