docs: def run_process(*args, input=None):
      """Run an external process.
  
      Parameters
      ----------
      *args : list of str
          The arguments to pass to the external process. The first argument should
          be the executable to call.
      input : str or bytes
          The input stream to supply to the extenal process.
  
      Return
      ------
          Object wrapping the executed process.
      """
      shell = os.name == 'nt'
      start_time = _time()
      cp = subprocess.run(
          args, input=input, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
          shell=shell, bufsize=1, universal_newlines=True
      )
      end_time = _time()
      return CompletedProcessWrapper(cp, start_time, end_time)