diff libervia/cli/cmd_pubsub.py @ 4270:0d7bb4df2343

Reformatted code base using black.
author Goffi <goffi@goffi.org>
date Wed, 19 Jun 2024 18:44:57 +0200
parents 3f7ca590a5da
children
line wrap: on
line diff
--- a/libervia/cli/cmd_pubsub.py	Tue Jun 18 12:06:45 2024 +0200
+++ b/libervia/cli/cmd_pubsub.py	Wed Jun 19 18:44:57 2024 +0200
@@ -874,39 +874,63 @@
 
     def add_parser_options(self):
         self.parser.add_argument(
-            "-s", "--service", action="append", metavar="JID", dest="services",
+            "-s",
+            "--service",
+            action="append",
+            metavar="JID",
+            dest="services",
             help="purge items only for these services. If not specified, items from ALL "
-            "services will be purged. May be used several times."
+            "services will be purged. May be used several times.",
         )
         self.parser.add_argument(
-            "-n", "--node", action="append", dest="nodes",
+            "-n",
+            "--node",
+            action="append",
+            dest="nodes",
             help="purge items only for these nodes. If not specified, items from ALL "
-            "nodes will be purged. May be used several times."
+            "nodes will be purged. May be used several times.",
         )
         self.parser.add_argument(
-            "-p", "--profile", action="append", dest="profiles",
+            "-p",
+            "--profile",
+            action="append",
+            dest="profiles",
             help="purge items only for these profiles. If not specified, items from ALL "
-            "profiles will be purged. May be used several times."
+            "profiles will be purged. May be used several times.",
         )
         self.parser.add_argument(
-            "-b", "--updated-before", type=base.date_decoder, metavar="TIME_PATTERN",
-            help="purge items which have been last updated before given time."
+            "-b",
+            "--updated-before",
+            type=base.date_decoder,
+            metavar="TIME_PATTERN",
+            help="purge items which have been last updated before given time.",
         )
         self.parser.add_argument(
-            "-C", "--created-before", type=base.date_decoder, metavar="TIME_PATTERN",
-            help="purge items which have been last created before given time."
+            "-C",
+            "--created-before",
+            type=base.date_decoder,
+            metavar="TIME_PATTERN",
+            help="purge items which have been last created before given time.",
         )
         self.parser.add_argument(
-            "-t", "--type", action="append", dest="types",
-            help="purge items flagged with TYPE. May be used several times."
+            "-t",
+            "--type",
+            action="append",
+            dest="types",
+            help="purge items flagged with TYPE. May be used several times.",
         )
         self.parser.add_argument(
-            "-S", "--subtype", action="append", dest="subtypes",
-            help="purge items flagged with SUBTYPE. May be used several times."
+            "-S",
+            "--subtype",
+            action="append",
+            dest="subtypes",
+            help="purge items flagged with SUBTYPE. May be used several times.",
         )
         self.parser.add_argument(
-            "-f", "--force", action="store_true",
-            help=_("purge items without confirmation")
+            "-f",
+            "--force",
+            action="store_true",
+            help=_("purge items without confirmation"),
         )
 
     async def start(self):
@@ -916,22 +940,23 @@
                     "Are you sure to purge items from cache? You'll have to bypass cache "
                     "or resynchronise nodes to access deleted items again."
                 ),
-                _("Items purgins has been cancelled.")
+                _("Items purgins has been cancelled."),
             )
         purge_data = {}
         for key in (
-                "services", "nodes", "profiles", "updated_before", "created_before",
-                "types", "subtypes"
+            "services",
+            "nodes",
+            "profiles",
+            "updated_before",
+            "created_before",
+            "types",
+            "subtypes",
         ):
             value = getattr(self.args, key)
             if value is not None:
                 purge_data[key] = value
         try:
-            await self.host.bridge.ps_cache_purge(
-                data_format.serialise(
-                    purge_data
-                )
-            )
+            await self.host.bridge.ps_cache_purge(data_format.serialise(purge_data))
         except Exception as e:
             self.disp(f"Internal error: {e}", error=True)
             self.host.quit(C.EXIT_INTERNAL_ERROR)
@@ -951,8 +976,10 @@
 
     def add_parser_options(self):
         self.parser.add_argument(
-            "-f", "--force", action="store_true",
-            help=_("reset cache without confirmation")
+            "-f",
+            "--force",
+            action="store_true",
+            help=_("reset cache without confirmation"),
         )
 
     async def start(self):
@@ -963,7 +990,7 @@
                     "from it, then it will be progressively refilled as if it were new. "
                     "This may be resources intensive."
                 ),
