DLMS-SPODES-client 0.19.18__tar.gz → 0.19.19__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 (77) hide show
  1. {dlms_spodes_client-0.19.18/src/DLMS_SPODES_client.egg-info → dlms_spodes_client-0.19.19}/PKG-INFO +1 -1
  2. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/pyproject.toml +1 -1
  3. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/task.py +29 -18
  4. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19/src/DLMS_SPODES_client.egg-info}/PKG-INFO +1 -1
  5. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/test/client_log.txt +20033 -0
  6. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/test/test_Client.py +8 -1
  7. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/.gitignore +0 -0
  8. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/README.md +0 -0
  9. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/setup.cfg +0 -0
  10. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/FCS16.py +0 -0
  11. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/__init__.py +0 -0
  12. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/client.py +0 -0
  13. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_common/enums/TraceLevel.py +0 -0
  14. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_common/enums/__init__.py +0 -0
  15. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/AesGcmParameter.py +0 -0
  16. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/CountType.py +0 -0
  17. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/GXByteBuffer.py +0 -0
  18. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/GXCiphering.py +0 -0
  19. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/GXDLMS.py +0 -0
  20. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/GXDLMSChippering.py +0 -0
  21. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/GXDLMSChipperingStream.py +0 -0
  22. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/GXDLMSConfirmedServiceError.py +0 -0
  23. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/GXDLMSException.py +0 -0
  24. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/GXDLMSLNParameters.py +0 -0
  25. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/GXDLMSSNParameters.py +0 -0
  26. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/GXDLMSSettings.py +0 -0
  27. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/GXReplyData.py +0 -0
  28. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/HdlcControlFrame.py +0 -0
  29. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/MBusCommand.py +0 -0
  30. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/MBusEncryptionMode.py +0 -0
  31. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/ResponseType.py +0 -0
  32. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/SetResponseType.py +0 -0
  33. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/_HDLCInfo.py +0 -0
  34. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/__init__.py +0 -0
  35. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/Access.py +0 -0
  36. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/ApplicationReference.py +0 -0
  37. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/Authentication.py +0 -0
  38. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/BerType.py +0 -0
  39. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/Command.py +0 -0
  40. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/Definition.py +0 -0
  41. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/ErrorCode.py +0 -0
  42. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/ExceptionServiceError.py +0 -0
  43. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/HardwareResource.py +0 -0
  44. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/HdlcFrameType.py +0 -0
  45. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/Initiate.py +0 -0
  46. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/LoadDataSet.py +0 -0
  47. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/ObjectType.py +0 -0
  48. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/Priority.py +0 -0
  49. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/RequestTypes.py +0 -0
  50. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/Security.py +0 -0
  51. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/Service.py +0 -0
  52. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/ServiceClass.py +0 -0
  53. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/ServiceError.py +0 -0
  54. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/Standard.py +0 -0
  55. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/StateError.py +0 -0
  56. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/Task.py +0 -0
  57. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/VdeStateError.py +0 -0
  58. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/enums/__init__.py +0 -0
  59. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/gurux_dlms/internal/_GXCommon.py +0 -0
  60. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/logger.py +0 -0
  61. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/py.typed +0 -0
  62. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/services.py +0 -0
  63. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/session.py +0 -0
  64. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client/settings.py +0 -0
  65. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client.egg-info/SOURCES.txt +0 -0
  66. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client.egg-info/dependency_links.txt +0 -0
  67. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client.egg-info/entry_points.txt +0 -0
  68. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client.egg-info/requires.txt +0 -0
  69. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/src/DLMS_SPODES_client.egg-info/top_level.txt +0 -0
  70. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/test/Firmwares/firmwares.dat +0 -0
  71. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/test/Firmwares/firmwares_1_2_11.dat +0 -0
  72. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/test/Firmwares/firmwares_1_7_2.dat +0 -0
  73. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/test/config.toml +0 -0
  74. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/test/name2.csv +0 -0
  75. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/test/test_logger.py +0 -0
  76. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/test/test_services.py +0 -0
  77. {dlms_spodes_client-0.19.18 → dlms_spodes_client-0.19.19}/test//320/272/320/276/320/275/321/204/320/270/320/263/321/203/321/200/320/260/321/206/320/270/321/217 GSM.csv" +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: DLMS_SPODES_client
3
- Version: 0.19.18
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
@@ -15,7 +15,7 @@ exclude = ["Types"]
15
15
 
16
16
  [project]
17
17
  name = "DLMS_SPODES_client"
18
- version = "0.19.18"
18
+ version = "0.19.19"
19
19
  requires-python = ">= 3.12"
20
20
  authors = [
21
21
  {name="Serj Kotilevski", email="youserj@outlook.com"}
@@ -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.18
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