Coverage report: 81%

Files Functions Classes

coverage.py v7.13.0, created at 2026-01-06 15:18 +0000

File function   statements missing excluded   coverage
slidge / __init__.py entrypoint   1 1 0   0%
slidge / __init__.py formatwarning   1 0 0   100%
slidge / __init__.py (no function)   23 2 0   91%
slidge / __main__.py (no function)   2 2 0   0%
slidge / command / __init__.py (no function)   3 0 0   100%
slidge / command / adhoc.py AdhocProvider.__init__   5 0 0   100%
slidge / command / adhoc.py AdhocProvider.__wrap_initial_handler   4 0 0   100%
slidge / command / adhoc.py AdhocProvider.__handle_category_list   14 1 0   93%
slidge / command / adhoc.py AdhocProvider.__handle_category_choice   3 0 0   100%
slidge / command / adhoc.py AdhocProvider.__handle_result   25 2 0   92%
slidge / command / adhoc.py AdhocProvider.__wrap_timeout   5 5 0   0%
slidge / command / adhoc.py AdhocProvider.__wrap_handler   11 4 0   64%
slidge / command / adhoc.py AdhocProvider.__wrap_form_handler   7 2 0   71%
slidge / command / adhoc.py AdhocProvider.__wrap_confirmation   6 1 0   83%
slidge / command / adhoc.py AdhocProvider.register   17 3 0   82%
slidge / command / adhoc.py AdhocProvider.get_items   28 1 0   96%
slidge / command / adhoc.py strip_leading_emoji_if_needed   3 1 0   67%
slidge / command / adhoc.py (no function)   32 0 3   100%
slidge / command / admin.py ListUsers.run   9 9 0   0%
slidge / command / admin.py SlidgeInfo.run   27 27 0   0%
slidge / command / admin.py DeleteUser.run   1 1 0   0%
slidge / command / admin.py DeleteUser.delete   6 6 0   0%
slidge / command / admin.py DeleteUser.finish   5 5 0   0%
slidge / command / admin.py ChangeLoglevel.run   1 1 0   0%
slidge / command / admin.py ChangeLoglevel.finish   1 1 0   0%
slidge / command / admin.py Exec.__init__   1 1 0   0%
slidge / command / admin.py Exec.run   9 9 0   0%
slidge / command / admin.py (no function)   54 0 0   100%
slidge / command / base.py TableResult.get_xml   8 0 0   100%
slidge / command / base.py Confirmation.get_form   5 0 0   100%
slidge / command / base.py Form.get_values   5 0 0   100%
slidge / command / base.py Form.get_xml   7 0 0   100%
slidge / command / base.py FormField.__post_init__   2 0 0   100%
slidge / command / base.py FormField.__acceptable_options   3 1 0   67%
slidge / command / base.py FormField.validate   24 6 0   75%
slidge / command / base.py FormField.__validate_list_multi   8 4 0   50%
slidge / command / base.py FormField.get_xml   12 1 0   92%
slidge / command / base.py Command.__init__   1 0 0   100%
slidge / command / base.py Command.__init_subclass__   1 0 0   100%
slidge / command / base.py Command.run   1 1 0   0%
slidge / command / base.py Command._get_session   1 0 0   100%
slidge / command / base.py Command.__can_use_command   2 0 0   100%
slidge / command / base.py Command.raise_if_not_authorized   17 1 0   94%
slidge / command / base.py is_admin   1 0 0   100%
slidge / command / base.py (no function)   107 0 4   100%
slidge / command / categories.py (no function)   8 0 0   100%
slidge / command / chat_command.py ChatCommandProvider.__init__   5 0 0   100%
slidge / command / chat_command.py ChatCommandProvider.register   4 1 0   75%
slidge / command / chat_command.py ChatCommandProvider.input   1 0 0   100%
slidge / command / chat_command.py ChatCommandProvider.input   0 0 0   100%
slidge / command / chat_command.py ChatCommandProvider.input   0 0 0   100%
slidge / command / chat_command.py ChatCommandProvider.input   14 4 0   71%
slidge / command / chat_command.py ChatCommandProvider._handle_message   27 6 0   78%
slidge / command / chat_command.py ChatCommandProvider.__make_uri   1 1 0   0%
slidge / command / chat_command.py ChatCommandProvider._handle_result   36 21 0   42%
slidge / command / chat_command.py ChatCommandProvider.__handle_form   30 30 0   0%
slidge / command / chat_command.py ChatCommandProvider.__wrap_handler   11 8 0   27%
slidge / command / chat_command.py ChatCommandProvider._handle_help   9 5 0   44%
slidge / command / chat_command.py ChatCommandProvider._help   9 2 0   78%
slidge / command / chat_command.py ChatCommandProvider._not_found   3 0 0   100%
slidge / command / chat_command.py percent_encode   1 1 0   0%
slidge / command / chat_command.py (no function)   32 0 2   100%
slidge / command / register.py Register._finalize   4 4 0   0%
slidge / command / register.py Register.run   2 2 0   0%
slidge / command / register.py Register.register   26 26 0   0%
slidge / command / register.py Register.two_fa   5 5 0   0%
slidge / command / register.py Register.qr   7 7 0   0%
slidge / command / register.py Register.preferences   1 1 0   0%
slidge / command / register.py Register._preferences_timeout   3 3 0   0%
slidge / command / register.py (no function)   36 0 0   100%
slidge / command / user.py Search.run   5 5 0   0%
slidge / command / user.py Search.search   5 5 0   0%
slidge / command / user.py SyncContacts.run   3 3 0   0%
slidge / command / user.py SyncContacts.sync   25 25 0   0%
slidge / command / user.py ListContacts.run   4 4 0   0%
slidge / command / user.py ListGroups.run   4 4 0   0%
slidge / command / user.py Login.run   14 14 0   0%
slidge / command / user.py CreateGroup.run   4 4 0   0%
slidge / command / user.py CreateGroup.finish   4 4 0   0%
slidge / command / user.py Preferences.run   6 6 0   0%
slidge / command / user.py Preferences.finish   14 14 0   0%
slidge / command / user.py Unregister.run   1 1 0   0%
slidge / command / user.py Unregister.unregister   3 3 0   0%
slidge / command / user.py LeaveGroup.run   4 4 0   0%
slidge / command / user.py LeaveGroup.confirm   2 2 0   0%
slidge / command / user.py LeaveGroup.finish   2 2 0   0%
slidge / command / user.py InviteInGroups.run   5 5 0   0%
slidge / command / user.py (no function)   92 0 2   100%
slidge / contact / __init__.py (no function)   3 0 0   100%
slidge / contact / contact.py LegacyContact.__init__   5 0 0   100%
slidge / contact / contact.py LegacyContact.jid   3 0 0   100%
slidge / contact / contact.py LegacyContact.legacy_id   1 0 0   100%
slidge / contact / contact.py LegacyContact.get_vcard   5 0 0   100%
slidge / contact / contact.py LegacyContact.is_friend   1 0 0   100%
slidge / contact / contact.py LegacyContact.is_friend   3 0 0   100%
slidge / contact / contact.py LegacyContact.added_to_roster   1 0 0   100%
slidge / contact / contact.py LegacyContact.added_to_roster   3 1 0   67%
slidge / contact / contact.py LegacyContact.participants   8 0 0   100%
slidge / contact / contact.py LegacyContact.user_jid   1 0 0   100%
slidge / contact / contact.py LegacyContact.DISCO_TYPE   1 0 0   100%
slidge / contact / contact.py LegacyContact.DISCO_TYPE   1 1 0   0%
slidge / contact / contact.py LegacyContact.client_type   1 0 0   100%
slidge / contact / contact.py LegacyContact.client_type   3 3 0   0%
slidge / contact / contact.py LegacyContact._set_logger   1 0 0   100%
slidge / contact / contact.py LegacyContact.__repr__   1 0 0   100%
slidge / contact / contact.py LegacyContact.__get_subscription_string   3 1 0   67%
slidge / contact / contact.py LegacyContact.__propagate_to_participants   17 2 0   88%
slidge / contact / contact.py LegacyContact._send   27 0 0   100%
slidge / contact / contact.py LegacyContact.pop_unread_xmpp_ids_up_to   5 0 0   100%
slidge / contact / contact.py LegacyContact.name   1 0 0   100%
slidge / contact / contact.py LegacyContact.name   8 1 0   88%
slidge / contact / contact.py LegacyContact._post_avatar_update   5 0 0   100%
slidge / contact / contact.py LegacyContact.set_vcard   32 13 0   59%
slidge / contact / contact.py LegacyContact.get_roster_item   4 0 0   100%
slidge / contact / contact.py LegacyContact.add_to_roster   15 10 0   33%
slidge / contact / contact.py LegacyContact.__broadcast_pubsub_items   10 3 0   70%
slidge / contact / contact.py LegacyContact.send_friend_request   2 0 0   100%
slidge / contact / contact.py LegacyContact.accept_friend_request   8 0 0   100%
slidge / contact / contact.py LegacyContact.reject_friend_request   4 0 0   100%
slidge / contact / contact.py LegacyContact.on_friend_request   1 1 0   0%
slidge / contact / contact.py LegacyContact.on_friend_delete   1 1 0   0%
slidge / contact / contact.py LegacyContact.on_friend_accept   1 1 0   0%
slidge / contact / contact.py LegacyContact.unsubscribe   2 0 0   100%
slidge / contact / contact.py LegacyContact.update_info   1 0 0   100%
slidge / contact / contact.py LegacyContact.fetch_vcard   1 0 0   100%
slidge / contact / contact.py LegacyContact._make_presence   7 0 0   100%
slidge / contact / contact.py is_markable   3 1 0   67%
slidge / contact / contact.py (no function)   84 0 3   100%
slidge / contact / roster.py LegacyRoster.__init__   6 0 0   100%
slidge / contact / roster.py LegacyRoster.user   1 0 0   100%
slidge / contact / roster.py LegacyRoster.orm   1 0 0   100%
slidge / contact / roster.py LegacyRoster.from_store   1 0 0   100%
slidge / contact / roster.py LegacyRoster.__repr__   1 1 0   0%
slidge / contact / roster.py LegacyRoster.__iter__   4 0 0   100%
slidge / contact / roster.py LegacyRoster.known_contacts   3 3 0   0%
slidge / contact / roster.py LegacyRoster.by_jid   16 3 0   81%
slidge / contact / roster.py LegacyRoster.__update_if_needed   10 1 0   90%
slidge / contact / roster.py LegacyRoster.by_jid_only_if_exists   5 0 0   100%
slidge / contact / roster.py LegacyRoster.by_legacy_id   12 3 0   75%
slidge / contact / roster.py LegacyRoster.legacy_id_to_jid_username   1 0 0   100%
slidge / contact / roster.py LegacyRoster.jid_username_to_legacy_id   1 0 0   100%
slidge / contact / roster.py LegacyRoster._fill   29 20 0   31%
slidge / contact / roster.py LegacyRoster.fill   1 0 0   100%
slidge / contact / roster.py (no function)   38 0 2   100%
slidge / core / __init__.py (no function)   2 0 0   100%
slidge / core / config.py (no function)   111 0 0   100%
slidge / core / dispatcher / __init__.py (no function)   2 0 0   100%
slidge / core / dispatcher / caps.py CapsMixin.__init__   3 0 0   100%
slidge / core / dispatcher / caps.py CapsMixin._filter_add_caps   32 4 0   88%
slidge / core / dispatcher / caps.py (no function)   11 0 2   100%
slidge / core / dispatcher / disco.py DiscoMixin.__init__   3 0 0   100%
slidge / core / dispatcher / disco.py DiscoMixin.get_info   11 1 0   91%
slidge / core / dispatcher / disco.py DiscoMixin.get_items   11 1 0   91%
slidge / core / dispatcher / disco.py (no function)   14 0 2   100%
slidge / core / dispatcher / message / __init__.py (no function)   6 0 0   100%
slidge / core / dispatcher / message / chat_state.py ChatStateMixin.__init__   6 0 0   100%
slidge / core / dispatcher / message / chat_state.py ChatStateMixin.on_chatstate_active   5 2 0   60%
slidge / core / dispatcher / message / chat_state.py ChatStateMixin.on_chatstate_inactive   3 3 0   0%
slidge / core / dispatcher / message / chat_state.py ChatStateMixin.on_chatstate_composing   3 0 0   100%
slidge / core / dispatcher / message / chat_state.py ChatStateMixin.on_chatstate_paused   3 3 0   0%
slidge / core / dispatcher / message / chat_state.py ChatStateMixin.on_chatstate_gone   3 3 0   0%
slidge / core / dispatcher / message / chat_state.py (no function)   16 0 0   100%
slidge / core / dispatcher / message / marker.py MarkerMixin.__init__   3 0 0   100%
slidge / core / dispatcher / message / marker.py MarkerMixin.on_marker_displayed   9 0 0   100%
slidge / core / dispatcher / message / marker.py MarkerMixin.__to_mark   3 0 0   100%
slidge / core / dispatcher / message / marker.py MarkerMixin.on_message_displayed_synchronization_publish   15 4 0   73%
slidge / core / dispatcher / message / marker.py (no function)   15 0 0   100%
slidge / core / dispatcher / message / message.py MessageContentMixin.__init__   6 0 0   100%
slidge / core / dispatcher / message / message.py MessageContentMixin.on_groupchat_message   1 0 0   100%
slidge / core / dispatcher / message / message.py MessageContentMixin.on_legacy_message   64 8 0   88%
slidge / core / dispatcher / message / message.py MessageContentMixin.on_message_correction   32 12 0   62%
slidge / core / dispatcher / message / message.py MessageContentMixin.on_message_retract   9 1 0   89%
slidge / core / dispatcher / message / message.py MessageContentMixin.on_reactions   41 9 0   78%
slidge / core / dispatcher / message / message.py MessageContentMixin.__ack   2 0 0   100%
slidge / core / dispatcher / message / message.py MessageContentMixin.__get_reply   33 13 0   61%
slidge / core / dispatcher / message / message.py MessageContentMixin.__send_url   5 2 0   60%
slidge / core / dispatcher / message / message.py MessageContentMixin.__send_bob   8 0 0   100%
slidge / core / dispatcher / message / message.py redact_url   4 1 0   75%
slidge / core / dispatcher / message / message.py (no function)   31 0 0   100%
slidge / core / dispatcher / muc / __init__.py (no function)   8 0 0   100%
slidge / core / dispatcher / muc / admin.py MucAdminMixin.__init__   4 0 0   100%
slidge / core / dispatcher / muc / admin.py MucAdminMixin.on_user_moderation   11 2 0   82%
slidge / core / dispatcher / muc / admin.py MucAdminMixin.on_user_set_affiliation   15 1 0   93%
slidge / core / dispatcher / muc / admin.py MucAdminMixin.on_muc_admin_query_get   11 1 0   91%
slidge / core / dispatcher / muc / admin.py (no function)   13 0 0   100%
slidge / core / dispatcher / muc / mam.py MamMixin.__init__   5 0 0   100%
slidge / core / dispatcher / muc / mam.py MamMixin.__mam_cleanup   7 4 0   43%
slidge / core / dispatcher / muc / mam.py MamMixin.__handle_mam   2 0 0   100%
slidge / core / dispatcher / muc / mam.py MamMixin.__handle_mam_get_form   20 0 0   100%
slidge / core / dispatcher / muc / mam.py MamMixin.__handle_mam_metadata   2 0 0   100%
slidge / core / dispatcher / muc / mam.py (no function)   16 0 2   100%
slidge / core / dispatcher / muc / misc.py MucMiscMixin.__init__   7 0 0   100%
slidge / core / dispatcher / muc / misc.py MucMiscMixin.__on_group_chat_error   15 2 0   87%
slidge / core / dispatcher / muc / misc.py MucMiscMixin.on_ibr_remove   9 0 0   100%
slidge / core / dispatcher / muc / misc.py MucMiscMixin.on_groupchat_join   4 1 0   75%
slidge / core / dispatcher / muc / misc.py MucMiscMixin.on_groupchat_direct_invite   10 1 0   90%
slidge / core / dispatcher / muc / misc.py MucMiscMixin.on_groupchat_subject   4 1 0   75%
slidge / core / dispatcher / muc / misc.py MucMiscMixin.on_thread_subject   5 0 0   100%
slidge / core / dispatcher / muc / misc.py (no function)   20 0 0   100%
slidge / core / dispatcher / muc / owner.py MucOwnerMixin.__init__   3 0 0   100%
slidge / core / dispatcher / muc / owner.py MucOwnerMixin.on_muc_owner_query   13 0 0   100%
slidge / core / dispatcher / muc / owner.py MucOwnerMixin.on_muc_owner_set   23 1 0   96%
slidge / core / dispatcher / muc / owner.py (no function)   12 0 0   100%
slidge / core / dispatcher / muc / ping.py PingMixin.__init__   4 0 0   100%
slidge / core / dispatcher / muc / ping.py PingMixin.__handle_ping   17 10 0   41%
slidge / core / dispatcher / muc / ping.py PingMixin.__handle_muc_ping   3 0 0   100%
slidge / core / dispatcher / muc / ping.py (no function)   12 0 2   100%
slidge / core / dispatcher / presence.py _IsDirectedAtComponent.__init__   1 0 0   100%
slidge / core / dispatcher / presence.py PresenceHandlerMixin.__init__   7 0 0   100%
slidge / core / dispatcher / presence.py PresenceHandlerMixin.__get_contact   6 0 0   100%
slidge / core / dispatcher / presence.py PresenceHandlerMixin._handle_subscribe   8 3 0   62%
slidge / core / dispatcher / presence.py PresenceHandlerMixin._handle_unsubscribe   9 9 0   0%
slidge / core / dispatcher / presence.py PresenceHandlerMixin._handle_subscribed   6 2 0   67%
slidge / core / dispatcher / presence.py PresenceHandlerMixin._handle_unsubscribed   7 2 0   71%
slidge / core / dispatcher / presence.py PresenceHandlerMixin._handle_probe   11 0 0   100%
slidge / core / dispatcher / presence.py PresenceHandlerMixin.on_presence   34 1 0   97%
slidge / core / dispatcher / presence.py PresenceHandlerMixin._on_presence_to_component   15 6 0   60%
slidge / core / dispatcher / presence.py (no function)   29 0 0   100%
slidge / core / dispatcher / registration.py RegistrationMixin.__init__   8 0 0   100%
slidge / core / dispatcher / registration.py RegistrationMixin.get_user   4 0 0   100%
slidge / core / dispatcher / registration.py RegistrationMixin._user_get   3 0 0   100%
slidge / core / dispatcher / registration.py RegistrationMixin._user_validate   12 8 0   33%
slidge / core / dispatcher / registration.py RegistrationMixin._user_modify   8 8 0   0%
slidge / core / dispatcher / registration.py RegistrationMixin._on_user_register   5 1 0   80%
slidge / core / dispatcher / registration.py RegistrationMixin._on_user_unregister   1 0 0   100%
slidge / core / dispatcher / registration.py (no function)   18 0 2   100%
slidge / core / dispatcher / search.py SearchMixin.__init__   5 0 0   100%
slidge / core / dispatcher / search.py SearchMixin.search_get_form   9 9 0   0%
slidge / core / dispatcher / search.py SearchMixin._search_query   11 11 0   0%
slidge / core / dispatcher / search.py SearchMixin._handle_gateway_iq   19 2 0   89%
slidge / core / dispatcher / search.py (no function)   11 0 2   100%
slidge / core / dispatcher / session_dispatcher.py SessionDispatcher.__init__   2 0 0   100%
slidge / core / dispatcher / session_dispatcher.py SessionDispatcher.on_avatar_metadata_publish   6 2 0   67%
slidge / core / dispatcher / session_dispatcher.py SessionDispatcher.on_avatar_metadata_info   32 7 0   78%
slidge / core / dispatcher / session_dispatcher.py (no function)   22 0 2   100%
slidge / core / dispatcher / util.py DispatcherMixin.__init__   1 0 0   100%
slidge / core / dispatcher / util.py DispatcherMixin._get_session   11 4 0   64%
slidge / core / dispatcher / util.py DispatcherMixin._get_session_from_jid   8 0 0   100%
slidge / core / dispatcher / util.py DispatcherMixin.get_muc_from_stanza   6 0 0   100%
slidge / core / dispatcher / util.py DispatcherMixin._xmpp_msg_id_to_legacy   11 5 0   55%
slidge / core / dispatcher / util.py DispatcherMixin._get_session_recipient_thread   4 0 0   100%
slidge / core / dispatcher / util.py DispatcherMixin._xmpp_to_legacy_thread   15 1 0   93%
slidge / core / dispatcher / util.py _ignore   8 0 0   100%
slidge / core / dispatcher / util.py get_recipient   9 0 0   100%
slidge / core / dispatcher / util.py exceptions_to_xmpp_errors   2 0 0   100%
slidge / core / dispatcher / util.py exceptions_to_xmpp_errors.wrapped   14 1 0   93%
slidge / core / dispatcher / util.py (no function)   27 0 3   100%
slidge / core / dispatcher / vcard.py VCardMixin.__init__   5 0 0   100%
slidge / core / dispatcher / vcard.py VCardMixin.on_get_vcard   8 0 0   100%
slidge / core / dispatcher / vcard.py VCardMixin.__vcard_temp_handler   4 0 0   100%
slidge / core / dispatcher / vcard.py VCardMixin.__fetch_user_avatar   9 1 0   89%
slidge / core / dispatcher / vcard.py VCardMixin.__handle_get_vcard_temp   36 3 0   92%
slidge / core / dispatcher / vcard.py VCardMixin.__handle_set_vcard_temp   19 7 0   63%
slidge / core / dispatcher / vcard.py (no function)   20 0 0   100%
slidge / core / gateway.py BaseGateway.__init__   42 4 0   90%
slidge / core / gateway.py BaseGateway.__setup_legacy_module_subclasses   25 0 0   100%
slidge / core / gateway.py BaseGateway.kill_session   1 0 0   100%
slidge / core / gateway.py BaseGateway.__set_http   4 1 0   75%
slidge / core / gateway.py BaseGateway.__register_commands   12 1 0   92%
slidge / core / gateway.py BaseGateway.__exception_handler   10 10 0   0%
slidge / core / gateway.py BaseGateway.__register_slixmpp_events   9 0 0   100%
slidge / core / gateway.py BaseGateway.__register_slixmpp_api   4 0 0   100%
slidge / core / gateway.py BaseGateway.__register_slixmpp_api.with_session   2 0 0   100%
slidge / core / gateway.py BaseGateway.__register_slixmpp_api.with_session.wrapped   5 0 0   100%
slidge / core / gateway.py BaseGateway.jid   1 0 0   100%
slidge / core / gateway.py BaseGateway.__on_session_start   30 30 0   0%
slidge / core / gateway.py BaseGateway.__on_privileges_advertised   3 2 0   33%
slidge / core / gateway.py BaseGateway.__setup_attachments   10 10 0   0%
slidge / core / gateway.py BaseGateway.infer_real_domain   1 1 0   0%
slidge / core / gateway.py BaseGateway.__add_component_to_mds_whitelist   24 12 0   50%
slidge / core / gateway.py BaseGateway.login_wrap   35 8 0   77%
slidge / core / gateway.py BaseGateway.fetch_user_avatar   18 16 0   11%
slidge / core / gateway.py BaseGateway._send   5 0 0   100%
slidge / core / gateway.py BaseGateway.raise_if_not_allowed_jid   2 0 0   100%
slidge / core / gateway.py BaseGateway.send_raw   12 2 0   83%
slidge / core / gateway.py BaseGateway.get_session_from_jid   4 0 0   100%
slidge / core / gateway.py BaseGateway.exception   14 14 0   0%
slidge / core / gateway.py BaseGateway.make_registration_form   24 23 0   4%
slidge / core / gateway.py BaseGateway.user_prevalidate   4 4 0   0%
slidge / core / gateway.py BaseGateway.validate   0 0 1   100%
slidge / core / gateway.py BaseGateway.validate_two_factor_code   0 0 1   100%
slidge / core / gateway.py BaseGateway.get_qr_text   0 0 1   100%
slidge / core / gateway.py BaseGateway.confirm_qr   4 4 0   0%
slidge / core / gateway.py BaseGateway.unregister_user   3 3 0   0%
slidge / core / gateway.py BaseGateway.unregister   4 4 0   0%
slidge / core / gateway.py BaseGateway.input   1 1 0   0%
slidge / core / gateway.py BaseGateway.send_qr   4 4 0   0%
slidge / core / gateway.py BaseGateway.shutdown   7 7 0   0%
slidge / core / gateway.py (no function)   124 0 2   100%
slidge / core / mixins / __init__.py (no function)   9 0 0   100%
slidge / core / mixins / attachment.py AttachmentMixin.__is_component   1 0 0   100%
slidge / core / mixins / attachment.py AttachmentMixin.__upload   11 11 0   0%
slidge / core / mixins / attachment.py AttachmentMixin.__request_upload_slot   10 10 0   0%
slidge / core / mixins / attachment.py AttachmentMixin.__no_upload   35 11 0   69%
slidge / core / mixins / attachment.py AttachmentMixin.__valid_url   2 0 0   100%
slidge / core / mixins / attachment.py AttachmentMixin.__get_stored   8 1 0   88%
slidge / core / mixins / attachment.py AttachmentMixin.__get_url   51 15 0   71%
slidge / core / mixins / attachment.py AttachmentMixin.__set_sims   25 3 0   88%
slidge / core / mixins / attachment.py AttachmentMixin.__set_sfs   15 1 0   93%
slidge / core / mixins / attachment.py AttachmentMixin.__set_sfs_and_sims_without_download   28 2 0   93%
slidge / core / mixins / attachment.py AttachmentMixin.__send_url   16 0 0   100%
slidge / core / mixins / attachment.py AttachmentMixin.__get_base_message   12 0 0   100%
slidge / core / mixins / attachment.py AttachmentMixin.send_file   9 1 0   89%
slidge / core / mixins / attachment.py AttachmentMixin.__send_file   42 0 0   100%
slidge / core / mixins / attachment.py AttachmentMixin.__send_body   3 0 0   100%
slidge / core / mixins / attachment.py AttachmentMixin.send_files   16 0 0   100%
slidge / core / mixins / attachment.py AttachmentMixin.__store_multi   12 0 0   100%
slidge / core / mixins / attachment.py body_needs_msg_id   3 0 0   100%
slidge / core / mixins / attachment.py get_thumbhash   11 1 0   91%
slidge / core / mixins / attachment.py (no function)   51 0 0   100%
slidge / core / mixins / avatar.py AvatarMixin.__init__   2 0 0   100%
slidge / core / mixins / avatar.py AvatarMixin.avatar   11 0 0   100%
slidge / core / mixins / avatar.py AvatarMixin.avatar   5 0 0   100%
slidge / core / mixins / avatar.py AvatarMixin.__has_changed   13 1 0   92%
slidge / core / mixins / avatar.py AvatarMixin.set_avatar   29 11 0   62%
slidge / core / mixins / avatar.py AvatarMixin.get_cached_avatar   8 0 0   100%
slidge / core / mixins / avatar.py AvatarMixin.get_avatar   7 0 0   100%
slidge / core / mixins / avatar.py AvatarMixin._post_avatar_update   0 0 1   100%
slidge / core / mixins / avatar.py convert_avatar   7 0 0   100%
slidge / core / mixins / avatar.py (no function)   26 0 2   100%
slidge / core / mixins / base.py Base.user_jid   1 1 0   0%
slidge / core / mixins / base.py Base.user_pk   1 1 0   0%
slidge / core / mixins / base.py BaseSender._send   0 0 1   100%
slidge / core / mixins / base.py (no function)   18 0 3   100%
slidge / core / mixins / db.py DBMixin.merge   2 0 0   100%
slidge / core / mixins / db.py DBMixin.commit   8 0 0   100%
slidge / core / mixins / db.py UpdateInfoMixin.__init__   3 0 0   100%
slidge / core / mixins / db.py UpdateInfoMixin.__deserialize   2 1 0   50%
slidge / core / mixins / db.py UpdateInfoMixin.refresh   4 4 0   0%
slidge / core / mixins / db.py UpdateInfoMixin.serialize_extra_attributes   1 0 0   100%
slidge / core / mixins / db.py UpdateInfoMixin.deserialize_extra_attributes   1 1 0   0%
slidge / core / mixins / db.py UpdateInfoMixin.updating_info   27 21 0   22%
slidge / core / mixins / db.py UpdateInfoMixin.commit   4 0 0   100%
slidge / core / mixins / db.py UpdateInfoMixin.update_stored_attribute   7 0 0   100%
slidge / core / mixins / db.py (no function)   25 0 2   100%
slidge / core / mixins / disco.py BaseDiscoMixin._get_disco_name   3 1 0   67%
slidge / core / mixins / disco.py BaseDiscoMixin.features   1 1 0   0%
slidge / core / mixins / disco.py BaseDiscoMixin.extended_features   1 1 0   0%
slidge / core / mixins / disco.py BaseDiscoMixin.get_disco_info   8 0 0   100%
slidge / core / mixins / disco.py BaseDiscoMixin.get_caps_ver   4 0 0   100%
slidge / core / mixins / disco.py ChatterDiscoMixin.features   21 0 0   100%
slidge / core / mixins / disco.py ChatterDiscoMixin.extended_features   7 0 0   100%
slidge / core / mixins / disco.py ContactAccountDiscoMixin.get_disco_info   9 0 0   100%
slidge / core / mixins / disco.py (no function)   33 0 0   100%
slidge / core / mixins / message.py ChatStateMixin.__init__   2 0 0   100%
slidge / core / mixins / message.py ChatStateMixin._chat_state   6 6 0   0%
slidge / core / mixins / message.py ChatStateMixin.active   1 1 0   0%
slidge / core / mixins / message.py ChatStateMixin.composing   1 1 0   0%
slidge / core / mixins / message.py ChatStateMixin.paused   1 1 0   0%
slidge / core / mixins / message.py ChatStateMixin.inactive   1 1 0   0%
slidge / core / mixins / message.py ChatStateMixin.gone   1 1 0   0%
slidge / core / mixins / message.py MarkerMixin._make_marker   3 0 0   100%
slidge / core / mixins / message.py MarkerMixin.ack   1 1 0   0%
slidge / core / mixins / message.py MarkerMixin.received   5 0 0   100%
slidge / core / mixins / message.py MarkerMixin.displayed   10 0 0   100%
slidge / core / mixins / message.py MarkerMixin.__send_mds   16 1 0   94%
slidge / core / mixins / message.py CarbonMessageMixin._privileged_send   10 0 0   100%
slidge / core / mixins / message.py InviteMixin.invite_to   7 1 0   86%
slidge / core / mixins / message.py (no function)   42 0 2   100%
slidge / core / mixins / message_maker.py MessageMaker._recipient_pk   1 0 0   100%
slidge / core / mixins / message_maker.py MessageMaker._make_message   26 3 0   88%
slidge / core / mixins / message_maker.py MessageMaker._set_msg_id   9 0 0   100%
slidge / core / mixins / message_maker.py MessageMaker._legacy_to_xmpp   5 0 0   100%
slidge / core / mixins / message_maker.py MessageMaker._add_delay   9 0 0   100%
slidge / core / mixins / message_maker.py MessageMaker._add_reply_to   24 6 0   75%
slidge / core / mixins / message_maker.py MessageMaker._add_link_previews   8 0 0   100%
slidge / core / mixins / message_maker.py (no function)   26 0 2   100%
slidge / core / mixins / message_text.py TextMessageMixin.__default_hints   6 1 0   83%
slidge / core / mixins / message_text.py TextMessageMixin._replace_id   9 3 0   67%
slidge / core / mixins / message_text.py TextMessageMixin.send_text   12 2 0   83%
slidge / core / mixins / message_text.py TextMessageMixin.correct   1 0 0   100%
slidge / core / mixins / message_text.py TextMessageMixin.react   9 0 0   100%
slidge / core / mixins / message_text.py TextMessageMixin.__add_reaction_fallback   13 1 0   92%
slidge / core / mixins / message_text.py TextMessageMixin.retract   10 1 0   90%
slidge / core / mixins / message_text.py (no function)   17 0 0   100%
slidge / core / mixins / presence.py _update_last_seen_fallback   7 6 0   14%
slidge / core / mixins / presence.py _clear_last_seen_task   4 2 0   50%
slidge / core / mixins / presence.py PresenceMixin.__init__   2 0 0   100%
slidge / core / mixins / presence.py PresenceMixin.__is_contact   1 0 0   100%
slidge / core / mixins / presence.py PresenceMixin.__stored   14 3 0   79%
slidge / core / mixins / presence.py PresenceMixin.__contact_pk   2 0 0   100%
slidge / core / mixins / presence.py PresenceMixin._get_last_presence   4 0 0   100%
slidge / core / mixins / presence.py PresenceMixin._store_last_presence   5 0 0   100%
slidge / core / mixins / presence.py PresenceMixin._make_presence   34 3 0   91%
slidge / core / mixins / presence.py PresenceMixin.send_last_presence   7 0 0   100%
slidge / core / mixins / presence.py PresenceMixin.online   4 2 0   50%
slidge / core / mixins / presence.py PresenceMixin.away   4 2 0   50%
slidge / core / mixins / presence.py PresenceMixin.extended_away   4 2 0   50%
slidge / core / mixins / presence.py PresenceMixin.busy   4 2 0   50%
slidge / core / mixins / presence.py PresenceMixin.offline   4 2 0   50%
slidge / core / mixins / presence.py get_last_seen_fallback   4 0 0   100%
slidge / core / mixins / presence.py (no function)   37 0 2   100%
slidge / core / mixins / recipient.py ReactionRecipientMixin.restricted_emoji_extended_feature   11 0 0   100%
slidge / core / mixins / recipient.py ReactionRecipientMixin.available_emojis   1 0 0   100%
slidge / core / mixins / recipient.py ThreadRecipientMixin.create_thread   1 0 0   100%
slidge / core / mixins / recipient.py (no function)   10 0 2   100%
slidge / core / pubsub.py PepAvatar.__init__   3 0 0   100%
slidge / core / pubsub.py PepAvatar.data   5 0 0   100%
slidge / core / pubsub.py PepAvatar.set_avatar_from_cache   5 0 0   100%
slidge / core / pubsub.py PubSubComponent.__init__   2 0 0   100%
slidge / core / pubsub.py PubSubComponent.plugin_init   9 0 0   100%
slidge / core / pubsub.py PubSubComponent.__get_features   14 3 0   79%
slidge / core / pubsub.py PubSubComponent.on_presence_available   24 12 0   50%
slidge / core / pubsub.py PubSubComponent.broadcast_vcard_event   5 0 0   100%
slidge / core / pubsub.py PubSubComponent.__get_contact   2 0 0   100%
slidge / core / pubsub.py PubSubComponent._get_authorized_avatar   13 7 0   46%
slidge / core / pubsub.py PubSubComponent._get_authorized_nick   7 3 0   57%
slidge / core / pubsub.py PubSubComponent.__reply_with   8 3 0   62%
slidge / core / pubsub.py PubSubComponent._get_avatar_data   2 0 0   100%
slidge / core / pubsub.py PubSubComponent._get_avatar_metadata   2 2 0   0%
slidge / core / pubsub.py PubSubComponent._get_vcard   6 0 0   100%
slidge / core / pubsub.py PubSubComponent._reply_with_payload   8 0 0   100%
slidge / core / pubsub.py PubSubComponent.__broadcast   29 6 0   79%
slidge / core / pubsub.py PubSubComponent.broadcast_avatar   6 0 0   100%
slidge / core / pubsub.py PubSubComponent.broadcast_nick   4 0 0   100%
slidge / core / pubsub.py get_user_nick   4 0 0   100%
slidge / core / pubsub.py (no function)   49 0 3   100%
slidge / core / session.py BaseSession.__init__   12 0 0   100%
slidge / core / session.py BaseSession.user_jid   1 0 0   100%
slidge / core / session.py BaseSession.user_pk   1 0 0   100%
slidge / core / session.py BaseSession.http   1 0 0   100%
slidge / core / session.py BaseSession.__remove_task   2 0 0   100%
slidge / core / session.py BaseSession.create_task   5 0 0   100%
slidge / core / session.py BaseSession.cancel_all_tasks   2 1 0   50%
slidge / core / session.py BaseSession.login   0 0 1   100%
slidge / core / session.py BaseSession.logout   0 0 1   100%
slidge / core / session.py BaseSession.on_text   0 0 1   100%
slidge / core / session.py BaseSession.on_file   0 0 1   100%
slidge / core / session.py BaseSession.on_sticker   0 0 1   100%
slidge / core / session.py BaseSession.on_active   0 0 1   100%
slidge / core / session.py BaseSession.on_inactive   0 0 1   100%
slidge / core / session.py BaseSession.on_composing   0 0 1   100%
slidge / core / session.py BaseSession.on_paused   0 0 1   100%
slidge / core / session.py BaseSession.on_gone   0 0 1   100%
slidge / core / session.py BaseSession.on_displayed   0 0 1   100%
slidge / core / session.py BaseSession.on_correct   0 0 1   100%
slidge / core / session.py BaseSession.on_react   0 0 1   100%
slidge / core / session.py BaseSession.on_retract   0 0 1   100%
slidge / core / session.py BaseSession.on_presence   0 0 1   100%
slidge / core / session.py BaseSession.on_search   0 0 1   100%
slidge / core / session.py BaseSession.on_avatar   0 0 1   100%
slidge / core / session.py BaseSession.on_moderate   0 0 1   100%
slidge / core / session.py BaseSession.on_create_group   0 0 1   100%
slidge / core / session.py BaseSession.on_invitation   1 1 0   0%
slidge / core / session.py BaseSession.on_leave_group   0 0 1   100%
slidge / core / session.py BaseSession.on_preferences   0 0 1   100%
slidge / core / session.py BaseSession.__reset_ready   1 0 0   100%
slidge / core / session.py BaseSession.logged   1 0 0   100%
slidge / core / session.py BaseSession.logged   14 1 0   93%
slidge / core / session.py BaseSession.__repr__   1 1 0   0%
slidge / core / session.py BaseSession.shutdown   9 4 0   56%
slidge / core / session.py BaseSession.__logout   6 6 0   0%
slidge / core / session.py BaseSession.legacy_to_xmpp_msg_id   1 0 0   100%
slidge / core / session.py BaseSession.xmpp_to_legacy_msg_id   1 0 0   100%
slidge / core / session.py BaseSession.raise_if_not_logged   2 1 0   50%
slidge / core / session.py BaseSession._from_user_or_none   7 0 0   100%
slidge / core / session.py BaseSession.from_user   1 1 0   0%
slidge / core / session.py BaseSession.from_stanza   1 0 0   100%
slidge / core / session.py BaseSession.from_jid   6 0 0   100%
slidge / core / session.py BaseSession.kill_by_jid   20 6 0   70%
slidge / core / session.py BaseSession.__ack   2 2 0   0%
slidge / core / session.py BaseSession.send_gateway_status   2 0 0   100%
slidge / core / session.py BaseSession.send_cached_presence   4 2 0   50%
slidge / core / session.py BaseSession.send_gateway_message   1 0 0   100%
slidge / core / session.py BaseSession.send_gateway_invite   1 0 0   100%
slidge / core / session.py BaseSession.input   1 1 0   0%
slidge / core / session.py BaseSession.send_qr   1 1 0   0%
slidge / core / session.py BaseSession.get_contact_or_group_or_participant   16 1 0   94%
slidge / core / session.py BaseSession.__get_muc_or_participant   3 0 0   100%
slidge / core / session.py BaseSession.wait_for_ready   6 2 0   67%
slidge / core / session.py BaseSession.legacy_module_data_update   3 3 0   0%
slidge / core / session.py BaseSession.legacy_module_data_set   3 3 0   0%
slidge / core / session.py BaseSession.legacy_module_data_clear   3 3 0   0%
slidge / core / session.py (no function)   116 0 4   100%
slidge / db / __init__.py (no function)   3 0 0   100%
slidge / db / alembic / __init__.py (no function)   0 0 0   100%
slidge / db / alembic / env.py run_migrations_offline   4 4 0   0%
slidge / db / alembic / env.py run_migrations_online   8 8 0   0%
slidge / db / alembic / env.py (no function)   10 10 0   0%
slidge / db / avatar.py CachedAvatar.__init__   2 0 0   100%
slidge / db / avatar.py CachedAvatar.pk   1 1 0   0%
slidge / db / avatar.py CachedAvatar.hash   1 0 0   100%
slidge / db / avatar.py CachedAvatar.height   1 0 0   100%
slidge / db / avatar.py CachedAvatar.width   1 0 0   100%
slidge / db / avatar.py CachedAvatar.etag   1 1 0   0%
slidge / db / avatar.py CachedAvatar.last_modified   1 1 0   0%
slidge / db / avatar.py CachedAvatar.data   1 1 0   0%
slidge / db / avatar.py CachedAvatar.path   1 0 0   100%
slidge / db / avatar.py AvatarCache.__init__   2 0 0   100%
slidge / db / avatar.py AvatarCache.get   1 0 0   100%
slidge / db / avatar.py AvatarCache.set_dir   11 5 0   55%
slidge / db / avatar.py AvatarCache.close   1 1 0   0%
slidge / db / avatar.py AvatarCache.__get_http_headers   7 0 0   100%
slidge / db / avatar.py AvatarCache.__download   6 0 0   100%
slidge / db / avatar.py AvatarCache.__is_modified   2 0 0   100%
slidge / db / avatar.py AvatarCache.url_modified   6 1 0   83%
slidge / db / avatar.py AvatarCache._get_image   5 1 0   80%
slidge / db / avatar.py AvatarCache.convert_or_get   8 1 0   88%
slidge / db / avatar.py AvatarCache.__convert_url   14 1 0   93%
slidge / db / avatar.py AvatarCache.convert   33 2 0   94%
slidge / db / avatar.py (no function)   59 0 0   100%
slidge / db / meta.py JIDType.process_bind_param   3 1 0   67%
slidge / db / meta.py JIDType.process_result_value   3 0 0   100%
slidge / db / meta.py JSONEncodedDict.process_bind_param   3 0 0   100%
slidge / db / meta.py JSONEncodedDict.process_result_value   3 0 0   100%
slidge / db / meta.py get_engine   6 6 0   0%
slidge / db / meta.py (no function)   22 0 0   100%
slidge / db / models.py GatewayUser.__repr__   1 1 0   0%
slidge / db / models.py GatewayUser.get   1 1 0   0%
slidge / db / models.py GatewayUser.registration_form   2 2 0   0%
slidge / db / models.py Participant.__init__   3 0 0   100%
slidge / db / models.py (no function)   179 0 0   100%
slidge / db / store.py UpdatedMixin.__init__   1 0 0   100%
slidge / db / store.py UpdatedMixin.get_by_pk   2 0 0   100%
slidge / db / store.py UpdatedMixin.reset_updated   1 0 0   100%
slidge / db / store.py SlidgeStore.__init__   12 0 0   100%
slidge / db / store.py UserStore.__init__   1 0 0   100%
slidge / db / store.py UserStore.update   8 2 0   75%
slidge / db / store.py AvatarStore.__init__   1 0 0   100%
slidge / db / store.py IdMapStore._set   8 0 0   100%
slidge / db / store.py IdMapStore.set_thread   1 0 0   100%
slidge / db / store.py IdMapStore.set_msg   1 0 0   100%
slidge / db / store.py IdMapStore.set_origin   1 0 0   100%
slidge / db / store.py IdMapStore.get_origin   1 0 0   100%
slidge / db / store.py IdMapStore._get   1 0 0   100%
slidge / db / store.py IdMapStore.get_xmpp   1 0 0   100%
slidge / db / store.py IdMapStore._get_legacy   1 0 0   100%
slidge / db / store.py IdMapStore.get_legacy   3 0 0   100%
slidge / db / store.py IdMapStore.get_thread   1 0 0   100%
slidge / db / store.py IdMapStore.was_sent_by_user   2 0 0   100%
slidge / db / store.py ContactStore.__init__   3 0 0   100%
slidge / db / store.py ContactStore.add_to_sent   5 2 0   60%
slidge / db / store.py ContactStore.pop_sent_up_to   9 1 0   89%
slidge / db / store.py MAMStore.__init__   2 0 0   100%
slidge / db / store.py MAMStore.reset_source   1 0 0   100%
slidge / db / store.py MAMStore.nuke_older_than   1 1 0   0%
slidge / db / store.py MAMStore.add_message   15 0 0   100%
slidge / db / store.py MAMStore.get_messages   31 2 0   94%
slidge / db / store.py MAMStore.get_first   4 0 0   100%
slidge / db / store.py MAMStore.get_last   4 1 0   75%
slidge / db / store.py MAMStore.get_first_and_last   8 0 0   100%
slidge / db / store.py MAMStore.get_most_recent_with_legacy_id   4 0 0   100%
slidge / db / store.py MAMStore.get_least_recent_with_legacy_id_after   3 0 0   100%
slidge / db / store.py MAMStore.get_by_legacy_id   1 0 0   100%
slidge / db / store.py MAMStore.pop_unread_up_to   13 0 0   100%
slidge / db / store.py MAMStore.is_displayed_by_user   1 0 0   100%
slidge / db / store.py RoomStore.reset_updated   2 0 0   100%
slidge / db / store.py RoomStore.get_all   1 1 0   0%
slidge / db / store.py RoomStore.get   1 0 0   100%
slidge / db / store.py RoomStore.nick_available   1 0 0   100%
slidge / db / store.py ParticipantStore.__init__   1 0 0   100%
slidge / db / store.py ParticipantStore.get_all   4 1 0   75%
slidge / db / store.py BobStore.__init__   4 1 0   75%
slidge / db / store.py BobStore.__split_cid   1 0 0   100%
slidge / db / store.py BobStore.__get_condition   6 2 0   67%
slidge / db / store.py BobStore.get   5 0 0   100%
slidge / db / store.py BobStore.get_sticker   4 0 0   100%
slidge / db / store.py BobStore.get_bob   9 6 0   33%
slidge / db / store.py BobStore.del_bob   9 9 0   0%
slidge / db / store.py BobStore.set_bob   25 9 0   64%
slidge / db / store.py _check_avatar_orphans   11 0 0   100%
slidge / db / store.py (no function)   108 0 0   100%
slidge / group / __init__.py (no function)   5 0 0   100%
slidge / group / archive.py MessageArchive.__init__   3 0 0   100%
slidge / group / archive.py MessageArchive.add   19 1 0   95%
slidge / group / archive.py MessageArchive.__iter__   1 1 0   0%
slidge / group / archive.py MessageArchive.__to_bound   1 0 0   100%
slidge / group / archive.py MessageArchive.get_hole_bounds   15 0 0   100%
slidge / group / archive.py MessageArchive.get_all   3 0 0   100%
slidge / group / archive.py MessageArchive.send_metadata   9 0 0   100%
slidge / group / archive.py archivable   17 0 0   100%
slidge / group / archive.py (no function)   22 0 2   100%
slidge / group / bookmarks.py LegacyBookmarks.__init__   9 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.user_nick   1 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.user_nick   1 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.from_store   1 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.__iter__   4 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.__repr__   1 1 0   0%
slidge / group / bookmarks.py LegacyBookmarks.legacy_id_to_jid_local_part   1 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.jid_local_part_to_legacy_id   1 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.legacy_id_to_jid_username   1 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.jid_username_to_legacy_id   1 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.by_jid   12 2 0   83%
slidge / group / bookmarks.py LegacyBookmarks.by_jid_only_if_exists   5 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.by_legacy_id   1 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.by_legacy_id   0 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.by_legacy_id   0 0 0   100%
slidge / group / bookmarks.py LegacyBookmarks.by_legacy_id   13 4 0   69%
slidge / group / bookmarks.py LegacyBookmarks.__update_if_needed   13 4 0   69%
slidge / group / bookmarks.py LegacyBookmarks.fill   1 1 1   0%
slidge / group / bookmarks.py LegacyBookmarks.remove   6 0 0   100%
slidge / group / bookmarks.py (no function)   37 0 2   100%
slidge / group / participant.py strip_non_printable   3 3 0   0%
slidge / group / participant.py LegacyParticipant.__init__   14 1 0   93%
slidge / group / participant.py LegacyParticipant.is_user   5 3 0   40%
slidge / group / participant.py LegacyParticipant.is_user   4 4 0   0%
slidge / group / participant.py LegacyParticipant.jid   4 0 0   100%
slidge / group / participant.py LegacyParticipant.jid   1 1 0   0%
slidge / group / participant.py LegacyParticipant.__should_commit   7 2 0   71%
slidge / group / participant.py LegacyParticipant.commit   3 0 0   100%
slidge / group / participant.py LegacyParticipant.user_jid   1 0 0   100%
slidge / group / participant.py LegacyParticipant.__repr__   1 0 0   100%
slidge / group / participant.py LegacyParticipant._presence_sent   1 0 0   100%
slidge / group / participant.py LegacyParticipant._presence_sent   8 1 0   88%
slidge / group / participant.py LegacyParticipant.nickname_no_illegal   1 0 0   100%
slidge / group / participant.py LegacyParticipant.affiliation   1 0 0   100%
slidge / group / participant.py LegacyParticipant.affiliation   9 1 0   89%
slidge / group / participant.py LegacyParticipant.send_affiliation_change   8 1 0   88%
slidge / group / participant.py LegacyParticipant.role   1 0 0   100%
slidge / group / participant.py LegacyParticipant.role   9 1 0   89%
slidge / group / participant.py LegacyParticipant.hats   1 0 0   100%
slidge / group / participant.py LegacyParticipant.set_hats   9 3 0   67%
slidge / group / participant.py LegacyParticipant.__update_resource   10 3 0   70%
slidge / group / participant.py LegacyParticipant.send_configuration_change   5 1 0   80%
slidge / group / participant.py LegacyParticipant.nickname   1 0 0   100%
slidge / group / participant.py LegacyParticipant.nickname   25 4 0   84%
slidge / group / participant.py LegacyParticipant._make_presence   28 2 0   93%
slidge / group / participant.py LegacyParticipant.DISCO_NAME   1 0 0   100%
slidge / group / participant.py LegacyParticipant.__send_presence_if_needed   6 0 0   100%
slidge / group / participant.py LegacyParticipant.occupant_id   1 0 0   100%
slidge / group / participant.py LegacyParticipant._send   27 0 0   100%
slidge / group / participant.py LegacyParticipant.mucadmin_item   11 1 0   91%
slidge / group / participant.py LegacyParticipant.__add_nick_element   4 0 0   100%
slidge / group / participant.py LegacyParticipant._get_last_presence   4 0 0   100%
slidge / group / participant.py LegacyParticipant.send_initial_presence   17 1 0   94%
slidge / group / participant.py LegacyParticipant.leave   1 1 0   0%
slidge / group / participant.py LegacyParticipant.kick   1 0 0   100%
slidge / group / participant.py LegacyParticipant.ban   1 1 0   0%
slidge / group / participant.py LegacyParticipant.get_disco_info   3 1 0   67%
slidge / group / participant.py LegacyParticipant.moderate   10 0 0   100%
slidge / group / participant.py LegacyParticipant.set_room_subject   12 0 0   100%
slidge / group / participant.py LegacyParticipant.set_thread_subject   9 3 0   67%
slidge / group / participant.py escape_nickname   11 2 0   82%
slidge / group / participant.py (no function)   86 0 2   100%
slidge / group / room.py LegacyMUC.__init__   8 0 0   100%
slidge / group / room.py LegacyMUC.pop_unread_xmpp_ids_up_to   5 0 0   100%
slidge / group / room.py LegacyMUC.participant_from_store   3 0 0   100%
slidge / group / room.py LegacyMUC.jid   1 0 0   100%
slidge / group / room.py LegacyMUC.jid   1 1 0   0%
slidge / group / room.py LegacyMUC.legacy_id   1 0 0   100%
slidge / group / room.py LegacyMUC.orm   1 1 0   0%
slidge / group / room.py LegacyMUC.type   1 0 0   100%
slidge / group / room.py LegacyMUC.type   3 1 0   67%
slidge / group / room.py LegacyMUC.n_participants   1 0 0   100%
slidge / group / room.py LegacyMUC.n_participants   3 1 0   67%
slidge / group / room.py LegacyMUC.user_jid   1 0 0   100%
slidge / group / room.py LegacyMUC._set_logger   1 0 0   100%
slidge / group / room.py LegacyMUC.__repr__   1 0 0   100%
slidge / group / room.py LegacyMUC.subject_date   3 0 0   100%
slidge / group / room.py LegacyMUC.subject_date   3 0 0   100%
slidge / group / room.py LegacyMUC.__send_configuration_change   2 0 0   100%
slidge / group / room.py LegacyMUC.user_nick   1 0 0   100%
slidge / group / room.py LegacyMUC.user_nick   3 1 0   67%
slidge / group / room.py LegacyMUC.add_user_resource   5 0 0   100%
slidge / group / room.py LegacyMUC.get_user_resources   4 0 0   100%
slidge / group / room.py LegacyMUC.remove_user_resource   5 0 0   100%
slidge / group / room.py LegacyMUC.lock   2 0 0   100%
slidge / group / room.py LegacyMUC.get_lock   1 0 0   100%
slidge / group / room.py LegacyMUC.__fill_participants   25 1 0   96%
slidge / group / room.py LegacyMUC.get_participants   7 0 0   100%
slidge / group / room.py LegacyMUC.__fill_history   22 2 0   91%
slidge / group / room.py LegacyMUC._get_disco_name   1 0 0   100%
slidge / group / room.py LegacyMUC.name   1 0 0   100%
slidge / group / room.py LegacyMUC.name   5 1 0   80%
slidge / group / room.py LegacyMUC.description   1 0 0   100%
slidge / group / room.py LegacyMUC.description   4 1 0   75%
slidge / group / room.py LegacyMUC.on_presence_unavailable   11 11 0   0%
slidge / group / room.py LegacyMUC.update_info   0 0 1   100%
slidge / group / room.py LegacyMUC.backfill   0 0 1   100%
slidge / group / room.py LegacyMUC.fill_participants   1 0 0   100%
slidge / group / room.py LegacyMUC.subject   1 0 0   100%
slidge / group / room.py LegacyMUC.subject   4 1 0   75%
slidge / group / room.py LegacyMUC.is_anonymous   1 0 0   100%
slidge / group / room.py LegacyMUC.subject_setter   1 0 0   100%
slidge / group / room.py LegacyMUC.subject_setter   8 1 0   88%
slidge / group / room.py LegacyMUC.__get_subject_setter_participant   3 1 0   67%
slidge / group / room.py LegacyMUC.features   8 2 0   75%
slidge / group / room.py LegacyMUC.extended_features   33 5 0   85%
slidge / group / room.py LegacyMUC.shutdown   7 7 0   0%
slidge / group / room.py LegacyMUC.user_full_jids   4 0 0   100%
slidge / group / room.py LegacyMUC.user_muc_jid   2 0 0   100%
slidge / group / room.py LegacyMUC.echo   18 0 0   100%
slidge / group / room.py LegacyMUC._post_avatar_update   2 0 0   100%
slidge / group / room.py LegacyMUC._send_room_presence   9 0 0   100%
slidge / group / room.py LegacyMUC.join   48 7 0   85%
slidge / group / room.py LegacyMUC.get_user_participant   3 0 0   100%
slidge / group / room.py LegacyMUC.__store_participant   13 9 0   31%
slidge / group / room.py LegacyMUC.get_participant   1 0 0   100%
slidge / group / room.py LegacyMUC.get_participant   1 0 0   100%
slidge / group / room.py LegacyMUC.get_participant   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant   34 7 0   79%
slidge / group / room.py LegacyMUC.get_system_participant   1 0 0   100%
slidge / group / room.py LegacyMUC.get_participant_by_contact   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant_by_contact   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant_by_contact   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant_by_contact   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant_by_contact   24 3 0   88%
slidge / group / room.py LegacyMUC.get_participant_by_legacy_id   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant_by_legacy_id   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant_by_legacy_id   0 0 0   100%
slidge / group / room.py LegacyMUC.get_participant_by_legacy_id   5 2 0   60%
slidge / group / room.py LegacyMUC.remove_participant   16 2 0   88%
slidge / group / room.py LegacyMUC.rename_participant   8 2 0   75%
slidge / group / room.py LegacyMUC.__old_school_history   10 2 0   80%
slidge / group / room.py LegacyMUC.send_mam   54 2 0   96%
slidge / group / room.py LegacyMUC.send_mam_metadata   2 0 0   100%
slidge / group / room.py LegacyMUC.kick_resource   8 0 0   100%
slidge / group / room.py LegacyMUC.__get_bookmark   21 10 0   52%
slidge / group / room.py LegacyMUC.add_to_bookmarks   59 7 0   88%
slidge / group / room.py LegacyMUC.on_avatar   0 0 1   100%
slidge / group / room.py LegacyMUC.on_set_affiliation   0 0 1   100%
slidge / group / room.py LegacyMUC.on_kick   0 0 1   100%
slidge / group / room.py LegacyMUC.on_set_config   0 0 1   100%
slidge / group / room.py LegacyMUC.on_destroy_request   0 0 1   100%
slidge / group / room.py LegacyMUC.parse_mentions   17 1 0   94%
slidge / group / room.py LegacyMUC.on_set_subject   0 0 1   100%
slidge / group / room.py LegacyMUC.on_set_thread_subject   0 0 1   100%
slidge / group / room.py LegacyMUC.participants_filled   1 0 0   100%
slidge / group / room.py LegacyMUC.get_archived_messages   3 3 0   0%
slidge / group / room.py set_origin_id   3 0 0   100%
slidge / group / room.py int_or_none   4 0 0   100%
slidge / group / room.py equals_zero   3 1 0   67%
slidge / group / room.py str_to_datetime_or_none   6 2 0   67%
slidge / group / room.py bookmarks_form   8 0 0   100%
slidge / group / room.py (no function)   195 0 2   100%
slidge / main.py MainConfig.update_dynamic_defaults   7 2 0   71%
slidge / main.py get_configurator   8 0 0   100%
slidge / main.py get_parser   1 0 0   100%
slidge / main.py configure   7 7 0   0%
slidge / main.py handle_sigterm   2 2 0   0%
slidge / main.py main   58 58 0   0%
slidge / main.py _on_disconnected   2 2 0   0%
slidge / main.py _on_stream_error   1 1 0   0%
slidge / main.py (no function)   29 0 0   100%
slidge / migration.py get_alembic_cfg   3 3 0   0%
slidge / migration.py migrate   6 6 0   0%
slidge / migration.py main   6 6 0   0%
slidge / migration.py (no function)   12 1 0   92%
slidge / slixfix / __init__.py set_pinned   4 0 0   100%
slidge / slixfix / __init__.py session_bind   1 0 0   100%
slidge / slixfix / __init__.py reply   9 1 0   89%
slidge / slixfix / __init__.py send_privileged_iq   24 6 0   75%
slidge / slixfix / __init__.py (no function)   22 0 0   100%
slidge / slixfix / delivery_receipt.py DeliveryReceipt.__init__   1 0 0   100%
slidge / slixfix / delivery_receipt.py DeliveryReceipt.ack   4 0 0   100%
slidge / slixfix / delivery_receipt.py DeliveryReceipt.make_ack   6 0 0   100%
slidge / slixfix / delivery_receipt.py DeliveryReceipt.requires_receipt   1 0 0   100%
slidge / slixfix / delivery_receipt.py (no function)   8 0 2   100%
slidge / slixfix / link_preview / __init__.py (no function)   3 0 0   100%
slidge / slixfix / link_preview / link_preview.py LinkPreview.plugin_init   1 0 0   100%
slidge / slixfix / link_preview / link_preview.py (no function)   8 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview._set_og   2 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview._get_og   4 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.set_title   1 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.get_title   1 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.set_description   1 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.get_description   1 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.set_url   1 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.get_url   1 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.set_image   1 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.get_image   1 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.set_type   1 1 0   0%
slidge / slixfix / link_preview / stanza.py LinkPreview.get_type   1 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.set_site_name   1 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.get_site_name   1 0 0   100%
slidge / slixfix / link_preview / stanza.py LinkPreview.get_about   1 0 0   100%
slidge / slixfix / link_preview / stanza.py register_plugin   3 0 0   100%
slidge / slixfix / link_preview / stanza.py (no function)   39 0 0   100%
slidge / slixfix / roster.py YesSet.__contains__   2 2 0   0%
slidge / slixfix / roster.py RosterBackend.__init__   1 0 0   100%
slidge / slixfix / roster.py RosterBackend.entries   1 0 0   100%
slidge / slixfix / roster.py RosterBackend.save   1 0 0   100%
slidge / slixfix / roster.py RosterBackend.load   4 1 0   75%
slidge / slixfix / roster.py (no function)   13 0 2   100%
slidge / slixfix / xep_0077 / __init__.py (no function)   4 0 0   100%
slidge / slixfix / xep_0077 / register.py XEP_0077.plugin_init   15 1 0   93%
slidge / slixfix / xep_0077 / register.py XEP_0077.plugin_end   2 2 0   0%
slidge / slixfix / xep_0077 / register.py XEP_0077._user_get   1 1 0   0%
slidge / slixfix / xep_0077 / register.py XEP_0077._user_remove   1 1 0   0%
slidge / slixfix / xep_0077 / register.py XEP_0077._make_registration_form   14 14 0   0%
slidge / slixfix / xep_0077 / register.py XEP_0077._user_validate   1 1 0   0%
slidge / slixfix / xep_0077 / register.py XEP_0077._user_modify   1 1 0   0%
slidge / slixfix / xep_0077 / register.py XEP_0077._handle_registration   35 16 0   54%
slidge / slixfix / xep_0077 / register.py XEP_0077._send_form   2 1 0   50%
slidge / slixfix / xep_0077 / register.py XEP_0077._force_registration   2 1 0   50%
slidge / slixfix / xep_0077 / register.py XEP_0077._force_stream_feature   11 11 0   0%
slidge / slixfix / xep_0077 / register.py XEP_0077._handle_register_feature   7 7 0   0%
slidge / slixfix / xep_0077 / register.py XEP_0077.get_registration   6 6 0   0%
slidge / slixfix / xep_0077 / register.py XEP_0077.cancel_registration   6 6 0   0%
slidge / slixfix / xep_0077 / register.py XEP_0077.change_password   10 10 0   0%
slidge / slixfix / xep_0077 / register.py _send_error   8 8 0   0%
slidge / slixfix / xep_0077 / register.py (no function)   34 0 0   100%
slidge / slixfix / xep_0077 / stanza.py Register.get_registered   2 0 0   100%
slidge / slixfix / xep_0077 / stanza.py Register.get_remove   2 0 0   100%
slidge / slixfix / xep_0077 / stanza.py Register.set_registered   3 1 0   67%
slidge / slixfix / xep_0077 / stanza.py Register.set_remove   3 1 0   67%
slidge / slixfix / xep_0077 / stanza.py Register.add_field   1 0 0   100%
slidge / slixfix / xep_0077 / stanza.py Register.get_fields   5 1 0   80%
slidge / slixfix / xep_0077 / stanza.py Register.set_fields   3 1 0   67%
slidge / slixfix / xep_0077 / stanza.py Register.del_fields   2 0 0   100%
slidge / slixfix / xep_0077 / stanza.py (no function)   23 0 0   100%
slidge / slixfix / xep_0100 / __init__.py (no function)   3 0 0   100%
slidge / slixfix / xep_0100 / gateway.py XEP_0100.plugin_init   11 2 0   82%
slidge / slixfix / xep_0100 / gateway.py XEP_0100.plugin_end   5 5 0   0%
slidge / slixfix / xep_0100 / gateway.py XEP_0100.get_user   1 0 0   100%
slidge / slixfix / xep_0100 / gateway.py XEP_0100.on_user_unregister   3 0 0   100%
slidge / slixfix / xep_0100 / gateway.py XEP_0100.on_user_register   2 2 0   0%
slidge / slixfix / xep_0100 / gateway.py XEP_0100.add_component_to_roster   6 6 0   0%
slidge / slixfix / xep_0100 / gateway.py XEP_0100._set_roster   1 1 0   0%
slidge / slixfix / xep_0100 / gateway.py XEP_0100.on_presence_unsubscribe   4 4 0   0%
slidge / slixfix / xep_0100 / gateway.py XEP_0100.on_message   8 2 0   75%
slidge / slixfix / xep_0100 / gateway.py (no function)   22 0 0   100%
slidge / slixfix / xep_0100 / stanza.py (no function)   7 0 0   100%
slidge / slixfix / xep_0153 / __init__.py (no function)   3 0 0   100%
slidge / slixfix / xep_0153 / vcard_avatar.py XEP_0153.plugin_init   1 0 0   100%
slidge / slixfix / xep_0153 / vcard_avatar.py (no function)   10 0 0   100%
slidge / slixfix / xep_0292 / __init__.py (no function)   3 0 0   100%
slidge / slixfix / xep_0292 / vcard4.py VCard4Provider.plugin_init   1 0 0   100%
slidge / slixfix / xep_0292 / vcard4.py (no function)   8 0 0   100%
slidge / util / __init__.py (no function)   2 0 0   100%
slidge / util / archive_msg.py fix_namespaces   3 0 0   100%
slidge / util / archive_msg.py set_client_namespace   1 1 0   0%
slidge / util / archive_msg.py HistoryMessage.__init__   15 0 0   100%
slidge / util / archive_msg.py HistoryMessage.stanza_component_ns   3 0 0   100%
slidge / util / archive_msg.py HistoryMessage.forwarded   4 0 0   100%
slidge / util / archive_msg.py HistoryMessage.occupant_id   1 1 0   0%
slidge / util / archive_msg.py (no function)   17 0 0   100%
slidge / util / conf.py Option.__init__   3 0 0   100%
slidge / util / conf.py Option.doc   1 0 0   100%
slidge / util / conf.py Option.required   1 0 0   100%
slidge / util / conf.py Option.default   1 0 0   100%
slidge / util / conf.py Option.short   1 0 0   100%
slidge / util / conf.py Option.nargs   7 1 0   86%
slidge / util / conf.py Option.type   7 0 0   100%
slidge / util / conf.py Option.names   4 0 0   100%
slidge / util / conf.py Option.kwargs   13 0 0   100%
slidge / util / conf.py Option.name_to_env_var   1 0 0   100%
slidge / util / conf.py ConfigModule.__init__   6 0 0   100%
slidge / util / conf.py ConfigModule._list_options   1 0 0   100%
slidge / util / conf.py ConfigModule.set_conf   43 2 0   95%
slidge / util / conf.py ConfigModule.options   4 0 0   100%
slidge / util / conf.py ConfigModule.add_options_to_parser   6 1 0   83%
slidge / util / conf.py ConfigModule.update_dynamic_defaults   1 0 0   100%
slidge / util / conf.py _is_optional   5 0 0   100%
slidge / util / conf.py _argv_to_option_name   1 0 0   100%
slidge / util / conf.py (no function)   40 0 0   100%
slidge / util / jid_escaping.py unescape_node   13 6 0   54%
slidge / util / jid_escaping.py (no function)   6 0 0   100%
slidge / util / lock.py NamedLockMixin.__init__   2 0 0   100%
slidge / util / lock.py NamedLockMixin.lock   13 0 0   100%
slidge / util / lock.py NamedLockMixin.get_lock   1 0 0   100%
slidge / util / lock.py (no function)   10 0 0   100%
slidge / util / lottie.py from_url   6 6 0   0%
slidge / util / lottie.py from_path   4 4 0   0%
slidge / util / lottie.py sticker_path   3 3 0   0%
slidge / util / lottie.py _attachment   4 4 0   0%
slidge / util / lottie.py _download   13 13 0   0%
slidge / util / lottie.py convert   11 11 0   0%
slidge / util / lottie.py _main   4 4 0   0%
slidge / util / lottie.py (no function)   24 24 0   0%
slidge / util / test.py SlixTestPlus.setUp   2 0 0   100%
slidge / util / test.py SlixTestPlus.check   50 13 0   74%
slidge / util / test.py SlixTestPlus.next_sent   8 0 0   100%
slidge / util / test.py SlidgeTest.setUpClass   2 0 0   100%
slidge / util / test.py SlidgeTest.setUp   38 2 0   95%
slidge / util / test.py SlidgeTest.setUp.new_id   2 0 0   100%
slidge / util / test.py SlidgeTest.tearDown   4 0 0   100%
slidge / util / test.py SlidgeTest.setup_logged_session   26 2 0   92%
slidge / util / test.py SlidgeTest.tearDownClass   1 0 0   100%
slidge / util / test.py format_stanza   1 0 0   100%
slidge / util / test.py find_subclass   13 1 0   92%
slidge / util / test.py reset_subclasses   7 0 0   100%
slidge / util / test.py reset_commands   1 1 0   0%
slidge / util / test.py (no function)   53 3 0   94%
slidge / util / types.py LegacyAttachment.__post_init__   4 1 0   75%
slidge / util / types.py LegacyAttachment.format_for_user   12 6 0   50%
slidge / util / types.py LegacyAttachment.__str__   6 0 0   100%
slidge / util / types.py (no function)   97 0 6   100%
slidge / util / util.py fix_suffix   19 19 0   0%
slidge / util / util.py SubclassableOnce.__init__   7 0 0   100%
slidge / util / util.py SubclassableOnce.get_self_or_unique_subclass   4 0 0   100%
slidge / util / util.py SubclassableOnce.get_unique_subclass   4 0 0   100%
slidge / util / util.py SubclassableOnce.reset_subclass   5 0 0   100%
slidge / util / util.py is_valid_phone_number   6 1 0   83%
slidge / util / util.py strip_illegal_chars   1 0 0   100%
slidge / util / util.py addLoggingLevel   17 6 0   65%
slidge / util / util.py addLoggingLevel.logForLevel   2 1 0   50%
slidge / util / util.py addLoggingLevel.logToRoot   1 1 0   0%
slidge / util / util.py SlidgeLogger.trace   1 1 0   0%
slidge / util / util.py merge_resources   18 2 0   89%
slidge / util / util.py remove_emoji_variation_selector_16   1 0 0   100%
slidge / util / util.py deprecated   2 0 0   100%
slidge / util / util.py deprecated.wrapped   2 2 0   0%
slidge / util / util.py dict_to_named_tuple   1 0 0   100%
slidge / util / util.py replace_mentions   14 1 0   93%
slidge / util / util.py timeit   2 0 0   100%
slidge / util / util.py timeit.wrapped   4 0 0   100%
slidge / util / util.py strip_leading_emoji   6 1 0   83%
slidge / util / util.py noop_coro   1 0 0   100%
slidge / util / util.py add_quote_prefix   1 0 0   100%
slidge / util / util.py (no function)   51 2 0   96%
Total     8299 1576 111   81%

No items found using the specified filter.