DLMS-SPODES 0.86.13__tar.gz → 0.86.15__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 (173) hide show
  1. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/PKG-INFO +3 -2
  2. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/pyproject.toml +3 -2
  3. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/collection.py +17 -14
  4. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/cosem_interface_class.py +3 -2
  5. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/parameters.py +1 -2
  6. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES.egg-info/PKG-INFO +3 -2
  7. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES.egg-info/requires.txt +2 -1
  8. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_KPZ.py +1 -1
  9. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_collection.py +1 -1
  10. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_pars.py +2 -1
  11. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/.gitignore +0 -0
  12. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/README.md +0 -0
  13. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/config.toml +0 -0
  14. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/setup.cfg +0 -0
  15. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/Values/EN/__init__.py +0 -0
  16. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/Values/EN/actors.py +0 -0
  17. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/Values/EN/relation_to_obis_names.py +0 -0
  18. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/Values/RU/__init__.py +0 -0
  19. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/Values/RU/actors.py +0 -0
  20. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/Values/RU/relation_to_obis_names.py +0 -0
  21. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/Values/__init__.py +0 -0
  22. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/__init__.py +0 -0
  23. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/configEN.ini +0 -0
  24. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/config_parser.py +0 -0
  25. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/__class_init__.py +0 -0
  26. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/__init__.py +0 -0
  27. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/a_parameter.py +0 -0
  28. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/activity_calendar.py +0 -0
  29. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/arbitrator.py +0 -0
  30. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/association_ln/__init__.py +0 -0
  31. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/association_ln/abstract.py +0 -0
  32. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/association_ln/authentication_mechanism_name.py +0 -0
  33. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/association_ln/mechanism_id.py +0 -0
  34. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/association_ln/method.py +0 -0
  35. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver0.py +0 -0
  36. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver1.py +0 -0
  37. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver2.py +0 -0
  38. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver3.py +0 -0
  39. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/association_sn/__init__.py +0 -0
  40. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/association_sn/ver0.py +0 -0
  41. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/attr_indexes.py +0 -0
  42. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/clock.py +0 -0
  43. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/data.py +0 -0
  44. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/demand_register/__init__.py +0 -0
  45. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/demand_register/ver0.py +0 -0
  46. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/disconnect_control.py +0 -0
  47. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/extended_register.py +0 -0
  48. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/gprs_modem_setup.py +0 -0
  49. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/__init__.py +0 -0
  50. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver0.py +0 -0
  51. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver1.py +0 -0
  52. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver2.py +0 -0
  53. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/__init__.py +0 -0
  54. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver0.py +0 -0
  55. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver1.py +0 -0
  56. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/iec_local_port_setup.py +0 -0
  57. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/__init__.py +0 -0
  58. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/image_transfer_status.py +0 -0
  59. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/ver0.py +0 -0
  60. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/implementations/__init__.py +0 -0
  61. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/implementations/arbitrator.py +0 -0
  62. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/implementations/data.py +0 -0
  63. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/implementations/profile_generic.py +0 -0
  64. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/ipv4_setup.py +0 -0
  65. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/limiter.py +0 -0
  66. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/ln_pattern.py +0 -0
  67. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/__init__.py +0 -0
  68. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/ver0.py +0 -0
  69. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/ver1.py +0 -0
  70. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/ntp_setup/__init__.py +0 -0
  71. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/ntp_setup/ver0.py +0 -0
  72. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/obis.py +0 -0
  73. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/overview.py +0 -0
  74. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/parameter.py +0 -0
  75. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/__init__.py +0 -0
  76. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/ver0.py +0 -0
  77. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/ver1.py +0 -0
  78. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/push_setup/__init__.py +0 -0
  79. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver0.py +0 -0
  80. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver1.py +0 -0
  81. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver2.py +0 -0
  82. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/register.py +0 -0
  83. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/register_activation/__init__.py +0 -0
  84. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/register_activation/ver0.py +0 -0
  85. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/register_monitor.py +0 -0
  86. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/reports.py +0 -0
  87. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/schedule.py +0 -0
  88. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/script_table.py +0 -0
  89. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/security_setup/__init__.py +0 -0
  90. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/security_setup/__pycache__/__init__.cpython-311.pyc +0 -0
  91. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/security_setup/ver0.py +0 -0
  92. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/security_setup/ver1.py +0 -0
  93. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/single_action_schedule.py +0 -0
  94. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/special_days_table.py +0 -0
  95. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_interface_classes/tcp_udp_setup.py +0 -0
  96. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/cosem_pdu.py +0 -0
  97. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/enums.py +0 -0
  98. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/exceptions.py +0 -0
  99. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/firmwares.py +0 -0
  100. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/hdlc/__init__.py +0 -0
  101. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/hdlc/frame.py +0 -0
  102. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/hdlc/sub_layer.py +0 -0
  103. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/literals.py +0 -0
  104. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/obis/__init__.py +0 -0
  105. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/obis/abstract_objects.py +0 -0
  106. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/obis/media_id.py +0 -0
  107. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/pardata.py +0 -0
  108. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/pdu_enums.py +0 -0
  109. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/py.typed +0 -0
  110. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/relation_to_OBIS.py +0 -0
  111. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/settings.py +0 -0
  112. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/__init__.py +0 -0
  113. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/choices.py +0 -0
  114. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/common_data_types.py +0 -0
  115. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/cosem_service_types.py +0 -0
  116. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/implementations/__init__.py +0 -0
  117. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/implementations/arrays.py +0 -0
  118. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/implementations/bitstrings.py +0 -0
  119. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/implementations/double_long_usingneds.py +0 -0
  120. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/implementations/enums.py +0 -0
  121. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/implementations/integers.py +0 -0
  122. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/implementations/long_unsigneds.py +0 -0
  123. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/implementations/octet_string.py +0 -0
  124. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/implementations/structs.py +0 -0
  125. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES/types/useful_types.py +0 -0
  126. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES.egg-info/SOURCES.txt +0 -0
  127. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES.egg-info/dependency_links.txt +0 -0
  128. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/DLMS_SPODES.egg-info/top_level.txt +0 -0
  129. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/src/__init__.py +0 -0
  130. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/__init__.py +0 -0
  131. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/collection_init.py +0 -0
  132. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/config.toml +0 -0
  133. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/config.zip +0 -0
  134. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/init_collection.py +0 -0
  135. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test.typ +0 -0
  136. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test.xml +0 -0
  137. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_ActivityCalendar.py +0 -0
  138. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_AssociationLN.py +0 -0
  139. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_COSEMInterfaceClass.py +0 -0
  140. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_Data.py +0 -0
  141. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_DemandRegister.py +0 -0
  142. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_DisconnectControl.py +0 -0
  143. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_DisplayReadoutProfile.py +0 -0
  144. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_GSMDiagnostic.py +0 -0
  145. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_IC.py +0 -0
  146. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_ImageTransfer.py +0 -0
  147. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_LNPatterns.py +0 -0
  148. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_Limiter.py +0 -0
  149. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_NTPSetup.py +0 -0
  150. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_Parameter.py +0 -0
  151. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_ProfileGeneric.py +0 -0
  152. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_Register.py +0 -0
  153. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_RegisterActivation.py +0 -0
  154. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_RegisterMonitor.py +0 -0
  155. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_ScalerUnitType.py +0 -0
  156. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_Schedule.py +0 -0
  157. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_Structures.py +0 -0
  158. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_a_param.py +0 -0
  159. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_benchmark_create_obj.py +0 -0
  160. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_cdt.py +0 -0
  161. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_config.py +0 -0
  162. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_electric_obj.py +0 -0
  163. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_enums.py +0 -0
  164. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_hdlc.py +0 -0
  165. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_overview.py +0 -0
  166. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_report.py +0 -0
  167. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_save_type.typ +0 -0
  168. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_settings.py +0 -0
  169. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_to_xml.xml +0 -0
  170. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_to_xml2.xml +0 -0
  171. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_to_xml3.xml +0 -0
  172. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_to_xml4.xml +0 -0
  173. {dlms_spodes-0.86.13 → dlms_spodes-0.86.15}/test/test_userfulType.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: DLMS_SPODES
