DLMS-SPODES 0.87.0__tar.gz → 0.87.1__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 (174) hide show
  1. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/PKG-INFO +1 -1
  2. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/pyproject.toml +1 -1
  3. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/config_parser.py +2 -7
  4. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/collection.py +6 -9
  5. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/parameter.py +2 -2
  6. dlms_spodes-0.87.1/src/DLMS_SPODES/cosem_interface_classes/parameters.py +106 -0
  7. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/hdlc/frame.py +5 -9
  8. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/implementations/integers.py +5 -0
  9. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES.egg-info/PKG-INFO +1 -1
  10. dlms_spodes-0.87.0/src/DLMS_SPODES/cosem_interface_classes/parameters.py +0 -41
  11. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/.gitignore +0 -0
  12. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/README.md +0 -0
  13. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/config.toml +0 -0
  14. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/setup.cfg +0 -0
  15. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/Values/EN/__init__.py +0 -0
  16. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/Values/EN/actors.py +0 -0
  17. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/Values/EN/relation_to_obis_names.py +0 -0
  18. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/Values/RU/__init__.py +0 -0
  19. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/Values/RU/actors.py +0 -0
  20. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/Values/RU/relation_to_obis_names.py +0 -0
  21. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/Values/__init__.py +0 -0
  22. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/__init__.py +0 -0
  23. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/configEN.ini +0 -0
  24. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/__class_init__.py +0 -0
  25. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/__init__.py +0 -0
  26. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/a_parameter.py +0 -0
  27. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/activity_calendar.py +0 -0
  28. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/arbitrator.py +0 -0
  29. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/association_ln/__init__.py +0 -0
  30. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/association_ln/abstract.py +0 -0
  31. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/association_ln/authentication_mechanism_name.py +0 -0
  32. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/association_ln/mechanism_id.py +0 -0
  33. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/association_ln/method.py +0 -0
  34. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver0.py +0 -0
  35. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver1.py +0 -0
  36. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver2.py +0 -0
  37. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver3.py +0 -0
  38. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/association_sn/__init__.py +0 -0
  39. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/association_sn/ver0.py +0 -0
  40. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/attr_indexes.py +0 -0
  41. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/clock.py +0 -0
  42. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/cosem_interface_class.py +0 -0
  43. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/data.py +0 -0
  44. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/demand_register/__init__.py +0 -0
  45. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/demand_register/ver0.py +0 -0
  46. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/disconnect_control.py +0 -0
  47. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/extended_register.py +0 -0
  48. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/gprs_modem_setup.py +0 -0
  49. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/__init__.py +0 -0
  50. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver0.py +0 -0
  51. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver1.py +0 -0
  52. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver2.py +0 -0
  53. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/__init__.py +0 -0
  54. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver0.py +0 -0
  55. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver1.py +0 -0
  56. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/iec_local_port_setup.py +0 -0
  57. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/__init__.py +0 -0
  58. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/image_transfer_status.py +0 -0
  59. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/ver0.py +0 -0
  60. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/implementations/__init__.py +0 -0
  61. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/implementations/arbitrator.py +0 -0
  62. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/implementations/data.py +0 -0
  63. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/implementations/profile_generic.py +0 -0
  64. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/ipv4_setup.py +0 -0
  65. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/limiter.py +0 -0
  66. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/ln_pattern.py +0 -0
  67. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/__init__.py +0 -0
  68. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/ver0.py +0 -0
  69. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/ver1.py +0 -0
  70. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/ntp_setup/__init__.py +0 -0
  71. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/ntp_setup/ver0.py +0 -0
  72. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/obis.py +0 -0
  73. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/overview.py +0 -0
  74. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/__init__.py +0 -0
  75. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/ver0.py +0 -0
  76. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/ver1.py +0 -0
  77. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/push_setup/__init__.py +0 -0
  78. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver0.py +0 -0
  79. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver1.py +0 -0
  80. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver2.py +0 -0
  81. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/register.py +0 -0
  82. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/register_activation/__init__.py +0 -0
  83. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/register_activation/ver0.py +0 -0
  84. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/register_monitor.py +0 -0
  85. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/reports.py +0 -0
  86. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/schedule.py +0 -0
  87. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/script_table.py +0 -0
  88. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/security_setup/__init__.py +0 -0
  89. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/security_setup/__pycache__/__init__.cpython-311.pyc +0 -0
  90. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/security_setup/ver0.py +0 -0
  91. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/security_setup/ver1.py +0 -0
  92. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/single_action_schedule.py +0 -0
  93. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/special_days_table.py +0 -0
  94. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_interface_classes/tcp_udp_setup.py +0 -0
  95. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/cosem_pdu.py +0 -0
  96. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/enums.py +0 -0
  97. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/exceptions.py +0 -0
  98. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/firmwares.py +0 -0
  99. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/hdlc/__init__.py +0 -0
  100. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/hdlc/sub_layer.py +0 -0
  101. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/literals.py +0 -0
  102. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/obis/__init__.py +0 -0
  103. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/obis/abstract_objects.py +0 -0
  104. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/obis/media_id.py +0 -0
  105. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/pardata.py +0 -0
  106. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/pdu_enums.py +0 -0
  107. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/py.typed +0 -0
  108. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/relation_to_OBIS.py +0 -0
  109. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/settings.py +0 -0
  110. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/__init__.py +0 -0
  111. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/choices.py +0 -0
  112. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/common_data_types.py +0 -0
  113. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/cosem_service_types.py +0 -0
  114. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/implementations/__init__.py +0 -0
  115. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/implementations/arrays.py +0 -0
  116. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/implementations/bitstrings.py +0 -0
  117. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/implementations/double_long_usingneds.py +0 -0
  118. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/implementations/enums.py +0 -0
  119. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/implementations/long_unsigneds.py +0 -0
  120. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/implementations/octet_string.py +0 -0
  121. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/implementations/structs.py +0 -0
  122. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES/types/useful_types.py +0 -0
  123. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES.egg-info/SOURCES.txt +0 -0
  124. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES.egg-info/dependency_links.txt +0 -0
  125. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES.egg-info/requires.txt +0 -0
  126. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/DLMS_SPODES.egg-info/top_level.txt +0 -0
  127. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/src/__init__.py +0 -0
  128. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/__init__.py +0 -0
  129. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/collection_init.py +0 -0
  130. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/config.toml +0 -0
  131. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/config.zip +0 -0
  132. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/init_collection.py +0 -0
  133. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test.typ +0 -0
  134. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test.xml +0 -0
  135. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_ActivityCalendar.py +0 -0
  136. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_AssociationLN.py +0 -0
  137. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_COSEMInterfaceClass.py +0 -0
  138. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_Data.py +0 -0
  139. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_DemandRegister.py +0 -0
  140. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_DisconnectControl.py +0 -0
  141. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_DisplayReadoutProfile.py +0 -0
  142. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_GSMDiagnostic.py +0 -0
  143. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_IC.py +0 -0
  144. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_ImageTransfer.py +0 -0
  145. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_KPZ.py +0 -0
  146. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_LNPatterns.py +0 -0
  147. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_Limiter.py +0 -0
  148. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_NTPSetup.py +0 -0
  149. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_Parameter.py +0 -0
  150. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_ProfileGeneric.py +0 -0
  151. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_Register.py +0 -0
  152. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_RegisterActivation.py +0 -0
  153. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_RegisterMonitor.py +0 -0
  154. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_ScalerUnitType.py +0 -0
  155. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_Schedule.py +0 -0
  156. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_Structures.py +0 -0
  157. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_a_param.py +0 -0
  158. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_benchmark_create_obj.py +0 -0
  159. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_cdt.py +0 -0
  160. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_collection.py +0 -0
  161. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_config.py +0 -0
  162. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_electric_obj.py +0 -0
  163. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_enums.py +0 -0
  164. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_hdlc.py +0 -0
  165. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_overview.py +0 -0
  166. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_pars.py +0 -0
  167. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_report.py +0 -0
  168. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_save_type.typ +0 -0
  169. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_settings.py +0 -0
  170. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_to_xml.xml +0 -0
  171. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_to_xml2.xml +0 -0
  172. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_to_xml3.xml +0 -0
  173. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_to_xml4.xml +0 -0
  174. {dlms_spodes-0.87.0 → dlms_spodes-0.87.1}/test/test_userfulType.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: DLMS_SPODES
