python-duco-connectivity 0.4.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.
Files changed (29) hide show
  1. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/PKG-INFO +9 -5
  2. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/README.md +8 -4
  3. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/pyproject.toml +1 -1
  4. python_duco_connectivity-0.5.0/src/duco_connectivity/__init__.py +235 -0
  5. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/src/duco_connectivity/client.py +378 -54
  6. python_duco_connectivity-0.5.0/src/duco_connectivity/models.py +1597 -0
  7. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/PKG-INFO +9 -5
  8. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/tests/test_api_reference.py +2 -0
  9. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/tests/test_client.py +536 -2
  10. python_duco_connectivity-0.5.0/tests/test_models.py +890 -0
  11. python_duco_connectivity-0.4.0/src/duco_connectivity/__init__.py +0 -123
  12. python_duco_connectivity-0.4.0/src/duco_connectivity/models.py +0 -588
  13. python_duco_connectivity-0.4.0/tests/test_models.py +0 -423
  14. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/LICENSE +0 -0
  15. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/setup.cfg +0 -0
  16. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/src/duco_connectivity/__main__.py +0 -0
  17. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/src/duco_connectivity/cli.py +0 -0
  18. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/src/duco_connectivity/exceptions.py +0 -0
  19. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/src/duco_connectivity/py.typed +0 -0
  20. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/SOURCES.txt +0 -0
  21. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/dependency_links.txt +0 -0
  22. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/entry_points.txt +0 -0
  23. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/requires.txt +0 -0
  24. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/src/python_duco_connectivity.egg-info/top_level.txt +0 -0
  25. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/tests/test_cli.py +0 -0
  26. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/tests/test_exceptions.py +0 -0
  27. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/tests/test_local_sample_validation.py +0 -0
  28. {python_duco_connectivity-0.4.0 → python_duco_connectivity-0.5.0}/tests/test_pytest_live_support.py +0 -0
  29. {python_duco_connectivity-0.4.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.4.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 broader raw
112
- escape hatches. Use the typed methods when the model already matches the data
113
- you need, and use the raw helpers when you need endpoint coverage that has not
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 broader raw
80
- escape hatches. Use the typed methods when the model already matches the data
81
- you need, and use the raw helpers when you need endpoint coverage that has not
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
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-duco-connectivity"
7
- version = "0.4.0"
7
+ version = "0.5.0"
8
8
  description = "Async HTTP client for the local Duco Connectivity API"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -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
+ ]