Coverage report: 97%

Files Functions Classes

coverage.py v7.16.2, created at 2026-11-08 17:42 +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   9 0 0   100%
custom_components/supernotify/__init__.py async_add_recipient_subentries   18 0 0   100%
custom_components/supernotify/__init__.py async_add_transport_subentries   14 0 0   100%
custom_components/supernotify/__init__.py _async_import_yaml_transports   6 0 0   100%
custom_components/supernotify/__init__.py _async_check_transport_deprecated_config   3 0 0   100%
custom_components/supernotify/__init__.py _async_merge_user_recipients   13 0 0   100%
custom_components/supernotify/__init__.py _async_import_yaml_recipients   5 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   39 2 0   95%
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)   36 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 _json_safe   7 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions   40 1 0   98%
custom_components/supernotify/actions.py async_register_engine_actions.action_notify   21 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_configuration   1 0 0   100%
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.snooze_command   13 0 0   100%
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   24 0 0   100%
custom_components/supernotify/actions.py async_register_engine_actions.supplemental_action_enquire_archive.at_verbosity   5 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)   48 0 3   100%
custom_components/supernotify/archive.py _filename_period   7 0 0   100%
custom_components/supernotify/archive.py _list_entries_sync   32 6 0   81%
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   1 0 0   100%
custom_components/supernotify/archive.py ArchiveDestination.archive   1 0 0   100%
custom_components/supernotify/archive.py EventArchiver.__init__   6 0 0   100%
custom_components/supernotify/archive.py EventArchiver.archive   9 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   21 0 0   100%
custom_components/supernotify/archive.py ArchiveDirectory.archive   24 0 0   100%
custom_components/supernotify/archive.py ArchiveDirectory.list_entries   6 2 0   67%
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.cleanup   18 0 0   100%
custom_components/supernotify/archive.py NotificationArchive.__init__   13 0 0   100%
custom_components/supernotify/archive.py NotificationArchive.initialize   14 0 0   100%
custom_components/supernotify/archive.py NotificationArchive.size   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 _names_for   3 0 0   100%
custom_components/supernotify/archive.py _names_for._display_name   1 0 0   100%
custom_components/supernotify/archive.py _scenario_names   5 0 0   100%
custom_components/supernotify/archive.py _bump   1 0 0   100%
custom_components/supernotify/archive.py summarize_by_day   24 0 0   100%
custom_components/supernotify/archive.py summarize_notification   32 2 0   94%
custom_components/supernotify/archive.py (no function)   59 0 6   100%
custom_components/supernotify/binary_sensor.py async_setup_entry   36 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   9 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 deprecated_entity_ids   1 0 0   100%
custom_components/supernotify/binary_sensor.py async_remove_deprecated_entities   7 0 0   100%
custom_components/supernotify/binary_sensor.py (no function)   71 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)   15 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 canonical_priority   1 0 0   100%
custom_components/supernotify/common.py spoken_name   1 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 1 0   88%
custom_components/supernotify/common.py DupeCheckable.hash   1 1 0   0%
custom_components/supernotify/common.py DupeChecker.__init__   6 0 0   100%
custom_components/supernotify/common.py DupeChecker.check   9 0 0   100%
custom_components/supernotify/common.py DupeChecker.record   9 0 0   100%
custom_components/supernotify/common.py DupeChecker._expire   3 0 0   100%
custom_components/supernotify/common.py DupeChecker._matches   6 1 0   83%
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)   45 0 2   100%
custom_components/supernotify/compat.py (no function)   4 0 3   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 SupernotifyConfigFlow.async_get_supported_subentry_types   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   11 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 target_from_fields   20 0 0   100%
custom_components/supernotify/config_flow.py target_to_fields   10 0 0   100%
custom_components/supernotify/config_flow.py RecipientSubentryFlow.__init__   2 0 0   100%
custom_components/supernotify/config_flow.py RecipientSubentryFlow.async_step_user   24 0 0   100%
custom_components/supernotify/config_flow.py RecipientSubentryFlow.async_step_reconfigure   2 0 0   100%
custom_components/supernotify/config_flow.py RecipientSubentryFlow.async_step_details   32 0 0   100%
custom_components/supernotify/config_flow.py RecipientSubentryFlow.async_step_save   4 0 0   100%
custom_components/supernotify/config_flow.py RecipientSubentryFlow._mobile_discovery_default   1 0 0   100%
custom_components/supernotify/config_flow.py RecipientSubentryFlow._title   5 0 0   100%
custom_components/supernotify/config_flow.py RecipientSubentryFlow._mobile_device_options   16 3 0   81%
custom_components/supernotify/config_flow.py RecipientSubentryFlow._delivery_names   2 0 0   100%
custom_components/supernotify/config_flow.py TransportSubentryFlow.__init__   2 0 0   100%
custom_components/supernotify/config_flow.py TransportSubentryFlow.async_step_user   8 0 0   100%
custom_components/supernotify/config_flow.py TransportSubentryFlow.async_step_reconfigure   4 0 0   100%
custom_components/supernotify/config_flow.py TransportSubentryFlow.async_step_details   53 2 0   96%
custom_components/supernotify/config_flow.py TransportSubentryFlow._connection   4 0 0   100%
custom_components/supernotify/config_flow.py TransportSubentryFlow.async_step_save   3 0 0   100%
custom_components/supernotify/config_flow.py TransportSubentryFlow._title   1 0 0   100%
custom_components/supernotify/config_flow.py TransportSubentryFlow._transport_class   2 0 0   100%
custom_components/supernotify/config_flow.py TransportSubentryFlow._takes_action   2 0 0   100%
custom_components/supernotify/config_flow.py TransportSubentryFlow._addable   4 0 0   100%
custom_components/supernotify/config_flow.py _migrate_deprecated   17 0 0   100%
custom_components/supernotify/config_flow.py (no function)   86 0 2   100%
custom_components/supernotify/const.py transport_display_name   1 0 0   100%
custom_components/supernotify/const.py recipient_subentry_title   1 0 0   100%
custom_components/supernotify/const.py transport_subentry_title   1 0 0   100%
custom_components/supernotify/const.py (no function)   252 0 0   100%
custom_components/supernotify/context.py Context.__init__   14 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__   25 0 0   100%
custom_components/supernotify/delivery.py Delivery.initialize   5 0 0   100%
custom_components/supernotify/delivery.py Delivery.migrate_config   6 0 0   100%
custom_components/supernotify/delivery.py Delivery.check_lost_implicit_inclusion   3 0 0   100%
custom_components/supernotify/delivery.py Delivery.validate_config   25 0 0   100%
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.record_outcome   4 0 0   100%
custom_components/supernotify/delivery.py Delivery.attributes   12 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   6 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   32 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.initialize_transport_deliveries   18 2 0   89%
custom_components/supernotify/delivery.py (no function)   62 0 8   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   16 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   46 3 0   93%
custom_components/supernotify/engine.py SupernotifyEngine.refresh_entities   9 0 0   100%
custom_components/supernotify/engine.py SupernotifyEngine._record_delivery_outcomes   13 2 0   85%
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.tag_matches   3 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.on_mobile_app_change   3 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)   68 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.render_action   12 3 0   75%
custom_components/supernotify/envelope.py Envelope.notification_uri   10 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._message_carries_title   2 0 0   100%
custom_components/supernotify/envelope.py Envelope._compute_message   27 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.content_key   3 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)   43 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 ha_transport_device_info   1 0 0   100%
custom_components/supernotify/hass_api.py _describe_unsubscribe   2 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_mobile_app_changes   9 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.subscribe_mobile_app_changes.on_device   8 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.subscribe_mobile_app_changes.on_service   2 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.integration_loaded   2 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.mobile_app_action_exists   2 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.config_path   1 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.config_entry_title_for_entity   6 1 0   83%
custom_components/supernotify/hass_api.py HomeAssistantAPI.device_for_entity   3 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.entity_spoken_names   13 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.sender_entity_ids   4 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.entity_ids_named   2 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   4 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   13 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.resolve_target_exclusion   9 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.find_service   18 2 0   89%
custom_components/supernotify/hass_api.py HomeAssistantAPI.smtp_recipients   12 1 0   92%
custom_components/supernotify/hass_api.py HomeAssistantAPI.media_dirs   1 0 0   100%
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.translations   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   39 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.delete_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   38 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 nested_template_conditions   5 0 0   100%
custom_components/supernotify/hass_api.py trace_action   10 0 0   100%
custom_components/supernotify/hass_api.py (no function)   167 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 _notification_fields   9 0 0   100%
custom_components/supernotify/llm.py _notification_call   14 2 0   86%
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   27 0 0   100%
custom_components/supernotify/llm.py SnoozeTool._check_name   4 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   9 2 0   78%
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)   93 0 4   100%
custom_components/supernotify/logbook.py async_describe_events   4 0 0   100%
custom_components/supernotify/logbook.py async_describe_events.text   3 0 0   100%
custom_components/supernotify/logbook.py async_describe_events.async_describe_notification   7 0 0   100%
custom_components/supernotify/logbook.py (no function)   10 0 0   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   15 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   17 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__   22 1 0   95%
custom_components/supernotify/model.py ConditionVariables.as_dict   1 0 0   100%
custom_components/supernotify/model.py SuppressionReason.is_rule   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)   114 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 _original_trace   4 0 0   100%
custom_components/supernotify/notification.py Notification.__init__   87 1 0   99%
custom_components/supernotify/notification.py Notification._unknown_names   12 0 0   100%
custom_components/supernotify/notification.py Notification.initialize   22 3 0   86%
custom_components/supernotify/notification.py Notification.camera_variables   4 0 0   100%
custom_components/supernotify/notification.py Notification._exposed_notify_entities   1 0 0   100%
custom_components/supernotify/notification.py Notification._short_circuit_own_entities   20 1 0   95%
custom_components/supernotify/notification.py Notification.convert_exposed_notify_entities   15 0 0   100%
custom_components/supernotify/notification.py Notification.convert_notify_entities   29 1 0   97%
custom_components/supernotify/notification.py Notification.outcome   9 0 0   100%
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 1 0   91%
custom_components/supernotify/notification.py Notification.select_deliveries   104 1 0   99%
custom_components/supernotify/notification.py Notification.select_deliveries.tie_break   1 0 0   100%
custom_components/supernotify/notification.py Notification.suppress   4 0 0   100%
custom_components/supernotify/notification.py Notification.deliver   46 4 0   91%
custom_components/supernotify/notification.py Notification._fall_back   16 0 0   100%
custom_components/supernotify/notification.py Notification._schedule_deliveries   11 2 0   82%
custom_components/supernotify/notification.py Notification.snooze_tags   9 0 0   100%
custom_components/supernotify/notification.py Notification.senders   3 0 0   100%
custom_components/supernotify/notification.py Notification.delivery_skip_reason   13 1 0   92%
custom_components/supernotify/notification.py Notification._is_fallback_only   1 0 0   100%
custom_components/supernotify/notification.py Notification._category_satisfied   12 0 0   100%
custom_components/supernotify/notification.py Notification._target_required   3 0 0   100%
custom_components/supernotify/notification.py Notification._already_sent   2 0 0   100%
custom_components/supernotify/notification.py Notification.call_transport   46 1 0   98%
custom_components/supernotify/notification.py Notification.record_result   37 0 0   100%
custom_components/supernotify/notification.py Notification.delivery_outcomes   19 0 0   100%
custom_components/supernotify/notification.py Notification.contents   27 0 0   100%
custom_components/supernotify/notification.py Notification._delivery_stats   21 2 0   90%
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   12 0 0   100%
custom_components/supernotify/notification.py Notification._without_excluded   6 0 0   100%
custom_components/supernotify/notification.py Notification.generate_targets   72 8 0   89%
custom_components/supernotify/notification.py Notification._attach_person_ids   9 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   12 0 0   100%
custom_components/supernotify/notification.py Notification.all_recipients   6 0 0   100%
custom_components/supernotify/notification.py Notification.default_person_ids   4 0 0   100%
custom_components/supernotify/notification.py Notification.resolve_indirect_targets   11 0 0   100%
custom_components/supernotify/notification.py Notification.generate_envelopes   15 0 0   100%
custom_components/supernotify/notification.py (no function)   83 0 8   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 ExposedNotifyEntity.__init__   5 0 0   100%
custom_components/supernotify/notify.py ExposedNotifyEntity.async_send_message   1 0 0   100%
custom_components/supernotify/notify.py exposed_notify_entities   28 0 0   100%
custom_components/supernotify/notify.py async_register_entity_actions   7 2 0   71%
custom_components/supernotify/notify.py async_register_entity_actions.notify   1 0 0   100%
custom_components/supernotify/notify.py async_get_service   5 0 0   100%
custom_components/supernotify/notify.py async_setup_entry   6 0 0   100%
custom_components/supernotify/notify.py (no function)   31 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_key   7 0 0   100%
custom_components/supernotify/people.py Recipient.__init__   24 0 0   100%
custom_components/supernotify/people.py Recipient.initialize   18 1 0   94%
custom_components/supernotify/people.py Recipient.on_notification   2 0 0   100%
custom_components/supernotify/people.py Recipient.resolve_mobile_devices   22 0 0   100%
custom_components/supernotify/people.py Recipient.check_mobile_actions   14 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__   7 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.initialize   30 2 0   93%
custom_components/supernotify/people.py PeopleRegistry.refresh_mobile_devices   4 0 0   100%
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   3 0 0   100%
custom_components/supernotify/people.py PeopleRegistry.subentry_ids   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.occupancy_permits_delivery   16 2 0   88%
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)   64 0 6   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_yaml_entry_owned_keys   4 0 0   100%
custom_components/supernotify/repairs.py async_check_yaml_transports   4 0 0   100%
custom_components/supernotify/repairs.py deprecated_transport_keys   4 0 0   100%
custom_components/supernotify/repairs.py async_check_transport_deprecated_config   9 0 0   100%
custom_components/supernotify/repairs.py async_check_yaml_recipients   4 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   32 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   8 0 0   100%
custom_components/supernotify/repairs.py async_create_fix_flow   4 0 0   100%
custom_components/supernotify/repairs.py (no function)   58 0 3   100%
custom_components/supernotify/scenario.py ScenarioRegistry.__init__   6 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry.initialize   15 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   5 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 0 0   100%
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   25 0 0   100%
custom_components/supernotify/scenario.py Scenario.__init__   36 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 6   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 _mobile_action_level   6 0 0   100%
custom_components/supernotify/schema.py _single_notification_level   3 0 0   100%
custom_components/supernotify/schema.py as_raw_config   11 0 0   100%
custom_components/supernotify/schema.py (no function)   82 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)   22 0 5   100%
custom_components/supernotify/sentences.py Voice.say   1 0 0   100%
custom_components/supernotify/sentences.py Voice.joined   1 0 0   100%
custom_components/supernotify/sentences.py Voice.can_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   36 0 0   100%
custom_components/supernotify/sentences.py _subject   13 0 0   100%
custom_components/supernotify/sentences.py _tag   4 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   19 0 0   100%
custom_components/supernotify/sentences.py _clock   3 0 0   100%
custom_components/supernotify/sentences.py _last   9 0 0   100%
custom_components/supernotify/sentences.py _why_not_sent   9 2 0   78%
custom_components/supernotify/sentences.py (no function)   49 0 3   100%
custom_components/supernotify/snoozer.py snooze_name_error   13 0 0   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   20 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.purge_snoozes   5 0 0   100%
custom_components/supernotify/snoozer.py Snoozer._mobile_app_gone   1 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.has_tag_snooze   1 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   10 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.filter_mobile_app_ids   8 0 0   100%
custom_components/supernotify/snoozer.py _snoozes_subject   6 0 0   100%
custom_components/supernotify/snoozer.py (no function)   50 0 6   100%
custom_components/supernotify/static_config.py (no function)   25 0 0   100%
custom_components/supernotify/switch.py async_setup_entry   16 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._with_overridden   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   7 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__   4 0 0   100%
custom_components/supernotify/switch.py SupernotifyTransportSwitch.extra_state_attributes   1 0 0   100%
custom_components/supernotify/switch.py SupernotifyTransportSwitch._refresh_related   11 0 0   100%
custom_components/supernotify/switch.py (no function)   71 0 9   100%
custom_components/supernotify/target.py TargetEntityCategory.matches   9 0 0   100%
custom_components/supernotify/target.py _blank   1 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)   85 0 4   100%
custom_components/supernotify/transport.py default_target_required   1 0 0   100%
custom_components/supernotify/transport.py default_selection_rank   5 0 0   100%
custom_components/supernotify/transport.py default_inclusion   1 0 0   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.unique_target_categories   1 0 0   100%
custom_components/supernotify/transport.py Transport.fallback_target_categories   1 0 0   100%
custom_components/supernotify/transport.py Transport.other_target_categories   1 0 0   100%
custom_components/supernotify/transport.py Transport.target_categories   1 0 0   100%
custom_components/supernotify/transport.py Transport.default_config   5 0 0   100%
custom_components/supernotify/transport.py Transport.is_viable   1 0 0   100%
custom_components/supernotify/transport.py Transport.build_standard_deliveries   3 0 0   100%
custom_components/supernotify/transport.py Transport.validate_action   1 0 0   100%
custom_components/supernotify/transport.py Transport.priority_prefix   1 0 0   100%
custom_components/supernotify/transport.py Transport.validate_notify_action   4 0 0   100%
custom_components/supernotify/transport.py Transport.safe_grab_image   5 0 0   100%
custom_components/supernotify/transport.py Transport.absolute_url   1 0 0   100%
custom_components/supernotify/transport.py Transport.image_url   13 0 0   100%
custom_components/supernotify/transport.py Transport.attributes   10 0 0   100%
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.common_string   2 0 0   100%
custom_components/supernotify/transport.py Transport.set_action_data   3 0 0   100%
custom_components/supernotify/transport.py Transport.call_action   43 0 0   100%
custom_components/supernotify/transport.py Transport.record_error   4 0 0   100%
custom_components/supernotify/transport.py Transport.log_delivery_failure   5 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._strip_urls   1 0 0   100%
custom_components/supernotify/transport.py Transport._simplify_text   5 0 0   100%
custom_components/supernotify/transport.py Transport._simplify_around_markup   5 0 0   100%
custom_components/supernotify/transport.py (no function)   82 0 8   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.default_config   4 0 0   100%
custom_components/supernotify/transports/alexa_devices.py AlexaDevicesTransport.unique_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   10 0 0   100%
custom_components/supernotify/transports/alexa_devices.py (no function)   30 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   4 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py AlexaMediaPlayerTransport.other_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._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   56 0 0   100%
custom_components/supernotify/transports/alexa_media_player.py (no function)   47 0 3   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   15 2 0   87%
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   4 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.other_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   33 0 0   100%
custom_components/supernotify/transports/chime.py (no function)   74 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   3 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.unique_target_categories   1 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.select_channels   14 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.deliver   54 0 0   100%
custom_components/supernotify/transports/discord.py DiscordTransport.compose_message   9 0 0   100%
custom_components/supernotify/transports/discord.py (no function)   29 0 2   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   14 4 0   71%
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   5 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   3 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.unique_target_categories   1 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.deliver   48 3 0   94%
custom_components/supernotify/transports/email.py EmailTransport._send   5 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport._without_missing_images   12 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport._send_ha_smtp   12 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport._send_message_data   11 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport._media_source_attachment   15 2 0   87%
custom_components/supernotify/transports/email.py EmailTransport._send_direct_smtp   28 4 0   86%
custom_components/supernotify/transports/email.py EmailTransport._build_message   34 1 0   97%
custom_components/supernotify/transports/email.py EmailTransport._attach_file   14 0 0   100%
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   33 4 0   88%
custom_components/supernotify/transports/email.py EmailTransport.pack_preheader   6 0 0   100%
custom_components/supernotify/transports/email.py (no function)   111 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   4 0 0   100%
custom_components/supernotify/transports/generic.py GenericTransport.validate_action   9 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   89 0 0   100%
custom_components/supernotify/transports/generic.py GenericTransport._skip_no_target   4 0 0   100%
custom_components/supernotify/transports/generic.py _missing_entities   1 0 0   100%
custom_components/supernotify/transports/generic.py script   13 0 0   100%
custom_components/supernotify/transports/generic.py ntfy   37 2 0   95%
custom_components/supernotify/transports/generic.py notify_events   31 0 0   100%
custom_components/supernotify/transports/generic.py (no function)   41 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   3 0 0   100%
custom_components/supernotify/transports/gotify.py GotifyTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/gotify.py GotifyTransport.deliver   28 0 0   100%
custom_components/supernotify/transports/gotify.py (no function)   25 0 2   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   4 0 0   100%
custom_components/supernotify/transports/html5.py HTML5Transport.unique_target_categories   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.deliver   80 0 0   100%
custom_components/supernotify/transports/html5.py (no function)   30 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   4 0 0   100%
custom_components/supernotify/transports/kodi.py KodiTransport.other_target_categories   1 0 0   100%
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.deliver   31 0 0   100%
custom_components/supernotify/transports/kodi.py (no function)   35 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   3 0 0   100%
custom_components/supernotify/transports/lametric.py LaMetricTransport.unique_target_categories   1 0 0   100%
custom_components/supernotify/transports/lametric.py LaMetricTransport.device_ids   10 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   35 0 0   100%
custom_components/supernotify/transports/lametric.py (no function)   31 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   3 0 0   100%
custom_components/supernotify/transports/matrix.py MatrixTransport.unique_target_categories   1 0 0   100%
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   42 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   4 0 0   100%
custom_components/supernotify/transports/media_player.py MediaPlayerTransport.other_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   6 0 0   100%
custom_components/supernotify/transports/media_player.py MediaPlayerTransport.absolute_url   1 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)   28 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.default_config   3 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.unique_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   17 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport._android_extra_calls   19 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   132 0 0   100%
custom_components/supernotify/transports/mobile_push.py (no function)   44 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   5 0 0   100%
custom_components/supernotify/transports/mqtt.py MQTTTransport.unique_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.deliver   28 0 0   100%
custom_components/supernotify/transports/mqtt.py (no function)   26 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   4 0 0   100%
custom_components/supernotify/transports/notify_entity.py NotifyEntityTransport.fallback_target_categories   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)   25 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   4 0 0   100%
custom_components/supernotify/transports/ntfy.py NtfyTransport.unique_target_categories   1 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   58 6 0   90%
custom_components/supernotify/transports/ntfy.py (no function)   33 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   3 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 0 0   100%
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   3 0 0   100%
custom_components/supernotify/transports/pushover.py PushoverTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/pushover.py PushoverTransport.deliver   77 0 0   100%
custom_components/supernotify/transports/pushover.py (no function)   28 0 2   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.default_config   9 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.unique_target_categories   1 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.simplify   6 0 0   100%
custom_components/supernotify/transports/sms.py SMSTransport.deliver   15 0 0   100%
custom_components/supernotify/transports/sms.py (no function)   26 0 2   100%
custom_components/supernotify/transports/telegram.py _escape_html   1 0 0   100%
custom_components/supernotify/transports/telegram.py _escape_markdown   2 0 0   100%
custom_components/supernotify/transports/telegram.py _fit   4 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   24 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   3 0 0   100%
custom_components/supernotify/transports/telegram.py TelegramTransport.unique_target_categories   1 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   84 0 0   100%
custom_components/supernotify/transports/telegram.py (no function)   38 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   4 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.other_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   20 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.tts_entity_id   7 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.call_mobile_apps   15 1 0   93%
custom_components/supernotify/transports/tts.py (no function)   35 0 3   100%
custom_components/supernotify/transports/webostv.py WebOsTvTransport.__init__   1 0 0   100%
custom_components/supernotify/transports/webostv.py WebOsTvTransport.supported_features   1 0 0   100%
custom_components/supernotify/transports/webostv.py WebOsTvTransport.unique_target_categories   1 0 0   100%
custom_components/supernotify/transports/webostv.py WebOsTvTransport.is_viable   1 0 0   100%
custom_components/supernotify/transports/webostv.py WebOsTvTransport.build_standard_deliveries   1 0 0   100%
custom_components/supernotify/transports/webostv.py WebOsTvTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/webostv.py WebOsTvTransport.notify_action   5 1 0   80%
custom_components/supernotify/transports/webostv.py WebOsTvTransport.deliver   21 0 0   100%
custom_components/supernotify/transports/webostv.py (no function)   26 0 3   100%
Total     10391 262 225   97%

No items found using the specified filter.