3
- Version: 0.87.0
3
+ Version: 0.87.1
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.87.0"
17
+ version = "0.87.1"
18
18
  authors = [
19
19
  {name="Serj Kotilevski", email="youserj@outlook.com"}
20
20
  ]
@@ -1,4 +1,3 @@
1
- import logging
2
1
  import os
3
2
  import tomllib
4
3
  from typing_extensions import deprecated
@@ -6,9 +5,6 @@ from typing_extensions import deprecated
6
5
 
7
6
  print("Path: ", os.getcwd())
8
7
 
9
- logger = logging.getLogger(__name__)
10
- logger.level = logging.INFO
11
-
12
8
 
13
9
  @deprecated("use settings.settings")
14
10
  def get_values(*args: str) -> dict | None:
@@ -20,7 +16,7 @@ def get_values(*args: str) -> dict | None:
20
16
  par = par[key]
21
17
  continue
22
18
  except KeyError as e:
23
- logger.info(e.args[0])
19
+ print(f"error: {e.args[0]}")
24
20
  return None
25
21
  return par
26
22
 
@@ -28,10 +24,9 @@ def get_values(*args: str) -> dict | None:
28
24
  if not os.path.isfile(path := ".//config.toml"):
29
25
  path = F"{os.path.dirname(__file__)}{path}"
