Coverage report: 97%

Files Functions Classes

coverage.py v7.15.4, created at 2026-09-25 21:14 +0000

File function   statements missing excluded   coverage
custom_components/supernotify/__init__.py async_reload_yaml_config_and_entries   4 0 0   100%
custom_components/supernotify/__init__.py async_setup   9 0 0   100%
custom_components/supernotify/__init__.py async_setup._async_reload   1 0 0   100%
custom_components/supernotify/__init__.py _entry_full_config   3 0 0   100%
custom_components/supernotify/__init__.py _async_remove_legacy_default_entities   7 3 0   57%
custom_components/supernotify/__init__.py async_setup_entry   33 2 0   94%
custom_components/supernotify/__init__.py _async_update_listener   1 0 0   100%
custom_components/supernotify/__init__.py async_unload_entry   7 0 0   100%
custom_components/supernotify/__init__.py (no function)   29 0 6   100%
custom_components/supernotify/actions.py lift_legacy_nested_data   11 0 0   100%
custom_components/supernotify/actions.py merge_delivery_fields   16 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions   36 1 0   97%
custom_components/supernotify/actions.py async_register_engine_actions.action_notify   20 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_configuration   1 1 0   0%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_refresh_entities   1 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_reset_overrides   2 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_implicit_deliveries   1 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_deliveries_by_scenario   1 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_last_notification   2 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_active_scenarios   5 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_scenarios   1 1 0   0%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_occupancy   1 1 0   0%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_snoozes   1 1 0   0%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_clear_snoozes   1 1 0   0%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_recipients   1 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_archive   17 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_purge_archive   6 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_purge_media   6 0 0   100%
custom_components/supernotify/actions.py async_describe_configured_names   11 0 0   100%
custom_components/supernotify/actions.py async_unregister_engine_actions   3 0 0   100%
custom_components/supernotify/actions.py (no function)   29 0 2   100%
custom_components/supernotify/archive.py ArchivableObject.base_filename   1 0 0   100%
custom_components/supernotify/archive.py ArchivableObject.contents   1 0 0   100%
custom_components/supernotify/archive.py ArchivableObject.outcome   1 0 0   100%
custom_components/supernotify/archive.py ArchivableObject.diagnostics_selected   1 0 0   100%
custom_components/supernotify/archive.py ArchivableObject.selected   3 1 0   67%
custom_components/supernotify/archive.py ArchiveDestination.archive   1 0 0   100%
custom_components/supernotify/archive.py EventArchiver.__init__   19 1 0   95%
custom_components/supernotify/archive.py EventArchiver.archive   7 0 0   100%
custom_components/supernotify/archive.py ArchiveTopic.__init__   6 0 0   100%
custom_components/supernotify/archive.py ArchiveTopic.initialize   5 0 0   100%
custom_components/supernotify/archive.py ArchiveTopic.archive   11 0 0   100%
custom_components/supernotify/archive.py ArchiveDirectory.__init__   6 0 0   100%
custom_components/supernotify/archive.py ArchiveDirectory.initialize   16 0 0   100%
custom_components/supernotify/archive.py ArchiveDirectory.archive   24 0 0   100%
custom_components/supernotify/archive.py ArchiveDirectory.list_entries   27 8 0   70%
custom_components/supernotify/archive.py ArchiveDirectory.read_entry   11 3 0   73%
custom_components/supernotify/archive.py ArchiveDirectory.size   4 0 0   100%
custom_components/supernotify/archive.py ArchiveDirectory.recent   15 3 0   80%
custom_components/supernotify/archive.py ArchiveDirectory.cleanup   21 0 0   100%
custom_components/supernotify/archive.py NotificationArchive.__init__   15 0 0   100%
custom_components/supernotify/archive.py NotificationArchive.initialize   11 0 0   100%
custom_components/supernotify/archive.py NotificationArchive.size   1 0 0   100%
custom_components/supernotify/archive.py NotificationArchive.recent   1 0 0   100%
custom_components/supernotify/archive.py NotificationArchive.cleanup   2 0 0   100%
custom_components/supernotify/archive.py NotificationArchive.archive   8 0 0   100%
custom_components/supernotify/archive.py (no function)   52 0 4   100%
custom_components/supernotify/binary_sensor.py async_setup_entry   32 0 0   100%
custom_components/supernotify/binary_sensor.py _existing_row   2 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyScenarioBinarySensor.__init__   6 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyScenarioBinarySensor.is_on   1 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyScenarioBinarySensor.extra_state_attributes   1 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyScenarioBinarySensor.async_added_to_hass   2 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyScenarioBinarySensor.async_will_remove_from_hass   2 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyScenarioManualBinarySensor.async_added_to_hass   5 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyScenarioManualBinarySensor._async_state_changed   8 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyRecipientBinarySensor.__init__   6 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyRecipientBinarySensor.is_on   1 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyRecipientBinarySensor.extra_state_attributes   1 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyRecipientBinarySensor.async_added_to_hass   2 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyRecipientBinarySensor.async_will_remove_from_hass   2 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyLegacyBinarySensor.__init__   6 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyLegacyBinarySensor.is_on   1 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyLegacyBinarySensor.extra_state_attributes   1 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyLegacyBinarySensor.async_added_to_hass   2 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyLegacyBinarySensor.async_will_remove_from_hass   2 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyDeliveryBinarySensor.__init__   1 0 0   100%
custom_components/supernotify/binary_sensor.py SupernotifyTransportBinarySensor.__init__   1 0 0   100%
custom_components/supernotify/binary_sensor.py (no function)   66 0 10   100%
custom_components/supernotify/button.py async_setup_entry   2 0 0   100%
custom_components/supernotify/button.py SupernotifyResetOverridesButton.__init__   2 0 0   100%
custom_components/supernotify/button.py SupernotifyResetOverridesButton.async_press   1 0 0   100%
custom_components/supernotify/button.py (no function)   14 0 5   100%
custom_components/supernotify/common.py safe_get   2 0 0   100%
custom_components/supernotify/common.py safe_extend   9 0 0   100%
custom_components/supernotify/common.py nullable_ensure_list   3 0 0   100%
custom_components/supernotify/common.py ensure_list   7 0 0   100%
custom_components/supernotify/common.py ensure_dict   7 0 0   100%
custom_components/supernotify/common.py sanitize   20 2 0   90%
custom_components/supernotify/common.py CallRecord.contents   8 2 0   75%
custom_components/supernotify/common.py DupeCheckable.hash   1 1 0   0%
custom_components/supernotify/common.py DupeChecker.__init__   2 0 0   100%
custom_components/supernotify/common.py DupeChecker.check   13 1 0   92%
custom_components/supernotify/common.py boolify   7 0 0   100%
custom_components/supernotify/common.py int_or_none   6 0 0   100%
custom_components/supernotify/common.py (no function)   40 0 2   100%
custom_components/supernotify/config_flow.py _event_policy_str   8 3 0   62%
custom_components/supernotify/config_flow.py _event_policy_to_list   2 0 0   100%
custom_components/supernotify/config_flow.py _event_policy_from_list   1 0 0   100%
custom_components/supernotify/config_flow.py extract_legacy_options   17 0 0   100%
custom_components/supernotify/config_flow.py extract_legacy_data   1 0 0   100%
custom_components/supernotify/config_flow.py _user_schema   2 0 0   100%
custom_components/supernotify/config_flow.py _ensure_directory_exists   9 0 0   100%
custom_components/supernotify/config_flow.py _validate_user_input   14 0 0   100%
custom_components/supernotify/config_flow.py SupernotifyConfigFlow.async_step_user   6 0 0   100%
custom_components/supernotify/config_flow.py SupernotifyConfigFlow.async_step_reconfigure   8 0 0   100%
custom_components/supernotify/config_flow.py SupernotifyConfigFlow.async_step_import   4 0 0   100%
custom_components/supernotify/config_flow.py SupernotifyConfigFlow.async_get_options_flow   1 0 0   100%
custom_components/supernotify/config_flow.py SupernotifyOptionsFlow.async_step_init   1 0 0   100%
custom_components/supernotify/config_flow.py SupernotifyOptionsFlow.async_step_archive   12 0 0   100%
custom_components/supernotify/config_flow.py SupernotifyOptionsFlow.async_step_dupe_check   5 0 0   100%
custom_components/supernotify/config_flow.py SupernotifyOptionsFlow.async_step_housekeeping   8 0 0   100%
custom_components/supernotify/config_flow.py SupernotifyOptionsFlow.async_step_delivery_control   10 0 0   100%
custom_components/supernotify/config_flow.py SupernotifyOptionsFlow.async_step_llm_tools   5 0 0   100%
custom_components/supernotify/config_flow.py (no function)   42 0 0   100%
custom_components/supernotify/const.py (no function)   225 0 0   100%
custom_components/supernotify/context.py Context.__init__   15 1 0   93%
custom_components/supernotify/context.py Context.initialize   3 0 0   100%
custom_components/supernotify/context.py Context.configure_for_tests   1 0 0   100%
custom_components/supernotify/context.py (no function)   12 0 11   100%
custom_components/supernotify/delivery.py Delivery.__init__   17 0 0   100%
custom_components/supernotify/delivery.py Delivery.initialize   30 0 0   100%
custom_components/supernotify/delivery.py Delivery.upgrade_deprecations   6 2 0   67%
custom_components/supernotify/delivery.py Delivery.discover_devices   22 1 0   95%
custom_components/supernotify/delivery.py Delivery.target_categories   2 0 0   100%
custom_components/supernotify/delivery.py Delivery.reclassify_unqualified_target   14 0 0   100%
custom_components/supernotify/delivery.py Delivery.select_targets   1 0 0   100%
custom_components/supernotify/delivery.py Delivery.evaluate_conditions   5 1 0   80%
custom_components/supernotify/delivery.py Delivery.option   7 0 0   100%
custom_components/supernotify/delivery.py Delivery.option_bool   1 0 0   100%
custom_components/supernotify/delivery.py Delivery.option_str   1 0 0   100%
custom_components/supernotify/delivery.py Delivery.as_dict   3 0 0   100%
custom_components/supernotify/delivery.py Delivery.attributes   4 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.__init__   13 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.initialize   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.unload_unused_transports   5 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.register_entity   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.unregister_entity   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.legacy_entities   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.async_refresh_entity   3 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.deliveries   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.resolve_name   5 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.enabled_deliveries   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.disabled_deliveries   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.fallback_by_default_deliveries   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.fallback_on_error_deliveries   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.choosable_deliveries   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.implicit_deliveries   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.apply_delivery_control   6 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.initialize_transports   26 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.initialize_transport_deliveries   18 1 0   94%
custom_components/supernotify/delivery.py (no function)   59 0 7   100%
custom_components/supernotify/diagnostics.py async_get_config_entry_diagnostics   4 0 0   100%
custom_components/supernotify/diagnostics.py (no function)   9 0 2   100%
custom_components/supernotify/engine.py SupernotifyEngine.__init__   8 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.initialize   15 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.async_shutdown   2 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.shutdown   2 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.counter_sensors   1 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.sent   1 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.failures   1 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.async_send_message   35 3 0   91%
custom_components/supernotify/engine.py SupernotifyEngine.async_dry_run   3 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.refresh_entities   9 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine._overridables   2 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.reset_overrides   13 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine._async_refresh_related   5 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.enquire_implicit_deliveries   7 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.enquire_deliveries_by_scenario   1 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.enquire_occupancy   2 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.enquire_active_scenarios   3 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.trace_active_scenarios   11 1 0   91%
custom_components/supernotify/engine.py SupernotifyEngine.trace_active_scenarios.safe_json   1 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.enquire_scenarios   1 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.enquire_snoozes   1 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.clear_snoozes   1 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.enquire_recipients   1 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.on_mobile_action   4 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine.async_nightly_tasks   5 0 0   100%
custom_components/supernotify/engine.py build_supernotify_engine   1 0 0   100%
custom_components/supernotify/engine.py (no function)   61 0 4   100%
custom_components/supernotify/envelope.py Envelope.__init__   56 0 0   100%
custom_components/supernotify/envelope.py Envelope.customize_data   4 0 0   100%
custom_components/supernotify/envelope.py Envelope.grab_image   4 0 0   100%
custom_components/supernotify/envelope.py Envelope.core_action_data   10 0 0   100%
custom_components/supernotify/envelope.py Envelope.contents   22 0 0   100%
custom_components/supernotify/envelope.py Envelope.__eq__   3 0 0   100%
custom_components/supernotify/envelope.py Envelope.__repr__   1 0 0   100%
custom_components/supernotify/envelope.py Envelope.record_recipient_notifications   9 1 0   89%
custom_components/supernotify/envelope.py Envelope._compute_title   11 0 0   100%
custom_components/supernotify/envelope.py Envelope._spoken_message   1 0 0   100%
custom_components/supernotify/envelope.py Envelope._compute_message   25 0 0   100%
custom_components/supernotify/envelope.py Envelope._render_scenario_templates   17 0 0   100%
custom_components/supernotify/envelope.py Envelope.hash   8 0 0   100%
custom_components/supernotify/envelope.py Envelope.hash.alphaize   1 0 0   100%
custom_components/supernotify/envelope.py Envelope._render_data_templates   15 0 0   100%
custom_components/supernotify/envelope.py Envelope._resolve_data_templates   15 0 0   100%
custom_components/supernotify/envelope.py (no function)   37 0 8   100%
custom_components/supernotify/exceptions.py UncategorizedTargetError.__init__   3 0 0   100%
custom_components/supernotify/exceptions.py (no function)   5 0 0   100%
custom_components/supernotify/hass_api.py TrackedDeviceDetails.as_dict   1 0 0   100%
custom_components/supernotify/hass_api.py TrackedDeviceDetails.__eq__   2 0 0   100%
custom_components/supernotify/hass_api.py TargetSelectorResolution.has_missing   1 0 0   100%
custom_components/supernotify/hass_api.py ha_device_info   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.__init__   13 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.initialize   16 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.disconnect   8 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.subscribe_event   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.subscribe_state   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.subscribe_time   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.subscribe_interval   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.in_hass_loop   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.get_state   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.is_state   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.has_service   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.entity_ids_for_domain   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.async_real_user_ids   8 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.platform_for_entity   6 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.entity_ids_for_platform   8 1 0   88%
custom_components/supernotify/hass_api.py HomeAssistantAPI._device_model   4 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.async_get_camera_image   5 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.async_get_image_entity_image   5 2 0   60%
custom_components/supernotify/hass_api.py HomeAssistantAPI.load_storage   5 3 0   40%
custom_components/supernotify/hass_api.py HomeAssistantAPI.save_storage   2 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.create_job   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.fire_event   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.call_service   12 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.coerce_schema   32 4 0   88%
custom_components/supernotify/hass_api.py HomeAssistantAPI.service_info   14 2 0   86%
custom_components/supernotify/hass_api.py HomeAssistantAPI.resolve_target_selectors   19 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.find_service   18 2 0   89%
custom_components/supernotify/hass_api.py HomeAssistantAPI.find_config_entry_data   9 2 0   78%
custom_components/supernotify/hass_api.py HomeAssistantAPI.http_session   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.expand_group   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.group_members   19 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.template   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.hass_avail   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.register_web_path   9 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.trace_conditions   12 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.build_conditions   26 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.evaluate_conditions   7 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.abs_url   8 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.raise_issue   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.mobile_app_by_tracker   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.mobile_app_by_id   2 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.mobile_app_by_device_id   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.mobile_app_by_user_id   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.build_mobile_app_cache   34 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.device_config_info   11 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.discover_devices   46 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.domain_for_device   10 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI._entity_registry   7 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI._device_registry   7 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.find_device   7 3 0   57%
custom_components/supernotify/hass_api.py HomeAssistantAPI.is_own_device   2 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.mqtt_available   8 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.mqtt_publish   7 0 0   100%
custom_components/supernotify/hass_api.py ConditionErrorLoggingAdaptor.__init__   2 0 0   100%
custom_components/supernotify/hass_api.py ConditionErrorLoggingAdaptor.capture   6 0 0   100%
custom_components/supernotify/hass_api.py ConditionErrorLoggingAdaptor.error   2 0 0   100%
custom_components/supernotify/hass_api.py ConditionErrorLoggingAdaptor.warning   2 0 0   100%
custom_components/supernotify/hass_api.py TemplateWrapper.__init__   1 0 0   100%
custom_components/supernotify/hass_api.py TemplateWrapper.__getattr__   3 0 0   100%
custom_components/supernotify/hass_api.py TemplateWrapper.__setattr__   1 0 0   100%
custom_components/supernotify/hass_api.py TemplateWrapper.__repr__   1 1 0   0%
custom_components/supernotify/hass_api.py force_strict_template_mode   3 0 0   100%
custom_components/supernotify/hass_api.py force_strict_template_mode.wrap_template   8 0 0   100%
custom_components/supernotify/hass_api.py trace_action   10 0 0   100%
custom_components/supernotify/hass_api.py (no function)   144 0 12   100%
custom_components/supernotify/llm.py async_get_tools   15 2 0   87%
custom_components/supernotify/llm.py _prompt   9 0 0   100%
custom_components/supernotify/llm.py _labelled   1 0 0   100%
custom_components/supernotify/llm.py _display_name   1 0 0   100%
custom_components/supernotify/llm.py _recipient_names   1 0 0   100%
custom_components/supernotify/llm.py _person_id   1 0 0   100%
custom_components/supernotify/llm.py _names_for   2 0 0   100%
custom_components/supernotify/llm.py _notification_fields   9 0 0   100%
custom_components/supernotify/llm.py _notification_call   14 2 0   86%
custom_components/supernotify/llm.py summarize_notification   30 4 0   87%
custom_components/supernotify/llm.py SupernotifyTool.__init__   1 0 0   100%
custom_components/supernotify/llm.py NotifyTool.__init__   2 0 0   100%
custom_components/supernotify/llm.py NotifyTool.async_call   8 2 0   75%
custom_components/supernotify/llm.py SnoozeTool.__init__   2 0 0   100%
custom_components/supernotify/llm.py SnoozeTool.async_call   23 0 0   100%
custom_components/supernotify/llm.py SnoozeTool._check_name   9 0 0   100%
custom_components/supernotify/llm.py SnoozeTool._requesting_person   2 0 0   100%
custom_components/supernotify/llm.py RecentNotificationsTool.__init__   5 0 0   100%
custom_components/supernotify/llm.py RecentNotificationsTool.async_call   14 0 0   100%
custom_components/supernotify/llm.py DryRunTool.__init__   2 0 0   100%
custom_components/supernotify/llm.py DryRunTool.async_call   10 1 0   90%
custom_components/supernotify/llm.py SnoozesTool.async_call   2 0 0   100%
custom_components/supernotify/llm.py split_docs   14 0 0   100%
custom_components/supernotify/llm.py split_docs.url_for   2 0 0   100%
custom_components/supernotify/llm.py split_docs.finish   5 0 0   100%
custom_components/supernotify/llm.py search_docs   13 0 0   100%
custom_components/supernotify/llm.py _docs   18 0 0   100%
custom_components/supernotify/llm.py HelpTool.__init__   2 0 0   100%
custom_components/supernotify/llm.py HelpTool.async_call   10 0 0   100%
custom_components/supernotify/llm.py (no function)   94 0 4   100%
custom_components/supernotify/media_grab.py snapshot_from_url   21 0 0   100%
custom_components/supernotify/media_grab.py infer_ptz_method   3 0 0   100%
custom_components/supernotify/media_grab.py move_camera_to_ptz_preset   9 2 0   78%
custom_components/supernotify/media_grab.py snap_image_entity   15 0 0   100%
custom_components/supernotify/media_grab.py snap_camera   17 0 0   100%
custom_components/supernotify/media_grab.py camera_available   24 0 0   100%
custom_components/supernotify/media_grab.py select_avail_camera   26 0 0   100%
custom_components/supernotify/media_grab.py _detect_image_ext   7 0 0   100%
custom_components/supernotify/media_grab.py snap_notification_image   42 2 0   95%
custom_components/supernotify/media_grab.py grab_image   37 2 0   95%
custom_components/supernotify/media_grab.py _reprocess_bitmap   17 0 0   100%
custom_components/supernotify/media_grab.py write_image_from_bitmap   17 2 0   88%
custom_components/supernotify/media_grab.py MediaStorage.__init__   5 0 0   100%
custom_components/supernotify/media_grab.py MediaStorage.initialize   18 0 0   100%
custom_components/supernotify/media_grab.py MediaStorage.object_url   9 5 0   44%
custom_components/supernotify/media_grab.py MediaStorage.share_path   10 4 0   60%
custom_components/supernotify/media_grab.py MediaStorage.size   4 0 0   100%
custom_components/supernotify/media_grab.py MediaStorage.cleanup   30 0 0   100%
custom_components/supernotify/media_grab.py (no function)   47 0 7   100%
custom_components/supernotify/model.py TransportConfig.__init__   22 0 0   100%
custom_components/supernotify/model.py DeliveryCustomization.__init__   9 0 0   100%
custom_components/supernotify/model.py DeliveryCustomization.data_value   1 0 0   100%
custom_components/supernotify/model.py DeliveryCustomization.as_dict   1 0 0   100%
custom_components/supernotify/model.py SelectionRule.__init__   16 2 0   88%
custom_components/supernotify/model.py SelectionRule.match   14 0 0   100%
custom_components/supernotify/model.py DataFilter.__init__   10 0 0   100%
custom_components/supernotify/model.py DataFilter._init_from_dict   26 1 0   96%
custom_components/supernotify/model.py DataFilter._parse_exclude_tree   7 0 0   100%
custom_components/supernotify/model.py DataFilter._exclude_tree_to_filter   5 0 0   100%
custom_components/supernotify/model.py DataFilter._match   5 0 0   100%
custom_components/supernotify/model.py DataFilter.apply   12 0 0   100%
custom_components/supernotify/model.py DeliveryConfig.__init__   37 0 0   100%
custom_components/supernotify/model.py DeliveryConfig.as_dict   1 0 0   100%
custom_components/supernotify/model.py DeliveryConfig.__repr__   1 0 0   100%
custom_components/supernotify/model.py ConditionVariables.__init__   19 1 0   95%
custom_components/supernotify/model.py ConditionVariables.as_dict   1 0 0   100%
custom_components/supernotify/model.py TargetRequired._missing_   5 1 0   80%
custom_components/supernotify/model.py DebugTrace.__init__   12 0 0   100%
custom_components/supernotify/model.py DebugTrace.contents   6 0 0   100%
custom_components/supernotify/model.py DebugTrace.record_target   20 0 0   100%
custom_components/supernotify/model.py DebugTrace.record_delivery_selection   3 0 0   100%
custom_components/supernotify/model.py DebugTrace.record_delivery_provenance   3 0 0   100%
custom_components/supernotify/model.py DebugTrace.record_delivery_artefact   4 0 0   100%
custom_components/supernotify/model.py DebugTrace.record_delivery_exception   5 1 0   80%
custom_components/supernotify/model.py NotifyEntityPlatform.async_send_message   0 0 0   100%
custom_components/supernotify/model.py (no function)   109 0 3   100%
custom_components/supernotify/notification.py set_version   1 0 0   100%
custom_components/supernotify/notification.py DeliveryTargetOverride.as_dict   1 0 0   100%
custom_components/supernotify/notification.py Notification.__init__   74 1 0   99%
custom_components/supernotify/notification.py Notification._unknown_names   12 0 0   100%
custom_components/supernotify/notification.py Notification.initialize   21 0 0   100%
custom_components/supernotify/notification.py Notification.convert_notify_entities   29 1 0   97%
custom_components/supernotify/notification.py Notification.outcome   11 2 0   82%
custom_components/supernotify/notification.py Notification.diagnostics_selected   1 0 0   100%
custom_components/supernotify/notification.py Notification.media_requirements   14 2 0   86%
custom_components/supernotify/notification.py Notification.validate_action_data   17 8 0   53%
custom_components/supernotify/notification.py Notification.apply_enabled_scenarios   11 4 0   64%
custom_components/supernotify/notification.py Notification.select_deliveries   77 0 0   100%
custom_components/supernotify/notification.py Notification.suppress   4 0 0   100%
custom_components/supernotify/notification.py Notification.deliver   47 4 0   91%
custom_components/supernotify/notification.py Notification._schedule_deliveries   11 2 0   82%
custom_components/supernotify/notification.py Notification.delivery_skip_reason   11 0 0   100%
custom_components/supernotify/notification.py Notification.plan   19 1 0   95%
custom_components/supernotify/notification.py Notification.call_transport   36 1 0   97%
custom_components/supernotify/notification.py Notification.record_result   32 0 0   100%
custom_components/supernotify/notification.py Notification.contents   25 0 0   100%
custom_components/supernotify/notification.py Notification._delivery_stats   21 4 0   81%
custom_components/supernotify/notification.py Notification.base_filename   1 0 0   100%
custom_components/supernotify/notification.py Notification.delivery_data   6 1 0   83%
custom_components/supernotify/notification.py Notification.delivered_envelopes   4 0 0   100%
custom_components/supernotify/notification.py Notification.undelivered_envelopes   5 0 0   100%
custom_components/supernotify/notification.py Notification.select_scenarios   1 0 0   100%
custom_components/supernotify/notification.py Notification._filter_resolve_select_targets   10 0 0   100%
custom_components/supernotify/notification.py Notification.generate_targets   72 8 0   89%
custom_components/supernotify/notification.py Notification._attach_person_ids   8 0 0   100%
custom_components/supernotify/notification.py Notification.resolve_scenario_targets   8 0 0   100%
custom_components/supernotify/notification.py Notification._record_uncategorized   3 0 0   100%
custom_components/supernotify/notification.py Notification._unassigned_targets   10 1 0   90%
custom_components/supernotify/notification.py Notification.all_recipients   5 0 0   100%
custom_components/supernotify/notification.py Notification.default_person_ids   2 0 0   100%
custom_components/supernotify/notification.py Notification.resolve_indirect_targets   11 0 0   100%
custom_components/supernotify/notification.py Notification.generate_envelopes   14 0 0   100%
custom_components/supernotify/notification.py (no function)   70 0 7   100%
custom_components/supernotify/notify.py SuperNotificationService.__init__   2 0 0   100%
custom_components/supernotify/notify.py SuperNotificationService.async_unregister_services   2 0 0   100%
custom_components/supernotify/notify.py SuperNotificationService._async_notify_message_service   12 1 0   92%
custom_components/supernotify/notify.py async_get_service   5 0 0   100%
custom_components/supernotify/notify.py async_setup_entry   1 0 0   100%
custom_components/supernotify/notify.py (no function)   17 0 4   100%
custom_components/supernotify/options.py all_options_for   1 1 0   0%
custom_components/supernotify/options.py (no function)   37 0 0   100%
custom_components/supernotify/people.py RecipientNotifyEntity.__init__   7 0 0   100%
custom_components/supernotify/people.py RecipientNotifyEntity.extra_state_attributes   3 1 0   67%
custom_components/supernotify/people.py RecipientNotifyEntity.record_notification   6 2 0   67%
custom_components/supernotify/people.py RecipientNotifyEntity.async_added_to_hass   7 3 0   57%
custom_components/supernotify/people.py RecipientNotifyEntity.async_will_remove_from_hass   3 0 0   100%
custom_components/supernotify/people.py RecipientNotifyEntity.async_send_message   1 0 0   100%
custom_components/supernotify/people.py Recipient.__init__   21 0 0   100%
custom_components/supernotify/people.py Recipient.initialize   35 1 0   97%
custom_components/supernotify/people.py Recipient.on_notification   2 0 0   100%
custom_components/supernotify/people.py Recipient.enabled_mobile_devices   1 0 0   100%
custom_components/supernotify/people.py Recipient.enabling_delivery_names   1 0 0   100%
custom_components/supernotify/people.py Recipient.disabling_delivery_names   1 0 0   100%
custom_components/supernotify/people.py Recipient.target   8 0 0   100%
custom_components/supernotify/people.py Recipient.as_dict   8 0 0   100%
custom_components/supernotify/people.py Recipient.attributes   4 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.__init__   6 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.initialize   29 2 0   93%
custom_components/supernotify/people.py PeopleRegistry.register_entity   1 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.unregister_entity   1 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.recipient_entities   1 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.async_refresh_entity   3 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.expose_notify_entities   1 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.person_attributes   4 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.name_for_user_id   4 1 0   75%
custom_components/supernotify/people.py PeopleRegistry.people_named   5 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.person_id_for_name   2 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.person_id_for_user_id   4 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.find_people   1 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.notify_entities   1 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.enabled_recipients   1 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.filter_recipients_by_occupancy   22 3 0   86%
custom_components/supernotify/people.py PeopleRegistry._fetch_person_entity_state   8 2 0   75%
custom_components/supernotify/people.py PeopleRegistry.determine_occupancy   8 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.mobile_devices_for_person   8 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.mobile_devices_for_user   1 0 0   100%
custom_components/supernotify/people.py (no function)   58 0 4   100%
custom_components/supernotify/repairs.py async_sync_entry_from_legacy_config   12 0 0   100%
custom_components/supernotify/repairs.py async_create_legacy_yaml_issue   1 0 0   100%
custom_components/supernotify/repairs.py async_check_python_version   4 0 0   100%
custom_components/supernotify/repairs.py async_create_recipient_binary_sensor_deprecated_issue   1 0 0   100%
custom_components/supernotify/repairs.py async_create_delivery_transport_binary_sensor_deprecated_issue   1 0 0   100%
custom_components/supernotify/repairs.py _extract_yaml_only_config   1 0 0   100%
custom_components/supernotify/repairs.py _async_get_migration_lock   1 0 0   100%
custom_components/supernotify/repairs.py _load_configuration_yaml_dict   1 0 0   100%
custom_components/supernotify/repairs.py _is_already_migrated   7 0 0   100%
custom_components/supernotify/repairs.py SupernotifyLegacyYamlRepairFlow.__init__   2 0 0   100%
custom_components/supernotify/repairs.py SupernotifyLegacyYamlRepairFlow.async_step_init   3 0 0   100%
custom_components/supernotify/repairs.py SupernotifyLegacyYamlRepairFlow.async_step_already_migrated   3 0 0   100%
custom_components/supernotify/repairs.py SupernotifyLegacyYamlRepairFlow.async_step_confirm   28 0 0   100%
custom_components/supernotify/repairs.py SupernotifyLegacyYamlRepairFlow._async_raise_manual_migration_issue   1 0 0   100%
custom_components/supernotify/repairs.py SupernotifyLegacyYamlRepairFlow._write_files   32 12 0   62%
custom_components/supernotify/repairs.py SupernotifyLegacyYamlRepairFlow._rollback   7 0 0   100%
custom_components/supernotify/repairs.py SupernotifyLegacyYamlRepairFlow._async_finish_migration   5 0 0   100%
custom_components/supernotify/repairs.py async_create_fix_flow   4 0 0   100%
custom_components/supernotify/repairs.py (no function)   47 0 4   100%
custom_components/supernotify/scenario.py ScenarioRegistry.__init__   6 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry.initialize   14 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry.register_entity   1 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry.unregister_entity   1 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry.async_refresh_entity   3 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry.scenario_has_state   1 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry.scenario_is_on   6 1 0   83%
custom_components/supernotify/scenario.py ScenarioRegistry._collect_scenario_condition_entities   10 2 0   80%
custom_components/supernotify/scenario.py ScenarioRegistry.scenario_state_enabled   1 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry.scenario_state_interval   1 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry._index_scenarios_by_entity   8 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry._scenario_state   8 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry.async_refresh_scenario_states   18 0 0   100%
custom_components/supernotify/scenario.py Scenario.__init__   34 0 0   100%
custom_components/supernotify/scenario.py Scenario.is_manual   1 0 0   100%
custom_components/supernotify/scenario.py Scenario.validate   43 2 0   95%
custom_components/supernotify/scenario.py Scenario.enabling_deliveries   1 0 0   100%
custom_components/supernotify/scenario.py Scenario.relevant_deliveries   1 0 0   100%
custom_components/supernotify/scenario.py Scenario.disabling_deliveries   1 0 0   100%
custom_components/supernotify/scenario.py Scenario.delivery_customization   1 0 0   100%
custom_components/supernotify/scenario.py Scenario.attributes   8 1 0   88%
custom_components/supernotify/scenario.py Scenario.delivery_config   1 0 0   100%
custom_components/supernotify/scenario.py Scenario.contents   1 0 0   100%
custom_components/supernotify/scenario.py Scenario.evaluate   11 3 0   73%
custom_components/supernotify/scenario.py Scenario.trace   9 0 0   100%
custom_components/supernotify/scenario.py trace_action   10 10 0   0%
custom_components/supernotify/scenario.py (no function)   54 0 7   100%
custom_components/supernotify/schema.py parse_event_policy   10 1 0   90%
custom_components/supernotify/schema.py phone   4 0 0   100%
custom_components/supernotify/schema.py validate_scenario_names   4 0 0   100%
custom_components/supernotify/schema.py _migrate_condition   5 3 0   40%
custom_components/supernotify/schema.py _mobile_action_uri   3 1 0   67%
custom_components/supernotify/schema.py (no function)   70 0 0   100%
custom_components/supernotify/sensor.py async_setup_entry   2 0 0   100%
custom_components/supernotify/sensor.py SupernotifyCounterSensor.__init__   3 0 0   100%
custom_components/supernotify/sensor.py SupernotifyCounterSensor.device_info   3 1 0   67%
custom_components/supernotify/sensor.py SupernotifyCounterSensor.count   1 0 0   100%
custom_components/supernotify/sensor.py SupernotifyCounterSensor.async_added_to_hass   5 0 0   100%
custom_components/supernotify/sensor.py SupernotifyCounterSensor.increment   2 0 0   100%
custom_components/supernotify/sensor.py SupernotifyCounterSensor.refresh   2 0 0   100%
custom_components/supernotify/sensor.py (no function)   21 0 5   100%
custom_components/supernotify/sentences.py _say   1 0 0   100%
custom_components/supernotify/sentences.py async_register_sentences   7 0 0   100%
custom_components/supernotify/sentences.py async_register_sentences.action   4 0 0   100%
custom_components/supernotify/sentences.py _log   1 1 0   0%
custom_components/supernotify/sentences.py _requester   2 0 0   100%
custom_components/supernotify/sentences.py async_respond   24 0 0   100%
custom_components/supernotify/sentences.py _minutes   4 0 0   100%
custom_components/supernotify/sentences.py _notify   15 0 0   100%
custom_components/supernotify/sentences.py _next_time   22 0 0   100%
custom_components/supernotify/sentences.py _next_occurrence   2 0 0   100%
custom_components/supernotify/sentences.py _snooze   10 0 0   100%
custom_components/supernotify/sentences.py _clock   3 0 0   100%
custom_components/supernotify/sentences.py _last   8 1 0   88%
custom_components/supernotify/sentences.py (no function)   36 0 2   100%
custom_components/supernotify/snoozer.py Snooze.__init__   9 0 0   100%
custom_components/supernotify/snoozer.py Snooze.std_recipient   1 0 0   100%
custom_components/supernotify/snoozer.py Snooze.short_key   2 0 0   100%
custom_components/supernotify/snoozer.py Snooze.__eq__   3 0 0   100%
custom_components/supernotify/snoozer.py Snooze.__repr__   2 0 0   100%
custom_components/supernotify/snoozer.py Snooze.active   1 0 0   100%
custom_components/supernotify/snoozer.py Snooze.export   1 0 0   100%
custom_components/supernotify/snoozer.py Snooze.to_storage_dict   1 0 0   100%
custom_components/supernotify/snoozer.py Snooze.from_storage_dict   12 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.__init__   5 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.initialize   12 0 0   100%
custom_components/supernotify/snoozer.py Snoozer._persist   2 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.handle_command_event   53 9 0   83%
custom_components/supernotify/snoozer.py Snoozer.register_snooze   16 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.purge_snoozes   5 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.clear   5 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.export   1 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.current_snoozes   25 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.is_global_snooze   9 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.is_delivery_snoozed   8 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.filter_recipients   18 0 0   100%
custom_components/supernotify/snoozer.py (no function)   43 0 5   100%
custom_components/supernotify/static_config.py (no function)   24 0 0   100%
custom_components/supernotify/switch.py async_setup_entry   10 0 0   100%
custom_components/supernotify/switch.py OverrideStoredData.as_dict   1 0 0   100%
custom_components/supernotify/switch.py OverrideStoredData.from_dict   3 0 0   100%
custom_components/supernotify/switch.py SupernotifyOverridableSwitch.__init__   5 0 0   100%
custom_components/supernotify/switch.py SupernotifyOverridableSwitch.is_on   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyOverridableSwitch.extra_restore_state_data   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyOverridableSwitch.async_added_to_hass   12 0 0   100%
custom_components/supernotify/switch.py SupernotifyOverridableSwitch.async_will_remove_from_hass   2 0 0   100%
custom_components/supernotify/switch.py SupernotifyOverridableSwitch.async_turn_on   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyOverridableSwitch.async_turn_off   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyOverridableSwitch.async_set_enabled   5 0 0   100%
custom_components/supernotify/switch.py SupernotifyOverridableSwitch._apply_enabled   2 0 0   100%
custom_components/supernotify/switch.py SupernotifyOverridableSwitch._refresh_related   0 0 0   100%
custom_components/supernotify/switch.py SupernotifyScenarioSwitch.__init__   5 0 0   100%
custom_components/supernotify/switch.py SupernotifyScenarioSwitch.extra_state_attributes   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyScenarioSwitch._refresh_related   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyRecipientSwitch.__init__   5 0 0   100%
custom_components/supernotify/switch.py SupernotifyRecipientSwitch.extra_state_attributes   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyRecipientSwitch._refresh_related   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyDeliverySwitch.__init__   5 0 0   100%
custom_components/supernotify/switch.py SupernotifyDeliverySwitch.extra_state_attributes   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyDeliverySwitch._refresh_related   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyTransportSwitch.__init__   5 0 0   100%
custom_components/supernotify/switch.py SupernotifyTransportSwitch.extra_state_attributes   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyTransportSwitch._refresh_related   9 0 0   100%
custom_components/supernotify/switch.py (no function)   69 0 9   100%
custom_components/supernotify/target.py TargetEntityCategory.matches   9 0 0   100%
custom_components/supernotify/target.py Target.__init__   49 1 0   98%
custom_components/supernotify/target.py Target._filter_by_category   8 1 0   88%
custom_components/supernotify/target.py Target.email   1 0 0   100%
custom_components/supernotify/target.py Target.entity_ids   1 0 0   100%
custom_components/supernotify/target.py Target.person_ids   1 0 0   100%
custom_components/supernotify/target.py Target.device_ids   1 0 0   100%
custom_components/supernotify/target.py Target.phone   1 0 0   100%
custom_components/supernotify/target.py Target.mobile_app_ids   1 0 0   100%
custom_components/supernotify/target.py Target.domain_entity_ids   1 0 0   100%
custom_components/supernotify/target.py Target.custom_ids   1 0 0   100%
custom_components/supernotify/target.py Target.area_ids   1 0 0   100%
custom_components/supernotify/target.py Target.floor_ids   1 0 0   100%
custom_components/supernotify/target.py Target.label_ids   1 0 0   100%
custom_components/supernotify/target.py Target.is_device_id   1 0 0   100%
custom_components/supernotify/target.py Target.is_entity_id   1 0 0   100%
custom_components/supernotify/target.py Target.is_person_id   1 0 0   100%
custom_components/supernotify/target.py Target.is_phone   4 0 0   100%
custom_components/supernotify/target.py Target.is_mobile_app_id   1 0 0   100%
custom_components/supernotify/target.py Target.is_notify_entity   1 0 0   100%
custom_components/supernotify/target.py Target.is_email   4 0 0   100%
custom_components/supernotify/target.py Target.has_targets   1 0 0   100%
custom_components/supernotify/target.py Target.has_resolved_target   1 0 0   100%
custom_components/supernotify/target.py Target.has_unknown_targets   1 0 0   100%
custom_components/supernotify/target.py Target.for_category   1 0 0   100%
custom_components/supernotify/target.py Target.resolved_targets   5 0 0   100%
custom_components/supernotify/target.py Target.hash_resolved   5 0 0   100%
custom_components/supernotify/target.py Target.direct_categories   1 0 0   100%
custom_components/supernotify/target.py Target.direct   4 1 0   75%
custom_components/supernotify/target.py Target.extend   3 0 0   100%
custom_components/supernotify/target.py Target.remove   3 0 0   100%
custom_components/supernotify/target.py Target.safe_copy   3 0 0   100%
custom_components/supernotify/target.py Target.resolve_selectors   24 0 0   100%
custom_components/supernotify/target.py Target.select   20 0 0   100%
custom_components/supernotify/target.py Target.select.accepted   3 0 0   100%
custom_components/supernotify/target.py Target.select.selected   17 0 0   100%
custom_components/supernotify/target.py Target.split_by_target_data   27 0 0   100%
custom_components/supernotify/target.py Target.__len__   1 0 0   100%
custom_components/supernotify/target.py Target.__add__   16 1 0   94%
custom_components/supernotify/target.py Target.__sub__   9 1 0   89%
custom_components/supernotify/target.py Target.__eq__   11 3 0   73%
custom_components/supernotify/target.py Target.as_dict   7 0 0   100%
custom_components/supernotify/target.py (no function)   84 0 4   100%
custom_components/supernotify/transport.py Transport.__init__   15 0 0   100%
custom_components/supernotify/transport.py Transport.initialize   2 1 0   50%
custom_components/supernotify/transport.py Transport.setup_delivery_options   1 0 0   100%
custom_components/supernotify/transport.py Transport.supported_features   1 0 0   100%
custom_components/supernotify/transport.py Transport.targets   1 0 0   100%
custom_components/supernotify/transport.py Transport.target_categories   1 0 0   100%
custom_components/supernotify/transport.py Transport.default_config   1 1 0   0%
custom_components/supernotify/transport.py Transport.inclusion_mode   1 0 0   100%
custom_components/supernotify/transport.py Transport.is_viable   1 1 0   0%
custom_components/supernotify/transport.py Transport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transport.py Transport.validate_action   1 0 0   100%
custom_components/supernotify/transport.py Transport.attributes   10 1 0   90%
custom_components/supernotify/transport.py Transport.extra_attributes   1 0 0   100%
custom_components/supernotify/transport.py Transport.deliver   0 0 0   100%
custom_components/supernotify/transport.py Transport.set_action_data   3 0 0   100%
custom_components/supernotify/transport.py Transport.call_action   38 0 0   100%
custom_components/supernotify/transport.py Transport.record_error   4 0 0   100%
custom_components/supernotify/transport.py Transport.log_delivery_failure   4 0 0   100%
custom_components/supernotify/transport.py Transport.log_delivery_recovered   3 0 0   100%
custom_components/supernotify/transport.py Transport.simplify   7 0 0   100%
custom_components/supernotify/transport.py Transport._is_ssml   5 0 0   100%
custom_components/supernotify/transport.py Transport._simplify_text   6 0 0   100%
custom_components/supernotify/transport.py Transport._simplify_around_markup   5 0 0   100%
custom_components/supernotify/transport.py (no function)   61 0 6   100%
custom_components/supernotify/transports/__init__.py (no function)   0 0 0   100%
custom_components/supernotify/transports/alexa_devices.py AlexaDevicesTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/alexa_devices.py AlexaDevicesTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/alexa_devices.py AlexaDevicesTransport.inclusion_mode   1 0 0   100%
custom_components/supernotify/transports/alexa_devices.py AlexaDevicesTransport.default_config   7 0 0   100%
custom_components/supernotify/transports/alexa_devices.py AlexaDevicesTransport.target_categories   1 0 0   100%
custom_components/supernotify/transports/alexa_devices.py AlexaDevicesTransport.is_viable   7 0 0   100%
custom_components/supernotify/transports/alexa_devices.py AlexaDevicesTransport.build_standard_deliveries   9 0 0   100%
custom_components/supernotify/transports/alexa_devices.py AlexaDevicesTransport.deliver   8 0 0   100%
custom_components/supernotify/transports/alexa_devices.py (no function)   33 0 3   100%
custom_components/supernotify/transports/alexa_media_player.py _estimate_tts_duration   3 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport.default_config   6 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport.target_categories   1 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport.build_standard_deliveries   3 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport._safe_service   6 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport._snapshot_states   12 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport._pre_announce   3 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport._pre_announce.handle   6 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport._post_announce   6 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport._audio_ssml   5 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport.deliver   61 2 0   97%
custom_components/supernotify/transports/alexa_media_player.py (no function)   49 0 4   100%
custom_components/supernotify/transports/chime.py ChimeTargetConfig.__init__   16 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTargetConfig.as_dict   1 1 0   0%
custom_components/supernotify/transports/chime.py ChimeTargetConfig.__repr__   3 0 0   100%
custom_components/supernotify/transports/chime.py MiniChimeTransport.build   1 1 0   0%
custom_components/supernotify/transports/chime.py RestCommandChimeTransport.build   5 0 0   100%
custom_components/supernotify/transports/chime.py SwitchChimeTransport.build   1 0 0   100%
custom_components/supernotify/transports/chime.py SirenChimeTransport.build   8 0 0   100%
custom_components/supernotify/transports/chime.py ScriptChimeTransport.build   17 2 0   88%
custom_components/supernotify/transports/chime.py AlexaDevicesChimeTransport.build   2 0 0   100%
custom_components/supernotify/transports/chime.py MediaPlayerChimeTransport.build   9 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.__init__   2 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.setup_delivery_options   8 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.extra_attributes   1 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.default_config   5 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.target_categories   1 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.build_standard_deliveries   7 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.deliver   31 1 0   97%
custom_components/supernotify/transports/chime.py ChimeTransport.analyze_target   23 2 0   91%
custom_components/supernotify/transports/chime.py ChimeTransport.resolve_tune   16 0 0   100%
custom_components/supernotify/transports/chime.py build_aliases   30 1 0   97%
custom_components/supernotify/transports/chime.py (no function)   75 0 4   100%
custom_components/supernotify/transports/discord.py DiscordTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.default_config   5 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.target_categories   1 1 0   0%
custom_components/supernotify/transports/discord.py DiscordTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.build_standard_deliveries   3 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.validate_action   4 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.select_channels   14 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.deliver   56 0 0   100%
custom_components/supernotify/transports/discord.py (no function)   28 0 3   100%
custom_components/supernotify/transports/email.py EmailTransport.__init__   23 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport._reuse_ha_smtp_connection   15 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.initialize   12 4 0   67%
custom_components/supernotify/transports/email.py EmailTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.build_standard_deliveries   3 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.inclusion_mode   1 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.extra_attributes   1 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.default_config   4 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.target_categories   1 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.deliver   46 2 0   96%
custom_components/supernotify/transports/email.py EmailTransport._send   5 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport._send_direct_smtp   27 11 0   59%
custom_components/supernotify/transports/email.py EmailTransport._build_message   32 1 0   97%
custom_components/supernotify/transports/email.py EmailTransport._attach_file   14 3 0   79%
custom_components/supernotify/transports/email.py EmailTransport._send_smtp   17 2 0   88%
custom_components/supernotify/transports/email.py EmailTransport.load_template   11 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.render_template   32 4 0   88%
custom_components/supernotify/transports/email.py EmailTransport.pack_preheader   6 0 0   100%
custom_components/supernotify/transports/email.py (no function)   100 0 6   100%
custom_components/supernotify/transports/generic.py GenericTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/generic.py GenericTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/generic.py GenericTransport.default_config   5 0 0   100%
custom_components/supernotify/transports/generic.py GenericTransport.validate_action   4 0 0   100%
custom_components/supernotify/transports/generic.py GenericTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/generic.py GenericTransport.build_standard_deliveries   4 0 0   100%
custom_components/supernotify/transports/generic.py GenericTransport.deliver   76 0 0   100%
custom_components/supernotify/transports/generic.py script   13 1 0   92%
custom_components/supernotify/transports/generic.py ntfy   36 2 0   94%
custom_components/supernotify/transports/generic.py notify_events   31 4 0   87%
custom_components/supernotify/transports/generic.py (no function)   36 0 4   100%
custom_components/supernotify/transports/gotify.py _build_extras   13 0 0   100%
custom_components/supernotify/transports/gotify.py GotifyTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/gotify.py GotifyTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/gotify.py GotifyTransport.default_config   5 0 0   100%
custom_components/supernotify/transports/gotify.py GotifyTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/gotify.py GotifyTransport.build_standard_deliveries   3 0 0   100%
custom_components/supernotify/transports/gotify.py GotifyTransport.validate_action   4 0 0   100%
custom_components/supernotify/transports/gotify.py GotifyTransport.deliver   34 0 0   100%
custom_components/supernotify/transports/gotify.py (no function)   26 0 3   100%
custom_components/supernotify/transports/html5.py HTML5Transport.__init__   1 0 0   100%
custom_components/supernotify/transports/html5.py HTML5Transport.supported_features   1 0 0   100%
custom_components/supernotify/transports/html5.py HTML5Transport.default_config   7 0 0   100%
custom_components/supernotify/transports/html5.py HTML5Transport.target_categories   1 1 0   0%
custom_components/supernotify/transports/html5.py HTML5Transport.inclusion_mode   1 0 0   100%
custom_components/supernotify/transports/html5.py HTML5Transport.validate_action   1 0 0   100%
custom_components/supernotify/transports/html5.py HTML5Transport.is_viable   3 0 0   100%
custom_components/supernotify/transports/html5.py HTML5Transport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/html5.py HTML5Transport._resolve_image_url   14 2 0   86%
custom_components/supernotify/transports/html5.py HTML5Transport.deliver   73 0 0   100%
custom_components/supernotify/transports/html5.py (no function)   33 0 3   100%
custom_components/supernotify/transports/kodi.py _coerce_int   9 0 0   100%
custom_components/supernotify/transports/kodi.py KodiTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/kodi.py KodiTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/kodi.py KodiTransport.default_config   6 0 0   100%
custom_components/supernotify/transports/kodi.py KodiTransport.target_categories   1 1 0   0%
custom_components/supernotify/transports/kodi.py KodiTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/kodi.py KodiTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/kodi.py KodiTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/kodi.py KodiTransport._absolute_url   9 3 0   67%
custom_components/supernotify/transports/kodi.py KodiTransport._resolve_image_url   18 0 0   100%
custom_components/supernotify/transports/kodi.py KodiTransport.deliver   30 0 0   100%
custom_components/supernotify/transports/kodi.py (no function)   36 0 3   100%
custom_components/supernotify/transports/lametric.py LaMetricTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/lametric.py LaMetricTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/lametric.py LaMetricTransport.default_config   4 0 0   100%
custom_components/supernotify/transports/lametric.py LaMetricTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/lametric.py LaMetricTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/lametric.py LaMetricTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/lametric.py LaMetricTransport.deliver   33 0 0   100%
custom_components/supernotify/transports/lametric.py (no function)   26 0 3   100%
custom_components/supernotify/transports/matrix.py MatrixTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/matrix.py MatrixTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/matrix.py MatrixTransport.default_config   5 0 0   100%
custom_components/supernotify/transports/matrix.py MatrixTransport.target_categories   1 1 0   0%
custom_components/supernotify/transports/matrix.py MatrixTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/matrix.py MatrixTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/matrix.py MatrixTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/matrix.py MatrixTransport.select_rooms   8 0 0   100%
custom_components/supernotify/transports/matrix.py MatrixTransport.deliver   45 0 0   100%
custom_components/supernotify/transports/matrix.py (no function)   31 0 3   100%
custom_components/supernotify/transports/media_player.py MediaPlayerTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/media_player.py MediaPlayerTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/media_player.py MediaPlayerTransport.default_config   5 0 0   100%
custom_components/supernotify/transports/media_player.py MediaPlayerTransport.target_categories   1 0 0   100%
custom_components/supernotify/transports/media_player.py MediaPlayerTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/media_player.py MediaPlayerTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/media_player.py MediaPlayerTransport._resolve_snapshot_url   9 0 0   100%
custom_components/supernotify/transports/media_player.py MediaPlayerTransport.deliver   21 0 0   100%
custom_components/supernotify/transports/media_player.py (no function)   26 0 3   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.__init__   3 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.extra_attributes   1 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.inclusion_mode   1 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.default_config   5 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.target_categories   1 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport._extract_push_data   1 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport._android_payload   26 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.action_title   17 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.deliver   98 0 0   100%
custom_components/supernotify/transports/mobile_push.py (no function)   39 0 3   100%
custom_components/supernotify/transports/mqtt.py MQTTTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/mqtt.py MQTTTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/mqtt.py MQTTTransport.default_config   6 0 0   100%
custom_components/supernotify/transports/mqtt.py MQTTTransport.target_categories   1 0 0   100%
custom_components/supernotify/transports/mqtt.py MQTTTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/mqtt.py MQTTTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/mqtt.py MQTTTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/mqtt.py MQTTTransport.recipient_target   1 0 0   100%
custom_components/supernotify/transports/mqtt.py MQTTTransport.deliver   20 0 0   100%
custom_components/supernotify/transports/mqtt.py (no function)   25 0 3   100%
custom_components/supernotify/transports/notify_entity.py NotifyEntityTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/notify_entity.py NotifyEntityTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/notify_entity.py NotifyEntityTransport.default_config   6 0 0   100%
custom_components/supernotify/transports/notify_entity.py NotifyEntityTransport.target_categories   1 0 0   100%
custom_components/supernotify/transports/notify_entity.py NotifyEntityTransport.inclusion_mode   1 0 0   100%
custom_components/supernotify/transports/notify_entity.py NotifyEntityTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/notify_entity.py NotifyEntityTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/notify_entity.py NotifyEntityTransport.deliver   7 0 0   100%
custom_components/supernotify/transports/notify_entity.py (no function)   27 0 3   100%
custom_components/supernotify/transports/ntfy.py _parse_delay   12 0 0   100%
custom_components/supernotify/transports/ntfy.py _validate_actions   8 3 0   62%
custom_components/supernotify/transports/ntfy.py NtfyTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/ntfy.py NtfyTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/ntfy.py NtfyTransport.default_config   5 0 0   100%
custom_components/supernotify/transports/ntfy.py NtfyTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/ntfy.py NtfyTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/ntfy.py NtfyTransport.deliver   62 6 0   90%
custom_components/supernotify/transports/ntfy.py (no function)   29 0 3   100%
custom_components/supernotify/transports/persistent.py PersistentTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/persistent.py PersistentTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/persistent.py PersistentTransport.default_config   5 0 0   100%
custom_components/supernotify/transports/persistent.py PersistentTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/persistent.py PersistentTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/persistent.py PersistentTransport.deliver   6 1 0   83%
custom_components/supernotify/transports/persistent.py (no function)   18 0 3   100%
custom_components/supernotify/transports/pushover.py PushoverTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/pushover.py PushoverTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/pushover.py PushoverTransport.default_config   5 0 0   100%
custom_components/supernotify/transports/pushover.py PushoverTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/pushover.py PushoverTransport.build_standard_deliveries   3 0 0   100%
custom_components/supernotify/transports/pushover.py PushoverTransport.validate_action   4 0 0   100%
custom_components/supernotify/transports/pushover.py PushoverTransport.deliver   77 6 0   92%
custom_components/supernotify/transports/pushover.py (no function)   29 0 3   100%
custom_components/supernotify/transports/sms.py SMSTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.inclusion_mode   1 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.default_config   10 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.target_categories   1 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.build_standard_deliveries   3 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.deliver   13 0 0   100%
custom_components/supernotify/transports/sms.py (no function)   28 0 3   100%
custom_components/supernotify/transports/telegram.py _escape_html   1 0 0   100%
custom_components/supernotify/transports/telegram.py _normalise_inline_keyboard   18 0 0   100%
custom_components/supernotify/transports/telegram.py _build_inline_keyboard   22 0 0   100%
custom_components/supernotify/transports/telegram.py TelegramTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/telegram.py TelegramTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/telegram.py TelegramTransport.default_config   5 0 0   100%
custom_components/supernotify/transports/telegram.py TelegramTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/telegram.py TelegramTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/telegram.py TelegramTransport.validate_action   3 0 0   100%
custom_components/supernotify/transports/telegram.py TelegramTransport.deliver   104 0 0   100%
custom_components/supernotify/transports/telegram.py (no function)   30 0 3   100%
custom_components/supernotify/transports/tts.py TTSTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.is_viable   7 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.default_config   7 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.target_categories   1 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.deliver   9 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.call_media_players   12 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.call_mobile_apps   13 0 0   100%
custom_components/supernotify/transports/tts.py (no function)   33 0 3   100%
Total     8918 287 213   97%

No items found using the specified filter.