3
- Version: 0.86.13
3
+ Version: 0.86.15
4
4
  Summary: dlms-spodes
5
5
  Author-email: Serj Kotilevski <youserj@outlook.com>
6
6
  Project-URL: Source, https://github.com/youserj/DlmsSPODES-project
@@ -14,7 +14,8 @@ Requires-Dist: pydantic>=2.11
14
14
  Requires-Dist: cryptography>=45.0
15
15
  Requires-Dist: semver>=3.0
16
16
  Requires-Dist: typing-extensions>=4.12.2
17
- Requires-Dist: StructResult>=0.8.0
17
+ Requires-Dist: StructResult>=0.8.2
18
+ Requires-Dist: numpy>=2.3.2
18
19
  Provides-Extra: dev
19
20
  Requires-Dist: mypy>=1.5.0; extra == "dev"
20
21
  Requires-Dist: ruff>=0.11; extra == "dev"
@@ -14,7 +14,7 @@ exclude = ["test","KPZ"]
14
14
 
15
15
  [project]
16
16
  name = "DLMS_SPODES"
17
- version = "0.86.13"
17
+ version = "0.86.15"
18
18
  authors = [
19
19
  {name="Serj Kotilevski", email="youserj@outlook.com"}
20
20
  ]
@@ -23,7 +23,8 @@ dependencies = [
23
23
  "cryptography>=45.0",
24
24
  "semver>=3.0",
25
25
  "typing-extensions>=4.12.2", # remove for 3.13(use for @deprecated)
26
- "StructResult>=0.8.0"
26
+ "StructResult>=0.8.2",
27
+ "numpy>=2.3.2"
27
28
  ]
