changeset 4384:33468e175ade

backend: various fixes, and type hints improvments.
author Goffi <goffi@goffi.org>
date Sun, 03 Aug 2025 23:36:22 +0200
parents 7c1d77efc752
children a1ac33fe6b97
files libervia/backend/plugins/plugin_misc_text_syntaxes.py libervia/backend/plugins/plugin_pubsub_cache.py libervia/backend/plugins/plugin_xep_0060.py libervia/backend/plugins/plugin_xep_0131.py libervia/backend/tools/common/date_utils.py
diffstat 5 files changed, 14 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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 = {}
--- 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)
         )
--- 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 <headers> 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:
--- 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