-                _("Pubsub cache reset has been cancelled.")
+                _("Pubsub cache reset has been cancelled."),
             )
         try:
             await self.host.bridge.ps_cache_reset()
@@ -995,32 +1022,55 @@
             "-f", "--fts", help=_("Full-Text Search query"), metavar="FTS_QUERY"
         )
         self.parser.add_argument(
-            "-p", "--profile", action="append", dest="profiles", metavar="PROFILE",
-            help="search items only from these profiles. May be used several times."
+            "-p",
+            "--profile",
+            action="append",
+            dest="profiles",
+            metavar="PROFILE",
+            help="search items only from these profiles. May be used several times.",
         )
         self.parser.add_argument(
-            "-s", "--service", action="append", dest="services", metavar="SERVICE",
-            help="items must be from specified service. May be used several times."
+            "-s",
+            "--service",
+            action="append",
+            dest="services",
+            metavar="SERVICE",
+            help="items must be from specified service. May be used several times.",
         )
         self.parser.add_argument(
-            "-n", "--node", action="append", dest="nodes", metavar="NODE",
-            help="items must be in the specified node. May be used several times."
+            "-n",
+            "--node",
+            action="append",
+            dest="nodes",
+            metavar="NODE",
+            help="items must be in the specified node. May be used several times.",
         )
         self.parser.add_argument(
-            "-t", "--type", action="append", dest="types", metavar="TYPE",
-            help="items must be of specified type. May be used several times."
+            "-t",
+            "--type",
+            action="append",
+            dest="types",
+            metavar="TYPE",
+            help="items must be of specified type. May be used several times.",
         )
         self.parser.add_argument(
-            "-S", "--subtype", action="append", dest="subtypes", metavar="SUBTYPE",
-            help="items must be of specified subtype. May be used several times."
+            "-S",
+            "--subtype",
+            action="append",
+            dest="subtypes",
+            metavar="SUBTYPE",
+            help="items must be of specified subtype. May be used several times.",
         )
         self.parser.add_argument(
             "-P", "--payload", action="store_true", help=_("include item XML payload")
         )
         self.parser.add_argument(
-            "-o", "--order-by", action="append", nargs="+",
+            "-o",
+            "--order-by",
+            action="append",
+            nargs="+",
             metavar=("ORDER", "[FIELD] [DIRECTION]"),
-            help=_("how items must be ordered. May be used several times.")
+            help=_("how items must be ordered. May be used several times."),
         )
         self.parser.add_argument(
             "-l", "--limit", type=int, help=_("maximum number of items to return")
@@ -1075,10 +1125,12 @@
                     elif len(args) == 2:
                         path, direction = args
                     else:
-                        self.parser.error(_(
-                            "You can't specify more that 2 arguments for a field in "
-                            "--order-by"
-                        ))
+                        self.parser.error(
+                            _(
+                                "You can't specify more that 2 arguments for a field in "
+                                "--order-by"
+                            )
+                        )
                     try:
                         path = json.loads(path)
                     except json.JSONDecodeError:
@@ -1087,17 +1139,15 @@
                         "path": path,
                     }
                 else:
-                    order_query = {
-                        "order": order
-                    }
+                    order_query = {"order": order}
                     if not args:
                         direction = "asc"
                     elif len(args) == 1:
                         direction = args[0]
                     else:
-                        self.parser.error(_(
-                            "there are too many arguments in --order-by option"
-                        ))
+                        self.parser.error(
+                            _("there are too many arguments in --order-by option")
+                        )
                 if direction.lower() not in ("asc", "desc"):
                     self.parser.error(_("invalid --order-by direction: {direction!r}"))
                 order_query["direction"] = direction
@@ -1118,10 +1168,14 @@
 
                 # handling of TP(<time pattern>)
                 if operator in (">", "gt", "<", "le", "between"):
+
                     def datetime_sub(match):
-                        return str(date_utils.date_parse_ext(
-                            match.group(1), default_tz=date_utils.TZ_LOCAL
-                        ))
+                        return str(
+                            date_utils.date_parse_ext(
+                                match.group(1), default_tz=date_utils.TZ_LOCAL
+                            )
+                        )
+
                     value = re.sub(r"\bTP\(([^)]+)\)", datetime_sub, value)
 
                 try:
@@ -1134,11 +1188,7 @@
                     if not isinstance(value, list):
                         value = [value]
 
-                parsed.append({
-                    "path": path,
-                    "op": operator,
-                    "value": value
-                })
+                parsed.append({"path": path, "op": operator, "value": value})
 
             query["parsed"] = parsed
 
