| 
                        123456789101112131415161718192021222324252627282930313233343536 | 
                        - #
 - #  Copyright 2025 The InfiniFlow Authors. All Rights Reserved.
 - #
 - #  Licensed under the Apache License, Version 2.0 (the "License");
 - #  you may not use this file except in compliance with the License.
 - #  You may obtain a copy of the License at
 - #
 - #      http://www.apache.org/licenses/LICENSE-2.0
 - #
 - #  Unless required by applicable law or agreed to in writing, software
 - #  distributed under the License is distributed on an "AS IS" BASIS,
 - #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 - #  See the License for the specific language governing permissions and
 - #  limitations under the License.
 - #
 - import asyncio
 - from typing import Tuple
 - 
 - 
 - async def async_run_command(*args, timeout: float = 5) -> Tuple[int, str, str]:
 -     """Safe asynchronous command execution tool"""
 -     proc = await asyncio.create_subprocess_exec(*args, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE)
 - 
 -     try:
 -         stdout, stderr = await asyncio.wait_for(proc.communicate(), timeout=timeout)
 -         if proc.returncode is None:
 -             raise RuntimeError("Process finished but returncode is None")
 -         return proc.returncode, stdout.decode(), stderr.decode()
 -     except asyncio.TimeoutError:
 -         proc.kill()
 -         await proc.wait()
 -         raise RuntimeError("Command timed out")
 -     except Exception as e:
 -         proc.kill()
 -         await proc.wait()
 -         raise e
 
 
  |