# HG changeset patch # User Goffi # Date 1754256982 -7200 # Node ID 33468e175adeb4edbca76436cc986f8d6953ef47 # Parent 7c1d77efc7527d294da4614a7d6236cbf095afb1 backend: various fixes, and type hints improvments. diff -r 7c1d77efc752 -r 33468e175ade libervia/backend/plugins/plugin_misc_text_syntaxes.py --- a/libervia/backend/plugins/plugin_misc_text_syntaxes.py Sun Aug 03 23:35:21 2025 +0200 +++ b/libervia/backend/plugins/plugin_misc_text_syntaxes.py Sun Aug 03 23:36:22 2025 +0200 @@ -404,7 +404,7 @@ """ return " ".join(SAFE_CLASSES.intersection(classes_raw.split())) - def clean_xhtml(self, xhtml): + def clean_xhtml(self, xhtml) -> str: """Clean XHTML text by removing potentially dangerous/malicious parts @param xhtml(unicode, lxml.etree._Element): raw HTML/XHTML text to clean diff -r 7c1d77efc752 -r 33468e175ade libervia/backend/plugins/plugin_pubsub_cache.py --- a/libervia/backend/plugins/plugin_pubsub_cache.py Sun Aug 03 23:35:21 2025 +0200 +++ b/libervia/backend/plugins/plugin_pubsub_cache.py Sun Aug 03 23:36:22 2025 +0200 @@ -350,7 +350,7 @@ client: SatXMPPEntity, service: jid.JID, node: str, - pubsub_node: PubsubNode = None, + pubsub_node: PubsubNode|None = None, ) -> dict: """Use registered analysers on a node to determine what it is used for""" analyse = {"service": service, "node": node} @@ -481,7 +481,7 @@ sub_id: Optional[str] = None, rsm_request: Optional[rsm.RSMRequest] = None, extra: Optional[Dict[str, Any]] = None, - ) -> Tuple[List[PubsubItem], dict]: + ) -> tuple[list[PubsubItem], dict]: """Get items from cache, using same arguments as for external Pubsub request""" if extra is None: extra = {} diff -r 7c1d77efc752 -r 33468e175ade libervia/backend/plugins/plugin_xep_0060.py --- a/libervia/backend/plugins/plugin_xep_0060.py Sun Aug 03 23:35:21 2025 +0200 +++ b/libervia/backend/plugins/plugin_xep_0060.py Sun Aug 03 23:36:22 2025 +0200 @@ -39,7 +39,7 @@ from libervia.backend.core.core_types import SatXMPPEntity from libervia.backend.core.i18n import _ from libervia.backend.core.log import getLogger -from libervia.backend.core.xmpp import SatXMPPClient +from libervia.backend.core.core_types import SatXMPPClient from libervia.backend.plugins.plugin_xep_0059 import RSMRequest from libervia.backend.tools import utils from libervia.backend.tools import sat_defer @@ -553,7 +553,7 @@ async def send_item( self, - client: SatXMPPClient, + client: SatXMPPEntity, service: Union[jid.JID, None], nodeIdentifier: str, payload: domish.Element, @@ -1502,7 +1502,9 @@ def eb(failure_): log.warning(f"Error while parsing item: {failure_.value}") - d = defer.gatherResults([item_cb(item).addErrback(eb) for item in items]) + d = defer.gatherResults( + [utils.as_deferred(item_cb, item).addErrback(eb) for item in items] + ) d.addCallback( lambda parsed_items: ([i for i in parsed_items if i is not None], metadata) ) diff -r 7c1d77efc752 -r 33468e175ade libervia/backend/plugins/plugin_xep_0131.py --- a/libervia/backend/plugins/plugin_xep_0131.py Sun Aug 03 23:35:21 2025 +0200 +++ b/libervia/backend/plugins/plugin_xep_0131.py Sun Aug 03 23:36:22 2025 +0200 @@ -101,7 +101,7 @@ def to_element(self) -> domish.Element: """Build the element from this instance's data.""" headers_elt = domish.Element((NS_SHIM, "headers")) - header_names = list(self.model_fields.keys()) + list( + header_names = list(self.__class__.model_fields.keys()) + list( self.__pydantic_extra__.keys() ) for name in header_names: diff -r 7c1d77efc752 -r 33468e175ade libervia/backend/tools/common/date_utils.py --- a/libervia/backend/tools/common/date_utils.py Sun Aug 03 23:35:21 2025 +0200 +++ b/libervia/backend/tools/common/date_utils.py Sun Aug 03 23:36:22 2025 +0200 @@ -61,12 +61,13 @@ TZ_LOCAL = tz.gettz() -def date_parse(value, default_tz=TZ_UTC): +def date_parse(value: str, default_tz: datetime.tzinfo=TZ_UTC) -> int: """Parse a date and return corresponding unix timestamp - @param value(unicode): date to parse, in any format supported by parser - @param default_tz(datetime.tzinfo): default timezone - @return (int): timestamp + @param value: date to parse, in any format supported by parser + @param default_tz: default timezone + @return: timestamp + @raise ValueError: Date can't be parsed. """ value = str(value).strip() dayfirst = False if YEAR_FIRST_RE.match(value) else True