[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.226.186.94: ~ $
"""distutils.spawn

Provides the 'spawn()' function, a front-end to various platform-
specific functions for launching another program in a sub-process.
Also provides the 'find_executable()' to search the path for a given
executable name.
"""

import sys
import os
import subprocess

from .errors import DistutilsExecError
from .debug import DEBUG
from ._log import log


def spawn(cmd, search_path=1, verbose=0, dry_run=0, env=None):  # noqa: C901
    """Run another program, specified as a command list 'cmd', in a new process.

    'cmd' is just the argument list for the new process, ie.
    cmd[0] is the program to run and cmd[1:] are the rest of its arguments.
    There is no way to run a program with a name different from that of its
    executable.

    If 'search_path' is true (the default), the system's executable
    search path will be used to find the program; otherwise, cmd[0]
    must be the exact path to the executable.  If 'dry_run' is true,
    the command will not actually be run.

    Raise DistutilsExecError if running the program fails in any way; just
    return on success.
    """
    # cmd is documented as a list, but just in case some code passes a tuple
    # in, protect our %-formatting code against horrible death
    cmd = list(cmd)

    log.info(subprocess.list2cmdline(cmd))
    if dry_run:
        return

    if search_path:
        executable = find_executable(cmd[0])
        if executable is not None:
            cmd[0] = executable

    env = env if env is not None else dict(os.environ)

    if sys.platform == 'darwin':
        from distutils.util import MACOSX_VERSION_VAR, get_macosx_target_ver

        macosx_target_ver = get_macosx_target_ver()
        if macosx_target_ver:
            env[MACOSX_VERSION_VAR] = macosx_target_ver

    try:
        proc = subprocess.Popen(cmd, env=env)
        proc.wait()
        exitcode = proc.returncode
    except OSError as exc:
        if not DEBUG:
            cmd = cmd[0]
        raise DistutilsExecError(
            "command {!r} failed: {}".format(cmd, exc.args[-1])
        ) from exc

    if exitcode:
        if not DEBUG:
            cmd = cmd[0]
        raise DistutilsExecError(
            "command {!r} failed with exit code {}".format(cmd, exitcode)
        )


def find_executable(executable, path=None):
    """Tries to find 'executable' in the directories listed in 'path'.

    A string listing directories separated by 'os.pathsep'; defaults to
    os.environ['PATH'].  Returns the complete filename or None if not found.
    """
    _, ext = os.path.splitext(executable)
    if (sys.platform == 'win32') and (ext != '.exe'):
        executable = executable + '.exe'

    if os.path.isfile(executable):
        return executable

    if path is None:
        path = os.environ.get('PATH', None)
        if path is None:
            try:
                path = os.confstr("CS_PATH")
            except (AttributeError, ValueError):
                # os.confstr() or CS_PATH is not available
                path = os.defpath
        # bpo-35755: Don't use os.defpath if the PATH environment variable is
        # set to an empty string

    # PATH='' doesn't match, whereas PATH=':' looks in the current directory
    if not path:
        return None

    paths = path.split(os.pathsep)
    for p in paths:
        f = os.path.join(p, executable)
        if os.path.isfile(f):
            # the file exists, we have a shot at spawn working
            return f
    return None

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
command Folder 0755
__init__.py File 359 B 0644
_collections.py File 5.18 KB 0644
_functools.py File 1.73 KB 0644
_log.py File 43 B 0644
_macos_compat.py File 239 B 0644
_modified.py File 2.35 KB 0644
_msvccompiler.py File 19.16 KB 0644
archive_util.py File 8.37 KB 0644
bcppcompiler.py File 14.38 KB 0644
ccompiler.py File 47.5 KB 0644
cmd.py File 17.44 KB 0644
config.py File 4.8 KB 0644
core.py File 9.18 KB 0644
cygwinccompiler.py File 11.64 KB 0644
debug.py File 139 B 0644
dep_util.py File 349 B 0644
dir_util.py File 7.88 KB 0644
dist.py File 49 KB 0644
errors.py File 3.5 KB 0644
extension.py File 10.03 KB 0644
fancy_getopt.py File 17.48 KB 0644
file_util.py File 8.02 KB 0644
filelist.py File 13.39 KB 0644
log.py File 1.17 KB 0644
msvc9compiler.py File 29.48 KB 0644
msvccompiler.py File 23.02 KB 0644
py38compat.py File 217 B 0644
py39compat.py File 1.92 KB 0644
spawn.py File 3.41 KB 0644
sysconfig.py File 18.48 KB 0644
text_file.py File 11.8 KB 0644
unixccompiler.py File 15.24 KB 0644
util.py File 17.68 KB 0644
version.py File 12.65 KB 0644
versionpredicate.py File 5.08 KB 0644