From e016d42568569678a7105d4f51e805da34ae1b53 Mon Sep 17 00:00:00 2001 From: wurstsalat <mailtrash@posteo.de> Date: Sat, 28 May 2022 21:15:01 +0200 Subject: [PATCH] chore: VCardAvatars: Add type annotations --- gajim/common/modules/vcard_avatars.py | 48 ++++++++++++++++++++------- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/gajim/common/modules/vcard_avatars.py b/gajim/common/modules/vcard_avatars.py index 72ec9d12f8..aa68cc0f2a 100644 --- a/gajim/common/modules/vcard_avatars.py +++ b/gajim/common/modules/vcard_avatars.py @@ -14,20 +14,31 @@ # XEP-0153: vCard-Based Avatars -from nbxmpp.namespaces import Namespace -from nbxmpp.structs import StanzaHandler +from __future__ import annotations + +from typing import Generator +from typing import Optional + from nbxmpp.const import AvatarState from nbxmpp.modules.util import is_error +from nbxmpp.modules.vcard_temp import VCard +from nbxmpp.namespaces import Namespace +from nbxmpp.protocol import JID +from nbxmpp.protocol import Presence +from nbxmpp.structs import DiscoInfo +from nbxmpp.structs import PresenceProperties +from nbxmpp.structs import StanzaHandler from gajim.common import app +from gajim.common import types from gajim.common.modules.base import BaseModule from gajim.common.modules.util import as_task class VCardAvatars(BaseModule): - def __init__(self, con): + def __init__(self, con: types.Client) -> None: BaseModule.__init__(self, con) - self._requested_shas = [] + self._requested_shas: list[str] = [] self.handlers = [ StanzaHandler(name='presence', @@ -38,18 +49,22 @@ def __init__(self, con): self.avatar_conversion_available = False - self._muc_avatar_cache = {} + self._muc_avatar_cache: dict[JID, str] = {} - def pass_disco(self, info): + def pass_disco(self, info: DiscoInfo) -> None: is_available = Namespace.VCARD_CONVERSION in info.features self.avatar_conversion_available = is_available self._log.info('Discovered Avatar Conversion') - def get_avatar_sha(self, jid): + def get_avatar_sha(self, jid: JID) -> Optional[str]: return self._muc_avatar_cache.get(jid) @as_task - def _request_vcard(self, jid, expected_sha, type_): + def _request_vcard(self, + jid: JID, + expected_sha: str, + type_: str + ) -> Generator[VCard, None, None]: _task = yield vcard = yield self._con.get_module('VCardTemp').request_vcard(jid=jid) @@ -86,7 +101,11 @@ def _request_vcard(self, jid, expected_sha, type_): contact.update_avatar(avatar_sha) - def _presence_received(self, _con, _stanza, properties): + def _presence_received(self, + _con: types.xmppClient, + _stanza: Presence, + properties: PresenceProperties + ) -> None: if not properties.type.is_available: return @@ -108,7 +127,7 @@ def _presence_received(self, _con, _stanza, properties): properties.avatar_sha, muc is not None) - def muc_disco_info_update(self, disco_info): + def muc_disco_info_update(self, disco_info: DiscoInfo) -> None: if not disco_info.supports(Namespace.VCARD): return @@ -123,7 +142,12 @@ def muc_disco_info_update(self, disco_info): state = AvatarState.EMPTY if not avatar_sha else AvatarState.ADVERTISED self._process_update(disco_info.jid, state, avatar_sha, True) - def _process_update(self, jid, state, avatar_sha, groupchat): + def _process_update(self, + jid: JID, + state: AvatarState, + avatar_sha: str, + groupchat: bool + ) -> None: contact = self._con.get_module('Contacts').get_contact( jid, groupchat=groupchat) @@ -162,7 +186,7 @@ def _process_update(self, jid, state, avatar_sha, groupchat): else: self._request_vcard(jid, avatar_sha, 'contact') - def _muc_update_received(self, properties): + def _muc_update_received(self, properties: PresenceProperties) -> None: contact = self._con.get_module('Contacts').get_contact(properties.jid, groupchat=True) nick = properties.jid.resource -- GitLab