30
26
  elif not os.path.isfile(path):
31
- logger.warning("NOT FIND CONFIGURATION: <config.toml>")
27
+ print("NOT FIND CONFIGURATION: <config.toml>")
32
28
  with open(path, "rb") as f:
33
29
  config = tomllib.load(f)
34
- logger.info(F"Find configuration <config.toml> with path: {f}")
35
30
  print(F"Find configuration <config.toml> with path: {f}")
36
31
 
37
32
  _messages = get_values("DLMS", "messages")
@@ -8,7 +8,6 @@ from dataclasses import dataclass
8
8
  from itertools import count, chain
9
9
  from functools import reduce, cached_property, lru_cache
10
10
  from typing import TypeAlias, Iterator, Type, Self, Callable, Literal, Iterable, Optional, Hashable
11
- import logging
12
11
  from semver import Version as SemVer
13
12
  from StructResult import result
14
13
  from ..types import common_data_types as cdt, cosem_service_types as cst, useful_types as ut
@@ -275,8 +274,6 @@ _UNDER_OVER_LIMIT_MAGNITUDES = (34, 38)
275
274
  _NOT_PROCESSING_OF_MEASUREMENT_VALUES = tuple(set(range(256)).difference((0, 93, 94, 96, 97, 98, 99))) # BlueBook DLMS UA 1000-1 Ed.14 7.5.2.1 Table 66
276
275
  _RU_CHANGE_LIMIT_LEVEL = 134
277
276
 
278
- logger = logging.getLogger(__name__)
279
- logger.level = logging.INFO
280
277
 
281
278
 
282
279
  @dataclass(frozen=True)
@@ -683,7 +680,7 @@ class Collection:
683
680
  """ all DLMS objects container with obis key """
684
681
 
685
682
  @property
686
- def id(self) -> ID | None:
683
+ def id(self) -> ID:
687
684
  return self.__id
688
685
 
689
686
  def set_id(self, value: ID):
@@ -740,7 +737,7 @@ class Collection:
740
737
  value=value.encoding,
741
738
  data_type=source.get_attr(i).__class__)
742
739
  except exc.EmptyObj as e:
743
- logger.warning(F"can't copy {target} attr={i}, skipped. {e}")
740
+ print(F"can't copy {target} attr={i}, skipped. {e}")
744
741
 
745
742
  def copy(self) -> result.Simple["Collection"]:
746
743
  """copy collection with value by Association"""
@@ -898,7 +895,7 @@ class Collection:
898
895
  func_map=func_maps[self.spec_map])(logical_name)
899
896
  new_object.collection = self
900
897
  self.__objs[o.OBIS(logical_name.contents)] = new_object
901
- logger.info(F'Create {new_object}')
898
+ print(F'Create {new_object}')
902
899
  return new_object
903
900
  except ValueError as e:
904
901
  raise ValueError(F"error getting DLMS object instance with {class_id=} {version=} {logical_name=}: {e}")
@@ -1186,7 +1183,7 @@ class Collection:
1186
1183
  obj=self.get_object(obj_def.logical_name),
1187
1184
  par=bytes([int(obj_def.attribute_index)]))
1188
1185
  except ic.EmptyAttribute as e:
1189
- logger.error(F"Can't fill Scaler and Unit for {get_name(obj_def.logical_name)}: {e}")
1186
+ print(F"Can't fill Scaler and Unit for {get_name(obj_def.logical_name)}: {e}")
1190
1187
  finally:
1191
1188
  res.append(s_u)
1192
1189
  return res
@@ -1495,7 +1492,7 @@ class Collection:
1495
1492
  continue
1496
1493
  indexes.append(-i)
1497
1494
  except exc.ITEApplication as e:
