Coverage report: 96%

Files Functions Classes

coverage.py v7.15.2, created at 2026-09-01 18:25 +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   7 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_setup_entry   22 2 0   91%
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)   25 0 6   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.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   3 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.size   4 0 0   100%
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.cleanup   2 0 0   100%
custom_components/supernotify/archive.py NotificationArchive.archive   10 0 0   100%
custom_components/supernotify/archive.py (no function)   46 0 3   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 1 0   67%
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__   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 (no function)   39 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 (no function)   36 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__   18 0 0   100%
custom_components/supernotify/delivery.py Delivery.initialize   24 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.select_targets   5 0 0   100%
custom_components/supernotify/delivery.py Delivery.select_targets.selected   5 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__   12 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.initialize   3 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.initialize_deliveries   8 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.enable   6 1 0   83%
custom_components/supernotify/delivery.py DeliveryRegistry.disable   6 1 0   83%
custom_components/supernotify/delivery.py DeliveryRegistry.deliveries   1 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.implicit_deliveries   1 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.initialize_transports   17 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.initialize_transport_deliveries   9 0 0   100%
custom_components/supernotify/delivery.py DeliveryRegistry.autogenerate_deliveries   16 1 0   94%
custom_components/supernotify/delivery.py (no function)   40 0 6   100%
custom_components/supernotify/envelope.py Envelope.__init__   47 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   11 0 0   100%
custom_components/supernotify/envelope.py Envelope.contents   19 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._compute_title   11 0 0   100%
custom_components/supernotify/envelope.py Envelope._spoken_message   3 0 0   100%
custom_components/supernotify/envelope.py Envelope._compute_message   24 0 0   100%
custom_components/supernotify/envelope.py Envelope._render_scenario_templates   17 0 0   100%
custom_components/supernotify/envelope.py Envelope.hash   3 0 0   100%
custom_components/supernotify/envelope.py Envelope.hash.alphaize   1 0 0   100%
custom_components/supernotify/envelope.py Envelope._resolve_data_templates   15 0 0   100%
custom_components/supernotify/envelope.py (no function)   31 0 7   100%
custom_components/supernotify/hass_api.py DeviceInfo.as_dict   1 0 0   100%
custom_components/supernotify/hass_api.py DeviceInfo.__eq__   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.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.set_state   3 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.domain_entity   1 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 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.service_info   14 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.find_service   13 0 0   100%
custom_components/supernotify/hass_api.py HomeAssistantAPI.find_config_entry_data   9 0 0   100%
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.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   43 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.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)   117 0 13   100%
custom_components/supernotify/media_grab.py snapshot_from_url   21 0 0   100%
custom_components/supernotify/media_grab.py infer_ptz_method   5 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   17 0 0   100%
custom_components/supernotify/media_grab.py snap_camera   19 2 0   89%
custom_components/supernotify/media_grab.py camera_available   24 0 0   100%
custom_components/supernotify/media_grab.py select_avail_camera   24 1 0   96%
custom_components/supernotify/media_grab.py _detect_image_ext   7 0 0   100%
custom_components/supernotify/media_grab.py snap_notification_image   40 2 0   95%
custom_components/supernotify/media_grab.py grab_image   32 4 0   88%
custom_components/supernotify/media_grab.py write_image_from_bitmap   31 0 0   100%
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)   41 0 5   100%
custom_components/supernotify/model.py Target.__init__   40 1 0   98%
custom_components/supernotify/model.py Target._filter_by_category   8 1 0   88%
custom_components/supernotify/model.py Target.email   1 0 0   100%
custom_components/supernotify/model.py Target.entity_ids   1 0 0   100%
custom_components/supernotify/model.py Target.person_ids   1 0 0   100%
custom_components/supernotify/model.py Target.device_ids   1 0 0   100%
custom_components/supernotify/model.py Target.phone   1 0 0   100%
custom_components/supernotify/model.py Target.mobile_app_ids   1 0 0   100%
custom_components/supernotify/model.py Target.domain_entity_ids   1 0 0   100%
custom_components/supernotify/model.py Target.custom_ids   1 0 0   100%
custom_components/supernotify/model.py Target.area_ids   1 0 0   100%
custom_components/supernotify/model.py Target.floor_ids   1 0 0   100%
custom_components/supernotify/model.py Target.label_ids   1 0 0   100%
custom_components/supernotify/model.py Target.is_device_id   1 0 0   100%
custom_components/supernotify/model.py Target.is_entity_id   1 0 0   100%
custom_components/supernotify/model.py Target.is_person_id   1 0 0   100%
custom_components/supernotify/model.py Target.is_phone   4 0 0   100%
custom_components/supernotify/model.py Target.is_mobile_app_id   1 0 0   100%
custom_components/supernotify/model.py Target.is_notify_entity   1 0 0   100%
custom_components/supernotify/model.py Target.is_email   4 0 0   100%
custom_components/supernotify/model.py Target.has_targets   1 0 0   100%
custom_components/supernotify/model.py Target.has_resolved_target   1 0 0   100%
custom_components/supernotify/model.py Target.has_unknown_targets   1 0 0   100%
custom_components/supernotify/model.py Target.for_category   1 0 0   100%
custom_components/supernotify/model.py Target.resolved_targets   5 0 0   100%
custom_components/supernotify/model.py Target.hash_resolved   5 0 0   100%
custom_components/supernotify/model.py Target.direct_categories   1 0 0   100%
custom_components/supernotify/model.py Target.direct   4 1 0   75%
custom_components/supernotify/model.py Target.extend   3 0 0   100%
custom_components/supernotify/model.py Target.remove   3 0 0   100%
custom_components/supernotify/model.py Target.safe_copy   3 0 0   100%
custom_components/supernotify/model.py Target.split_by_target_data   27 0 0   100%
custom_components/supernotify/model.py Target.__len__   1 0 0   100%
custom_components/supernotify/model.py Target.__add__   16 1 0   94%
custom_components/supernotify/model.py Target.__sub__   9 1 0   89%
custom_components/supernotify/model.py Target.__eq__   11 3 0   73%
custom_components/supernotify/model.py Target.as_dict   1 0 0   100%
custom_components/supernotify/model.py TransportConfig.__init__   21 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__   15 2 0   87%
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   25 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__   25 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__   17 2 0   88%
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__   10 0 0   100%
custom_components/supernotify/model.py DebugTrace.contents   6 0 0   100%
custom_components/supernotify/model.py DebugTrace.record_target   18 0 0   100%
custom_components/supernotify/model.py DebugTrace.record_delivery_selection   1 0 0   100%
custom_components/supernotify/model.py DebugTrace.record_delivery_artefact   2 0 0   100%
custom_components/supernotify/model.py DebugTrace.record_delivery_exception   3 0 0   100%
custom_components/supernotify/model.py (no function)   166 0 3   100%
custom_components/supernotify/notification.py set_version   1 0 0   100%
custom_components/supernotify/notification.py DeliveryTargetOverride.as_dict   1 1 0   0%
custom_components/supernotify/notification.py Notification.__init__   69 3 0   96%
custom_components/supernotify/notification.py Notification.initialize   21 3 0   86%
custom_components/supernotify/notification.py Notification.convert_notify_entities   13 1 0   92%
custom_components/supernotify/notification.py Notification.outcome   11 2 0   82%
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   56 0 0   100%
custom_components/supernotify/notification.py Notification.suppress   4 0 0   100%
custom_components/supernotify/notification.py Notification.deliver   45 6 0   87%
custom_components/supernotify/notification.py Notification._schedule_deliveries   11 2 0   82%
custom_components/supernotify/notification.py Notification.call_transport   42 5 0   88%
custom_components/supernotify/notification.py Notification.record_result   29 0 0   100%
custom_components/supernotify/notification.py Notification.contents   30 2 0   93%
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.generate_targets   83 13 0   84%
custom_components/supernotify/notification.py Notification.resolve_scenario_targets   6 0 0   100%
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)   59 0 6   100%
custom_components/supernotify/notify.py build_supernotify_action   1 0 0   100%
custom_components/supernotify/notify.py async_register_supplemental_services   28 1 0   96%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_enquire_configuration   1 1 0   0%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_refresh_entities   1 1 0   0%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_enquire_implicit_deliveries   1 0 0   100%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_enquire_deliveries_by_scenario   1 0 0   100%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_enquire_last_notification   1 0 0   100%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_enquire_active_scenarios   5 0 0   100%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_enquire_scenarios   1 1 0   0%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_enquire_occupancy   1 1 0   0%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_enquire_snoozes   1 1 0   0%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_clear_snoozes   1 1 0   0%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_enquire_recipients   1 0 0   100%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_purge_archive   6 0 0   100%
custom_components/supernotify/notify.py async_register_supplemental_services.supplemental_action_purge_media   6 3 0   50%
custom_components/supernotify/notify.py async_unregister_supplemental_services   3 0 0   100%
custom_components/supernotify/notify.py async_get_service   6 0 0   100%
custom_components/supernotify/notify.py SupernotifyEntity.__init__   3 3 0   0%
custom_components/supernotify/notify.py SupernotifyEntity.async_send_message   1 1 0   0%
custom_components/supernotify/notify.py RecipientNotifyEntity.__init__   6 0 0   100%
custom_components/supernotify/notify.py RecipientNotifyEntity.async_added_to_hass   2 0 0   100%
custom_components/supernotify/notify.py RecipientNotifyEntity.async_will_remove_from_hass   2 0 0   100%
custom_components/supernotify/notify.py RecipientNotifyEntity.async_send_message   1 0 0   100%
custom_components/supernotify/notify.py async_setup_entry   3 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.__init__   7 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.initialize   16 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.async_shutdown   2 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.async_unregister_services   3 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.shutdown   2 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.async_send_message   31 3 0   90%
custom_components/supernotify/notify.py SupernotifyAction._entity_state_change_listener   53 7 0   87%
custom_components/supernotify/notify.py SupernotifyAction.expose_entity   12 5 0   58%
custom_components/supernotify/notify.py SupernotifyAction.expose_entities   14 2 0   86%
custom_components/supernotify/notify.py SupernotifyAction.enquire_implicit_deliveries   7 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.enquire_deliveries_by_scenario   1 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.enquire_occupancy   2 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.enquire_active_scenarios   3 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.trace_active_scenarios   11 1 0   91%
custom_components/supernotify/notify.py SupernotifyAction.trace_active_scenarios.safe_json   1 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.enquire_scenarios   1 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.enquire_snoozes   1 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.clear_snoozes   1 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.enquire_recipients   1 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.on_mobile_action   4 0 0   100%
custom_components/supernotify/notify.py SupernotifyAction.async_nightly_tasks   5 0 0   100%
custom_components/supernotify/notify.py (no function)   91 0 8   100%
custom_components/supernotify/people.py Recipient.__init__   15 0 0   100%
custom_components/supernotify/people.py Recipient.initialize   35 2 0   94%
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   4 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   19 2 0   89%
custom_components/supernotify/people.py PeopleRegistry.person_attributes   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 (no function)   36 0 3   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 _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)   40 0 4   100%
custom_components/supernotify/scenario.py ScenarioRegistry.__init__   2 0 0   100%
custom_components/supernotify/scenario.py ScenarioRegistry.initialize   5 0 0   100%
custom_components/supernotify/scenario.py Scenario.__init__   31 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   9 3 0   67%
custom_components/supernotify/scenario.py Scenario.trace   7 0 0   100%
custom_components/supernotify/scenario.py trace_action   10 10 0   0%
custom_components/supernotify/scenario.py (no function)   34 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)   66 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 Snoozer.__init__   4 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.handle_command_event   45 9 0   80%
custom_components/supernotify/snoozer.py Snoozer.register_snooze   12 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.purge_snoozes   3 0 0   100%
custom_components/supernotify/snoozer.py Snoozer.clear   3 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.filter_recipients   19 0 0   100%
custom_components/supernotify/snoozer.py (no function)   34 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.default_config   1 1 0   0%
custom_components/supernotify/transport.py Transport.auto_configure   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   9 0 0   100%
custom_components/supernotify/transport.py (no function)   42 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.default_config   6 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)   18 0 2   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   5 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.deliver   53 3 0   94%
custom_components/supernotify/transports/alexa_media_player.py (no function)   35 0 2   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   14 0 0   100%
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.validate_action   1 0 0   100%
custom_components/supernotify/transports/chime.py ChimeTransport.deliver   32 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   29 1 0   97%
custom_components/supernotify/transports/chime.py (no function)   63 0 3   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   4 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)   20 0 2   100%
custom_components/supernotify/transports/email.py EmailTransport.__init__   19 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 3 0   75%
custom_components/supernotify/transports/email.py EmailTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport.auto_configure   6 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.deliver   46 2 0   96%
custom_components/supernotify/transports/email.py EmailTransport._send   3 0 0   100%
custom_components/supernotify/transports/email.py EmailTransport._send_direct_smtp   27 0 0   100%
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)   83 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   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)   29 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   4 0 0   100%
custom_components/supernotify/transports/gotify.py GotifyTransport.deliver   34 0 0   100%
custom_components/supernotify/transports/gotify.py (no function)   20 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   5 0 0   100%
custom_components/supernotify/transports/html5.py HTML5Transport.validate_action   1 0 0   100%
custom_components/supernotify/transports/html5.py HTML5Transport.select_targets   8 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)   26 0 2   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   5 0 0   100%
custom_components/supernotify/transports/kodi.py KodiTransport.validate_action   1 0 0   100%
custom_components/supernotify/transports/kodi.py KodiTransport.select_targets   8 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)   31 0 2   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.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)   22 0 2   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   4 0 0   100%
custom_components/supernotify/transports/matrix.py MatrixTransport.validate_action   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)   23 0 2   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.deliver   20 0 0   100%
custom_components/supernotify/transports/media_player.py (no function)   18 0 2   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   4 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.auto_configure   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   18 0 0   100%
custom_components/supernotify/transports/mobile_push.py MobilePushTransport.deliver   90 0 0   100%
custom_components/supernotify/transports/mobile_push.py (no function)   29 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.validate_action   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   8 0 0   100%
custom_components/supernotify/transports/mqtt.py (no function)   19 0 2   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   5 0 0   100%
custom_components/supernotify/transports/notify_entity.py NotifyEntityTransport.auto_configure   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)   20 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.deliver   62 6 0   90%
custom_components/supernotify/transports/ntfy.py (no function)   23 0 2   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   4 0 0   100%
custom_components/supernotify/transports/persistent.py PersistentTransport.deliver   6 1 0   83%
custom_components/supernotify/transports/persistent.py (no function)   15 0 2   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   4 0 0   100%
custom_components/supernotify/transports/pushover.py PushoverTransport.deliver   77 6 0   92%
custom_components/supernotify/transports/pushover.py (no function)   24 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   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)   19 0 2   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   4 0 0   100%
custom_components/supernotify/transports/telegram.py TelegramTransport.validate_action   3 0 0   100%
custom_components/supernotify/transports/telegram.py TelegramTransport.deliver   107 0 0   100%
custom_components/supernotify/transports/telegram.py (no function)   24 0 2   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.default_config   6 0 0   100%
custom_components/supernotify/transports/tts.py TTSTransport.deliver   10 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)   25 0 3   100%
Total     6716 247 146   96%

No items found using the specified filter.