a
    ç´«jê	  ã                   @   sp   d Z ddlZddlZddlZg d¢ZG dd„ dƒZG dd„ dƒZG dd	„ d	ƒZejd
kr^eZ	nejdkrleZ	dS )zq
Helper functions for interacting with the shell, and consuming shell-style
parameters provided in config files.
é    N)ÚWindowsParserÚPosixParserÚNativeParserc                   @   s(   e Zd ZdZedd„ ƒZedd„ ƒZdS )ÚCommandLineParsera  
    An object that knows how to split and join command-line arguments.

    It must be true that ``argv == split(join(argv))`` for all ``argv``.
    The reverse neednt be true - `join(split(cmd))` may result in the addition
    or removal of unnecessary escaping.
    c                 C   s   t ‚dS )z5 Join a list of arguments into a command line string N©ÚNotImplementedError©Úargv© r
   ú[/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/numpy/distutils/_shell_utils.pyÚjoin   s    zCommandLineParser.joinc                 C   s   t ‚dS )z6 Split a command line string into a list of arguments Nr   ©Úcmdr
   r
   r   Úsplit   s    zCommandLineParser.splitN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr   r   r
   r
   r
   r   r      s
   
r   c                   @   s(   e Zd ZdZedd„ ƒZedd„ ƒZdS )r   z¯
    The parsing behavior used by `subprocess.call("string")` on Windows, which
    matches the Microsoft C/C++ runtime.

    Note that this is _not_ the behavior of cmd.
    c                 C   s
   t  | ¡S ©N)Ú
subprocessÚlist2cmdliner   r
   r
   r   r   &   s    zWindowsParser.joinc                    sÄ   dd l }z
|j W n ty(   t‚Y n0 | s2g S d|  } |jjj}| |j¡|_|j| |j	¡f|_
| 	¡ }|| | |¡ƒ‰ ‡ fdd„t|jƒD ƒ}|jj ˆ ¡r¨J ‚|d dks¸J ‚|dd … S )Nr   zdummy c                    s   g | ]}ˆ | ‘qS r
   r
   )Ú.0Úi©Zlpargsr
   r   Ú
<listcomp>?   ó    z'WindowsParser.split.<locals>.<listcomp>Údummyé   )ÚctypesÚwindllÚAttributeErrorr   Zshell32ÚCommandLineToArgvWÚPOINTERÚ	c_wchar_pÚrestypeÚc_intÚargtypesÚbyrefÚrangeÚvalueZkernel32Z	LocalFree)r   r    r#   ÚnargsÚargsr
   r   r   r   +   s"    


zWindowsParser.splitNr   r
   r
   r
   r   r      s
   
r   c                   @   s(   e Zd ZdZedd„ ƒZedd„ ƒZdS )r   zX
    The parsing behavior used by `subprocess.call("string", shell=True)` on Posix.
    c                 C   s   d  dd„ | D ƒ¡S )Nú c                 s   s   | ]}t  |¡V  qd S r   )ÚshlexÚquote)r   Úargr
   r
   r   Ú	<genexpr>M   r   z#PosixParser.join.<locals>.<genexpr>)r   r   r
   r
   r   r   K   s    zPosixParser.joinc                 C   s   t j| dd�S )NT)Úposix)r/   r   r   r
   r
   r   r   O   s    zPosixParser.splitNr   r
   r
   r
   r   r   G   s
   
r   Úntr3   )
r   Úosr/   r   Ú__all__r   r   r   Únamer   r
   r
   r
   r   Ú<module>   s   (

