DLMS-SPODES 0.87.2__tar.gz → 0.87.3__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.
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/PKG-INFO +1 -1
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/pyproject.toml +1 -1
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/parameters.py +73 -2
- dlms_spodes-0.87.3/src/DLMS_SPODES/cosem_interface_classes/reports.py +70 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES.egg-info/PKG-INFO +1 -1
- dlms_spodes-0.87.2/src/DLMS_SPODES/cosem_interface_classes/reports.py +0 -72
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/.gitignore +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/README.md +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/config.toml +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/setup.cfg +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/Values/EN/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/Values/EN/actors.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/Values/EN/relation_to_obis_names.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/Values/RU/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/Values/RU/actors.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/Values/RU/relation_to_obis_names.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/Values/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/configEN.ini +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/config_parser.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/__class_init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/a_parameter.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/activity_calendar.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/arbitrator.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/association_ln/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/association_ln/abstract.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/association_ln/authentication_mechanism_name.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/association_ln/mechanism_id.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/association_ln/method.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver1.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver2.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/association_ln/ver3.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/association_sn/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/association_sn/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/attr_indexes.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/clock.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/collection.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/cosem_interface_class.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/data.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/demand_register/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/demand_register/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/disconnect_control.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/extended_register.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/gprs_modem_setup.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver1.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/gsm_diagnostic/ver2.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/iec_hdlc_setup/ver1.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/iec_local_port_setup.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/image_transfer_status.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/image_transfer/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/implementations/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/implementations/arbitrator.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/implementations/data.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/implementations/profile_generic.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/ipv4_setup.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/limiter.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/ln_pattern.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/modem_configuration/ver1.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/ntp_setup/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/ntp_setup/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/obis.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/overview.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/parameter.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/profile_generic/ver1.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/push_setup/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver1.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver2.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/register.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/register_activation/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/register_activation/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/register_monitor.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/schedule.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/script_table.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/security_setup/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/security_setup/__pycache__/__init__.cpython-311.pyc +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/security_setup/ver0.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/security_setup/ver1.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/single_action_schedule.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/special_days_table.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/tcp_udp_setup.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_pdu.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/enums.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/exceptions.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/firmwares.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/hdlc/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/hdlc/frame.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/hdlc/sub_layer.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/literals.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/obis/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/obis/abstract_objects.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/obis/media_id.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/pardata.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/pdu_enums.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/py.typed +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/relation_to_OBIS.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/settings.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/choices.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/common_data_types.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/cosem_service_types.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/arrays.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/bitstrings.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/double_long_usingneds.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/enums.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/integers.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/long_unsigneds.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/octet_string.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/structs.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/useful_types.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES.egg-info/SOURCES.txt +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES.egg-info/dependency_links.txt +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES.egg-info/requires.txt +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES.egg-info/top_level.txt +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/__init__.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/collection_init.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/config.toml +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/config.zip +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/init_collection.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test.typ +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test.xml +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_ActivityCalendar.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_AssociationLN.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_COSEMInterfaceClass.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_Data.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_DemandRegister.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_DisconnectControl.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_DisplayReadoutProfile.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_GSMDiagnostic.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_IC.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_ImageTransfer.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_KPZ.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_LNPatterns.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_Limiter.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_NTPSetup.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_Parameter.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_ProfileGeneric.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_Register.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_RegisterActivation.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_RegisterMonitor.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_ScalerUnitType.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_Schedule.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_Structures.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_a_param.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_benchmark_create_obj.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_cdt.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_collection.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_config.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_electric_obj.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_enums.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_hdlc.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_overview.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_pars.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_report.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_save_type.typ +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_settings.py +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_to_xml.xml +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_to_xml2.xml +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_to_xml3.xml +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_to_xml4.xml +0 -0
- {dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/test/test_userfulType.py +0 -0
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/parameters.py
RENAMED
|
@@ -14,11 +14,11 @@ class Data(Parameter):
|
|
|
14
14
|
class ActiveFirmwareIdentifier(Data):
|
|
15
15
|
|
|
16
16
|
@classmethod
|
|
17
|
-
def from_b(cls, b: int) -> "ActiveFirmwareIdentifier":
|
|
17
|
+
def from_b(cls, b: int = 0) -> "ActiveFirmwareIdentifier":
|
|
18
18
|
return cls.parse(f"0.{b}.0.2.0.255")
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
ACTIVE_FIRMWARE_IDENTIFIER_0 = ActiveFirmwareIdentifier.from_b(
|
|
21
|
+
ACTIVE_FIRMWARE_IDENTIFIER_0 = ActiveFirmwareIdentifier.from_b()
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
@dataclass(frozen=True)
|
|
@@ -28,6 +28,77 @@ class Register(Data):
|
|
|
28
28
|
return self.get_attr(3)
|
|
29
29
|
|
|
30
30
|
|
|
31
|
+
@dataclass(frozen=True)
|
|
32
|
+
class Clock(Parameter):
|
|
33
|
+
@classmethod
|
|
34
|
+
def from_be(cls, b: int = 0, e: int = 0) -> "Clock":
|
|
35
|
+
return cls.parse(f"0.{b}.1.0.{e}.255")
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def time(self) -> "Clock":
|
|
39
|
+
return self.get_attr(2)
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def time_zone(self) -> "Clock":
|
|
43
|
+
return self.get_attr(3)
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def status(self) -> "Clock":
|
|
47
|
+
return self.get_attr(4)
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def time_zone(self) -> "Clock":
|
|
51
|
+
return self.get_attr(3)
|
|
52
|
+
|
|
53
|
+
@property
|
|
54
|
+
def status(self) -> "Clock":
|
|
55
|
+
return self.get_attr(4)
|
|
56
|
+
|
|
57
|
+
@property
|
|
58
|
+
def daylight_savings_begin(self) -> "Clock":
|
|
59
|
+
return self.get_attr(5)
|
|
60
|
+
|
|
61
|
+
@property
|
|
62
|
+
def daylight_savings_end(self) -> "Clock":
|
|
63
|
+
return self.get_attr(6)
|
|
64
|
+
|
|
65
|
+
@property
|
|
66
|
+
def daylight_savings_deviation(self) -> "Clock":
|
|
67
|
+
return self.get_attr(7)
|
|
68
|
+
|
|
69
|
+
@property
|
|
70
|
+
def daylight_savings_enabled(self) -> "Clock":
|
|
71
|
+
return self.get_attr(8)
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def clock_base(self) -> "Clock":
|
|
75
|
+
return self.get_attr(9)
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def adjust_to_quarter(self) -> "Clock":
|
|
79
|
+
return self.get_meth(1)
|
|
80
|
+
|
|
81
|
+
@property
|
|
82
|
+
def adjust_to_measuring_period(self) -> "Clock":
|
|
83
|
+
return self.get_meth(2)
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def adjust_to_minute(self) -> "Clock":
|
|
87
|
+
return self.get_meth(3)
|
|
88
|
+
|
|
89
|
+
@property
|
|
90
|
+
def adjust_to_preset_time(self) -> "Clock":
|
|
91
|
+
return self.get_meth(4)
|
|
92
|
+
|
|
93
|
+
@property
|
|
94
|
+
def preset_adjusting_time(self) -> "Clock":
|
|
95
|
+
return self.get_meth(5)
|
|
96
|
+
|
|
97
|
+
@property
|
|
98
|
+
def shift_time(self) -> "Clock":
|
|
99
|
+
return self.get_meth(6)
|
|
100
|
+
|
|
101
|
+
|
|
31
102
|
@dataclass(frozen=True)
|
|
32
103
|
class DisconnectControl(Parameter):
|
|
33
104
|
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from typing import Any, Iterable
|
|
2
|
+
from StructResult import result
|
|
3
|
+
from . import cosem_interface_class as ic
|
|
4
|
+
from ..types import cdt
|
|
5
|
+
from .parameter import Parameter
|
|
6
|
+
from ..cosem_interface_classes import collection
|
|
7
|
+
from ..config_parser import get_values
|
|
8
|
+
from ..settings import settings
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def from_obj(
|
|
12
|
+
col: collection.Collection,
|
|
13
|
+
obj: ic.COSEMInterfaceClasses,
|
|
14
|
+
attr_index_par: tuple[int, ...]
|
|
15
|
+
) -> result.SimpleOrError[str]:
|
|
16
|
+
if not hasattr(from_obj, "struct_pattern"):
|
|
17
|
+
from_obj.struct_pattern = dict(settings.report.struct)
|
|
18
|
+
ret: str = F"[{collection.get_name(obj.logical_name)}]\n"
|
|
19
|
+
for i in attr_index_par:
|
|
20
|
+
par = Parameter(obj.logical_name.contents).set_i(i)
|
|
21
|
+
if isinstance(res_data := col.par2data(par), result.Error):
|
|
22
|
+
return res_data
|
|
23
|
+
a_data = res_data.value
|
|
24
|
+
if isinstance(a_data, cdt.SimpleDataType):
|
|
25
|
+
rep = col.par2rep(par, a_data)
|
|
26
|
+
ret += F" {obj.get_attr_element(i)}: {rep.msg}{f" {rep.unit}" if rep.unit else ""}\n"
|
|
27
|
+
elif isinstance(a_data, cdt.ComplexDataType):
|
|
28
|
+
ret += F" [{obj.get_attr_element(i)}]\n"
|
|
29
|
+
stack: list[tuple[Any, Any]] = [("", iter(a_data))]
|
|
30
|
+
while stack:
|
|
31
|
+
name, value_it = stack[-1]
|
|
32
|
+
indent = F"{' ' * (len(stack) + 1)}"
|
|
33
|
+
data = next(value_it, None)
|
|
34
|
+
if data:
|
|
35
|
+
if not isinstance(name, str):
|
|
36
|
+
name = str(next(name))
|
|
37
|
+
if isinstance(data, cdt.Array):
|
|
38
|
+
ret += F"{indent}[{name}]\n"
|
|
39
|
+
stack.append(("*", iter(data)))
|
|
40
|
+
elif isinstance(data, cdt.Structure):
|
|
41
|
+
if (pattern := from_obj.struct_pattern.get(data.__class__.__name__)):
|
|
42
|
+
val = list(pattern)
|
|
43
|
+
val.reverse()
|
|
44
|
+
result_ = str()
|
|
45
|
+
while val:
|
|
46
|
+
match val.pop():
|
|
47
|
+
case "%":
|
|
48
|
+
par_ = val.pop()
|
|
49
|
+
index = int(val.pop() + val.pop())
|
|
50
|
+
match par_:
|
|
51
|
+
case "n":
|
|
52
|
+
result_ += str(data.ELEMENTS[index])
|
|
53
|
+
case "v":
|
|
54
|
+
result_ += str(data[index])
|
|
55
|
+
case err:
|
|
56
|
+
raise ValueError(F"unknown macros &{err}{index}")
|
|
57
|
+
case symbol:
|
|
58
|
+
result_ += symbol
|
|
59
|
+
ret += F"{indent}{result_}\n"
|
|
60
|
+
else:
|
|
61
|
+
if name=="":
|
|
62
|
+
ret += "\n"
|
|
63
|
+
else:
|
|
64
|
+
ret += F"{indent}[{name}]\n"
|
|
65
|
+
stack.append((iter(data.ELEMENTS), iter(data)))
|
|
66
|
+
else:
|
|
67
|
+
ret += F"{indent}{name}: {data}\n"
|
|
68
|
+
else:
|
|
69
|
+
stack.pop()
|
|
70
|
+
return result.Simple(ret)
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
from typing import Any
|
|
2
|
-
from .collection import ic, cdt
|
|
3
|
-
from ..cosem_interface_classes import collection
|
|
4
|
-
from ..config_parser import get_values
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def get_obj_report(
|
|
8
|
-
obj: ic.COSEMInterfaceClasses,
|
|
9
|
-
attr_index_par: tuple[int | Any, ...]) -> str:
|
|
10
|
-
struct_report: dict | None = get_values("DLMS", "report", "struct")
|
|
11
|
-
ret = str()
|
|
12
|
-
ret += F"[{collection.get_name(obj.logical_name)}]\n"
|
|
13
|
-
for i in attr_index_par:
|
|
14
|
-
if isinstance(i, int):
|
|
15
|
-
pass
|
|
16
|
-
else:
|
|
17
|
-
i, par = i[0], i[1:]
|
|
18
|
-
value = obj.get_attr(i)
|
|
19
|
-
if isinstance(value, cdt.SimpleDataType):
|
|
20
|
-
match obj, i:
|
|
21
|
-
case collection.impl.data.DLMSDeviceIDObject(), 2: value = value.to_str()
|
|
22
|
-
case _: pass
|
|
23
|
-
if isinstance(value, cdt.OctetString):
|
|
24
|
-
pass
|
|
25
|
-
if hasattr(value, "report"):
|
|
26
|
-
value = value.report
|
|
27
|
-
ret += F" {obj.get_attr_element(i)}: {value}\n"
|
|
28
|
-
elif isinstance(value, cdt.ComplexDataType):
|
|
29
|
-
ret += F" [{obj.get_attr_element(i)}]\n"
|
|
30
|
-
stack: list = [("", iter(value))]
|
|
31
|
-
while stack:
|
|
32
|
-
name, value_it = stack[-1]
|
|
33
|
-
indent = F"{' '*(len(stack) + 1)}"
|
|
34
|
-
value = next(value_it, None)
|
|
35
|
-
if value:
|
|
36
|
-
if not isinstance(name, str):
|
|
37
|
-
name = next(name).NAME
|
|
38
|
-
if isinstance(value, cdt.Array):
|
|
39
|
-
ret += F"{indent}[{name}]\n"
|
|
40
|
-
stack.append(("*", iter(value)))
|
|
41
|
-
elif isinstance(value, cdt.Structure):
|
|
42
|
-
if struct_report and (pattern := struct_report.get(value.__class__.__name__)):
|
|
43
|
-
val = list(pattern)
|
|
44
|
-
val.reverse()
|
|
45
|
-
result = str()
|
|
46
|
-
while val:
|
|
47
|
-
i = val.pop()
|
|
48
|
-
match i:
|
|
49
|
-
case "%":
|
|
50
|
-
par = val.pop()
|
|
51
|
-
index = int(val.pop() + val.pop())
|
|
52
|
-
match par:
|
|
53
|
-
case "n":
|
|
54
|
-
result += value.ELEMENTS[index].NAME
|
|
55
|
-
case "v":
|
|
56
|
-
result += str(value[index])
|
|
57
|
-
case err:
|
|
58
|
-
raise ValueError(F"unknown macros &{err}{index}")
|
|
59
|
-
case symbol:
|
|
60
|
-
result += symbol
|
|
61
|
-
ret += F"{indent}{result}\n"
|
|
62
|
-
else:
|
|
63
|
-
if name == "":
|
|
64
|
-
ret += "\n"
|
|
65
|
-
else:
|
|
66
|
-
ret += F"{indent}[{name}]\n"
|
|
67
|
-
stack.append((iter(value.ELEMENTS), iter(value)))
|
|
68
|
-
else:
|
|
69
|
-
ret += F"{indent}{name}: {value}\n"
|
|
70
|
-
else:
|
|
71
|
-
stack.pop()
|
|
72
|
-
return ret
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/Values/EN/relation_to_obis_names.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/Values/RU/relation_to_obis_names.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/__class_init__.py
RENAMED
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/__init__.py
RENAMED
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/a_parameter.py
RENAMED
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/arbitrator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/attr_indexes.py
RENAMED
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/collection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/ipv4_setup.py
RENAMED
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/limiter.py
RENAMED
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/ln_pattern.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/ntp_setup/ver0.py
RENAMED
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/overview.py
RENAMED
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/parameter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver0.py
RENAMED
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver1.py
RENAMED
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/push_setup/ver2.py
RENAMED
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/register.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/schedule.py
RENAMED
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/script_table.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/cosem_interface_classes/tcp_udp_setup.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/bitstrings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/long_unsigneds.py
RENAMED
|
File without changes
|
{dlms_spodes-0.87.2 → dlms_spodes-0.87.3}/src/DLMS_SPODES/types/implementations/octet_string.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|