Coverage report: 93%

Files Functions Classes

coverage.py v7.13.5, created at 2026-06-11 22:18 +0000

File function   statements missing excluded   coverage
custom_components / supernotify / __init__.py (no function)   5 0 0   100%
custom_components / supernotify / archive.py ArchivableObject.base_filename   1 1 0   0%
custom_components / supernotify / archive.py ArchivableObject.contents   1 1 0   0%
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 1 0   0%
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   4 0 0   100%
custom_components / supernotify / archive.py ArchiveTopic.archive   11 3 0   73%
custom_components / supernotify / archive.py ArchiveDirectory.__init__   6 0 0   100%
custom_components / supernotify / archive.py ArchiveDirectory.initialize   16 2 0   88%
custom_components / supernotify / archive.py ArchiveDirectory.archive   24 11 0   54%
custom_components / supernotify / archive.py ArchiveDirectory.size   4 1 0   75%
custom_components / supernotify / archive.py ArchiveDirectory.cleanup   21 2 0   90%
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)   47 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 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__   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 / const.py (no function)   209 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)   13 0 12   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 1 0   89%
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 1 0   75%
custom_components / supernotify / envelope.py Envelope.grab_image   4 0 0   100%
custom_components / supernotify / envelope.py Envelope.core_action_data   11 1 0   91%
custom_components / supernotify / envelope.py Envelope.contents   19 1 0   95%
custom_components / supernotify / envelope.py Envelope.__eq__   3 1 0   67%
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 6 0   75%
custom_components / supernotify / envelope.py Envelope._render_scenario_templates   17 4 0   76%
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 7 0   53%
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 1 0   94%
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 1 0   0%
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   30 3 0   90%
custom_components / supernotify / hass_api.py HomeAssistantAPI.service_info   14 2 0   86%
custom_components / supernotify / hass_api.py HomeAssistantAPI.find_service   13 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.register_web_path   9 1 0   89%
custom_components / supernotify / hass_api.py HomeAssistantAPI.trace_conditions   12 0 0   100%
custom_components / supernotify / hass_api.py HomeAssistantAPI.build_conditions   26 4 0   85%
custom_components / supernotify / hass_api.py HomeAssistantAPI.evaluate_conditions   7 4 0   43%
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 1 0   0%
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 3 0   91%
custom_components / supernotify / hass_api.py HomeAssistantAPI.device_config_info   7 0 0   100%
custom_components / supernotify / hass_api.py HomeAssistantAPI.discover_devices   43 12 0   72%
custom_components / supernotify / hass_api.py HomeAssistantAPI.domain_for_device   10 2 0   80%
custom_components / supernotify / hass_api.py HomeAssistantAPI.entity_registry   7 2 0   71%
custom_components / supernotify / hass_api.py HomeAssistantAPI.device_registry   7 2 0   71%
custom_components / supernotify / hass_api.py HomeAssistantAPI.mqtt_available   7 5 0   29%
custom_components / supernotify / hass_api.py HomeAssistantAPI.mqtt_publish   6 4 0   33%
custom_components / supernotify / hass_api.py ConditionErrorLoggingAdaptor.__init__   2 0 0   100%
custom_components / supernotify / hass_api.py ConditionErrorLoggingAdaptor.capture   6 1 0   83%
custom_components / supernotify / hass_api.py ConditionErrorLoggingAdaptor.error   2 2 0   0%
custom_components / supernotify / hass_api.py ConditionErrorLoggingAdaptor.warning   2 0 0   100%
custom_components / supernotify / hass_api.py force_strict_template_mode   8 0 0   100%
custom_components / supernotify / hass_api.py force_strict_template_mode.TemplateWrapper.__init__   1 0 0   100%
custom_components / supernotify / hass_api.py force_strict_template_mode.TemplateWrapper.__getattr__   3 1 0   67%
custom_components / supernotify / hass_api.py force_strict_template_mode.TemplateWrapper.__setattr__   1 0 0   100%
custom_components / supernotify / hass_api.py force_strict_template_mode.TemplateWrapper.__repr__   1 0 0   100%
custom_components / supernotify / hass_api.py force_strict_template_mode.wrap_template   8 2 0   75%
custom_components / supernotify / hass_api.py trace_action   10 4 0   60%
custom_components / supernotify / hass_api.py (no function)   111 0 15   100%
custom_components / supernotify / media_grab.py snapshot_from_url   21 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   6 2 0   67%
custom_components / supernotify / media_grab.py snap_notification_image   37 4 0   89%
custom_components / supernotify / media_grab.py grab_image   32 4 0   88%
custom_components / supernotify / media_grab.py write_image_from_bitmap   29 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)   40 0 5   100%
custom_components / supernotify / model.py Target.__init__   50 3 0   94%
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)   165 0 3   100%
custom_components / supernotify / notification.py Notification.__init__   66 3 0   95%
custom_components / supernotify / notification.py Notification.initialize   21 3 0   86%
custom_components / supernotify / notification.py Notification.outcome   11 9 0   18%
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   47 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   43 7 0   84%
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   78 9 0   88%
custom_components / supernotify / notification.py Notification.resolve_scenario_targets   6 0 0   100%
custom_components / supernotify / notification.py Notification.all_recipients   6 0 0   100%
custom_components / supernotify / notification.py Notification.default_person_ids   3 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)   57 0 6   100%
custom_components / supernotify / notify.py async_get_service   32 0 0   100%
custom_components / supernotify / notify.py async_get_service.supplemental_action_enquire_configuration   1 1 0   0%
custom_components / supernotify / notify.py async_get_service.supplemental_action_refresh_entities   1 1 0   0%
custom_components / supernotify / notify.py async_get_service.supplemental_action_enquire_implicit_deliveries   1 0 0   100%
custom_components / supernotify / notify.py async_get_service.supplemental_action_enquire_deliveries_by_scenario   1 0 0   100%
custom_components / supernotify / notify.py async_get_service.supplemental_action_enquire_last_notification   1 0 0   100%
custom_components / supernotify / notify.py async_get_service.supplemental_action_enquire_active_scenarios   5 0 0   100%
custom_components / supernotify / notify.py async_get_service.supplemental_action_enquire_scenarios   1 1 0   0%
custom_components / supernotify / notify.py async_get_service.supplemental_action_enquire_occupancy   1 1 0   0%
custom_components / supernotify / notify.py async_get_service.supplemental_action_enquire_snoozes   1 1 0   0%
custom_components / supernotify / notify.py async_get_service.supplemental_action_clear_snoozes   1 1 0   0%
custom_components / supernotify / notify.py async_get_service.supplemental_action_enquire_recipients   1 0 0   100%
custom_components / supernotify / notify.py async_get_service.supplemental_action_purge_archive   6 1 0   83%
custom_components / supernotify / notify.py async_get_service.supplemental_action_purge_media   6 6 0   0%
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 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)   75 0 6   100%
custom_components / supernotify / people.py Recipient.__init__   14 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.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.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)   34 0 3   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__   29 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 2 0   80%
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 0 0   100%
custom_components / supernotify / schema.py _mobile_action_uri   3 1 0   67%
custom_components / supernotify / schema.py (no function)   59 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__   14 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   37 0 0   100%
custom_components / supernotify / transport.py Transport.record_error   4 0 0   100%
custom_components / supernotify / transport.py Transport.simplify   9 0 0   100%
custom_components / supernotify / transport.py (no function)   40 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   9 0 0   100%
custom_components / supernotify / transports / alexa_media_player.py AlexaMediaPlayerTransport._post_announce   8 0 0   100%
custom_components / supernotify / transports / alexa_media_player.py AlexaMediaPlayerTransport.deliver   50 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 0 0   100%
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 / email.py EmailTransport.__init__   5 0 0   100%
custom_components / supernotify / transports / email.py EmailTransport.initialize   10 2 0   80%
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.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)   52 0 5   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 / 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 / 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 14 0   46%
custom_components / supernotify / transports / mobile_push.py MobilePushTransport.action_title   18 0 0   100%
custom_components / supernotify / transports / mobile_push.py MobilePushTransport.deliver   90 9 0   90%
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)   20 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 1 0   0%
custom_components / supernotify / transports / telegram.py _normalise_inline_keyboard   18 18 0   0%
custom_components / supernotify / transports / telegram.py _build_inline_keyboard   22 9 0   59%
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 1 0   67%
custom_components / supernotify / transports / telegram.py TelegramTransport.deliver   107 31 0   71%
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     5651 408 128   93%

No items found using the specified filter.