28
29
  description="dlms-spodes"
29
30
  readme = "README.md"
@@ -669,7 +669,7 @@ class Collection:
669
669
  spec_map: str
670
670
 
671
671
  def __init__(self,
672
- id_: ID = None,
672
+ id_: ID,
673
673
  dlms_ver: int = 6,
674
674
  country: CountrySpecificIdentifiers = None,
675
675
  cntr_ver: ParameterValue = None):
@@ -867,19 +867,22 @@ class Collection:
867
867
  """ get object, return None if it absence """
868
868
  return self.__objs.get(obis, None)
869
869
 
870
- def par2obj(self, par: Parameter) -> InterfaceClass:
870
+ def par2obj(self, par: Parameter) -> result.Simple[InterfaceClass] | result.Error:
871
871
  """return: DLMSObject"""
872
- if ret := self.__objs.get(par.obis):
873
- return ret
874
- raise exc.NoObject(f"with {par=}")
872
+ if obj := self.__objs.get(par.obis):
873
+ return result.Simple(obj)
874
+ return result.Error.from_e(exc.NoObject(f"with {par=}"))
875
875
 
876
- def par2data(self, par: Parameter) -> Optional[cdt.CommonDataType]:
876
+ def par2data(self, par: Parameter) -> result.Option[cdt.CommonDataType] | result.Error:
877
877
  """:return CDT by Parameter, return None if data wasn't setting"""
878
- if (a_data := self.par2obj(par).get_attr(par.i)) is None:
879
- return None
878
+ if isinstance((res1 := self.par2obj(par)), result.Error):
879
+ return res1
880
+ res = result.Option(res1.value.get_attr(par.i))
881
+ if res.value is None:
882
+ return res
880
883
  for el in par.elements():
881
- a_data = a_data[el]
882
- return a_data
884
+ res.value = res.value.a_data[el]
885
+ return res
883
886
 
884
887
  def values(self) -> tuple[InterfaceClass]:
885
888
  return tuple(self.__objs.values())
@@ -1009,7 +1012,7 @@ class Collection:
1009
1012
  else:
1010
1013
  rep.log = cdt.Log(logging.ERROR, F"absent script with ID: {data.script_selector}")
1011
1014
  else:
1012
- obj = self.par2obj(par)
1015
+ obj = self.par2obj(par).unwrap()
1013
1016
  elements = tuple(par.elements())
1014
1017
  if unit := get_unit(obj.CLASS_ID, elements):
1015
1018
  rep.unit = cdt.Unit(unit).get_name()
@@ -1070,7 +1073,7 @@ class Collection:
1070
1073
  def par2su(self, par: Parameter) -> Optional[cdt.ScalUnitType]:
1071
1074
  """convert Parameter -> Optional[ScalerUnit],
1072
1075
  raise: NoObject, EmptyAttribute"""
1073
- match (obj := self.par2obj(par)).CLASS_ID, par.i:
1076
+ match (obj := self.par2obj(par).unwrap()).CLASS_ID, par.i:
1074
1077
  case (exc.NoObject, _):
1075
1078
  raise obj
1076
1079
  case (ClassID.REGISTER | ClassID.EXT_REGISTER, 2) | (ClassID.DEMAND_REGISTER, 2 | 3):
@@ -1099,7 +1102,7 @@ class Collection:
1099
1102
 
1100
1103
  def par2float(self, par: Parameter) -> float:
1101
1104
  """try convert CDT value according with Parameter to build-in float"""
1102
- data = self.par2data(par)
1105
+ data = self.par2data(par).unwrap()
1103
1106
  if hasattr(data, "__int__"):
1104
1107
  value = float(int(data))
1105
1108
  elif hasattr(data, "__float__"):
@@ -1129,7 +1132,7 @@ class Collection:
1129
1132
 
1130
1133
  def iter_classID_objects(self,
1131
1134
  class_id: ut.CosemClassId) -> Iterator[InterfaceClass]:
1132
- return (obj for obj in self.__objs.values() if obj.CLASS_ID == value)
1135
+ return (obj for obj in self.__objs.values() if obj.CLASS_ID == class_id)
1133
1136
 