@@ -1148,9 +1198,7 @@
                 self.args.keys.append("item_payload")
         try:
             found_items = data_format.deserialise(
-                await self.host.bridge.ps_cache_search(
-                    data_format.serialise(query)
-                ),
+                await self.host.bridge.ps_cache_search(data_format.serialise(query)),
                 type_check=list,
             )
         except BridgeException as e:
@@ -1162,7 +1210,7 @@
         else:
             if self.args.keys:
                 found_items = [
-                    {k: v for k,v in item.items() if k in self.args.keys}
+                    {k: v for k, v in item.items() if k in self.args.keys}
                     for item in found_items
                 ]
             await self.output(found_items)
@@ -1228,19 +1276,19 @@
             "-e",
             "--encrypt",
             action="store_true",
-            help=_("end-to-end encrypt the blog item")
+            help=_("end-to-end encrypt the blog item"),
         )
         self.parser.add_argument(
             "--encrypt-for",
             metavar="JID",
             action="append",
-            help=_("encrypt a single item for")
+            help=_("encrypt a single item for"),
         )
         self.parser.add_argument(
             "-X",
             "--sign",
             action="store_true",
-            help=_("cryptographically sign the blog post")
+            help=_("cryptographically sign the blog post"),
         )
         self.parser.add_argument(
             "item",
@@ -1363,8 +1411,10 @@
             "-f", "--force", action="store_true", help=_("delete without confirmation")
         )
         self.parser.add_argument(
-            "--no-notification", dest="notify", action="store_false",
-            help=_("do not send notification (not recommended)")
+            "--no-notification",
+            dest="notify",
+            action="store_false",
+            help=_("do not send notification (not recommended)"),
         )
 
     async def start(self):
@@ -1410,19 +1460,19 @@
             "-e",
             "--encrypt",
             action="store_true",
-            help=_("end-to-end encrypt the blog item")
+            help=_("end-to-end encrypt the blog item"),
         )
         self.parser.add_argument(
             "--encrypt-for",
             metavar="JID",
             action="append",
-            help=_("encrypt a single item for")
+            help=_("encrypt a single item for"),
         )
         self.parser.add_argument(
             "-X",
             "--sign",
             action="store_true",
-            help=_("cryptographically sign the blog post")
+            help=_("cryptographically sign the blog post"),
         )
 
     async def publish(self, content):
@@ -1544,7 +1594,8 @@
             except KeyError:
                 self.disp(
                     "Pubsub Public Subscription plugin is not loaded, can't use --public "
-                    "option, subscription stopped", error=True
+                    "option, subscription stopped",
+                    error=True,
                 )
                 self.host.quit(C.EXIT_MISSING_FEATURE)
             else:
@@ -1628,7 +1679,7 @@
                     self.args.node,
                     self.profile,
                 ),
-                type_check=list
+                type_check=list,
             )
         except Exception as e:
             self.disp(_("can't retrieve subscriptions: {e}").format(e=e), error=True)
@@ -1685,10 +1736,7 @@
             choices=("data", "mention"),
             help=_("type of reference to send (DEFAULT: mention)"),
         )
-        self.parser.add_argument(
-            "recipient",
-            help=_("recipient of the reference")
-        )
+        self.parser.add_argument("recipient", help=_("recipient of the reference"))
 
     async def start(self):
         service = self.args.service or await self.host.get_profile_jid()
@@ -2496,7 +2544,7 @@
             help=_(
                 "get attached data published only by those JIDs (DEFAULT: get all "
                 "attached data)"
-            )
+            ),
         )
 
     async def start(self):
@@ -2535,7 +2583,7 @@
             help=_(
                 "replace previous versions of attachments (DEFAULT: update previous "
                 "version)"
-            )
+            ),
         )
         self.parser.add_argument(
             "-N",
@@ -2543,21 +2591,21 @@
             metavar="BOOLEAN",
             nargs="?",
             default="keep",
-            help=_("mark item as (un)noticed (DEFAULT: keep current value))")
+            help=_("mark item as (un)noticed (DEFAULT: keep current value))"),
         )
         self.parser.add_argument(
             "-r",
             "--reactions",
             # FIXME: to be replaced by "extend" when we stop supporting python 3.7
             action="append",
-            help=_("emojis to add to react to an item")
+            help=_("emojis to add to react to an item"),
         )
         self.parser.add_argument(
             "-R",
             "--reactions-remove",
             # FIXME: to be replaced by "extend" when we stop supporting python 3.7
             action="append",
-            help=_("emojis to remove from reactions to an item")
+            help=_("emojis to remove from reactions to an item"),
         )
 
     async def start(self):