1498
- logger.error(F"skip {i}... methods for {obj}: {e}")
1495
+ print(F"skip {i}... methods for {obj}: {e}")
1499
1496
  break
1500
1497
  if len(indexes) != 0:
1501
1498
  objects[obj] = indexes
@@ -2090,7 +2087,7 @@ class Template:
2090
2087
  obj_col = col.get_object(ln)
2091
2088
  except exc.NoObject as e:
2092
2089
  ret.append(e)
2093
- logger.warning(F"<add_collection> skip obj{self}: {e}")
2090
+ print(F"<add_collection> skip obj{self}: {e}")
2094
2091
  continue
2095
2092
  for i in indexes:
2096
2093
  if (attr := obj.get_attr(i)) is not None:
@@ -2,7 +2,7 @@ from typing_extensions import deprecated
2
2
  from dataclasses import dataclass
3
3
  import numpy as np
4
4
  from struct import Struct, pack, unpack_from
5
- from typing import Optional, cast, Iterator
5
+ from typing import Optional, cast, Iterator, Self
6
6
  import re
7
7
  from functools import cached_property
8
8
  from .. import exceptions as exc
@@ -44,7 +44,7 @@ class Parameter:
44
44
  return self._value
45
45
 
46
46
  @classmethod
47
- def parse(cls, value: str) -> "Parameter":
47
+ def parse(cls, value: str) -> Self:
48
48
  """create from string. Only LN, attr/meth type ddd.ddd.ddd.ddd.ddd.ddd:aaa, ex.: 0.0.1.0.0.255 """
49
49
  if (res := _pattern.fullmatch(value)) is None:
50
50
  raise ValueError(F"in {cls.__name__}.parse got wrong :{value:}")
@@ -0,0 +1,106 @@
1
+ from dataclasses import dataclass
2
+ from functools import cached_property
3
+ from typing import Self
4
+ from .parameter import Parameter
5
+
6
+
7
+ @dataclass(frozen=True)
8
+ class Data(Parameter):
9
+ @property
10
+ def value(self) -> Parameter:
11
+ return self.get_attr(2)
12
+
13
+
14
+ class ActiveFirmwareIdentifier(Data):
15
+ def from_b(self, b: int) -> "ActiveFirmwareIdentifier":
16
+ return cls.parse(f"0.{b}.0.2.0.255")
17
+
18
+
19
+ ACTIVE_FIRMWARE_IDENTIFIER_0 = ActiveFirmwareIdentifier.from_b(0)
20
+
21
+
22
+ @dataclass(frozen=True)
23
+ class Register(Data):
24
+ @property
25
+ def scaler_unit(self) -> Parameter:
26
+ return self.get_attr(3)
27
+
28
+
29
+ @dataclass(frozen=True)
30
+ class DisconnectControl(Parameter):
31
+
32
+ @classmethod
33
+ def from_b(cls, b: int) -> "DisconnectControl":
34
+ return cls.parse(f"0.{b}.96.3.10.255")
35
+
36
+ @property
37
+ def output_state(self) -> "DisconnectControl":
38
+ return self.get_attr(2)
39
+
40
+ @property
41
+ def control_state(self) -> "DisconnectControl":
42
+ return self.get_attr(3)
43
+
44
+ @property
45
+ def control_mode(self) -> "DisconnectControl":
46
+ return self.get_attr(4)
47
+
48
+ @property
49
+ def remote_disconnect(self) -> "DisconnectControl":
50
+ return self.get_meth(1)
51
+
52
+ @property
53
+ def remote_reconnect(self) -> "DisconnectControl":
54
+ return self.get_meth(2)
55
+
56
+
57
+ DISCONNECT_CONTROL_0 = DisconnectControl.from_b(0)
58
+
59
+
60
+ @dataclass(frozen=True)
61
+ class ImageTransfer(Parameter):
62
+ @classmethod
63
+ def from_e(cls, e: int = 0) -> "ImageTransfer":
64
+ return cls.parse(f"0.0.44.0.{e}.255")
65
+
66
+ @property
67
+ def image_block_size(self) -> "ImageTransfer":
68
+ return self.get_attr(2)
69
+
70
+ @property
71
+ def image_transferred_blocks_status(self) -> "ImageTransfer":
72
+ return self.get_attr(3)
73
+
74
+ @property
75
+ def image_first_not_transferred_block_number(self) -> "ImageTransfer":
76
+ return self.get_attr(4)
77
+
78
+ @property
79
+ def image_transfer_enabled(self) -> "ImageTransfer":
80
+ return self.get_attr(5)
81
+
82
+ @property
83
+ def image_transfer_status(self) -> "ImageTransfer":
84
+ return self.get_attr(6)
85
+
86
+ @property
87
+ def image_to_activate_info(self) -> "ImageTransfer":
88
+ return self.get_attr(7)
89
+
90
+ @property
91
+ def image_transfer_initiate(self) -> "ImageTransfer":
92
+ return self.get_meth(1)
93
+
94
+ @property
95
+ def image_block_transfer(self) -> "ImageTransfer":
96
+ return self.get_meth(2)
97
+
98
+ @property
99
+ def image_verify(self) -> "ImageTransfer":
100
+ return self.get_meth(3)
101
+
102
+ @property
103
+ def image_activate(self) -> "ImageTransfer":
104
+ return self.get_meth(4)
105
+
106
+
@@ -4,10 +4,6 @@ from struct import unpack, pack
4
4
  from functools import cached_property
