python-swidget 1.4.16__tar.gz → 1.4.17__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.
- {python_swidget-1.4.16 → python_swidget-1.4.17}/PKG-INFO +1 -1
- {python_swidget-1.4.16 → python_swidget-1.4.17}/pyproject.toml +1 -1
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/swidgetdevice.py +18 -5
- {python_swidget-1.4.16 → python_swidget-1.4.17}/README.md +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/__init__.py +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/cli.py +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/discovery.py +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/exceptions.py +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/provision.py +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/py.typed +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/swidgetdimmer.py +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/swidgetfan.py +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/swidgetoutlet.py +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/swidgetswitch.py +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/swidgettimerswitch.py +0 -0
- {python_swidget-1.4.16 → python_swidget-1.4.17}/swidget/websocket.py +0 -0
|
@@ -1004,14 +1004,27 @@ class SwidgetAssembly:
|
|
|
1004
1004
|
class SwidgetComponent:
|
|
1005
1005
|
"""Component-level representation of a Swidget Assembly.
|
|
1006
1006
|
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1007
|
+
``summary_functions`` is the immutable list of function tags the
|
|
1008
|
+
device declared in its summary — this is the schema. ``functions``
|
|
1009
|
+
starts as a same-keyed dict of placeholder ``None`` values and is
|
|
1010
|
+
later mutated by ``process_state`` to carry live datapoint values.
|
|
1011
|
+
|
|
1012
|
+
Process_state also leaks in keys that aren't in the summary
|
|
1013
|
+
functions list (e.g. fans emit a ``modules`` map in state that
|
|
1014
|
+
isn't a declared function tag), so ``functions.keys()`` is *not*
|
|
1015
|
+
schema-stable across summary refreshes. Anything that needs a
|
|
1016
|
+
stable schema fingerprint (entity wiring, structure-change
|
|
1017
|
+
detection) must read ``summary_functions``, not ``functions``.
|
|
1018
|
+
|
|
1019
|
+
``max_cfm``, ``model_code`` and ``modules`` come from the optional
|
|
1020
|
+
summary-level fields fan hosts emit alongside ``functions`` —
|
|
1021
|
+
non-fan components don't populate them.
|
|
1011
1022
|
"""
|
|
1012
1023
|
|
|
1013
1024
|
def __init__(self, component):
|
|
1014
|
-
|
|
1025
|
+
funcs = list(component.get("functions", []))
|
|
1026
|
+
self.summary_functions: tuple[str, ...] = tuple(funcs)
|
|
1027
|
+
self.functions = {f: None for f in funcs}
|
|
1015
1028
|
self.max_cfm = component.get("maxCFM")
|
|
1016
1029
|
self.model_code = component.get("code")
|
|
1017
1030
|
self.modules = list(component.get("modules", []))
|
|
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
|