diff libervia/backend/plugins/plugin_xep_0470.py @ 4270:0d7bb4df2343

Reformatted code base using black.
author Goffi <goffi@goffi.org>
date Wed, 19 Jun 2024 18:44:57 +0200
parents 2109d864a3e7
children
line wrap: on
line diff
--- a/libervia/backend/plugins/plugin_xep_0470.py	Tue Jun 18 12:06:45 2024 +0200
+++ b/libervia/backend/plugins/plugin_xep_0470.py	Wed Jun 19 18:44:57 2024 +0200
@@ -93,12 +93,11 @@
         self,
         name: str,
         namespace: str,
-        get_cb: Callable[
-            [SatXMPPEntity, domish.Element, Dict[str, Any]],
-            None],
+        get_cb: Callable[[SatXMPPEntity, domish.Element, Dict[str, Any]], None],
         set_cb: Callable[
             [SatXMPPEntity, Dict[str, Any], Optional[domish.Element]],
-            Optional[domish.Element]],
+            Optional[domish.Element],
+        ],
     ) -> None:
         """Register callbacks to handle an attachment
 
@@ -120,18 +119,12 @@
             raise exceptions.ConflictError(
                 f"({name}, {namespace}) attachment handlers are already registered"
             )
-        self.handlers[(name, namespace)] = {
-            "get": get_cb,
-            "set": set_cb
-        }
+        self.handlers[(name, namespace)] = {"get": get_cb, "set": set_cb}
 
     def get_attachment_node_name(self, service: jid.JID, node: str, item: str) -> str:
         """Generate name to use for attachment node"""
         target_item_uri = uri.build_xmpp_uri(
-            "pubsub",
-            path=service.userhost(),
-            node=node,
-            item=item
+            "pubsub", path=service.userhost(), node=node, item=item
         )
         return f"{NS_PUBSUB_ATTACHMENTS}/{target_item_uri}"
 
@@ -162,7 +155,7 @@
         service: jid.JID,
         node: str,
         item: domish.Element,
-        data: dict
+        data: dict,
     ) -> bool:
         """trigger to create attachment node on each publication"""
         await self.create_attachments_node(
@@ -176,7 +169,7 @@
         service: jid.JID,
         node: str,
         item_id: str,
-        autocreate: bool = False
+        autocreate: bool = False,
     ):
         """Create node for attachements if necessary
 
@@ -190,9 +183,7 @@
         except error.StanzaError as e:
             if e.condition == "item-not-found" and autocreate:
                 # we auto-create the missing node
-                await self._p.createNode(
-                    client, service, node
-                )
+                await self._p.createNode(client, service, node)
                 node_config = await self._p.getConfiguration(client, service, node)
             elif e.condition in ("forbidden", "feature-not-implemented"):
                 node_config = self._p.make_configuration_form({})
@@ -213,9 +204,7 @@
             log.warning(f"Can't create attachment node {attachment_node}: {e}")
 
     def items_2_attachment_data(
-        self,
-        client: SatXMPPEntity,
-        items: List[domish.Element]
+        self, client: SatXMPPEntity, items: List[domish.Element]
     ) -> List[Dict[str, Any]]:
         """Convert items from attachment node to attachment data"""
         list_data = []
@@ -249,9 +238,7 @@
                     f"{item.toXml}"
                 )
                 continue
-            data = {
-                "from": item_id
-            }
+            data = {"from": item_id}
             for handler in self.handlers.values():
                 handler["get"](client, attachments_elt, data)
             if len(data) > 1:
@@ -265,7 +252,7 @@
         item: str,
         senders_s: List[str],
         extra_s: str,
-        profile_key: str
+        profile_key: str,
     ) -> defer.Deferred:
         client = self.host.get_client(profile_key)
         extra = data_format.deserialise(extra_s)
@@ -274,9 +261,7 @@
             self.get_attachments(client, jid.JID(service_s), node, item, senders)
         )
         d.addCallback(
-            lambda ret:
-            (data_format.serialise(ret[0]),
-             data_format.serialise(ret[1]))
+            lambda ret: (data_format.serialise(ret[0]), data_format.serialise(ret[1]))
         )
         return d
 
@@ -287,7 +272,7 @@
         node: str,
         item: str,
         senders: Optional[List[jid.JID]],