5
5
  from typing import Deque
6
6
  from enum import IntFlag
7
- import logging
8
-
9
- logger = logging.getLogger(__name__)
10
- logger.level = logging.INFO
11
7
 
12
8
  _FLAG: int = 0x7e
13
9
 
@@ -750,13 +746,13 @@ class Frame:
750
746
  try:
751
747
  return cls(value)
752
748
  except ValueError as e:
753
- logger.info(F'Wrong Frame: {e.args[0]}')
749
+ print(F'Wrong Frame: {e.args[0]}')
754
750
  return None
755
751
  except NotEnoughDataError as e:
756
- logger.info(F'Frame Error: {e.args[0]}')
752
+ print(F'Frame Error: {e.args[0]}')
757
753
  return None
758
754
  except FormatDataError as e:
759
- logger.info(F'Frame Error: {e.args[0]}')
755
+ print(F'Frame Error: {e.args[0]}')
760
756
  value.pop(0)
761
757
  return None
762
758
 
@@ -819,7 +815,7 @@ class Frame:
819
815
  info: bytearray = bytearray(frame.info)
820
816
  break
821
817
  else:
822
- logger.warning(F'Frame {frame} not handled and deleted')
818
+ print(F'Frame {frame} not handled and deleted')
823
819
  else:
824
820
  raise ValueError('Not found information Frame')
825
821
  while frame.is_segmentation:
@@ -831,7 +827,7 @@ class Frame:
831
827
  info.extend(next_frame.info)
832
828
  frame = next_frame
833
829
  else:
834
- logger.warning(F'Frame {frame} not handled and deleted')
830
+ print(F'Frame {frame} not handled and deleted')
835
831
  return info
836
832
 
837
833
 
@@ -1,6 +1,11 @@
1
1
  """all realisation cdt.Integer subclasses"""
2
2
  from ...types import common_data_types as cdt
3
+ from typing_extensions import deprecated
3
4
 
4
5
 
6
+ @deprecated("use INTEGER_0")
5
7
  class Only0(cdt.Integer, value=0):
6
8
  """ Limited Integer only 0 """
9
+
10
+
11
+ INTEGER_0 = cdt.Integer(0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: DLMS_SPODES
3
- Version: 0.87.0
3
+ Version: 0.87.1
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
@@ -1,41 +0,0 @@
1
- from dataclasses import dataclass
2
- from functools import cached_property
3
- from typing import Self
4
- from .parameter import Parameter
5
-
6
-
7
- @dataclass(frozen=True)
8
- class Data(Parameter):
9
- @property
10
- def value(self) -> Parameter:
11
- return self.get_attr(2)
12
-
13
-
14
- @dataclass(frozen=True)
15
- class Register(Data):
16
- @property
17
- def scaler_unit(self) -> Parameter:
18
- return self.get_attr(3)
19
-
20
-
21
- @dataclass(frozen=True)
22
- class DisconnectControl(Parameter):
23
-
24
- @classmethod
25
- def from_b(cls, b: int) -> "DisconnectControl":
26
- return cls.parse(f"0.{b}.96.3.10.255")
27
-
28
- @property
29
- def output_state(self) -> "DisconnectControl":
30
- return self.get_attr(2)
31
-
32
- @property
33
- def control_state(self) -> "DisconnectControl":
34
- return self.get_attr(3)
35
-
36
- @property
37
- def control_mode(self) -> "DisconnectControl":
38
- return self.get_attr(4)
39
-
40
-
41
- DISCONNECT_CONTROL_0 = DisconnectControl.from_b(0)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes