DLMS-SPODES 0.86.22__tar.gz → 0.86.23__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.22 → dlms_spodes-0.86.23}/PKG-INFO +1 -1
  2. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/pyproject.toml +1 -1
  3. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/collection.py +16 -0
  4. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/cosem_interface_class.py +0 -7
  5. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/pardata.py +3 -2
  6. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/settings.py +28 -0
  7. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/common_data_types.py +1 -1
  8. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/implementations/bitstrings.py +2 -0
  9. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/useful_types.py +4 -7
  10. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES.egg-info/PKG-INFO +1 -1
  11. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_cdt.py +3 -3
  12. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/.gitignore +0 -0
  13. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/README.md +0 -0
  14. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/config.toml +0 -0
  15. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/setup.cfg +0 -0
  16. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/Values/EN/__init__.py +0 -0
  17. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/Values/EN/actors.py +0 -0
  18. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/Values/EN/relation_to_obis_names.py +0 -0
  19. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/Values/RU/__init__.py +0 -0
  20. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/Values/RU/actors.py +0 -0
  21. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/Values/RU/relation_to_obis_names.py +0 -0
  22. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/Values/__init__.py +0 -0
  23. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/__init__.py +0 -0
  24. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/configEN.ini +0 -0
  25. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/config_parser.py +0 -0
  26. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/__class_init__.py +0 -0
  27. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/__init__.py +0 -0
  28. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/a_parameter.py +0 -0
  29. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/activity_calendar.py +0 -0
  30. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/arbitrator.py +0 -0
  31. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/association_ln/__init__.py +0 -0
  32. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/association_ln/abstract.py +0 -0
  33. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/association_ln/authentication_mechanism_name.py +0 -0
  34. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/association_ln/mechanism_id.py +0 -0
  35. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/association_ln/method.py +0 -0
  36. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver0.py +0 -0
  37. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver1.py +0 -0
  38. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver2.py +0 -0
  39. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver3.py +0 -0
  40. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/association_sn/__init__.py +0 -0
  41. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/association_sn/ver0.py +0 -0
  42. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/attr_indexes.py +0 -0
  43. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/clock.py +0 -0
  44. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/data.py +0 -0
  45. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/demand_register/__init__.py +0 -0
  46. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/demand_register/ver0.py +0 -0
  47. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/disconnect_control.py +0 -0
  48. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/extended_register.py +0 -0
  49. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/gprs_modem_setup.py +0 -0
  50. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/__init__.py +0 -0
  51. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver0.py +0 -0
  52. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver1.py +0 -0
  53. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver2.py +0 -0
  54. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/__init__.py +0 -0
  55. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver0.py +0 -0
  56. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver1.py +0 -0
  57. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/iec_local_port_setup.py +0 -0
  58. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/__init__.py +0 -0
  59. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/image_transfer_status.py +0 -0
  60. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/ver0.py +0 -0
  61. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/implementations/__init__.py +0 -0
  62. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/implementations/arbitrator.py +0 -0
  63. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/implementations/data.py +0 -0
  64. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/implementations/profile_generic.py +0 -0
  65. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/ipv4_setup.py +0 -0
  66. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/limiter.py +0 -0
  67. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/ln_pattern.py +0 -0
  68. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/__init__.py +0 -0
  69. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/ver0.py +0 -0
  70. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/ver1.py +0 -0
  71. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/ntp_setup/__init__.py +0 -0
  72. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/ntp_setup/ver0.py +0 -0
  73. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/obis.py +0 -0
  74. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/overview.py +0 -0
  75. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/parameter.py +0 -0
  76. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/parameters.py +0 -0
  77. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/__init__.py +0 -0
  78. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/ver0.py +0 -0
  79. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/ver1.py +0 -0
  80. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/push_setup/__init__.py +0 -0
  81. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver0.py +0 -0
  82. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver1.py +0 -0
  83. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver2.py +0 -0
  84. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/register.py +0 -0
  85. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/register_activation/__init__.py +0 -0
  86. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/register_activation/ver0.py +0 -0
  87. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/register_monitor.py +0 -0
  88. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/reports.py +0 -0
  89. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/schedule.py +0 -0
  90. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/script_table.py +0 -0
  91. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/security_setup/__init__.py +0 -0
  92. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/security_setup/__pycache__/__init__.cpython-311.pyc +0 -0
  93. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/security_setup/ver0.py +0 -0
  94. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/security_setup/ver1.py +0 -0
  95. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/single_action_schedule.py +0 -0
  96. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/special_days_table.py +0 -0
  97. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_interface_classes/tcp_udp_setup.py +0 -0
  98. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/cosem_pdu.py +0 -0
  99. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/enums.py +0 -0
  100. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/exceptions.py +0 -0
  101. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/firmwares.py +0 -0
  102. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/hdlc/__init__.py +0 -0
  103. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/hdlc/frame.py +0 -0
  104. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/hdlc/sub_layer.py +0 -0
  105. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/literals.py +0 -0
  106. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/obis/__init__.py +0 -0
  107. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/obis/abstract_objects.py +0 -0
  108. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/obis/media_id.py +0 -0
  109. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/pdu_enums.py +0 -0
  110. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/py.typed +0 -0
  111. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/relation_to_OBIS.py +0 -0
  112. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/__init__.py +0 -0
  113. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/choices.py +0 -0
  114. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/cosem_service_types.py +0 -0
  115. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/implementations/__init__.py +0 -0
  116. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/implementations/arrays.py +0 -0
  117. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/implementations/double_long_usingneds.py +0 -0
  118. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/implementations/enums.py +0 -0
  119. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/implementations/integers.py +0 -0
  120. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/implementations/long_unsigneds.py +0 -0
  121. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/implementations/octet_string.py +0 -0
  122. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES/types/implementations/structs.py +0 -0
  123. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES.egg-info/SOURCES.txt +0 -0
  124. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES.egg-info/dependency_links.txt +0 -0
  125. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES.egg-info/requires.txt +0 -0
  126. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/DLMS_SPODES.egg-info/top_level.txt +0 -0
  127. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/src/__init__.py +0 -0
  128. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/__init__.py +0 -0
  129. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/collection_init.py +0 -0
  130. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/config.toml +0 -0
  131. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/config.zip +0 -0
  132. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/init_collection.py +0 -0
  133. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test.typ +0 -0
  134. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test.xml +0 -0
  135. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_ActivityCalendar.py +0 -0
  136. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_AssociationLN.py +0 -0
  137. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_COSEMInterfaceClass.py +0 -0
  138. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_Data.py +0 -0
  139. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_DemandRegister.py +0 -0
  140. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_DisconnectControl.py +0 -0
  141. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_DisplayReadoutProfile.py +0 -0
  142. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_GSMDiagnostic.py +0 -0
  143. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_IC.py +0 -0
  144. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_ImageTransfer.py +0 -0
  145. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_KPZ.py +0 -0
  146. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_LNPatterns.py +0 -0
  147. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_Limiter.py +0 -0
  148. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_NTPSetup.py +0 -0
  149. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_Parameter.py +0 -0
  150. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_ProfileGeneric.py +0 -0
  151. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_Register.py +0 -0
  152. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_RegisterActivation.py +0 -0
  153. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_RegisterMonitor.py +0 -0
  154. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_ScalerUnitType.py +0 -0
  155. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_Schedule.py +0 -0
  156. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_Structures.py +0 -0
  157. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_a_param.py +0 -0
  158. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_benchmark_create_obj.py +0 -0
  159. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_collection.py +0 -0
  160. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_config.py +0 -0
  161. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_electric_obj.py +0 -0
  162. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_enums.py +0 -0
  163. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_hdlc.py +0 -0
  164. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_overview.py +0 -0
  165. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_pars.py +0 -0
  166. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_report.py +0 -0
  167. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_save_type.typ +0 -0
  168. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_settings.py +0 -0
  169. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_to_xml.xml +0 -0
  170. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_to_xml2.xml +0 -0
  171. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_to_xml3.xml +0 -0
  172. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/test/test_to_xml4.xml +0 -0
  173. {dlms_spodes-0.86.22 → dlms_spodes-0.86.23}/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.22