-        extra: Optional[dict] = None
+        extra: Optional[dict] = None,
     ) -> Tuple[List[Dict[str, Any]], dict]:
         """Retrieve data attached to a pubsub item
 
@@ -316,13 +301,9 @@
 
         return list_data, metadata
 
-    def _set(
-        self,
-        attachments_s: str,
-        profile_key: str
-    ) -> None:
+    def _set(self, attachments_s: str, profile_key: str) -> None:
         client = self.host.get_client(profile_key)
-        attachments = data_format.deserialise(attachments_s)  or {}
+        attachments = data_format.deserialise(attachments_s) or {}
         return defer.ensureDeferred(self.set_attachements(client, attachments))
 
     async def apply_set_handler(
@@ -389,9 +370,7 @@
         return item_elt
 
     async def set_attachements(
-        self,
-        client: SatXMPPEntity,
-        attachments_data: Dict[str, Any]
+        self, client: SatXMPPEntity, attachments_data: Dict[str, Any]
     ) -> None:
         """Set or update attachments
 
@@ -414,9 +393,7 @@
             node = attachments_data["node"]
             item = attachments_data["id"]
         except (KeyError, RuntimeError):
-            raise ValueError(
-                'data must have "service", "node" and "id" set'
-            )
+            raise ValueError('data must have "service", "node" and "id" set')
         attachment_node = self.get_attachment_node_name(service, node, item)
         try:
             items, __ = await self._p.get_items(
@@ -465,7 +442,6 @@
         attachment_node = self.get_attachment_node_name(service, node, item)
         await self._p.subscribe(client, service, attachment_node)
 
-
     def set_timestamp(self, attachment_elt: domish.Element, data: dict) -> None:
         """Check if a ``timestamp`` attribute is set, parse it, and fill data
 
@@ -489,15 +465,11 @@
         data: Dict[str, Any],
     ) -> None:
         try:
-            noticed_elt = next(
-                attachments_elt.elements(NS_PUBSUB_ATTACHMENTS, "noticed")
-            )
+            noticed_elt = next(attachments_elt.elements(NS_PUBSUB_ATTACHMENTS, "noticed"))
         except StopIteration:
             pass
         else:
-            noticed_data = {
-                "noticed": True
-            }
+            noticed_data = {"noticed": True}
             self.set_timestamp(noticed_elt, noticed_data)
             data["noticed"] = noticed_data
 
@@ -505,7 +477,7 @@
         self,
         client: SatXMPPEntity,
         data: Dict[str, Any],
-        former_elt: Optional[domish.Element]
+        former_elt: Optional[domish.Element],
     ) -> Optional[domish.Element]:
         """add or remove a <noticed> attachment
 
@@ -517,10 +489,7 @@
             return former_elt
         elif noticed:
             return domish.Element(
-                (NS_PUBSUB_ATTACHMENTS, "noticed"),
-                attribs = {
-                    "timestamp": xmpp_date()
-                }
+                (NS_PUBSUB_ATTACHMENTS, "noticed"), attribs={"timestamp": xmpp_date()}
             )
         else:
             return None
@@ -549,7 +518,7 @@
         self,
         client: SatXMPPEntity,
         data: Dict[str, Any],
-        former_elt: Optional[domish.Element]
+        former_elt: Optional[domish.Element],
     ) -> Optional[domish.Element]:
         """update the <reaction> attachment"""
         reactions_data = data["extra"].get("reactions")
@@ -557,9 +526,11 @@
             return former_elt
         operation_type = reactions_data.get("operation", "update")
         if operation_type == "update":
-            former_reactions = {
-                str(r) for r in former_elt.elements(NS_PUBSUB_ATTACHMENTS, "reaction")
-            } if former_elt is not None else set()
+            former_reactions = (
+                {str(r) for r in former_elt.elements(NS_PUBSUB_ATTACHMENTS, "reaction")}
+                if former_elt is not None
+                else set()
+            )
             added_reactions = set(reactions_data.get("add") or [])
             removed_reactions = set(reactions_data.get("remove") or [])
             reactions = list((former_reactions | added_reactions) - removed_reactions)
@@ -569,10 +540,7 @@
             raise exceptions.DataError(f"invalid reaction operation: {operation_type!r}")
         if reactions:
             reactions_elt = domish.Element(
-                (NS_PUBSUB_ATTACHMENTS, "reactions"),
-                attribs = {
-                    "timestamp": xmpp_date()
-                }
+                (NS_PUBSUB_ATTACHMENTS, "reactions"), attribs={"timestamp": xmpp_date()}
             )
             for reactions_data in reactions:
                 reactions_elt.addElement("reaction", content=reactions_data)