@@ -2565,7 +2613,7 @@
             "service": self.args.service,
             "node": self.args.node,
             "id": self.args.item,
-            "extra": {}
+            "extra": {},
         }
         operation = "replace" if self.args.replace else "update"
         if self.args.noticed != "keep":
@@ -2574,16 +2622,13 @@
             attachments_data["extra"]["noticed"] = C.bool(self.args.noticed)
 
         if self.args.reactions or self.args.reactions_remove:
-            reactions = attachments_data["extra"]["reactions"] = {
-                "operation": operation
-            }
+            reactions = attachments_data["extra"]["reactions"] = {"operation": operation}
             if self.args.replace:
                 reactions["reactions"] = self.args.reactions
             else:
                 reactions["add"] = self.args.reactions
                 reactions["remove"] = self.args.reactions_remove
 
-
         if not attachments_data["extra"]:
             self.parser.error(_("At leat one attachment must be specified."))
 
@@ -2633,7 +2678,7 @@
             "extra": {
                 # we set None to use profile's bare JID
                 "signature": {"signer": None}
-            }
+            },
         }
         try:
             await self.host.bridge.ps_attachments_set(
@@ -2660,11 +2705,7 @@
         )
 
     def add_parser_options(self):
-        self.parser.add_argument(
-            "signature",
-            metavar="JSON",
-            help=_("signature data")
-        )
+        self.parser.add_argument("signature", metavar="JSON", help=_("signature data"))
 
     async def start(self):
         try:
@@ -2690,9 +2731,7 @@
     )
 
     def __init__(self, host):
-        super().__init__(
-            host, "signature", use_profile=False, help=_("items signatures")
-        )
+        super().__init__(host, "signature", use_profile=False, help=_("items signatures"))
 
 
 class SecretShare(base.CommandBase):
@@ -2707,11 +2746,16 @@
 
     def add_parser_options(self):
         self.parser.add_argument(
-            "-k", "--key", metavar="ID", dest="secret_ids", action="append", default=[],
+            "-k",
+            "--key",
+            metavar="ID",
+            dest="secret_ids",
+            action="append",
+            default=[],
             help=_(
                 "only share secrets with those IDs (default: share all secrets of the "
                 "node)"
-            )
+            ),
         )
         self.parser.add_argument(
             "recipient", metavar="JID", help=_("entity who must get the shared secret")
@@ -2745,15 +2789,18 @@
         )
 
     def add_parser_options(self):
+        self.parser.add_argument("secret_id", help=_("ID of the secrets to revoke"))
         self.parser.add_argument(
-            "secret_id", help=_("ID of the secrets to revoke")
-        )
-        self.parser.add_argument(
-            "-r", "--recipient", dest="recipients", metavar="JID", action="append",
-            default=[], help=_(
+            "-r",
+            "--recipient",
+            dest="recipients",
+            metavar="JID",
+            action="append",
+            default=[],
+            help=_(
                 "entity who must get the revocation notification (default: send to all "
                 "entities known to have the shared secret)"
-            )
+            ),
         )
 
     async def start(self):
@@ -2785,11 +2832,16 @@
 
     def add_parser_options(self):
         self.parser.add_argument(
-            "-r", "--recipient", dest="recipients", metavar="JID", action="append",
-            default=[], help=_(
+            "-r",
+            "--recipient",
+            dest="recipients",
+            metavar="JID",
+            action="append",
+            default=[],
+            help=_(
                 "entity who must get the revocation and shared secret notifications "
                 "(default: send to all entities known to have the shared secret)"
-            )
+            ),
         )
 
     async def start(self):
@@ -2817,7 +2869,7 @@
             use_verbose=True,
             pubsub_flags={C.NODE},
             help=_("list known secrets for a pubsub node"),
-            use_output=C.OUTPUT_LIST_DICT
+            use_output=C.OUTPUT_LIST_DICT,
         )
 
     def add_parser_options(self):
@@ -2825,11 +2877,14 @@
 
     async def start(self):
         try:
-            secrets = data_format.deserialise(await self.host.bridge.ps_secrets_list(
-                self.args.service,
-                self.args.node,
-                self.profile,
-            ), type_check=list)
+            secrets = data_format.deserialise(
+                await self.host.bridge.ps_secrets_list(
+                    self.args.service,
+                    self.args.node,
+                    self.profile,
+                ),
+                type_check=list,
+            )
         except Exception as e:
             self.disp(f"can't list node secrets: {e}", error=True)
             self.host.quit(C.EXIT_BRIDGE_ERRBACK)