DLMS-SPODES-client 0.19.28__py3-none-any.whl → 0.19.30__py3-none-any.whl

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.
@@ -928,7 +928,7 @@ class NonInit:
928
928
  class MapTypeCreator:
929
929
  adapter: Adapter
930
930
  lock: asyncio.Lock
931
- con: dict[[IDSAP], CreateType]
931
+ con: dict[IDSAP, CreateType]
932
932
 
933
933
  def __init__(self, adapter: Adapter):
934
934
  self.adapter = adapter
@@ -961,7 +961,7 @@ class MapTypeCreator:
961
961
  self.adapter.set_collection(res.value)
962
962
  res.value, err = res.value.copy().unpack()
963
963
  if err is not None:
964
- res.extend_err(err)
964
+ res.append_err(err)
965
965
  return res
966
966
 
967
967
 
@@ -1240,6 +1240,43 @@ class Write2(SimpleCopy, OK):
1240
1240
  return result.OK
1241
1241
 
1242
1242
 
1243
+ @dataclass(frozen=True)
1244
+ class SetBits(SimpleCopy, OK):
1245
+ """set bits by pattern"""
1246
+ par: Parameter
1247
+ pattern: dict[int, int]
1248
+ msg: str = "set bits"
1249
+
1250
+ async def exchange(self, c: Client) -> result.Ok | result.Error:
1251
+ if isinstance(res_obj := c.objects.par2obj(self.par), result.Error):
1252
+ return res_obj
1253
+ if isinstance(res_read := await Par2Data[cdt.Digital | cdt.BitString](self.par.attr).exchange(c), result.Error):
1254
+ return res_read
1255
+ data = res_read.value
1256
+ for el in self.par.elements():
1257
+ data = data[el]
1258
+ if isinstance(data, cdt.Digital):
1259
+ data_int = int(data)
1260
+ for pos, val in self.pattern.items():
1261
+ data_int = (data_int | (1 << pos)) if val else (data_int & ~(1 << pos))
1262
+ data.set(data_int)
1263
+ elif isinstance(data, cdt.BitString):
1264
+ for pos, val in self.pattern.items():
1265
+ try:
1266
+ data[pos] = val
1267
+ except IndexError as e:
1268
+ return result.Error.from_e(ValueError(f"can't set bit {pos} in {self.par}"))
1269
+ else:
1270
+ return result.Error.from_e(TypeError(f"{self.par} not available SetBits"))
1271
+ c.get_set_request_normal(
1272
+ obj=res_obj.value,
1273
+ attr_index=self.par.i,
1274
+ value=res_read.value.encoding)
1275
+ if isinstance(res_pdu := await c.read_data_block(), result.Error):
1276
+ return res_pdu
1277
+ return result.OK
1278
+
1279
+
1243
1280
  @dataclass
1244
1281
  @deprecated("use <WriteTranscript>")
1245
1282
  class WriteParValue(SimpleCopy, OK):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: DLMS_SPODES_client
3
- Version: 0.19.28
3
+ Version: 0.19.30
4
4
  Summary: dlms-spodes
5
5
  Author-email: Serj Kotilevski <youserj@outlook.com>
6
6
  Project-URL: Source, https://github.com/youserj/SPODESclient_prj
@@ -6,7 +6,7 @@ DLMS_SPODES_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  DLMS_SPODES_client/services.py,sha256=g2Rv2j7mlIcNpnqxRZrKgSpy7k6pnaJHAkZ3JJUhK3s,3418
7
7
  DLMS_SPODES_client/session.py,sha256=nPzXujpmGSTFFvhyZRjgH_RLX1DS9moRddUEZuf-QEE,12760
8
8
  DLMS_SPODES_client/settings.py,sha256=6mitGe9UYeEgL61sf933MJ-S5N-ReoxvXqiI3agBGYE,1623
9
- DLMS_SPODES_client/task.py,sha256=hylTkESBK3J8xVksmLGGhdGiI0tYNnkqShThZioaGN0,78300
9
+ DLMS_SPODES_client/task.py,sha256=O48Vq0oKwNqTBVPJRjNX5uAvgSNV5L2v-RnvYiHqZwo,79820
10
10
  DLMS_SPODES_client/gurux_common/enums/TraceLevel.py,sha256=Ne0Rn3c9ACqQjmde_ksbiQxIUv6nXsPQRnhkGwIv3QI,521
11
11
  DLMS_SPODES_client/gurux_common/enums/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  DLMS_SPODES_client/gurux_dlms/AesGcmParameter.py,sha256=HJt0uvxtkqKEkvfiqXTMNsiayN15AgPJa9_iMSSFZsQ,1429
@@ -54,8 +54,8 @@ DLMS_SPODES_client/gurux_dlms/enums/Task.py,sha256=chuOL6-IMxBvABUZtoFcaYaQQB4GZ
54
54
  DLMS_SPODES_client/gurux_dlms/enums/VdeStateError.py,sha256=qT87LMbIYEs3TYPIp3N-dR2Tcg9KhKyiELwhVl5U-tw,233
55
55
  DLMS_SPODES_client/gurux_dlms/enums/__init__.py,sha256=F_sgGwNmmdpbKvP1klJQUNiLXxU2BtZ-LgEI9e6xP8g,1314
56
56
  DLMS_SPODES_client/gurux_dlms/internal/_GXCommon.py,sha256=7D9EYcfiZxwbk8sfpHv7s2nYqrbmGf-Tbwv2T-gqmgk,53226
57
- dlms_spodes_client-0.19.28.dist-info/METADATA,sha256=l2Fgx6uY4RUQlFP0zdS6UfHJFc_6sfFbdRJCama8LHQ,1062
58
- dlms_spodes_client-0.19.28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
59
- dlms_spodes_client-0.19.28.dist-info/entry_points.txt,sha256=Z6UTeQjjCf2k1Y3Bjs0s7yr-UYSWb-TvJMuG2K2MApw,70
60
- dlms_spodes_client-0.19.28.dist-info/top_level.txt,sha256=rh_3Uig5bc6J_lKni01btol7dX_IgIJulNtGjGehmBE,19
61
- dlms_spodes_client-0.19.28.dist-info/RECORD,,
57
+ dlms_spodes_client-0.19.30.dist-info/METADATA,sha256=J71t7qY_6jIw21oUC0TaHj1TGQ6_kBIODHEAKvdqyzs,1062
58
+ dlms_spodes_client-0.19.30.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
59
+ dlms_spodes_client-0.19.30.dist-info/entry_points.txt,sha256=Z6UTeQjjCf2k1Y3Bjs0s7yr-UYSWb-TvJMuG2K2MApw,70
60
+ dlms_spodes_client-0.19.30.dist-info/top_level.txt,sha256=rh_3Uig5bc6J_lKni01btol7dX_IgIJulNtGjGehmBE,19
61
+ dlms_spodes_client-0.19.30.dist-info/RECORD,,