Coverage report: 82%

Files Functions Classes

coverage.py v7.17.0, created at 2026-11-10 12:26 +0000

File function   statements missing excluded   coverage
slidge/__init__.py (no function)   16 2 0   88%
slidge/__main__.py (no function)   2 2 0   0%
slidge/command/__init__.py commands_from_module   1 1 0   0%
slidge/command/__init__.py (no function)   7 0 0   100%
slidge/command/adhoc.py AdhocProvider.__init__   6 0 0   100%
slidge/command/adhoc.py AdhocProvider.__get_command   26 10 0   62%
slidge/command/adhoc.py AdhocProvider.__wrap_initial_handler   9 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   24 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   9 2 0   78%
slidge/command/adhoc.py AdhocProvider.__wrap_confirmation   8 1 0   88%
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)   38 0 2   100%
slidge/command/admin.py ListUsers.run   7 7 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 2   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   26 6 0   77%
slidge/command/base.py FormField.__validate_list_multi   6 2 0   67%
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.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 1   94%
slidge/command/base.py _RecipientCommand.run   0 0 1   100%
slidge/command/base.py is_admin   1 0 0   100%
slidge/command/base.py (no function)   113 0 3   100%
slidge/command/categories.py (no function)   7 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   30 7 0   77%
slidge/command/chat_command.py ChatCommandProvider.__make_uri   1 1 0   0%
slidge/command/chat_command.py ChatCommandProvider._handle_result   45 22 0   51%
slidge/command/chat_command.py ChatCommandProvider.__handle_form   32 12 0   62%
slidge/command/chat_command.py ChatCommandProvider.__wrap_handler   12 9 0   25%
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 ChatCommandProvider._handle_recipient   25 2 0   92%
slidge/command/chat_command.py ChatCommandProvider._help_recipient   1 0 0   100%
slidge/command/chat_command.py percent_encode   1 1 0   0%
slidge/command/chat_command.py (no function)   40 0 2   100%
slidge/command/register.py Register.type   1 1 0   0%
slidge/command/register.py Register.fields   3 3 0   0%
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   25 25 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)   55 0 2   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   4 4 0   0%
slidge/command/user.py ListContacts.run   4 4 0   0%
slidge/command/user.py ListRooms.run   4 4 0   0%
slidge/command/user.py ListSpaces.run   3 3 0   0%
slidge/command/user.py ListRoomsInSpace.run   3 3 0   0%
slidge/command/user.py ListRoomsInSpace.list_rooms   10 10 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   13 13 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 InviteInRooms.run   5 5 0   0%
slidge/command/user.py _get_updated_spaces   3 0 0   100%
slidge/command/user.py (no function)   113 0 0   100%
slidge/contact/__init__.py (no function)   3 0 0   100%
slidge/contact/contact.py LegacyContact.__init__   6 0 0   100%
slidge/contact/contact.py LegacyContact.is_user   1 0 0   100%
slidge/contact/contact.py LegacyContact._recipient_pk   1 0 0   100%
slidge/contact/contact.py LegacyContact.name   1 0 0   100%
slidge/contact/contact.py LegacyContact.name   7 0 0   100%
slidge/contact/contact.py LegacyContact.is_friend   1 0 0   100%
slidge/contact/contact.py LegacyContact.is_friend   2 0 0   100%
slidge/contact/contact.py LegacyContact.full_name   1 1 0   0%
slidge/contact/contact.py LegacyContact.full_name   1 0 0   100%
slidge/contact/contact.py LegacyContact.birthday   1 1 0   0%
slidge/contact/contact.py LegacyContact.birthday   1 1 0   0%
slidge/contact/contact.py LegacyContact.bio   1 1 0   0%
slidge/contact/contact.py LegacyContact.bio   1 1 0   0%
slidge/contact/contact.py LegacyContact.url   1 1 0   0%
slidge/contact/contact.py LegacyContact.url   1 1 0   0%
slidge/contact/contact.py LegacyContact.email   1 1 0   0%
slidge/contact/contact.py LegacyContact.email   1 1 0   0%
slidge/contact/contact.py LegacyContact.country   1 1 0   0%
slidge/contact/contact.py LegacyContact.country   1 1 0   0%
slidge/contact/contact.py LegacyContact.locality   1 1 0   0%
slidge/contact/contact.py LegacyContact.locality   1 1 0   0%
slidge/contact/contact.py LegacyContact.pronouns   1 1 0   0%
slidge/contact/contact.py LegacyContact.pronouns   1 1 0   0%
slidge/contact/contact.py LegacyContact.phones   1 1 0   0%
slidge/contact/contact.py LegacyContact.phones   1 1 0   0%
slidge/contact/contact.py LegacyContact.client_type   1 0 0   100%
slidge/contact/contact.py LegacyContact.client_type   1 1 0   0%
slidge/contact/contact.py LegacyContact.on_message   0 0 1   100%
slidge/contact/contact.py LegacyContact.on_sticker   0 0 1   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.added_to_roster   1 0 0   100%
slidge/contact/contact.py LegacyContact.added_to_roster   1 0 0   100%
slidge/contact/contact.py LegacyContact.fill_extra_info   1 1 0   0%
slidge/contact/contact.py LegacyContact.participants   4 0 0   100%
slidge/contact/contact.py LegacyContact.DISCO_TYPE   1 0 0   100%
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.__propagate_to_participants   5 1 0   80%
slidge/contact/contact.py LegacyContact._send   27 0 0   100%
slidge/contact/contact.py LegacyContact._store_last_sent_msg   3 3 0   0%
slidge/contact/contact.py LegacyContact.pop_unread_xmpp_ids_up_to   5 0 0   100%
slidge/contact/contact.py LegacyContact._post_image_update   8 0 0   100%
slidge/contact/contact.py LegacyContact._broadcast_pubsub_items   9 2 0   78%
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   3 0 0   100%
slidge/contact/contact.py LegacyContact.on_friend_request   0 0 0   100%
slidge/contact/contact.py LegacyContact.on_friend_delete   0 0 0   100%
slidge/contact/contact.py LegacyContact.on_friend_accept   0 0 0   100%
slidge/contact/contact.py LegacyContact.unsubscribe   2 0 0   100%
slidge/contact/contact.py LegacyContact._on_delete   1 1 0   0%
slidge/contact/contact.py LegacyContact._make_presence   7 0 0   100%
slidge/contact/contact.py LegacyContact.backfill   0 0 0   100%
slidge/contact/contact.py is_markable   3 1 0   67%
slidge/contact/contact.py (no function)   140 0 5   100%
slidge/contact/roster.py LegacyRoster.__init_subclass__   2 0 0   100%
slidge/contact/roster.py LegacyRoster.__init__   4 0 0   100%
slidge/contact/roster.py LegacyRoster.known_contacts   3 1 0   67%
slidge/contact/roster.py LegacyRoster._create   3 0 0   100%
slidge/contact/roster.py LegacyRoster.__privileged   4 0 0   100%
slidge/contact/roster.py LegacyRoster._fill   24 15 0   38%
slidge/contact/roster.py LegacyRoster.__add_to_roster_fallback   1 1 0   0%
slidge/contact/roster.py LegacyRoster.__backfill   6 2 0   67%
slidge/contact/roster.py LegacyRoster._add_to_roster   4 2 0   50%
slidge/contact/roster.py LegacyRoster.__get_roster_item   2 0 0   100%
slidge/contact/roster.py LegacyRoster._sync   26 26 0   0%
slidge/contact/roster.py LegacyRoster.__roster_push   4 2 0   50%
slidge/contact/roster.py LegacyRoster.__roster_push_contact   8 3 0   62%
slidge/contact/roster.py LegacyRoster.__get_user_roster   6 6 0   0%
slidge/contact/roster.py LegacyRoster.__update_roster_item   9 9 0   0%
slidge/contact/roster.py LegacyRoster._batch_load   1 0 0   100%
slidge/contact/roster.py (no function)   42 0 2   100%
slidge/core/__init__.py (no function)   0 0 0   100%
slidge/core/attachment_upload.py AttachmentUploader.__init__   2 0 0   100%
slidge/core/attachment_upload.py AttachmentUploader.dedup_lock   5 0 0   100%
slidge/core/attachment_upload.py AttachmentUploader.get_stored   9 1 0   89%
slidge/core/attachment_upload.py AttachmentUploader.record   5 0 0   100%
slidge/core/attachment_upload.py AttachmentUploader.__valid_url   2 0 0   100%
slidge/core/attachment_upload.py AttachmentUploader.get_url   21 4 0   81%
slidge/core/attachment_upload.py AttachmentUploader.__upload   20 4 0   80%
slidge/core/attachment_upload.py AttachmentUploader.__request_upload_slot   17 0 0   100%
slidge/core/attachment_upload.py AttachmentUploader.__no_upload   57 15 0   74%
slidge/core/attachment_upload.py AttachmentUploader.upload_avatar   3 0 0   100%
slidge/core/attachment_upload.py AttachmentUploader.__no_upload_avatar   13 0 0   100%
slidge/core/attachment_upload.py AttachmentUploader.__upload_avatar   16 3 0   81%
slidge/core/attachment_upload.py _ensure_name   7 5 0   29%
slidge/core/attachment_upload.py _ensure_metadata   25 9 0   64%
slidge/core/attachment_upload.py _tmp_write   7 0 0   100%
slidge/core/attachment_upload.py _get_data   19 3 0   84%
slidge/core/attachment_upload.py _hash   5 0 0   100%
slidge/core/attachment_upload.py _hash_and_yield_async   4 0 0   100%
slidge/core/attachment_upload.py is_temp_path   7 1 0   86%
slidge/core/attachment_upload.py _iter_io   1 0 0   100%
slidge/core/attachment_upload.py (no function)   63 0 3   100%
slidge/core/collection.py _Store.by_legacy_id   0 0 0   100%
slidge/core/collection.py _ChildFactory._batch_set_attributes   1 0 0   100%
slidge/core/collection.py _ChildFactory.__call__   1 0 0   100%
slidge/core/collection.py _Child._stored   1 0 0   100%
slidge/core/collection.py _Child._on_delete   1 0 0   100%
slidge/core/collection.py BaseByLegacyID.__init__   9 0 0   100%
slidge/core/collection.py BaseByLegacyID._user   1 0 0   100%
slidge/core/collection.py BaseByLegacyID._orm   1 0 0   100%
slidge/core/collection.py BaseByLegacyID._from_store   1 0 0   100%
slidge/core/collection.py BaseByLegacyID.__repr__   1 1 0   0%
slidge/core/collection.py BaseByLegacyID.__iter__   3 0 0   100%
slidge/core/collection.py BaseByLegacyID._db_rows   2 0 0   100%
slidge/core/collection.py BaseByLegacyID.get   12 2 0   83%
slidge/core/collection.py BaseByLegacyID._create   4 1 0   75%
slidge/core/collection.py BaseByLegacyID._commit   8 0 0   100%
slidge/core/collection.py BaseByLegacyID.create   1 0 0   100%
slidge/core/collection.py BaseByLegacyID.get_or_create   2 0 0   100%
slidge/core/collection.py BaseByLegacyID.delete   4 4 0   0%
slidge/core/collection.py BaseByLegacyID._batch_fill   10 0 0   100%
slidge/core/collection.py BaseByLegacyID._preload   9 0 0   100%
slidge/core/collection.py BaseByLegacyID._batch_load   1 0 0   100%
slidge/core/collection.py BaseByLegacyID.fill   1 0 0   100%
slidge/core/collection.py BaseByLegacyID.is_filling   1 0 0   100%
slidge/core/collection.py BaseLocalPart.__init__   2 0 0   100%
slidge/core/collection.py BaseLocalPart._create   2 0 0   100%
slidge/core/collection.py BaseLocalPart.get_or_create_by_jid   8 1 0   88%
slidge/core/collection.py BaseLocalPart.get_by_jid   5 1 0   80%
slidge/core/collection.py (no function)   48 0 0   100%
slidge/core/config.py (no function)   110 0 0   100%
slidge/core/dispatcher/__init__.py (no function)   2 0 0   100%
slidge/core/dispatcher/caps.py CapsMixin.__init__   5 0 0   100%
slidge/core/dispatcher/caps.py CapsMixin._filter_add_caps   36 7 0   81%
slidge/core/dispatcher/caps.py CapsMixin.populate_cache   3 3 0   0%
slidge/core/dispatcher/caps.py CapsMixin.get_caps_ver   1 0 0   100%
slidge/core/dispatcher/caps.py (no function)   18 0 2   100%
slidge/core/dispatcher/disco.py DiscoMixin.__init__   3 0 0   100%
slidge/core/dispatcher/disco.py DiscoMixin.get_info   14 2 0   86%
slidge/core/dispatcher/disco.py DiscoMixin.__spaces_info   20 0 0   100%
slidge/core/dispatcher/disco.py DiscoMixin.get_items   12 3 0   75%
slidge/core/dispatcher/disco.py DiscoMixin.__list_rooms   14 3 0   79%
slidge/core/dispatcher/disco.py DiscoMixin.__spaces   3 0 0   100%
slidge/core/dispatcher/disco.py DiscoMixin.__rooms   2 0 0   100%
slidge/core/dispatcher/disco.py (no function)   24 0 2   100%
slidge/core/dispatcher/message/__init__.py (no function)   6 0 0   100%
slidge/core/dispatcher/message/chat_state.py ChatStateMixin.__init__   2 0 0   100%
slidge/core/dispatcher/message/chat_state.py ChatStateMixin.on_chatstate   5 0 0   100%
slidge/core/dispatcher/message/chat_state.py (no function)   9 0 2   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)   14 0 2   100%
slidge/core/dispatcher/message/message.py MessageContentMixin.__init__   5 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   28 1 0   96%
slidge/core/dispatcher/message/message.py MessageContentMixin.__get_xhtml_sticker_cid   19 5 0   74%
slidge/core/dispatcher/message/message.py MessageContentMixin.__get_replace   3 0 0   100%
slidge/core/dispatcher/message/message.py MessageContentMixin.__get_attachments   23 1 0   96%
slidge/core/dispatcher/message/message.py MessageContentMixin.__dispatch_msg   27 11 0   59%
slidge/core/dispatcher/message/message.py MessageContentMixin.on_message_retract   9 1 0   89%
slidge/core/dispatcher/message/message.py MessageContentMixin.on_reactions   35 7 0   80%
slidge/core/dispatcher/message/message.py MessageContentMixin.__ack   2 0 0   100%
slidge/core/dispatcher/message/message.py MessageContentMixin.__get_reply   35 7 0   80%
slidge/core/dispatcher/message/message.py MessageContentMixin.__dispatch_nonbob_sticker   21 1 0   95%
slidge/core/dispatcher/message/message.py MessageContentMixin.__dispatch_bob   13 1 0   92%
slidge/core/dispatcher/message/message.py redact_url   4 1 0   75%
slidge/core/dispatcher/message/message.py parse_link_previews   11 2 0   82%
slidge/core/dispatcher/message/message.py (no function)   38 0 2   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   15 2 0   87%
slidge/core/dispatcher/muc/admin.py (no function)   14 0 2   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   11 1 0   91%
slidge/core/dispatcher/muc/misc.py MucMiscMixin.on_groupchat_subject   4 1 0   75%
slidge/core/dispatcher/muc/misc.py MucMiscMixin.on_thread_subject   7 1 0   86%
slidge/core/dispatcher/muc/misc.py (no function)   21 0 2   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)   13 0 2   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   30 2 0   93%
slidge/core/dispatcher/presence.py PresenceHandlerMixin._on_presence_to_component   15 3 0   80%
slidge/core/dispatcher/presence.py (no function)   30 0 2   100%
slidge/core/dispatcher/pubsub.py PubSubMixin.__init__   4 0 0   100%
slidge/core/dispatcher/pubsub.py PubSubMixin.__get_items_any   6 0 0   100%
slidge/core/dispatcher/pubsub.py PubSubMixin.__get_items   26 2 0   92%
slidge/core/dispatcher/pubsub.py PubSubMixin.__item_to_room_legacy_id   2 0 0   100%
slidge/core/dispatcher/pubsub.py PubSubMixin.__is_not_local_jid   1 0 0   100%
slidge/core/dispatcher/pubsub.py PubSubMixin.__get_legacy_id   8 2 0   75%
slidge/core/dispatcher/pubsub.py PubSubMixin.__set_subscribe   9 0 0   100%
slidge/core/dispatcher/pubsub.py PubSubMixin.__set_unsubscribe   13 1 0   92%
slidge/core/dispatcher/pubsub.py PubSubMixin.__get_affiliations   16 1 0   94%
slidge/core/dispatcher/pubsub.py PubSubMixin.__make_affiliation   5 0 0   100%
slidge/core/dispatcher/pubsub.py PubSubMixin.__owner_get_affiliations   1 0 0   100%
slidge/core/dispatcher/pubsub.py PubSubMixin.__owner_get_subscriptions   10 1 0   90%
slidge/core/dispatcher/pubsub.py PubSubMixin.__get_subscriptions   15 0 0   100%
slidge/core/dispatcher/pubsub.py PubSubMixin.__make_subscription   6 0 0   100%
slidge/core/dispatcher/pubsub.py _is_not_space_image   1 0 0   100%
slidge/core/dispatcher/pubsub.py (no function)   32 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   19 15 0   21%
slidge/core/dispatcher/registration.py RegistrationMixin._user_modify   15 15 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 8 0   75%
slidge/core/dispatcher/session_dispatcher.py (no function)   23 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   5 0 0   100%
slidge/core/dispatcher/util.py DispatcherMixin._get_recipient_and_thread   4 0 0   100%
slidge/core/dispatcher/util.py DispatcherMixin._xmpp_to_legacy_thread   18 1 0   94%
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   21 0 0   100%
slidge/core/dispatcher/util.py (no function)   32 0 0   100%
slidge/core/dispatcher/vcard.py VCardMixin.__init__   5 0 0   100%
slidge/core/dispatcher/vcard.py VCardMixin.on_get_vcard   8 1 0   88%
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   26 3 0   88%
slidge/core/dispatcher/vcard.py VCardMixin.__handle_set_vcard_temp   19 7 0   63%
slidge/core/dispatcher/vcard.py (no function)   17 0 2   100%
slidge/core/gateway.py BaseGateway.__init_subclass__   2 0 0   100%
slidge/core/gateway.py BaseGateway.__init__   48 5 0   90%
slidge/core/gateway.py BaseGateway.__setup_session_cls   9 0 0   100%
slidge/core/gateway.py BaseGateway._uploader   1 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   38 15 0   61%
slidge/core/gateway.py BaseGateway.__exception_handler   12 12 0   0%
slidge/core/gateway.py BaseGateway.create_task   3 0 0   100%
slidge/core/gateway.py BaseGateway.__handle_task_result   7 3 0   57%
slidge/core/gateway.py BaseGateway.__register_slixmpp_events   7 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.jid   1 1 0   0%
slidge/core/gateway.py BaseGateway.__on_session_start   31 31 0   0%
slidge/core/gateway.py BaseGateway.__setup_attachments   20 20 0   0%
slidge/core/gateway.py BaseGateway.__expire_attachments_no_upload   3 3 0   0%
slidge/core/gateway.py BaseGateway.__rm_local_attachments   16 16 0   0%
slidge/core/gateway.py BaseGateway.__expire_attachments_upload   13 13 0   0%
slidge/core/gateway.py BaseGateway.__expire_attachments_in_store   3 3 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   38 8 0   79%
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   10 1 0   90%
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   8 8 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.input   1 0 0   100%
slidge/core/gateway.py BaseGateway.send_qr   10 10 0   0%
slidge/core/gateway.py BaseGateway.shutdown   7 7 0   0%
slidge/core/gateway.py BaseGateway.localpart_to_legacy_id   5 1 0   80%
slidge/core/gateway.py BaseGateway.legacy_id_to_localpart   7 2 0   71%
slidge/core/gateway.py _loop   3 3 0   0%
slidge/core/gateway.py _safe_rm_parent   5 5 0   0%
slidge/core/gateway.py (no function)   148 0 0   100%
slidge/core/mixins/__init__.py (no function)   9 0 0   100%
slidge/core/mixins/attachment.py AttachmentMixin.__send_url   22 2 0   91%
slidge/core/mixins/attachment.py AttachmentMixin.__get_base_message   14 1 0   93%
slidge/core/mixins/attachment.py AttachmentMixin.send_file   2 0 0   100%
slidge/core/mixins/attachment.py AttachmentMixin.__send_file   59 6 0   90%
slidge/core/mixins/attachment.py AttachmentMixin.__send_body   3 0 0   100%
slidge/core/mixins/attachment.py AttachmentMixin.send_files   14 0 0   100%
slidge/core/mixins/attachment.py AttachmentMixin.__store_multi   14 1 0   93%
slidge/core/mixins/attachment.py AttachmentMixin.__get_thumbhash   14 5 0   64%
slidge/core/mixins/attachment.py body_needs_msg_id   3 0 0   100%
slidge/core/mixins/attachment.py get_thumbhash   3 0 0   100%
slidge/core/mixins/attachment.py get_image   11 4 0   64%
slidge/core/mixins/attachment.py (no function)   38 3 0   92%
slidge/core/mixins/avatar.py ImageMixin._get_stored_image   2 0 0   100%
slidge/core/mixins/avatar.py ImageMixin.avatar   4 0 0   100%
slidge/core/mixins/avatar.py ImageMixin.avatar   1 0 0   100%
slidge/core/mixins/avatar.py ImageMixin._image_setter   10 2 0   80%
slidge/core/mixins/avatar.py ImageMixin._set_image_task_name   1 0 0   100%
slidge/core/mixins/avatar.py ImageMixin._set_avatar_task   1 0 0   100%
slidge/core/mixins/avatar.py ImageMixin.__detect_changes   13 0 0   100%
slidge/core/mixins/avatar.py ImageMixin._set_image   3 0 0   100%
slidge/core/mixins/avatar.py ImageMixin._process_image   37 11 0   70%
slidge/core/mixins/avatar.py ImageMixin.get_cached_avatar   4 0 0   100%
slidge/core/mixins/avatar.py ImageMixin.get_avatar   7 0 0   100%
slidge/core/mixins/avatar.py ImageMixin._post_image_update   0 0 1   100%
slidge/core/mixins/avatar.py convert_avatar   7 0 0   100%
slidge/core/mixins/avatar.py (no function)   29 0 2   100%
slidge/core/mixins/base.py Base.jid   1 0 0   100%
slidge/core/mixins/base.py Base._uploader   0 0 1   100%
slidge/core/mixins/base.py SessionBound._uploader   1 0 0   100%
slidge/core/mixins/base.py SessionBound.user_jid   1 0 0   100%
slidge/core/mixins/base.py SessionBound.user_pk   1 1 0   0%
slidge/core/mixins/base.py BaseSender._send   0 0 1   100%
slidge/core/mixins/base.py (no function)   24 0 2   100%
slidge/core/mixins/db.py UpdateInfoMixin.__init__   3 0 0   100%
slidge/core/mixins/db.py UpdateInfoMixin._batch_set_attributes   4 0 0   100%
slidge/core/mixins/db.py UpdateInfoMixin.batch_set_attributes   6 4 0   33%
slidge/core/mixins/db.py UpdateInfoMixin.__batch_set_attributes_context   8 0 0   100%
slidge/core/mixins/db.py UpdateInfoMixin._update_stored_attribute   18 0 0   100%
slidge/core/mixins/db.py UpdateInfoMixin.extra_attributes   1 0 0   100%
slidge/core/mixins/db.py UpdateInfoMixin._on_extra_attr_change   1 0 0   100%
slidge/core/mixins/db.py (no function)   23 0 2   100%
slidge/core/mixins/disco.py BaseDiscoMixin.DISCO_TYPE   0 0 1   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   14 1 0   93%
slidge/core/mixins/disco.py BaseDiscoMixin.get_caps_ver   4 0 0   100%
slidge/core/mixins/disco.py BaseDiscoMixin.get_disco_items   5 0 0   100%
slidge/core/mixins/disco.py ChatterDiscoMixin.DISCO_TYPE   1 0 0   100%
slidge/core/mixins/disco.py ChatterDiscoMixin.features   23 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)   38 0 2   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   1 0 0   100%
slidge/core/mixins/message.py CarbonMessageMixin._privileged_send   10 0 0   100%
slidge/core/mixins/message.py InviteMixin.invite_to   12 2 0   83%
slidge/core/mixins/message.py InviteMixin.__invite_when_ready   2 0 0   100%
slidge/core/mixins/message.py (no function)   34 0 0   100%
slidge/core/mixins/message_maker.py MessageMaker._recipient_pk   1 1 0   0%
slidge/core/mixins/message_maker.py MessageMaker._make_message   29 7 0   76%
slidge/core/mixins/message_maker.py MessageMaker._set_msg_id   8 0 0   100%
slidge/core/mixins/message_maker.py MessageMaker._legacy_to_xmpp   6 0 0   100%
slidge/core/mixins/message_maker.py MessageMaker._add_delay   9 1 0   89%
slidge/core/mixins/message_maker.py MessageMaker._add_reply_to   19 5 0   74%
slidge/core/mixins/message_maker.py MessageMaker._add_link_previews   14 1 0   93%
slidge/core/mixins/message_maker.py MessageMaker._process_link_preview_image   16 5 0   69%
slidge/core/mixins/message_maker.py (no function)   33 0 0   100%
slidge/core/mixins/message_text.py TextMessageMixin.__default_hints   7 2 0   71%
slidge/core/mixins/message_text.py TextMessageMixin._replace_id   9 3 0   67%
slidge/core/mixins/message_text.py TextMessageMixin.send_text   21 3 0   86%
slidge/core/mixins/message_text.py TextMessageMixin._store_sent_msg   1 0 0   100%
slidge/core/mixins/message_text.py TextMessageMixin.correct   1 0 0   100%
slidge/core/mixins/message_text.py TextMessageMixin.react   11 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   2 0 0   100%
slidge/core/mixins/presence.py PresenceMixin.online   1 0 0   100%
slidge/core/mixins/presence.py PresenceMixin.online   2 0 0   100%
slidge/core/mixins/presence.py PresenceMixin.pshow   1 0 0   100%
slidge/core/mixins/presence.py PresenceMixin.pshow   5 2 0   60%
slidge/core/mixins/presence.py PresenceMixin.pstatus   1 0 0   100%
slidge/core/mixins/presence.py PresenceMixin.pstatus   2 0 0   100%
slidge/core/mixins/presence.py PresenceMixin.last_seen   1 0 0   100%
slidge/core/mixins/presence.py PresenceMixin.last_seen   2 0 0   100%
slidge/core/mixins/presence.py PresenceMixin.set_presence   8 0 0   100%
slidge/core/mixins/presence.py PresenceMixin._send_presence   3 1 0   67%
slidge/core/mixins/presence.py PresenceMixin.__has_cache   2 0 0   100%
slidge/core/mixins/presence.py PresenceMixin.__stored   11 1 0   91%
slidge/core/mixins/presence.py PresenceMixin.__contact_pk   1 0 0   100%
slidge/core/mixins/presence.py PresenceMixin._make_presence   19 1 0   95%
slidge/core/mixins/presence.py PresenceMixin.send_last_presence   4 2 0   50%
slidge/core/mixins/presence.py PresenceMixin._make_last_presence   2 0 0   100%
slidge/core/mixins/presence.py get_last_seen_fallback   4 0 0   100%
slidge/core/mixins/presence.py (no function)   46 0 0   100%
slidge/core/mixins/recipient.py ReactionMixin.restricted_emoji_extended_feature   11 0 0   100%
slidge/core/mixins/recipient.py ReactionMixin.available_emojis   1 0 0   100%
slidge/core/mixins/recipient.py ThreadMixin.create_thread   1 0 0   100%
slidge/core/mixins/recipient.py MessageMixin.on_chat_state   0 0 1   100%
slidge/core/mixins/recipient.py MessageMixin.on_displayed   0 0 1   100%
slidge/core/mixins/recipient.py MessageMixin.on_react   0 0 1   100%
slidge/core/mixins/recipient.py MessageMixin.on_retract   0 0 1   100%
slidge/core/mixins/recipient.py RecipientMixin.jid   1 0 0   100%
slidge/core/mixins/recipient.py RecipientMixin.__eq__   1 0 0   100%
slidge/core/mixins/recipient.py (no function)   21 0 0   100%
slidge/core/pubsub.py PepAvatar.__init__   4 0 0   100%
slidge/core/pubsub.py PepAvatar.from_cache   4 4 0   0%
slidge/core/pubsub.py PepAvatar.data   5 0 0   100%
slidge/core/pubsub.py PepAvatar.set_avatar_from_cache   10 0 0   100%
slidge/core/pubsub.py PepAvatar.http_metadata   6 2 0   67%
slidge/core/pubsub.py PubSubComponent.__init__   3 0 0   100%
slidge/core/pubsub.py PubSubComponent.plugin_init   9 0 0   100%
slidge/core/pubsub.py PubSubComponent.__get_features   14 1 0   93%
slidge/core/pubsub.py PubSubComponent.on_get_online   5 0 0   100%
slidge/core/pubsub.py PubSubComponent._broadcast_component   6 3 0   50%
slidge/core/pubsub.py PubSubComponent._broadcast_contact   10 6 0   40%
slidge/core/pubsub.py PubSubComponent.broadcast_vcard_event   5 5 0   0%
slidge/core/pubsub.py PubSubComponent.__get_contact   2 0 0   100%
slidge/core/pubsub.py PubSubComponent._get_authorized_avatar   8 1 0   88%
slidge/core/pubsub.py PubSubComponent._get_authorized_nick   4 4 0   0%
slidge/core/pubsub.py PubSubComponent.__reply_with   8 1 0   88%
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 1 0   83%
slidge/core/pubsub.py PubSubComponent._reply_with_payload   8 0 0   100%
slidge/core/pubsub.py PubSubComponent.__broadcast   31 6 0   81%
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 PubSubComponent.broadcast_space   4 0 0   100%
slidge/core/pubsub.py PubSubComponent.set_space_items   26 0 0   100%
slidge/core/pubsub.py PubSubComponent.broadcast_space_metadata   16 0 0   100%
slidge/core/pubsub.py get_user_nick   4 0 0   100%
slidge/core/pubsub.py (no function)   69 0 2   100%
slidge/core/session.py BaseSession.__init_subclass__   2 0 0   100%
slidge/core/session.py BaseSession.__init__   18 0 0   100%
slidge/core/session.py BaseSession._on_legacy_module_data_change   2 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.__run_after   8 3 0   62%
slidge/core/session.py BaseSession.create_task   6 0 0   100%
slidge/core/session.py BaseSession.cancel_all_tasks   2 0 0   100%
slidge/core/session.py BaseSession.get_task   1 0 0   100%
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_unregister   2 2 0   0%
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_leave_space   0 0 1   100%
slidge/core/session.py BaseSession.on_preferences   0 0 1   100%
slidge/core/session.py BaseSession.preferences   1 0 0   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   12 1 0   92%
slidge/core/session.py BaseSession.__repr__   1 0 0   100%
slidge/core/session.py BaseSession.shutdown   8 3 0   62%
slidge/core/session.py BaseSession.__logout   6 6 0   0%
slidge/core/session.py BaseSession.raise_if_not_logged   2 1 0   50%
slidge/core/session.py BaseSession._from_user_or_none   8 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   7 0 0   100%
slidge/core/session.py BaseSession.kill_by_jid   20 5 0   75%
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   15 3 0   80%
slidge/core/session.py BaseSession.__get_muc_or_participant   4 0 0   100%
slidge/core/session.py BaseSession.wait_for_ready   6 2 0   67%
slidge/core/session.py BaseSession.legacy_module_data_update   2 2 0   0%
slidge/core/session.py BaseSession.legacy_module_data_set   3 3 0   0%
slidge/core/session.py BaseSession.legacy_module_data_clear   2 2 0   0%
slidge/core/session.py (no function)   98 0 0   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   10 4 0   60%
slidge/db/alembic/env.py (no function)   10 1 0   90%
slidge/db/alembic/versions/185cc8356e10_mam_do_not_store_full_stanza.py upgrade   32 13 0   59%
slidge/db/alembic/versions/185cc8356e10_mam_do_not_store_full_stanza.py downgrade   1 1 0   0%
slidge/db/alembic/versions/185cc8356e10_mam_do_not_store_full_stanza.py _parse   20 20 0   0%
slidge/db/alembic/versions/185cc8356e10_mam_do_not_store_full_stanza.py (no function)   34 0 0   100%
slidge/db/alembic/versions/1ac556b886c5_ditch_caps_ver_column.py upgrade   2 0 0   100%
slidge/db/alembic/versions/1ac556b886c5_ditch_caps_ver_column.py downgrade   1 1 0   0%
slidge/db/alembic/versions/1ac556b886c5_ditch_caps_ver_column.py (no function)   8 0 0   100%
slidge/db/alembic/versions/211345c68f0b_no_upload_attachments_in_message_subdir.py upgrade   11 4 0   64%
slidge/db/alembic/versions/211345c68f0b_no_upload_attachments_in_message_subdir.py downgrade   1 1 0   0%
slidge/db/alembic/versions/211345c68f0b_no_upload_attachments_in_message_subdir.py _get_new   2 0 0   100%
slidge/db/alembic/versions/211345c68f0b_no_upload_attachments_in_message_subdir.py _move   7 7 0   0%
slidge/db/alembic/versions/211345c68f0b_no_upload_attachments_in_message_subdir.py (no function)   17 0 0   100%
slidge/db/alembic/versions/259a1b71eadf_add_origin_group_id_table.py upgrade   3 0 0   100%
slidge/db/alembic/versions/259a1b71eadf_add_origin_group_id_table.py downgrade   3 3 0   0%
slidge/db/alembic/versions/259a1b71eadf_add_origin_group_id_table.py (no function)   9 0 0   100%
slidge/db/alembic/versions/2d5d506dcbbb_mam_more_compact_storage_of_reactions.py upgrade   29 16 0   45%
slidge/db/alembic/versions/2d5d506dcbbb_mam_more_compact_storage_of_reactions.py downgrade   1 1 0   0%
slidge/db/alembic/versions/2d5d506dcbbb_mam_more_compact_storage_of_reactions.py (no function)   16 0 0   100%
slidge/db/alembic/versions/3522b8332a41_ditch_group_thread_table.py upgrade   6 0 0   100%
slidge/db/alembic/versions/3522b8332a41_ditch_group_thread_table.py downgrade   1 1 0   0%
slidge/db/alembic/versions/3522b8332a41_ditch_group_thread_table.py (no function)   9 0 0   100%
slidge/db/alembic/versions/39ce1636571a_store_only_local_parts_of_jids.py upgrade   2 0 0   100%
slidge/db/alembic/versions/39ce1636571a_store_only_local_parts_of_jids.py _update   12 1 0   92%
slidge/db/alembic/versions/39ce1636571a_store_only_local_parts_of_jids.py downgrade   1 1 0   0%
slidge/db/alembic/versions/39ce1636571a_store_only_local_parts_of_jids.py (no function)   10 0 0   100%
slidge/db/alembic/versions/3ee151e8243c_mam_store_sender_nicks_instead_of_full_.py upgrade   13 6 0   54%
slidge/db/alembic/versions/3ee151e8243c_mam_store_sender_nicks_instead_of_full_.py downgrade   1 1 0   0%
slidge/db/alembic/versions/3ee151e8243c_mam_store_sender_nicks_instead_of_full_.py (no function)   12 0 0   100%
slidge/db/alembic/versions/431bec3fe41c_0_6_0_migrations.py upgrade   18 0 0   100%
slidge/db/alembic/versions/431bec3fe41c_0_6_0_migrations.py downgrade   1 1 0   0%
slidge/db/alembic/versions/431bec3fe41c_0_6_0_migrations.py (no function)   9 0 0   100%
slidge/db/alembic/versions/4681a639c030_avatars_served_via_http.py upgrade   7 0 0   100%
slidge/db/alembic/versions/4681a639c030_avatars_served_via_http.py downgrade   7 7 0   0%
slidge/db/alembic/versions/4681a639c030_avatars_served_via_http.py (no function)   9 0 0   100%
slidge/db/alembic/versions/4f24f40edb4e_participant_dedup.py upgrade   14 0 0   100%
slidge/db/alembic/versions/4f24f40edb4e_participant_dedup.py downgrade   1 1 0   0%
slidge/db/alembic/versions/4f24f40edb4e_participant_dedup.py (no function)   9 0 0   100%
slidge/db/alembic/versions/5dd33faac9e0_space_creator_pk_creator_id.py upgrade   8 0 0   100%
slidge/db/alembic/versions/5dd33faac9e0_space_creator_pk_creator_id.py downgrade   1 1 0   0%
slidge/db/alembic/versions/5dd33faac9e0_space_creator_pk_creator_id.py (no function)   10 0 0   100%
slidge/db/alembic/versions/7d21996a1605_add_mam_timestamp_index.py upgrade   2 0 0   100%
slidge/db/alembic/versions/7d21996a1605_add_mam_timestamp_index.py downgrade   1 1 0   0%
slidge/db/alembic/versions/7d21996a1605_add_mam_timestamp_index.py (no function)   8 0 0   100%
slidge/db/alembic/versions/805fdc0bf984_add_unique_constraint_for_occupant_id.py upgrade   2 0 0   100%
slidge/db/alembic/versions/805fdc0bf984_add_unique_constraint_for_occupant_id.py downgrade   2 2 0   0%
slidge/db/alembic/versions/805fdc0bf984_add_unique_constraint_for_occupant_id.py (no function)   8 0 0   100%
slidge/db/alembic/versions/80e3206c67f4_space_avatars.py upgrade   5 0 0   100%
slidge/db/alembic/versions/80e3206c67f4_space_avatars.py downgrade   1 1 0   0%
slidge/db/alembic/versions/80e3206c67f4_space_avatars.py (no function)   9 0 0   100%
slidge/db/alembic/versions/83bd572c8161_remove_useless_group_msg_table.py upgrade   6 0 0   100%
slidge/db/alembic/versions/83bd572c8161_remove_useless_group_msg_table.py downgrade   1 1 0   0%
slidge/db/alembic/versions/83bd572c8161_remove_useless_group_msg_table.py (no function)   8 0 0   100%
slidge/db/alembic/versions/85d6e2a9ee7f_make_avatar_hash_mandatory.py upgrade   5 0 0   100%
slidge/db/alembic/versions/85d6e2a9ee7f_make_avatar_hash_mandatory.py downgrade   1 1 0   0%
slidge/db/alembic/versions/85d6e2a9ee7f_make_avatar_hash_mandatory.py (no function)   9 0 0   100%
slidge/db/alembic/versions/86d980dbb426_add_displayed_by_user_column_to_.py upgrade   4 0 0   100%
slidge/db/alembic/versions/86d980dbb426_add_displayed_by_user_column_to_.py downgrade   2 2 0   0%
slidge/db/alembic/versions/86d980dbb426_add_displayed_by_user_column_to_.py (no function)   9 0 0   100%
slidge/db/alembic/versions/9c5a127d4600_attachments_in_several_columns.py upgrade   41 19 0   54%
slidge/db/alembic/versions/9c5a127d4600_attachments_in_several_columns.py _register_stanza_plugins   5 0 0   100%
slidge/db/alembic/versions/9c5a127d4600_attachments_in_several_columns.py downgrade   1 1 0   0%
slidge/db/alembic/versions/9c5a127d4600_attachments_in_several_columns.py (no function)   17 0 0   100%
slidge/db/alembic/versions/abea9b63fa34_add_unique_constraint_on_avatar_url.py upgrade   3 0 0   100%
slidge/db/alembic/versions/abea9b63fa34_add_unique_constraint_on_avatar_url.py downgrade   2 2 0   0%
slidge/db/alembic/versions/abea9b63fa34_add_unique_constraint_on_avatar_url.py (no function)   8 0 0   100%
slidge/db/alembic/versions/b579e8ce8a69_add_last_msg_info_for_contacts.py upgrade   3 0 0   100%
slidge/db/alembic/versions/b579e8ce8a69_add_last_msg_info_for_contacts.py downgrade   1 1 0   0%
slidge/db/alembic/versions/b579e8ce8a69_add_last_msg_info_for_contacts.py (no function)   9 0 0   100%
slidge/db/alembic/versions/b597d84d17dc_more_muc_room_renaming.py upgrade   4 1 0   75%
slidge/db/alembic/versions/b597d84d17dc_more_muc_room_renaming.py downgrade   1 1 0   0%
slidge/db/alembic/versions/b597d84d17dc_more_muc_room_renaming.py (no function)   9 0 0   100%
slidge/db/alembic/versions/b61d4c9d63ef_ditch_participant_presence_sent.py upgrade   2 0 0   100%
slidge/db/alembic/versions/b61d4c9d63ef_ditch_participant_presence_sent.py downgrade   1 1 0   0%
slidge/db/alembic/versions/b61d4c9d63ef_ditch_participant_presence_sent.py (no function)   8 0 0   100%
slidge/db/alembic/versions/b7a06a86416a_add_occupant_id_column_to_participant.py upgrade   3 0 0   100%
slidge/db/alembic/versions/b7a06a86416a_add_occupant_id_column_to_participant.py downgrade   2 2 0   0%
slidge/db/alembic/versions/b7a06a86416a_add_occupant_id_column_to_participant.py (no function)   9 0 0   100%
slidge/db/alembic/versions/bdf1c8b85ea3_spaces.py upgrade   5 0 0   100%
slidge/db/alembic/versions/bdf1c8b85ea3_spaces.py downgrade   5 5 0   0%
slidge/db/alembic/versions/bdf1c8b85ea3_spaces.py (no function)   9 0 0   100%
slidge/db/alembic/versions/c594846b3e03_remove_useless_group_origin_msg_table.py upgrade   6 0 0   100%
slidge/db/alembic/versions/c594846b3e03_remove_useless_group_origin_msg_table.py downgrade   1 1 0   0%
slidge/db/alembic/versions/c594846b3e03_remove_useless_group_origin_msg_table.py (no function)   9 0 0   100%
slidge/db/alembic/versions/cce024f6445b_make_avatar_hash_nullable.py upgrade   2 0 0   100%
slidge/db/alembic/versions/cce024f6445b_make_avatar_hash_nullable.py downgrade   1 1 0   0%
slidge/db/alembic/versions/cce024f6445b_make_avatar_hash_nullable.py (no function)   9 0 0   100%
slidge/db/alembic/versions/cef02a8b1451_initial_schema.py upgrade   24 0 0   100%
slidge/db/alembic/versions/cef02a8b1451_initial_schema.py downgrade   24 24 0   0%
slidge/db/alembic/versions/cef02a8b1451_initial_schema.py (no function)   10 0 0   100%
slidge/db/alembic/versions/cffa7d2eb078_remove_useless_rows_of_group_msg_table.py upgrade   1 0 0   100%
slidge/db/alembic/versions/cffa7d2eb078_remove_useless_rows_of_group_msg_table.py downgrade   1 1 0   0%
slidge/db/alembic/versions/cffa7d2eb078_remove_useless_rows_of_group_msg_table.py (no function)   8 0 0   100%
slidge/db/alembic/versions/e092cc1125b1_mam_more_compact_storage_of_displayed_.py upgrade   28 11 0   61%
slidge/db/alembic/versions/e092cc1125b1_mam_more_compact_storage_of_displayed_.py downgrade   1 1 0   0%
slidge/db/alembic/versions/e092cc1125b1_mam_more_compact_storage_of_displayed_.py (no function)   14 0 0   100%
slidge/db/alembic/versions/e365e04e9ac3_fix_missing_existing_constraints_in_.py upgrade   5 0 0   100%
slidge/db/alembic/versions/e365e04e9ac3_fix_missing_existing_constraints_in_.py fix_constraints   15 8 0   47%
slidge/db/alembic/versions/e365e04e9ac3_fix_missing_existing_constraints_in_.py downgrade   1 1 0   0%
slidge/db/alembic/versions/e365e04e9ac3_fix_missing_existing_constraints_in_.py (no function)   11 0 0   100%
slidge/db/alembic/versions/f213312053f2_split_contact_vcard_into_several_columns.py upgrade   13 0 0   100%
slidge/db/alembic/versions/f213312053f2_split_contact_vcard_into_several_columns.py downgrade   1 1 0   0%
slidge/db/alembic/versions/f213312053f2_split_contact_vcard_into_several_columns.py (no function)   9 0 0   100%
slidge/db/alembic/versions/f7ba6aad4aef_remove_space_updated_column.py upgrade   2 0 0   100%
slidge/db/alembic/versions/f7ba6aad4aef_remove_space_updated_column.py downgrade   1 1 0   0%
slidge/db/alembic/versions/f7ba6aad4aef_remove_space_updated_column.py (no function)   8 0 0   100%
slidge/db/alembic/versions/f91200fe83e4_mam_body_and_thread_columns.py upgrade   36 23 0   36%
slidge/db/alembic/versions/f91200fe83e4_mam_body_and_thread_columns.py downgrade   1 1 0   0%
slidge/db/alembic/versions/f91200fe83e4_mam_body_and_thread_columns.py (no function)   15 0 0   100%
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   2 0 0   100%
slidge/db/avatar.py AvatarDownloadError.__init__   6 0 0   100%
slidge/db/avatar.py AvatarCache.__init__   3 0 0   100%
slidge/db/avatar.py AvatarCache.from_stored   1 0 0   100%
slidge/db/avatar.py AvatarCache.set_dir   14 7 0   50%
slidge/db/avatar.py AvatarCache.close   1 0 0   100%
slidge/db/avatar.py AvatarCache.__get_http_headers   7 0 0   100%
slidge/db/avatar.py AvatarCache._fetch   8 0 0   100%
slidge/db/avatar.py AvatarCache.__download_if_modified   7 0 0   100%
slidge/db/avatar.py AvatarCache.__is_modified   11 4 0   64%
slidge/db/avatar.py AvatarCache.url_modified   6 1 0   83%
slidge/db/avatar.py AvatarCache.__open_image   5 1 0   80%
slidge/db/avatar.py AvatarCache.get   8 1 0   88%
slidge/db/avatar.py AvatarCache.__fetch_url_if_not_cached   14 1 0   93%
slidge/db/avatar.py AvatarCache.__process   37 3 0   92%
slidge/db/avatar.py AvatarCache.__upload   6 1 0   83%
slidge/db/avatar.py _get_png_bytes   5 1 0   80%
slidge/db/avatar.py _get_any_bytes   6 1 0   83%
slidge/db/avatar.py (no function)   69 0 0   100%
slidge/db/meta.py JIDType.process_bind_param   3 1 0   67%
slidge/db/meta.py JIDType.process_result_value   3 1 0   67%
slidge/db/meta.py _encode_key   3 0 0   100%
slidge/db/meta.py _decode_key   3 0 0   100%
slidge/db/meta.py _encode   5 0 0   100%
slidge/db/meta.py _decode   5 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 modified_attributes   9 9 0   0%
slidge/db/meta.py (no function)   30 0 0   100%
slidge/db/models.py _JidMixin.jid   1 0 0   100%
slidge/db/models.py _EnsureLoadedMixin.ensure_loaded   17 2 0   88%
slidge/db/models.py _EnsureLoadedMixin.ensure_relation   16 0 0   100%
slidge/db/models.py _EnsureLoadedMixin._is_unloaded   1 0 0   100%
slidge/db/models.py _EnsureLoadedMixin._is_loaded   1 0 0   100%
slidge/db/models.py _EnsureLoadedMixin._set_committed_value   1 0 0   100%
slidge/db/models.py _group_keys   4 1 0   75%
slidge/db/models.py GatewayUser.__repr__   1 0 0   100%
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 Avatar.set_http_metadata   8 0 0   100%
slidge/db/models.py Avatar.to_meta   1 0 0   100%
slidge/db/models.py _BatchUpdateMixin._normalize_stored_updates   1 0 0   100%
slidge/db/models.py Contact.vcard   24 10 0   58%
slidge/db/models.py Contact.load_participants   8 0 0   100%
slidge/db/models.py Contact.get_participants_for_avatar_propagation   2 0 0   100%
slidge/db/models.py Room.load_participants   18 0 0   100%
slidge/db/models.py Room.update_participant   3 1 0   67%
slidge/db/models.py Room.delete_participant   3 0 0   100%
slidge/db/models.py ArchivedMessage.stanza   34 4 0   88%
slidge/db/models.py ArchivedMessage.forwarded   4 0 0   100%
slidge/db/models.py Attachment._hash   6 1 0   83%
slidge/db/models.py Attachment._thumbnail   8 1 0   88%
slidge/db/models.py Attachment.sims   24 0 0   100%
slidge/db/models.py Attachment.sfs   27 0 0   100%
slidge/db/models.py Attachment.local_path   5 0 0   100%
slidge/db/models.py Participant.resource   1 0 0   100%
slidge/db/models.py Participant.resource   1 0 0   100%
slidge/db/models.py Participant.affiliation   1 0 0   100%
slidge/db/models.py Participant.affiliation   1 0 0   100%
slidge/db/models.py Participant.role   1 0 0   100%
slidge/db/models.py Participant.role   1 0 0   100%
slidge/db/models.py Participant._normalize_stored_updates   8 1 0   88%
slidge/db/models.py Space.load_rooms   6 0 0   100%
slidge/db/models.py (no function)   288 0 0   100%
slidge/db/store.py UpdatedMixin.get_by_pk   2 0 0   100%
slidge/db/store.py UpdatedMixin.get_for   2 2 0   0%
slidge/db/store.py UpdatedMixin.by_legacy_id   1 0 0   100%
slidge/db/store.py SlidgeStore.__init__   14 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   5 1 0   80%
slidge/db/store.py IdMapStore.set_msg   3 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   3 0 0   100%
slidge/db/store.py IdMapStore._get_legacy   1 0 0   100%
slidge/db/store.py IdMapStore.get_legacy   4 0 0   100%
slidge/db/store.py IdMapStore.get_thread   7 2 0   71%
slidge/db/store.py IdMapStore.was_sent_by_user   1 0 0   100%
slidge/db/store.py ContactStore.__init__   1 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   68 2 0   97%
slidge/db/store.py MAMStore.get_messages   28 2 0   93%
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   1 0 0   100%
slidge/db/store.py MAMStore.get_by_legacy_id   1 1 0   0%
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 MAMStore.get_body   1 0 0   100%
slidge/db/store.py RoomStore.__init__   1 0 0   100%
slidge/db/store.py RoomStore.get_all   1 1 0   0%
slidge/db/store.py RoomStore.get   1 1 0   0%
slidge/db/store.py RoomStore.resource_available   4 0 0   100%
slidge/db/store.py ParticipantStore.get_all   4 1 0   75%
slidge/db/store.py ParticipantStore.get_user_participants   3 2 0   33%
slidge/db/store.py ParticipantStore.delete   1 0 0   100%
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.__sticker_from_bob   1 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   1 0 0   100%
slidge/db/store.py BobStore.set_sticker   29 8 0   72%
slidge/db/store.py SpaceStore.add_or_get   6 6 0   0%
slidge/db/store.py SpaceStore.get_all   1 0 0   100%
slidge/db/store.py SpaceStore.get_by_legacy_id   8 8 0   0%
slidge/db/store.py SpaceStore.get_rooms   4 4 0   0%
slidge/db/store.py SpaceStore.exists   1 0 0   100%
slidge/db/store.py AttachmentStore.get_all   1 1 0   0%
slidge/db/store.py AttachmentStore.remove   1 1 0   0%
slidge/db/store.py _check_avatar_orphans   11 0 0   100%
slidge/db/store.py _serialize_children   1 0 0   100%
slidge/db/store.py (no function)   143 0 0   100%
slidge/db/track.py _notify_after   2 0 0   100%
slidge/db/track.py _notify_after.wrapper   3 0 0   100%
slidge/db/track.py _notify_on   2 0 0   100%
slidge/db/track.py _notify_on.decorator   3 0 0   100%
slidge/db/track.py _snapshot   5 0 0   100%
slidge/db/track.py TrackedDict.__init__   2 0 0   100%
slidge/db/track.py TrackedDict._wrap   5 0 0   100%
slidge/db/track.py TrackedDict._convert   1 0 0   100%
slidge/db/track.py TrackedDict._notify   1 0 0   100%
slidge/db/track.py TrackedDict.__setitem__   2 0 0   100%
slidge/db/track.py TrackedDict.setdefault   0 0 1   100%
slidge/db/track.py TrackedDict.update   2 0 0   100%
slidge/db/track.py TrackedDict.get   4 0 0   100%
slidge/db/track.py TrackedList.__init__   2 0 0   100%
slidge/db/track.py (no function)   22 0 0   100%
slidge/main.py find_gateway_class   6 6 0   0%
slidge/main.py MainConfig.update_dynamic_defaults   7 2 0   71%
slidge/main.py entrypoint   1 1 0   0%
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   64 64 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)   34 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/room/__init__.py (no function)   5 0 0   100%
slidge/room/archive.py MessageArchive.__init__   3 0 0   100%
slidge/room/archive.py MessageArchive.add   21 2 0   90%
slidge/room/archive.py MessageArchive.__iter__   1 1 0   0%
slidge/room/archive.py MessageArchive.__to_bound   1 0 0   100%
slidge/room/archive.py MessageArchive.get_hole_bounds   15 0 0   100%
slidge/room/archive.py MessageArchive.get_all   2 0 0   100%
slidge/room/archive.py MessageArchive.send_metadata   9 0 0   100%
slidge/room/archive.py archivable   15 0 0   100%
slidge/room/archive.py (no function)   21 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks.__init_subclass__   2 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks.__init__   7 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks._create   1 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks.user_nick   1 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks.user_nick   1 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks.on_creation_request   0 0 1   100%
slidge/room/bookmarks.py LegacyBookmarks._fill   14 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks.__privileged   4 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks.schedule_pep_add   3 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks._pep_add   8 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks._pep_del   10 3 0   70%
slidge/room/bookmarks.py LegacyBookmarks._pep_sync   19 4 0   79%
slidge/room/bookmarks.py LegacyBookmarks.__pep_get_all   3 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks.__pep_get   9 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks.__pep_fetch   10 4 0   60%
slidge/room/bookmarks.py LegacyBookmarks.__pep_set   9 3 0   67%
slidge/room/bookmarks.py LegacyBookmarks.__pep_make   14 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks.__pep_update   27 3 0   89%
slidge/room/bookmarks.py LegacyBookmarks.remove   8 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks._batch_load   1 0 0   100%
slidge/room/bookmarks.py LegacyBookmarks._shutdown   12 10 0   17%
slidge/room/bookmarks.py _bookmarks_form   8 0 0   100%
slidge/room/bookmarks.py (no function)   46 0 0   100%
slidge/room/participant.py LegacyParticipant.__init__   14 0 0   100%
slidge/room/participant.py LegacyParticipant._recipient_pk   1 0 0   100%
slidge/room/participant.py LegacyParticipant.__eq__   1 0 0   100%
slidge/room/participant.py LegacyParticipant.is_user   1 0 0   100%
slidge/room/participant.py LegacyParticipant.is_user   1 1 0   0%
slidge/room/participant.py LegacyParticipant.jid   4 0 0   100%
slidge/room/participant.py LegacyParticipant._commands   3 3 0   0%
slidge/room/participant.py LegacyParticipant.__repr__   1 0 0   100%
slidge/room/participant.py LegacyParticipant.affiliation   1 0 0   100%
slidge/room/participant.py LegacyParticipant.affiliation   9 0 0   100%
slidge/room/participant.py LegacyParticipant.role   1 0 0   100%
slidge/room/participant.py LegacyParticipant.role   5 0 0   100%
slidge/room/participant.py LegacyParticipant.hats   1 0 0   100%
slidge/room/participant.py LegacyParticipant.set_hats   5 2 0   60%
slidge/room/participant.py LegacyParticipant.send_configuration_change   5 1 0   80%
slidge/room/participant.py LegacyParticipant.nickname   1 0 0   100%
slidge/room/participant.py LegacyParticipant.nickname   10 1 0   90%
slidge/room/participant.py LegacyParticipant._make_presence   32 2 0   94%
slidge/room/participant.py LegacyParticipant.DISCO_NAME   1 0 0   100%
slidge/room/participant.py LegacyParticipant.DISCO_NAME   1 1 0   0%
slidge/room/participant.py LegacyParticipant.occupant_id   5 0 0   100%
slidge/room/participant.py LegacyParticipant._send   22 0 0   100%
slidge/room/participant.py LegacyParticipant.mucadmin_item   11 1 0   91%
slidge/room/participant.py LegacyParticipant.__add_nick_element   6 0 0   100%
slidge/room/participant.py LegacyParticipant.send_initial_presence   15 0 0   100%
slidge/room/participant.py LegacyParticipant.leave   1 0 0   100%
slidge/room/participant.py LegacyParticipant.kick   1 0 0   100%
slidge/room/participant.py LegacyParticipant.ban   1 1 0   0%
slidge/room/participant.py LegacyParticipant.get_disco_info   3 1 0   67%
slidge/room/participant.py LegacyParticipant.moderate   10 0 0   100%
slidge/room/participant.py LegacyParticipant.set_room_subject   12 3 0   75%
slidge/room/participant.py LegacyParticipant.set_thread_subject   9 3 0   67%
slidge/room/participant.py LegacyParticipant.on_set_affiliation   0 0 1   100%
slidge/room/participant.py LegacyParticipant.on_kick   0 0 1   100%
slidge/room/participant.py LegacyParticipant.on_invitation   1 1 0   0%
slidge/room/participant.py LegacyParticipant.displayed   10 1 0   90%
slidge/room/participant.py LegacyParticipant.__send_mds   21 0 0   100%
slidge/room/participant.py (no function)   76 0 3   100%
slidge/room/participants.py RoomRoster._from_store   0 0 0   100%
slidge/room/participants.py RoomRoster._from_store   0 0 0   100%
slidge/room/participants.py RoomRoster._from_store   1 0 0   100%
slidge/room/participants.py RoomRoster.get_by_nick   1 0 0   100%
slidge/room/participants.py RoomRoster.get_by_resource   1 0 0   100%
slidge/room/participants.py RoomRoster.get_by_legacy_id   1 1 0   0%
slidge/room/participants.py RoomRoster.get_by_contact   1 1 0   0%
slidge/room/participants.py RoomRoster.__get   1 0 0   100%
slidge/room/participants.py RoomRoster.__get_stored   2 0 0   100%
slidge/room/participants.py RoomRoster.__query   1 0 0   100%
slidge/room/participants.py RoomRoster.get_or_create   0 0 0   100%
slidge/room/participants.py RoomRoster.get_or_create   0 0 0   100%
slidge/room/participants.py RoomRoster.get_or_create   0 0 0   100%
slidge/room/participants.py RoomRoster.get_or_create   12 2 0   83%
slidge/room/participants.py RoomRoster.create   21 1 0   95%
slidge/room/participants.py RoomRoster._rename   6 0 0   100%
slidge/room/participants.py RoomRoster._delete   3 3 0   0%
slidge/room/participants.py RoomRoster.get_or_create_by_legacy_id   4 1 0   75%
slidge/room/participants.py RoomRoster.get_user   7 0 0   100%
slidge/room/participants.py RoomRoster.__disambiguate   3 0 0   100%
slidge/room/participants.py RoomRoster.ensure_filled   26 1 0   96%
slidge/room/participants.py RoomRoster.__init__   2 0 0   100%
slidge/room/participants.py RoomRoster.__repr__   1 1 0   0%
slidge/room/participants.py RoomRoster.__user   1 1 0   0%
slidge/room/participants.py RoomRoster.__orm   1 0 0   100%
slidge/room/participants.py RoomRoster.__iter__   9 0 0   100%
slidge/room/participants.py get_resource   12 0 0   100%
slidge/room/participants.py _strip_non_printable   3 0 0   100%
slidge/room/participants.py (no function)   49 0 5   100%
slidge/room/room.py LegacyRoom.__init_subclass__   2 0 0   100%
slidge/room/room.py LegacyRoom.__init__   7 0 0   100%
slidge/room/room.py LegacyRoom.on_message   0 0 1   100%
slidge/room/room.py LegacyRoom.on_sticker   0 0 1   100%
slidge/room/room.py LegacyRoom.pop_unread_xmpp_ids_up_to   5 0 0   100%
slidge/room/room.py LegacyRoom.jid   1 0 0   100%
slidge/room/room.py LegacyRoom.legacy_id   1 0 0   100%
slidge/room/room.py LegacyRoom.__stored_space   2 0 0   100%
slidge/room/room.py LegacyRoom.space   2 2 0   0%
slidge/room/room.py LegacyRoom.space   19 4 0   79%
slidge/room/room.py LegacyRoom.__orm   1 0 0   100%
slidge/room/room.py LegacyRoom.type   1 0 0   100%
slidge/room/room.py LegacyRoom.type   2 0 0   100%
slidge/room/room.py LegacyRoom.n_participants   2 0 0   100%
slidge/room/room.py LegacyRoom.n_participants   1 0 0   100%
slidge/room/room.py LegacyRoom._set_logger   1 0 0   100%
slidge/room/room.py LegacyRoom.__repr__   1 0 0   100%
slidge/room/room.py LegacyRoom.subject_date   4 0 0   100%
slidge/room/room.py LegacyRoom.subject_date   1 0 0   100%
slidge/room/room.py LegacyRoom.__send_configuration_change   2 0 0   100%
slidge/room/room.py LegacyRoom.user_nick   1 0 0   100%
slidge/room/room.py LegacyRoom.user_nick   1 0 0   100%
slidge/room/room.py LegacyRoom.add_user_resource   5 0 0   100%
slidge/room/room.py LegacyRoom.get_user_resources   4 0 0   100%
slidge/room/room.py LegacyRoom.remove_user_resource   5 0 0   100%
slidge/room/room.py LegacyRoom.lock   2 0 0   100%
slidge/room/room.py LegacyRoom.get_lock   1 0 0   100%
slidge/room/room.py LegacyRoom.get_participants   3 0 0   100%
slidge/room/room.py LegacyRoom.__fill_history   14 2 0   86%
slidge/room/room.py LegacyRoom._get_disco_name   1 0 0   100%
slidge/room/room.py LegacyRoom.name   1 0 0   100%
slidge/room/room.py LegacyRoom.name   4 0 0   100%
slidge/room/room.py LegacyRoom.description   2 0 0   100%
slidge/room/room.py LegacyRoom.description   4 1 0   75%
slidge/room/room.py LegacyRoom.on_presence_unavailable   11 11 0   0%
slidge/room/room.py LegacyRoom.backfill   0 0 1   100%
slidge/room/room.py LegacyRoom.fill_participants   1 0 0   100%
slidge/room/room.py LegacyRoom.subject   2 0 0   100%
slidge/room/room.py LegacyRoom.subject   3 0 0   100%
slidge/room/room.py LegacyRoom.is_anonymous   1 0 0   100%
slidge/room/room.py LegacyRoom.subject_setter   2 0 0   100%
slidge/room/room.py LegacyRoom.subject_setter   6 1 0   83%
slidge/room/room.py LegacyRoom.__get_subject_setter_participant   4 0 0   100%
slidge/room/room.py LegacyRoom.notify_settings   2 0 0   100%
slidge/room/room.py LegacyRoom.notify_settings   2 0 0   100%
slidge/room/room.py LegacyRoom.pinned   2 0 0   100%
slidge/room/room.py LegacyRoom.pinned   2 0 0   100%
slidge/room/room.py LegacyRoom.features   10 2 0   80%
slidge/room/room.py LegacyRoom.extended_features   45 1 0   98%
slidge/room/room.py LegacyRoom.user_full_jids   4 0 0   100%
slidge/room/room.py LegacyRoom.user_muc_jid   1 0 0   100%
slidge/room/room.py LegacyRoom.echo   16 0 0   100%
slidge/room/room.py LegacyRoom._post_image_update   2 0 0   100%
slidge/room/room.py LegacyRoom._send_room_presence   11 0 0   100%
slidge/room/room.py LegacyRoom.join   60 10 0   83%
slidge/room/room.py LegacyRoom.__get_mav   2 0 0   100%
slidge/room/room.py LegacyRoom.__get_mav_data   9 1 0   89%
slidge/room/room.py LegacyRoom.__get_part_mav_id   1 0 0   100%
slidge/room/room.py LegacyRoom.__compute_mav_ver   8 0 0   100%
slidge/room/room.py LegacyRoom.__send_mav   11 1 0   91%
slidge/room/room.py LegacyRoom.send_affiliation_change   25 5 0   80%
slidge/room/room.py LegacyRoom.get_system_participant   1 0 0   100%
slidge/room/room.py LegacyRoom.remove_participant   20 2 0   90%
slidge/room/room.py LegacyRoom.rename_participant   5 2 0   60%
slidge/room/room.py LegacyRoom.__old_school_history   11 2 0   82%
slidge/room/room.py LegacyRoom.send_mam   55 2 0   96%
slidge/room/room.py LegacyRoom.send_mam_metadata   2 0 0   100%
slidge/room/room.py LegacyRoom.kick_resource   8 0 0   100%
slidge/room/room.py LegacyRoom._on_delete   1 0 0   100%
slidge/room/room.py LegacyRoom.on_avatar   0 0 1   100%
slidge/room/room.py LegacyRoom.on_set_config   0 0 1   100%
slidge/room/room.py LegacyRoom.on_destroy_request   0 0 1   100%
slidge/room/room.py LegacyRoom.parse_mentions   18 3 0   83%
slidge/room/room.py LegacyRoom.on_set_subject   0 0 1   100%
slidge/room/room.py LegacyRoom.on_set_thread_subject   0 0 1   100%
slidge/room/room.py LegacyRoom.on_moderate   0 0 1   100%
slidge/room/room.py LegacyRoom.on_leave   0 0 1   100%
slidge/room/room.py LegacyRoom.participants_filled   1 0 0   100%
slidge/room/room.py LegacyRoom.get_archived_messages   2 0 0   100%
slidge/room/room.py set_origin_id   3 3 0   0%
slidge/room/room.py int_or_none   4 0 0   100%
slidge/room/room.py equals_zero   3 0 0   100%
slidge/room/room.py str_to_datetime_or_none   6 2 0   67%
slidge/room/room.py (no function)   182 0 5   100%
slidge/slixfix/__init__.py set_pinned   4 1 0   75%
slidge/slixfix/__init__.py session_bind   1 0 0   100%
slidge/slixfix/__init__.py reply   9 1 0   89%
slidge/slixfix/__init__.py (no function)   23 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/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)   33 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 0 0   100%
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/space/__init__.py (no function)   3 0 0   100%
slidge/space/nodes.py LegacySpaceNodes.__init_subclass__   2 0 0   100%
slidge/space/nodes.py LegacySpaceNodes.__init__   2 0 0   100%
slidge/space/nodes.py LegacySpaceNodes.legacy_id_to_node   1 0 0   100%
slidge/space/nodes.py LegacySpaceNodes.node_to_legacy_id   1 0 0   100%
slidge/space/nodes.py LegacySpaceNodes._create   1 0 0   100%
slidge/space/nodes.py LegacySpaceNodes._batch_load   1 0 0   100%
slidge/space/nodes.py (no function)   16 0 0   100%
slidge/space/space.py LegacySpace.__init__   5 0 0   100%
slidge/space/space.py LegacySpace.name   1 0 0   100%
slidge/space/space.py LegacySpace.name   2 0 0   100%
slidge/space/space.py LegacySpace.description   1 0 0   100%
slidge/space/space.py LegacySpace.description   2 1 0   50%
slidge/space/space.py LegacySpace.member_count   1 0 0   100%
slidge/space/space.py LegacySpace.member_count   2 1 0   50%
slidge/space/space.py LegacySpace.owners   3 0 0   100%
slidge/space/space.py LegacySpace.owners   4 0 0   100%
slidge/space/space.py LegacySpace.creator   2 0 0   100%
slidge/space/space.py LegacySpace.creator   6 1 0   83%
slidge/space/space.py LegacySpace.banner   4 4 0   0%
slidge/space/space.py LegacySpace.banner   1 0 0   100%
slidge/space/space.py LegacySpace._post_image_update   3 1 0   67%
slidge/space/space.py LegacySpace.node   1 0 0   100%
slidge/space/space.py LegacySpace.legacy_id   1 0 0   100%
slidge/space/space.py LegacySpace._on_delete   3 0 0   100%
slidge/space/space.py LegacySpace.__broadcast_meta   2 0 0   100%
slidge/space/space.py LegacySpace.__broadcast   4 0 0   100%
slidge/space/space.py (no function)   44 0 0   100%
slidge/util/__init__.py formatwarning   1 1 0   0%
slidge/util/__init__.py (no function)   7 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   42 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   6 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 escape_node   1 0 0   100%
slidge/util/jid_escaping.py (no function)   5 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   2 2 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.next_sent   8 0 0   100%
slidge/util/test.py SlidgeTest.setUpClass   9 1 0   89%
slidge/util/test.py SlidgeTest.setUp   33 0 0   100%
slidge/util/test.py SlidgeTest.setUp.new_id   2 0 0   100%
slidge/util/test.py SlidgeTest._add_slidge_user   18 0 0   100%
slidge/util/test.py SlidgeTest.user_session   1 0 0   100%
slidge/util/test.py SlidgeTest.get_joined_muc   4 0 0   100%
slidge/util/test.py SlidgeTest.tearDown   7 0 0   100%
slidge/util/test.py SlidgeTest.setup_logged_session   26 2 0   92%
slidge/util/test.py find_subclass   13 3 0   77%
slidge/util/test.py typed_dict_consistency_tester   7 7 0   0%
slidge/util/test.py _test_typed_dict_consistency   41 14 0   66%
slidge/util/test.py _evaluate_forward_ref   3 1 0   67%
slidge/util/test.py _get_type_arg   10 10 0   0%
slidge/util/test.py (no function)   49 0 0   100%
slidge/util/types.py LegacyAttachment.__post_init__   8 2 0   75%
slidge/util/types.py LegacyAttachment.format_for_user   10 5 0   50%
slidge/util/types.py LegacyAttachment.__str__   6 0 0   100%
slidge/util/types.py LinkPreview.is_empty   1 0 0   100%
slidge/util/types.py Reply.fallback_no_quote_mark   3 0 0   100%
slidge/util/types.py XMPPAttachment.get   3 0 0   100%
slidge/util/types.py has_attachments   1 1 0   0%
slidge/util/types.py (no function)   228 0 7   100%
slidge/util/util.py fix_suffix   17 17 0   0%
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 dict_to_named_tuple   1 0 0   100%
slidge/util/util.py replace_mentions   10 1 0   90%
slidge/util/util.py derive_wired_class   16 3 0   81%
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 fix_namespaces   3 0 0   100%
slidge/util/util.py _HasBatchSetAttributes.batch_set_attributes   1 0 0   100%
slidge/util/util.py batch_set_attributes   0 0 0   100%
slidge/util/util.py batch_set_attributes   0 0 0   100%
slidge/util/util.py batch_set_attributes   7 7 0   0%
slidge/util/util.py batch_set_attributes.wrapper   2 2 0   0%
slidge/util/util.py batch_set_attributes.wrapper   2 2 0   0%
slidge/util/util.py uniquify_replace   1 0 0   100%
slidge/util/util.py recover_replaced_legacy_msg_id   3 0 0   100%
slidge/util/util.py (no function)   62 2 0   97%
Total     10944 1938 121   82%

No items found using the specified filter.