DLMS-SPODES-client 0.19.17__py3-none-any.whl → 0.19.19__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.
@@ -945,14 +945,14 @@ class MapTypeCreator:
945
945
  res = await self.con[id_sap].exchange(c)
946
946
  async with self.lock:
947
947
  try:
948
- gotten, _ = self.adapter.get_collection(col_id) # check for first update
948
+ gotten, _ = self.adapter.get_collection(col_id).unpack() # check for first update
949
949
  if gotten.has_sap(id_sap.sap):
950
950
  """not need keep"""
951
951
  else:
952
952
  self.adapter.set_collection(res.value) # todo: make as ADAPTER.merge_collection(ret)
953
953
  except AdapterException as e:
954
954
  self.adapter.set_collection(res.value)
955
- res.value, err = res.value.copy()
955
+ res.value, err = res.value.copy().unpack()
956
956
  if err is not None:
957
957
  res.extend_err(err)
958
958
  return res
@@ -1356,25 +1356,36 @@ class Execute2(SimpleCopy, OK):
1356
1356
  return result.Error.from_e(e)
1357
1357
 
1358
1358
 
1359
- class WriteTime(SimpleCopy, Base):
1360
- msg: str = "write Clock.time depend from transfer time"
1359
+ @dataclass
1360
+ class WriteTime(SimpleCopy, Simple[float]):
1361
+ """Write and return <record time> in second: """
1362
+ limit: float = 5.0
1363
+ number_of_retries: int = 10
1364
+ msg: str = "write Clock.time"
1361
1365
 
1362
- async def exchange(self, c: Client):
1363
- try:
1364
- obj = c._objects.clock
1365
- c.get_get_request_normal(obj.get_attr_descriptor(3))
1366
- if isinstance(res_pdu := await c.read_data_block(), result.Error):
1367
- return res_pdu
1368
- tz = obj.get_attr_element(3).DATA_TYPE(res_pdu.value)
1369
- res = await WriteAttribute(
1370
- ln=obj.logical_name,
1371
- index=2,
1372
- value=(datetime.datetime.utcnow() + datetime.timedelta(minutes=int(tz)) + c.last_transfer_time)
1373
- ).exchange(c)
1374
- return res
1375
- except Exception as e:
1376
- # logger.info(F'ERROR: write Clock: attribute 2 {e}')
1377
- return result.Error.from_e(exc.DLMSException(F"write time: {e}"))
1366
+ async def exchange(self, c: Client) -> result.SimpleOrError[float]:
1367
+ acc = result.ErrorAccumulator()
1368
+ obj = c._objects.clock
1369
+ c.get_get_request_normal(obj.get_attr_descriptor(3))
1370
+ if isinstance(res_pdu := await c.read_data_block(), result.Error):
1371
+ return res_pdu
1372
+ tz = obj.get_attr_element(3).DATA_TYPE(res_pdu.value)
1373
+ for i in range(self.number_of_retries):
1374
+ pre_time = time.time()
1375
+ if isinstance(
1376
+ res_write := await WriteAttribute(
1377
+ ln=obj.logical_name,
1378
+ index=2,
1379
+ value=(datetime.datetime.utcnow() + datetime.timedelta(minutes=int(tz)))).exchange(c),
1380
+ result.Error):
1381
+ return res_write
1382
+ rec_time = time.time() - pre_time
1383
+ if rec_time < self.limit:
1384
+ break
1385
+ acc.append_e(TimeoutError(f"can't write in {i} attemp in time"))
1386
+ else:
1387
+ return result.Error.from_e(TimeoutError(f"can't write time for limit: {self.limit} second"))
1388
+ return result.Simple(rec_time).append_err(acc.err)
1378
1389
 
1379
1390
 
1380
1391
  @dataclass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: DLMS_SPODES_client
3
- Version: 0.19.17
3
+ Version: 0.19.19
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=xM_-h322V1bGBcw9cJh7XOSUMTL3_E-GX89-z3YwIYw,3909
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=SG-KBkTbpTtbdnF3kt3lBtPqUQFTilYo6dHtfKYS0sY,76360
9
+ DLMS_SPODES_client/task.py,sha256=42nfG3b30NCLUxw4PH0nsTv63N_Ulrxqb-ihKk42Dgo,76850
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.17.dist-info/METADATA,sha256=RLzKk2GpHLFe1HTrRUqkJkOr3Nq5kUGFzJCTk-KvW-s,986
58
- dlms_spodes_client-0.19.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
59
- dlms_spodes_client-0.19.17.dist-info/entry_points.txt,sha256=Z6UTeQjjCf2k1Y3Bjs0s7yr-UYSWb-TvJMuG2K2MApw,70
60
- dlms_spodes_client-0.19.17.dist-info/top_level.txt,sha256=rh_3Uig5bc6J_lKni01btol7dX_IgIJulNtGjGehmBE,19
61
- dlms_spodes_client-0.19.17.dist-info/RECORD,,
57
+ dlms_spodes_client-0.19.19.dist-info/METADATA,sha256=SWD9H2Un2xHu6ysMHdkj6Fl580t6rOjLd7b5A-P8eRs,986
58
+ dlms_spodes_client-0.19.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
59
+ dlms_spodes_client-0.19.19.dist-info/entry_points.txt,sha256=Z6UTeQjjCf2k1Y3Bjs0s7yr-UYSWb-TvJMuG2K2MApw,70
60
+ dlms_spodes_client-0.19.19.dist-info/top_level.txt,sha256=rh_3Uig5bc6J_lKni01btol7dX_IgIJulNtGjGehmBE,19
61
+ dlms_spodes_client-0.19.19.dist-info/RECORD,,