python-duco-connectivity 0.3.0__tar.gz → 0.5.0__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_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/PKG-INFO +9 -5
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/README.md +8 -4
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/pyproject.toml +1 -1
- python_duco_connectivity-0.5.0/src/duco_connectivity/__init__.py +235 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/src/duco_connectivity/client.py +387 -58
- python_duco_connectivity-0.5.0/src/duco_connectivity/exceptions.py +53 -0
- python_duco_connectivity-0.5.0/src/duco_connectivity/models.py +1597 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/PKG-INFO +9 -5
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/tests/test_api_reference.py +2 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/tests/test_client.py +558 -6
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/tests/test_exceptions.py +29 -0
- python_duco_connectivity-0.5.0/tests/test_models.py +890 -0
- python_duco_connectivity-0.3.0/src/duco_connectivity/__init__.py +0 -121
- python_duco_connectivity-0.3.0/src/duco_connectivity/exceptions.py +0 -24
- python_duco_connectivity-0.3.0/src/duco_connectivity/models.py +0 -588
- python_duco_connectivity-0.3.0/tests/test_models.py +0 -423
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/LICENSE +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/setup.cfg +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/src/duco_connectivity/__main__.py +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/src/duco_connectivity/cli.py +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/src/duco_connectivity/py.typed +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/SOURCES.txt +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/dependency_links.txt +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/entry_points.txt +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/requires.txt +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/top_level.txt +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/tests/test_cli.py +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/tests/test_local_sample_validation.py +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/tests/test_pytest_live_support.py +0 -0
- {python_duco_connectivity-0.3.0 → python_duco_connectivity-0.5.0}/tests/test_replay_helpers.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-duco-connectivity
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Async HTTP client for the local Duco Connectivity API
|
|
5
5
|
Author: Ronald van der Meer
|
|
6
6
|
License-Expression: MIT
|
|
@@ -62,6 +62,7 @@ in the development examples below.
|
|
|
62
62
|
|
|
63
63
|
- HTTP only
|
|
64
64
|
- asynchronous communication via `aiohttp`
|
|
65
|
+
- typed stable config families for the documented `/config` branches
|
|
65
66
|
- typed models that stay close to the API response shape
|
|
66
67
|
- preserved `raw_payload` data on typed response models for forward compatibility
|
|
67
68
|
|
|
@@ -102,16 +103,19 @@ public client methods, exports, compatibility aliases, and construction rules.
|
|
|
102
103
|
captures
|
|
103
104
|
- `docs/actions.md` for action discovery and execution
|
|
104
105
|
- `docs/nodes.md` for node models and node information readers
|
|
106
|
+
- `docs/public-api-boundaries.md` for the typed-model contract and raw escape
|
|
107
|
+
hatch boundaries
|
|
105
108
|
- `docs/zones.md` for zone and group info and config readers
|
|
106
109
|
- `docs/ventilation-states.md` for ventilation enum values and compatibility
|
|
107
110
|
members
|
|
108
111
|
- `docs/payload-preservation.md` for raw payload preservation and raw endpoint
|
|
109
112
|
access
|
|
110
113
|
|
|
111
|
-
The public surface keeps a split between stable typed readers and
|
|
112
|
-
escape hatches. Use the typed methods when the model already
|
|
113
|
-
you need, and use the raw helpers when you need endpoint
|
|
114
|
-
been typed yet.
|
|
114
|
+
The public surface keeps a deliberate split between stable typed readers and
|
|
115
|
+
broader raw escape hatches. Use the typed methods when the model already
|
|
116
|
+
matches the data you need, and use the raw helpers when you need endpoint
|
|
117
|
+
coverage, selector flexibility, or payload fields that have not been typed yet.
|
|
118
|
+
See `docs/public-api-boundaries.md` for the full contract.
|
|
115
119
|
|
|
116
120
|
## Testing strategy
|
|
117
121
|
|
|
@@ -30,6 +30,7 @@ in the development examples below.
|
|
|
30
30
|
|
|
31
31
|
- HTTP only
|
|
32
32
|
- asynchronous communication via `aiohttp`
|
|
33
|
+
- typed stable config families for the documented `/config` branches
|
|
33
34
|
- typed models that stay close to the API response shape
|
|
34
35
|
- preserved `raw_payload` data on typed response models for forward compatibility
|
|
35
36
|
|
|
@@ -70,16 +71,19 @@ public client methods, exports, compatibility aliases, and construction rules.
|
|
|
70
71
|
captures
|
|
71
72
|
- `docs/actions.md` for action discovery and execution
|
|
72
73
|
- `docs/nodes.md` for node models and node information readers
|
|
74
|
+
- `docs/public-api-boundaries.md` for the typed-model contract and raw escape
|
|
75
|
+
hatch boundaries
|
|
73
76
|
- `docs/zones.md` for zone and group info and config readers
|
|
74
77
|
- `docs/ventilation-states.md` for ventilation enum values and compatibility
|
|
75
78
|
members
|
|
76
79
|
- `docs/payload-preservation.md` for raw payload preservation and raw endpoint
|
|
77
80
|
access
|
|
78
81
|
|
|
79
|
-
The public surface keeps a split between stable typed readers and
|
|
80
|
-
escape hatches. Use the typed methods when the model already
|
|
81
|
-
you need, and use the raw helpers when you need endpoint
|
|
82
|
-
been typed yet.
|
|
82
|
+
The public surface keeps a deliberate split between stable typed readers and
|
|
83
|
+
broader raw escape hatches. Use the typed methods when the model already
|
|
84
|
+
matches the data you need, and use the raw helpers when you need endpoint
|
|
85
|
+
coverage, selector flexibility, or payload fields that have not been typed yet.
|
|
86
|
+
See `docs/public-api-boundaries.md` for the full contract.
|
|
83
87
|
|
|
84
88
|
## Testing strategy
|
|
85
89
|
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"""Public package exports for python-duco-connectivity."""
|
|
2
|
+
|
|
3
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
4
|
+
|
|
5
|
+
from .client import DucoClient
|
|
6
|
+
from .exceptions import (
|
|
7
|
+
DucoConnectionError,
|
|
8
|
+
DucoError,
|
|
9
|
+
DucoRateLimitError,
|
|
10
|
+
DucoResponseError,
|
|
11
|
+
DucoWriteLimitError,
|
|
12
|
+
)
|
|
13
|
+
from .models import (
|
|
14
|
+
Action,
|
|
15
|
+
ActionEnumValue,
|
|
16
|
+
ActionItem,
|
|
17
|
+
ActionItemList,
|
|
18
|
+
ActionName,
|
|
19
|
+
ActionNode,
|
|
20
|
+
ActionResult,
|
|
21
|
+
ActionResultStatus,
|
|
22
|
+
ActionValueType,
|
|
23
|
+
ApiEndpoint,
|
|
24
|
+
ApiEndpointInfo,
|
|
25
|
+
ApiInfo,
|
|
26
|
+
BoardInfo,
|
|
27
|
+
BoardName,
|
|
28
|
+
Config,
|
|
29
|
+
ConfigAutoRebootComm,
|
|
30
|
+
ConfigGeneral,
|
|
31
|
+
ConfigGeneralSubmoduleSelector,
|
|
32
|
+
ConfigGroup,
|
|
33
|
+
ConfigGroupStruct,
|
|
34
|
+
ConfigHeatRecovery,
|
|
35
|
+
ConfigHeatRecoveryBypass,
|
|
36
|
+
ConfigHeatRecoverySubmoduleSelector,
|
|
37
|
+
ConfigLan,
|
|
38
|
+
ConfigModbus,
|
|
39
|
+
ConfigModuleSelector,
|
|
40
|
+
ConfigNode,
|
|
41
|
+
ConfigNodeOverview,
|
|
42
|
+
ConfigNodeStruct,
|
|
43
|
+
ConfigSection,
|
|
44
|
+
ConfigTime,
|
|
45
|
+
ConfigValue,
|
|
46
|
+
ConfigValueOptions,
|
|
47
|
+
ConfigValueString,
|
|
48
|
+
ConfigZone,
|
|
49
|
+
ConfigZonesOverview,
|
|
50
|
+
ConfigZoneStruct,
|
|
51
|
+
ConfigZoneWithGroupStruct,
|
|
52
|
+
DeviceGroupConfigSubmoduleSelector,
|
|
53
|
+
DiagComponent,
|
|
54
|
+
DiagStatus,
|
|
55
|
+
DucoSerialNumber,
|
|
56
|
+
DucoVersion,
|
|
57
|
+
HostName,
|
|
58
|
+
InfoGeneralSubmoduleSelector,
|
|
59
|
+
InfoGroup,
|
|
60
|
+
InfoGroupStruct,
|
|
61
|
+
InfoModuleSelector,
|
|
62
|
+
InfoZone,
|
|
63
|
+
InfoZoneGroup,
|
|
64
|
+
InfoZonesOverview,
|
|
65
|
+
InfoZoneStruct,
|
|
66
|
+
IpAddress,
|
|
67
|
+
KnownActionName,
|
|
68
|
+
KnownBoardName,
|
|
69
|
+
KnownLanMode,
|
|
70
|
+
LanInfo,
|
|
71
|
+
LanMode,
|
|
72
|
+
MacAddress,
|
|
73
|
+
NetworkType,
|
|
74
|
+
Node,
|
|
75
|
+
NodeActionItemList,
|
|
76
|
+
NodeAirQualityIndex,
|
|
77
|
+
NodeAssociationId,
|
|
78
|
+
NodeCo2Ppm,
|
|
79
|
+
NodeGeneralInfo,
|
|
80
|
+
NodeIdentify,
|
|
81
|
+
NodeInfoModuleSelector,
|
|
82
|
+
NodeListActionItemList,
|
|
83
|
+
NodeMotorDeviceType,
|
|
84
|
+
NodeMotorPosition,
|
|
85
|
+
NodeMotorRequest,
|
|
86
|
+
NodeMotorStateInfo,
|
|
87
|
+
NodeName,
|
|
88
|
+
NodeOverview,
|
|
89
|
+
NodeParentId,
|
|
90
|
+
NodeRelativeHumidity,
|
|
91
|
+
NodeSensorInfo,
|
|
92
|
+
NodeSubtype,
|
|
93
|
+
NodeTemperature,
|
|
94
|
+
NodeType,
|
|
95
|
+
NodeVentilationInfo,
|
|
96
|
+
PatchConfig,
|
|
97
|
+
PatchConfigAutoRebootComm,
|
|
98
|
+
PatchConfigGeneral,
|
|
99
|
+
PatchConfigHeatRecovery,
|
|
100
|
+
PatchConfigHeatRecoveryBypass,
|
|
101
|
+
PatchConfigLan,
|
|
102
|
+
PatchConfigModbus,
|
|
103
|
+
PatchConfigModel,
|
|
104
|
+
PatchConfigNodeStruct,
|
|
105
|
+
PatchConfigNodeValue,
|
|
106
|
+
PatchConfigTime,
|
|
107
|
+
PatchConfigValue,
|
|
108
|
+
PatchConfigZoneDeviceGroupConfig,
|
|
109
|
+
PatchConfigZoneGeneral,
|
|
110
|
+
PatchConfigZoneStruct,
|
|
111
|
+
VentilationFlowLevelTarget,
|
|
112
|
+
VentilationMode,
|
|
113
|
+
VentilationState,
|
|
114
|
+
VentilationTimeEnd,
|
|
115
|
+
VentilationTimeRemaining,
|
|
116
|
+
ZoneModuleSelector,
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
try:
|
|
120
|
+
__version__ = version("python-duco-connectivity")
|
|
121
|
+
except PackageNotFoundError:
|
|
122
|
+
__version__ = "0.0.0"
|
|
123
|
+
|
|
124
|
+
__all__ = [
|
|
125
|
+
"Action",
|
|
126
|
+
"ActionEnumValue",
|
|
127
|
+
"ActionItem",
|
|
128
|
+
"ActionItemList",
|
|
129
|
+
"ActionName",
|
|
130
|
+
"ActionNode",
|
|
131
|
+
"ActionResult",
|
|
132
|
+
"ActionResultStatus",
|
|
133
|
+
"ActionValueType",
|
|
134
|
+
"ApiEndpoint",
|
|
135
|
+
"ApiEndpointInfo",
|
|
136
|
+
"ApiInfo",
|
|
137
|
+
"BoardName",
|
|
138
|
+
"BoardInfo",
|
|
139
|
+
"ConfigAutoRebootComm",
|
|
140
|
+
"Config",
|
|
141
|
+
"ConfigGeneral",
|
|
142
|
+
"ConfigGeneralSubmoduleSelector",
|
|
143
|
+
"ConfigGroup",
|
|
144
|
+
"ConfigGroupStruct",
|
|
145
|
+
"ConfigHeatRecovery",
|
|
146
|
+
"ConfigHeatRecoveryBypass",
|
|
147
|
+
"ConfigHeatRecoverySubmoduleSelector",
|
|
148
|
+
"ConfigLan",
|
|
149
|
+
"ConfigModbus",
|
|
150
|
+
"ConfigModuleSelector",
|
|
151
|
+
"ConfigNode",
|
|
152
|
+
"ConfigNodeOverview",
|
|
153
|
+
"ConfigNodeStruct",
|
|
154
|
+
"ConfigSection",
|
|
155
|
+
"ConfigTime",
|
|
156
|
+
"ConfigZone",
|
|
157
|
+
"ConfigZoneWithGroupStruct",
|
|
158
|
+
"ConfigZonesOverview",
|
|
159
|
+
"ConfigZoneStruct",
|
|
160
|
+
"ConfigValue",
|
|
161
|
+
"ConfigValueOptions",
|
|
162
|
+
"ConfigValueString",
|
|
163
|
+
"DeviceGroupConfigSubmoduleSelector",
|
|
164
|
+
"DucoClient",
|
|
165
|
+
"DucoConnectionError",
|
|
166
|
+
"DucoError",
|
|
167
|
+
"DucoRateLimitError",
|
|
168
|
+
"DucoResponseError",
|
|
169
|
+
"DucoSerialNumber",
|
|
170
|
+
"DucoWriteLimitError",
|
|
171
|
+
"DiagComponent",
|
|
172
|
+
"DiagStatus",
|
|
173
|
+
"DucoVersion",
|
|
174
|
+
"HostName",
|
|
175
|
+
"InfoGroup",
|
|
176
|
+
"InfoGeneralSubmoduleSelector",
|
|
177
|
+
"InfoGroupStruct",
|
|
178
|
+
"InfoModuleSelector",
|
|
179
|
+
"InfoZone",
|
|
180
|
+
"InfoZoneGroup",
|
|
181
|
+
"InfoZonesOverview",
|
|
182
|
+
"InfoZoneStruct",
|
|
183
|
+
"IpAddress",
|
|
184
|
+
"KnownActionName",
|
|
185
|
+
"KnownBoardName",
|
|
186
|
+
"KnownLanMode",
|
|
187
|
+
"LanInfo",
|
|
188
|
+
"LanMode",
|
|
189
|
+
"MacAddress",
|
|
190
|
+
"NetworkType",
|
|
191
|
+
"Node",
|
|
192
|
+
"NodeAirQualityIndex",
|
|
193
|
+
"NodeAssociationId",
|
|
194
|
+
"NodeActionItemList",
|
|
195
|
+
"NodeCo2Ppm",
|
|
196
|
+
"NodeGeneralInfo",
|
|
197
|
+
"NodeIdentify",
|
|
198
|
+
"NodeInfoModuleSelector",
|
|
199
|
+
"NodeListActionItemList",
|
|
200
|
+
"NodeMotorDeviceType",
|
|
201
|
+
"NodeMotorStateInfo",
|
|
202
|
+
"NodeMotorPosition",
|
|
203
|
+
"NodeMotorRequest",
|
|
204
|
+
"NodeName",
|
|
205
|
+
"NodeOverview",
|
|
206
|
+
"NodeParentId",
|
|
207
|
+
"NodeRelativeHumidity",
|
|
208
|
+
"NodeSensorInfo",
|
|
209
|
+
"NodeSubtype",
|
|
210
|
+
"NodeTemperature",
|
|
211
|
+
"NodeType",
|
|
212
|
+
"NodeVentilationInfo",
|
|
213
|
+
"PatchConfig",
|
|
214
|
+
"PatchConfigAutoRebootComm",
|
|
215
|
+
"PatchConfigGeneral",
|
|
216
|
+
"PatchConfigHeatRecovery",
|
|
217
|
+
"PatchConfigHeatRecoveryBypass",
|
|
218
|
+
"PatchConfigLan",
|
|
219
|
+
"PatchConfigModel",
|
|
220
|
+
"PatchConfigModbus",
|
|
221
|
+
"PatchConfigNodeStruct",
|
|
222
|
+
"PatchConfigNodeValue",
|
|
223
|
+
"PatchConfigTime",
|
|
224
|
+
"PatchConfigValue",
|
|
225
|
+
"PatchConfigZoneDeviceGroupConfig",
|
|
226
|
+
"PatchConfigZoneGeneral",
|
|
227
|
+
"PatchConfigZoneStruct",
|
|
228
|
+
"VentilationFlowLevelTarget",
|
|
229
|
+
"VentilationMode",
|
|
230
|
+
"VentilationState",
|
|
231
|
+
"VentilationTimeEnd",
|
|
232
|
+
"VentilationTimeRemaining",
|
|
233
|
+
"ZoneModuleSelector",
|
|
234
|
+
"__version__",
|
|
235
|
+
]
|