1134
1137
  def LNPattern2objects(self,
1135
1138
  pat: LNPattern) -> list[InterfaceClass]:
@@ -6,6 +6,7 @@ from functools import lru_cache
6
6
  from typing_extensions import deprecated
7
7
  from typing import Iterator, Type, TypeAlias, Callable, Any, Self, Literal, Optional, Protocol
8
8
  from ..types import cdt, ut, cst
9
+ from StructResult import result
9
10
  from ..relation_to_OBIS import get_name
10
11
  import logging
11
12
  from enum import IntEnum
@@ -374,10 +375,10 @@ class COSEMInterfaceClasses(Protocol):
374
375
  # print(cls.__name__)
375
376
 
376
377
  @classmethod
377
- def get_attr_element(cls, i: int) -> ICAElement:
378
+ def getAElement(cls, i: int) -> result.Simple[ICAElement] | result.Error:
378
379
  """return element by order index. Override in each new class"""
379
380
  if i == 1:
380
- return _LN_ELEMENT
381
+ return result.Simple(_LN_ELEMENT)
381
382
  elif i > len(cls.A_ELEMENTS) + 1:
382
383
  raise exc.DLMSException(F"got attribute index: {i}, expected 1..{len(cls.A_ELEMENTS) + 1}")
383
384
  else:
@@ -1,11 +1,10 @@
1
1
  from dataclasses import dataclass
2
- from typing import Protocol, ClassVar
3
2
  from functools import cached_property
4
3
  from .parameter import Parameter
5
4
 
6
5
 
7
6
  @dataclass
8
- class Base(Protocol):
7
+ class Base:
9
8
  OBIS: Parameter
10
9
 
11
10
  @cached_property
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: DLMS_SPODES
3
- Version: 0.86.13
3
+ Version: 0.86.15
4
4
  Summary: dlms-spodes
5
5
  Author-email: Serj Kotilevski <youserj@outlook.com>
6
6
  Project-URL: Source, https://github.com/youserj/DlmsSPODES-project
@@ -14,7 +14,8 @@ Requires-Dist: pydantic>=2.11
14
14
  Requires-Dist: cryptography>=45.0
15
15
  Requires-Dist: semver>=3.0
16
16
  Requires-Dist: typing-extensions>=4.12.2
17
- Requires-Dist: StructResult>=0.8.0
17
+ Requires-Dist: StructResult>=0.8.2
18
+ Requires-Dist: numpy>=2.3.2
18
19
  Provides-Extra: dev
19
20
  Requires-Dist: mypy>=1.5.0; extra == "dev"
20
21
  Requires-Dist: ruff>=0.11; extra == "dev"
@@ -2,7 +2,8 @@ pydantic>=2.11
2
2
  cryptography>=45.0
3
3
  semver>=3.0
4
4
  typing-extensions>=4.12.2
5
- StructResult>=0.8.0
5
+ StructResult>=0.8.2
6
+ numpy>=2.3.2
6
7
 
7
8
  [dev]
8
9
  mypy>=1.5.0
@@ -594,7 +594,7 @@ class TestType(unittest.TestCase):
594
594
  def test_par2rep(self):
595
595
  col = self.create_collection()
596
596
  par = Parameter.parse("0.0.13.0.0.255:9").extend(0, 0)
597
- data = col.par2data(par)
597
+ data = col.par2data(par).unwrap()
598
598
  rep1 = col.par2rep(par, data)
599
599
  print(str(col[par.obis].get_attr_element(1)))
600
600
  print(rep1)
@@ -589,7 +589,7 @@ class TestType(unittest.TestCase):
589
589
  def test_par2rep(self):
590
590
  col = self.create_collection()
591
591
  par = Parameter.parse("0.0.13.0.0.255:9").extend(0, 0)
592
- data = col.par2data(par)
592
+ data = col.par2data(par).unwrap()
593
593
  rep1 = col.par2rep(par, data)
594
594
  print(str(col[par.obis].get_attr_element(1)))
595
595
  print(rep1)
@@ -7,5 +7,6 @@ class TestType(unittest.TestCase):
7
7
  def test_one(self):
8
8
  My = prs.Data(Parameter.parse("0.0.0.1.0.255"))
9
9
  My2 = prs.Data(Parameter.parse("0.0.1.1.0.255"))
10
+ My3 = prs.Register(Parameter.parse("0.2.1.1.0.255"))
10
11
 
11
- print(My.LN, My2.LN)
12
+ print(My.LN, My2.LN, My3.SCALER_UNIT)
File without changes
File without changes
File without changes
File without changes