3
+ Version: 0.86.23
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,7 @@ exclude = ["test","KPZ"]
14
14
 
15
15
  [project]
16
16
  name = "DLMS_SPODES"
17
- version = "0.86.22"
17
+ version = "0.86.23"
18
18
  authors = [
19
19
  {name="Serj Kotilevski", email="youserj@outlook.com"}
20
20
  ]
@@ -1378,6 +1378,22 @@ class Collection:
1378
1378
  security_policy=security_policy
1379
1379
  )
1380
1380
 
1381
+ @lru_cache(maxsize=1000)
1382
+ def isnt_mutable(self,
1383
+ par: Parameter,
1384
+ association_id: int,
1385
+ security_policy: pdu.SecurityPolicy = pdu.SecurityPolicyVer0.NOTHING
1386
+ ) -> bool:
1387
+ """is not writable and STATIC data"""
1388
+ if (
1389
+ not self.is_writable(par.ln, par.i, association_id, security_policy, security_policy)
1390
+ and self.par2obj(par
1391
+ ).unwrap().getAElement(par.i
1392
+ ).unwrap().classifier == ic.Classifier.STATIC
1393
+ ):
1394
+ return True
1395
+ return False
1396
+
1381
1397
  @lru_cache(maxsize=1000)
1382
1398
  def is_accessible(self, ln: cst.LogicalName,
1383
1399
  index: int,
@@ -8,21 +8,14 @@ from typing import Iterator, Type, TypeAlias, Callable, Any, Self, Literal, Opti
8
8
  from ..types import cdt, ut, cst
9
9
  from StructResult import result
10
10
  from ..relation_to_OBIS import get_name
11
- import logging
12
11
  from enum import IntEnum
13
12
  from itertools import count
14
13
  from .. import exceptions as exc
15
14
  from .overview import ClassID
16
15
  from ..settings import settings
17
- from ..config_parser import get_values
18
16
  from .. import literals
19
17
 
20
18
 
21
- logger = logging.getLogger(__name__)
22
- logger.level = logging.INFO
23
-
24
- logger.info(F'Register start')
25
-
26
19
  _n_class = count(0)
27
20
 
28
21
 
@@ -18,7 +18,8 @@ class ParValues[T]:
18
18
  raise StopIteration
19
19
 
20
20
  def __iter__(self) -> Iterator[Parameter | T]:
21
- return iter((self.par, self.data))
21
+ yield self.par
22
+ yield self.data
22
23
 
23
24
  def __str__(self):
24
25
  return F"{self.par} - {self.data}"
@@ -26,4 +27,4 @@ class ParValues[T]:
26
27
 
27
28
  @dataclass(frozen=True)
28
29
  class ParData(ParValues[cdt.CommonDataType]):
29
- data: Optional[cdt.CommonDataType]
30
+ data: cdt.CommonDataType
@@ -478,11 +478,39 @@ class _AmNames(BaseModel):
478
478
  xDLMS_context_info: str = "xDLMS context info"
479
479
 
480
480
 
481
+ class Conformance(BaseModel):
482
+ reserved_zero: str = "reserved-zero"
483
+ general_protection: str = "general-protection"
484
+ general_block_transfer: str = "general-block-transfer"
485
+ read: str = "read"
486
+ write: str = "write"
487
+ unconfirmed_write: str = "unconfirmed-write"
488
+ reserved_six: str = "reserved-six"
489
+ reserved_seven: str = "reserved-seven"
490
+ attribute0_supported_with_set: str = "attribute0-supported-with-set"
491
+ priority_mgmt_supported: str = "priority-mgmt-supported"
492
+ attribute0_supported_with_get: str = "attribute0-supported-with-get"
493
+ block_transfer_with_get_or_read: str = "block-transfer-with-get-or-read"
494
+ block_transfer_with_set_or_write: str = "block-transfer-with-set-or-write"
495
+ block_transfer_with_action: str = "block-transfer-with-action"
496
+ multiple_references: str = "multiple-references"
497
+ information_report: str = "information-report"
498
+ data_notification: str = "data-notification"
499
+ access: str = "access"
500
+ parameterized_access: str = "parameterized-access"
501
+ get: str = "get"
502
+ set: str = "set"
503
+ selective_access: str = "selective-access"
504
+ event_notification: str = "event-notification"
505
+ action: str = "action"
506
+
507
+
481
508
  class Settings(BaseModel):
482
509
  collection: _Collection = Field(default_factory=_Collection)
483
510
  report: _Report = Field(default_factory=_Report)
484
511
  firmwares: list[_Firmware] = Field(default_factory=list)
485
512
  am_names: _AmNames = Field(default_factory=_AmNames)
513
+ class_name: dict[int, str] = Field(default={1: "Data"})
486
514
 
487
515
 
488
516
  if not os.path.isfile(path := ".//config.toml"):
@@ -1669,7 +1669,7 @@ class OctetString(_String, SimpleDataType):
1669
1669
  temp = list()
1670
1670
  for i in self.contents:
1671
1671
  temp.append(i if i > 32 else 63)
1672
- return bytes(temp).decode(encoding)
1672
+ return bytes(temp).decode(encoding, errors="ignore")
1673
1673
 
1674
1674
  def pretty_str(self) -> str:
1675
1675
  """decode to utf-8 or hex labal"""
@@ -1,5 +1,7 @@
1
1
  from ...types import common_data_types as cdt
2
2
  from ...config_parser import get_values
3
+ from ...settings import settings
4
+
3
5
 
4
6
  base = get_values("DLMS", "Conformance")
5
7
 
@@ -5,7 +5,7 @@ from typing import Type, Any, Callable
5
5
  from dataclasses import dataclass
6
6
  from ..types import common_data_types as cdt
7
7
  from ..exceptions import DLMSException
8
- from ..config_parser import get_values
8
+ from ..settings import settings
9
9
 
10
10
 
11
11
  class UserfulTypesException(DLMSException):
@@ -401,9 +401,9 @@ class CosemClassId(Unsigned16):
401
401
  - class_id-s from 32 768 to 65 535 are reserved for user group specific ICs.
402
402
  The DLMS UA reserves the right to assign ranges to individual manufacturers or user groups. """
403
403
 
404
- def __str__(self):
405
- if _class_names:
406
- return _class_names.get(self, repr(self))
404
+ def __str__(self) -> str:
405
+ if res := settings.class_name.get(int(self)):
406
+ return res
407
407
  else:
408
408
  return repr(self)
409
409
 
@@ -411,9 +411,6 @@ class CosemClassId(Unsigned16):
411
411
  return F"{self.__class__.__name__}({int(self)})"
412
412
 
413
413
 
414
- _class_names = {CosemClassId(k): v for k, v in class_names.items()} if (class_names := get_values("DLMS", "class_name")) else None
415
-
416
-
417
414
  class CosemObjectInstanceId(OCTET_STRING, UsefulType):
418
415
  LENGTH = 6
419
416
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: DLMS_SPODES
3
- Version: 0.86.22
3
+ Version: 0.86.23
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
@@ -63,10 +63,10 @@ class TestType(unittest.TestCase):
63
63
 
64
64
  def test_DateTime(self):
65
65
  data: cdt.DateTime
66
- data = cdt.DateTime.parse("1.1.0001")
67
- data = cdt.DateTime.parse("00:00:00")
68
- data = cdt.DateTime.parse("__.__.____ __:00")
66
+ data = cdt.DateTime.parse("1.1.2001")
67
+ # data = cdt.DateTime.parse("__.__.____ __:00")
69
68
  z = data.get_right_nearest_datetime(datetime.datetime.now(tz=datetime.timezone.utc))
69
+ z1 = data.get_left_nearest_datetime(datetime.datetime.now(tz=datetime.timezone.utc))
70
70
  pattern = datetime.datetime(2021, 1, 1, 10, tzinfo=datetime.timezone.utc)
71
71
  self.assertEqual((new := cdt.DateTime(pattern)).to_datetime(), pattern, 'init from datetime and decoding')
72
72
  data = cdt.DateTime("01.__.2021 10:00 700")
File without changes
File without changes
File without changes
File without changes