diff libervia/backend/tools/common/async_process.py @ 4270:0d7bb4df2343

Reformatted code base using black.
author Goffi <goffi@goffi.org>
date Wed, 19 Jun 2024 18:44:57 +0200
parents 601e72332907
children 9308b2d15fd2
line wrap: on
line diff
--- a/libervia/backend/tools/common/async_process.py	Tue Jun 18 12:06:45 2024 +0200
+++ b/libervia/backend/tools/common/async_process.py	Wed Jun 19 18:44:57 2024 +0200
@@ -26,11 +26,13 @@
 from libervia.backend.core.i18n import _
 from libervia.backend.core import exceptions
 from libervia.backend.core.log import getLogger
+
 log = getLogger(__name__)
 
 
 class CommandProtocol(protocol.ProcessProtocol):
     """handle an external command"""
+
     # name of the command (unicode)
     name = None
     # full path to the command (bytes)
@@ -47,8 +49,8 @@
         self._deferred = deferred
         self.data = []
         self.err_data = []
-        self.cmd_args: list[str]|None = None
-        self.cmd_kwargs: dict[str, Any]|None = None
+        self.cmd_args: list[str] | None = None
+        self.cmd_kwargs: dict[str, Any] | None = None
 
     @property
     def command_name(self):
@@ -56,10 +58,11 @@
         if self.name is not None:
             return self.name
         elif self.command is not None:
-            return os.path.splitext(os.path.basename(self.command))[0].decode('utf-8',
-                                                                              'ignore')
+            return os.path.splitext(os.path.basename(self.command))[0].decode(
+                "utf-8", "ignore"
+            )
         else:
-            return ''
+            return ""
 
     def connectionMade(self):
         if self._stdin is not None:
@@ -68,48 +71,45 @@
 
     def outReceived(self, data):
         if self.log:
-            log.info(data.decode('utf-8', 'replace'))
+            log.info(data.decode("utf-8", "replace"))
         self.data.append(data)
 
     def errReceived(self, data):
         if self.log:
-            log.warning(data.decode('utf-8', 'replace'))
+            log.warning(data.decode("utf-8", "replace"))
         self.err_data.append(data)
 
     def processEnded(self, reason):
-        data = b''.join(self.data)
-        if (reason.value.exitCode == 0):
-            log.debug(f'{self.command_name!r} command succeed')
+        data = b"".join(self.data)
+        if reason.value.exitCode == 0:
+            log.debug(f"{self.command_name!r} command succeed")
             # we don't use "replace" on purpose, we want an exception if decoding
             # is not working properly
             self._deferred.callback(data)
         else:
-            err_data = b''.join(self.err_data)
+            err_data = b"".join(self.err_data)
 
             assert self.cmd_args is not None
             assert self.cmd_kwargs is not None
-            msg = (
-                _(
-                    "Can't complete {name} command (error code: {code}):\n"
-                    "Executed command: {command}\n"
-                    "Keyword arguments:\n"
-                    "{command_kw}\n\n"
-                    "stderr:\n{stderr}\n{stdout}\n"
-                )
-                .format(
-                    name = self.command_name,
-                    code = reason.value.exitCode,
-                    command = " ".join(self.cmd_args),
-                    command_kw = "\n".join(
-                        f"    - {k} = {v!r}" for k,v in self.cmd_kwargs.items()
-                    ),
-                    stderr= err_data.decode(errors='replace'),
-                    stdout = "stdout: " + data.decode(errors='replace')
-                    if data else '',
-                )
+            msg = _(
+                "Can't complete {name} command (error code: {code}):\n"
+                "Executed command: {command}\n"
+                "Keyword arguments:\n"
+                "{command_kw}\n\n"
+                "stderr:\n{stderr}\n{stdout}\n"
+            ).format(
+                name=self.command_name,
+                code=reason.value.exitCode,
+                command=" ".join(self.cmd_args),
+                command_kw="\n".join(
+                    f"    - {k} = {v!r}" for k, v in self.cmd_kwargs.items()
+                ),
+                stderr=err_data.decode(errors="replace"),
+                stdout="stdout: " + data.decode(errors="replace") if data else "",
             )
-            self._deferred.errback(Failure(exceptions.CommandException(
-                msg, data, err_data)))
+            self._deferred.errback(
+                Failure(exceptions.CommandException(msg, data, err_data))
+            )
 
     @classmethod
     def run(cls, *args, **kwargs):
@@ -127,10 +127,10 @@
             stdin and stdout will be given as arguments
 
         """
-        stdin = kwargs.pop('stdin', None)
+        stdin = kwargs.pop("stdin", None)
         if stdin is not None:
-            stdin = stdin.encode('utf-8')
-        verbose = kwargs.pop('verbose', False)
+            stdin = stdin.encode("utf-8")
+        verbose = kwargs.pop("verbose", False)
         args = list(args)
         d = defer.Deferred()
         prot = cls(d, stdin=stdin)
@@ -140,7 +140,8 @@
             if not args:
                 raise ValueError(
                     "You must either specify cls.command or use a full path to command "
-                    "to execute as first argument")
+                    "to execute as first argument"
+                )
             command = args.pop(0)
             if prot.name is None:
                 name = os.path.splitext(os.path.basename(command))[0]
@@ -155,10 +156,7 @@
             # FIXME: `None` doesn't seem to work, despite what documentation says, to be
             #    checked and reported upstream if confirmed.
             kwargs["env"] = os.environ
-        reactor.spawnProcess(prot,
-                             command,
-                             cmd_args,
-                             **kwargs)
+        reactor.spawnProcess(prot, command, cmd_args, **kwargs)
         return d