vsslctrl 0.1.13.dev1__tar.gz → 0.1.14.dev1__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 (32) hide show
  1. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/PKG-INFO +1 -1
  2. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/pyproject.toml +1 -1
  3. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/__init__.py +1 -1
  4. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/api_base.py +11 -2
  5. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/device.py +4 -0
  6. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl.egg-info/PKG-INFO +1 -1
  7. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/LICENSE +0 -0
  8. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/README.md +0 -0
  9. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/setup.cfg +0 -0
  10. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/tests/test_event_bus.py +0 -0
  11. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/tests/test_integration.py +0 -0
  12. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/tests/test_settings.py +0 -0
  13. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/tests/test_zone.py +0 -0
  14. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/api_alpha.py +0 -0
  15. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/api_bravo.py +0 -0
  16. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/core.py +0 -0
  17. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/data_structure.py +0 -0
  18. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/decorators.py +0 -0
  19. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/discovery.py +0 -0
  20. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/event_bus.py +0 -0
  21. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/exceptions.py +0 -0
  22. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/group.py +0 -0
  23. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/io.py +0 -0
  24. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/settings.py +0 -0
  25. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/track.py +0 -0
  26. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/transport.py +0 -0
  27. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/utils.py +0 -0
  28. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/zone.py +0 -0
  29. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl.egg-info/SOURCES.txt +0 -0
  30. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl.egg-info/dependency_links.txt +0 -0
  31. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl.egg-info/requires.txt +0 -0
  32. {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: vsslctrl
3
- Version: 0.1.13.dev1
3
+ Version: 0.1.14.dev1
4
4
  Summary: Package for controlling VSSL's range of streaming amplifiers
5
5
  Author-email: vsslctrl <vsslcontrolled@proton.me>
6
6
  Classifier: Development Status :: 4 - Beta
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "vsslctrl"
7
- version = "0.1.13.dev1"
7
+ version = "0.1.14.dev1"
8
8
  description = "Package for controlling VSSL's range of streaming amplifiers"
9
9
  authors = [
10
10
  { name="vsslctrl", email="vsslcontrolled@proton.me" },
@@ -1,4 +1,4 @@
1
- VSSL_VERSION = "0.1.13.dev1"
1
+ VSSL_VERSION = "0.1.14.dev1"
2
2
  VSSL_NAME = "VSSL"
3
3
 
4
4
  from .core import Vssl
@@ -166,9 +166,14 @@ class APIBase(ABC):
166
166
 
167
167
  if self._writer:
168
168
  try:
169
+ # If there's unsent data in the buffer, wait_closed() might hang.
170
+ # Fix: Call await self._writer.drain() before closing to ensure all data is sent
171
+ await self._writer.drain()
172
+
169
173
  # Writer hangs on disconnect sometimes
170
- self._writer.close()
171
- await asyncio.wait_for(self._writer.wait_closed(), self.TIMEOUT)
174
+ if not self._writer.is_closing():
175
+ self._writer.close()
176
+ await asyncio.wait_for(self._writer.wait_closed(), self.TIMEOUT)
172
177
 
173
178
  except asyncio.CancelledError:
174
179
  self._log_debug(f"writer close timeout")
@@ -182,6 +187,10 @@ class APIBase(ABC):
182
187
  self._log_error(f"Unexpected error occurred while disconnecting: {e}")
183
188
  # Handle unexpected errors
184
189
  finally:
190
+ # If nothing works, you may need to forcefully close the socket:
191
+ # if hasattr(self._writer, 'transport'):
192
+ # self._writer.transport.close()
193
+
185
194
  self._writer = None
186
195
 
187
196
  self._reader = None
@@ -322,6 +322,10 @@ class Models(VsslEnum):
322
322
 
323
323
  @classmethod
324
324
  def get_model_by_name(cls, name):
325
+ # Return None immediately if input is None
326
+ if name is None:
327
+ return None
328
+
325
329
  # Preprocess input name: convert to lowercase and remove dots
326
330
  name_cleaned = name.lower().replace(".", "")
327
331
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: vsslctrl
3
- Version: 0.1.13.dev1
3
+ Version: 0.1.14.dev1
4
4
  Summary: Package for controlling VSSL's range of streaming amplifiers
5
5
  Author-email: vsslctrl <vsslcontrolled@proton.me>
6
6
  Classifier: Development Status :: 4 - Beta
File without changes
File without changes
File without changes