o
    5‘ði{  ã                   @  sþ   d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	m
Z
mZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ erLdd
lmZ ede
d�Zdd„ Zd,dd„Zed-dd„ƒZed.dd„ƒZd/dd„Z			d0d1d$d%„Zd2d3d*d+„ZdS )4z–distutils.spawn

Provides the 'spawn()' function, a front-end to various platform-
specific functions for launching another program in a sub-process.
é    )ÚannotationsN)ÚMappingÚMutableSequence)ÚTYPE_CHECKINGÚTypeVarÚoverloadé   )Úlog©ÚDEBUG)ÚDistutilsExecError)Ú_ENVÚ	_MappingT)Úboundc                 C  s   t r| S | d S )zE
    Render a subprocess command differently depending on DEBUG.
    r   r
   )Úcmd© r   úZ/root/parts/websockify/install/lib/python3.10/site-packages/setuptools/_distutils/spawn.pyÚ_debug   s   r   Úenvú_MappingT | NoneÚreturnú'_MappingT | dict[str, str | int] | Nonec                 C  sF   t  ¡ dkr| S ddlm}m} |ƒ }|r||ini }i t| ƒ¥|¥S )NÚDarwinr   )ÚMACOSX_VERSION_VARÚget_macosx_target_ver)ÚplatformÚsystemÚutilr   r   Ú_resolve)r   r   r   Ú
target_verÚupdater   r   r   Ú_inject_macos_ver$   s   r!   ÚNoneúos._Environ[str]c                 C  ó   d S ©Nr   ©r   r   r   r   r   /   ó   r   c                 C  r$   r%   r   r&   r   r   r   r   1   r'   ú_MappingT | os._Environ[str]c                 C  s   | d u rt jS | S r%   )ÚosÚenvironr&   r   r   r   r   3   s   TFr   ú/MutableSequence[bytes | str | os.PathLike[str]]Úsearch_pathÚboolÚverboseú_ENV | Nonec              
   C  s¸   t  t | ¡¡ |rt | d ¡}|dur|| d< ztj| t|ƒd� W dS  tyA } zt	dt
| ƒ›d|jd › �ƒ|‚d}~w tjy[ } zt	dt
| ƒ›d|j› �ƒ|‚d}~ww )aN  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.

    Raise DistutilsExecError if running the program fails in any way; just
    return on success.
    r   Nr&   zcommand z	 failed: éÿÿÿÿz failed with exit code )r	   ÚinfoÚ
subprocessÚlist2cmdlineÚshutilÚwhichÚ
check_callr!   ÚOSErrorr   r   ÚargsÚCalledProcessErrorÚ
returncode)r   r,   r.   r   Ú
executableÚexcÚerrr   r   r   Úspawn7   s,   ÿþ€ÿþ€ÿr>   r;   ÚstrÚpathú
str | Nonec              	   C  sØ   t jdtdd� tj | ¡\}}tjdkr|dkr| d } tj | ¡r%| S |du rJtj	 
dd¡}|du rJzt d¡}W n ttfyI   tj}Y nw |sNdS | tj¡}|D ]}tj || ¡}tj |¡ri|  S qVdS )	zÚ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.
    z+Use shutil.which instead of find_executableé   )Ú
stacklevelÚwin32z.exeNÚPATHÚCS_PATH)ÚwarningsÚwarnÚDeprecationWarningr)   r@   ÚsplitextÚsysr   Úisfiler*   ÚgetÚconfstrÚAttributeErrorÚ
ValueErrorÚdefpathÚsplitÚpathsepÚjoin)r;   r@   Ú_ÚextÚpathsÚpÚfr   r   r   Úfind_executable^   s2   ÿ
þþrZ   )r   r   r   r   )r   r"   r   r#   )r   r   r   r   )r   r   r   r(   )TFN)
r   r+   r,   r-   r.   r-   r   r/   r   r"   r%   )r;   r?   r@   rA   r   rA   )Ú__doc__Ú
__future__r   r)   r   r4   r2   rK   rG   Úcollections.abcr   r   Útypingr   r   r   Ú_logr	   Údebugr   Úerrorsr   r   r   r   r!   r   r>   rZ   r   r   r   r   Ú<module>   s8    

ü'