Queer European MD passionate about IT
浏览代码

Allow non-null standard output and/or error pipe to be passed to aio_subprocess_shell function

Davte 2 年之前
父节点
当前提交
cf492f0c8b
共有 2 个文件被更改,包括 9 次插入4 次删除
  1. 1 1
      davtelepot/__init__.py
  2. 8 3
      davtelepot/utilities.py

+ 1 - 1
davtelepot/__init__.py

@@ -11,7 +11,7 @@ __author__ = "Davide Testa"
 __email__ = "davide@davte.it"
 __email__ = "davide@davte.it"
 __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"]
 __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"]
 __license__ = "GNU General Public License v3.0"
 __license__ = "GNU General Public License v3.0"
-__version__ = "2.9.4"
+__version__ = "2.9.5"
 __maintainer__ = "Davide Testa"
 __maintainer__ = "Davide Testa"
 __contact__ = "t.me/davte"
 __contact__ = "t.me/davte"
 
 

+ 8 - 3
davtelepot/utilities.py

@@ -1713,16 +1713,21 @@ def recursive_dictionary_update(one: dict, other: dict) -> dict:
     return one
     return one
 
 
 
 
-async def aio_subprocess_shell(command: str) -> Tuple[str, str]:
+async def aio_subprocess_shell(command: str,
+                               stdout=None,
+                               stderr=None) -> Tuple[str, str]:
     """Run `command` in a subprocess shell.
     """Run `command` in a subprocess shell.
 
 
     Await for the subprocess to end and return standard error and output.
     Await for the subprocess to end and return standard error and output.
     On error, log errors.
     On error, log errors.
+    If `stdout` and/or `stderr` are given, use them as output and/or error pipes.
+    Example of non-null standard output/error pipe: asyncio.subprocess.PIPE
     """
     """
-    stdout, stderr = None, None
     try:
     try:
         _subprocess = await asyncio.create_subprocess_shell(
         _subprocess = await asyncio.create_subprocess_shell(
-            command
+            command,
+            stdout=stdout,
+            stderr=stderr
         )
         )
         stdout, stderr = await _subprocess.communicate()
         stdout, stderr = await _subprocess.communicate()
         if stdout:
         if stdout: