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.
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/PKG-INFO +1 -1
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/pyproject.toml +1 -1
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/__init__.py +1 -1
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/api_base.py +11 -2
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/device.py +4 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl.egg-info/PKG-INFO +1 -1
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/LICENSE +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/README.md +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/setup.cfg +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/tests/test_event_bus.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/tests/test_integration.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/tests/test_settings.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/tests/test_zone.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/api_alpha.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/api_bravo.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/core.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/data_structure.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/decorators.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/discovery.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/event_bus.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/exceptions.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/group.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/io.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/settings.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/track.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/transport.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/utils.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl/zone.py +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl.egg-info/SOURCES.txt +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl.egg-info/dependency_links.txt +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl.egg-info/requires.txt +0 -0
- {vsslctrl-0.1.13.dev1 → vsslctrl-0.1.14.dev1}/vsslctrl.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "vsslctrl"
|
|
7
|
-
version = "0.1.
|
|
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" },
|
|
@@ -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.
|
|
171
|
-
|
|
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
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|