o
    i'                     @   s  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 d dl mZ d dl mZ d dl m	Z	 d dl m
Z
 d dl mZ d dl mZ d d	l mZ d d
l mZ d dl mZ d dl mZ d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlZddlmZ ddlmZ ddlmZ zd dl mZ ejZejZW n ey   dZY nw ee
Z ej!Z!e!j"Z"e!j#Z#e!j$Z$e!j%Z%e!j&Z&eedej!fZ'eeeeee	dej(fZ)ee je jdej!fZ*e"dZ+e"dZ,e"dZ-d Z.dZ/d Z0dZ1dZ2d Z3dZ4dZ5d Z6d!Z7G d"d# d#e j8Z9edu rdZ:ndBd%d&Z:G d'd( d(ej;Z<G d)d* d*e<Z=G d+d, d,e<Z>G d-d. d.e?Z@G d/d0 d0e?ZAeB ZCd1d2 ZDd3d4 ZEd5d6 ZFd7d8 ZGerbd9d: ZHeH ZId;d< ZJeEeFeGd=ZKd>d? ZLd@dA ZMdS )C    N)byref)c_char)c_char_p)c_int)	c_ssize_t)c_ulong)c_void_p)POINTER)	py_object)windll)WinError)WINFUNCTYPE)DWORD)HANDLE)LPCWSTR)LPWSTR   )_NonClosingTextIOWrapper)PY2)	text_type)	pythonapiGetCommandLineWCommandLineToArgvW	LocalFreeiii   i        i  c                   @   sn   e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefgZ	e
r5e	dded f dS dS )	Py_bufferbufobjlenitemsizereadonlyndimformatshapestrides
suboffsetsinternal
smalltabler   N)__name__
__module____qualname__r   r
   r   r   r   	c_ssize_p_fields_r   insert r1   r1   L/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/click/_winconsole.pyr   U   s     r   Fc              	   C   sZ   t  }|rtnt}tt| t|| zt|j }||j	W t
t| S t
t| w N)r   PyBUF_WRITABLEPyBUF_SIMPLEPyObject_GetBufferr
   r   r   r    from_addressr   PyBuffer_Release)r   writabler   flagsbuffer_typer1   r1   r2   
get_buffern   s   
r<   c                   @      e Zd Zdd Zdd ZdS )_WindowsConsoleRawIOBasec                 C   
   || _ d S r3   )handle)selfr@   r1   r1   r2   __init__z      
z!_WindowsConsoleRawIOBase.__init__c                 C   s   t j|  dS NT)io	RawIOBaseisattyrA   r1   r1   r2   rG   }   s   z_WindowsConsoleRawIOBase.isattyN)r+   r,   r-   rB   rG   r1   r1   r1   r2   r>   y       r>   c                   @   r=   )_WindowsConsoleReaderc                 C      dS rD   r1   rH   r1   r1   r2   readable      z_WindowsConsoleReader.readablec                 C   s   t |}|sdS |d rtdt|dd}|d }t }tt| j||t|d }t t	kr4t
d |s>tdt |d tkrFdS d|j S )Nr   r   z>cannot read odd number of bytes from UTF-16-LE encoded consoleT)r9   g?zWindows error: {})r    
ValueErrorr<   r   ReadConsoleWr   r@   r   GetLastErrorERROR_OPERATION_ABORTEDtimesleepOSErrorr$   EOFvalue)rA   bbytes_to_be_readbuffercode_units_to_be_readcode_units_readrvr1   r1   r2   readinto   s0   


z_WindowsConsoleReader.readintoN)r+   r,   r-   rL   r]   r1   r1   r1   r2   rJ      rI   rJ   c                   @   s(   e Zd Zdd Zedd Zdd ZdS )_WindowsConsoleWriterc                 C   rK   rD   r1   rH   r1   r1   r2   r9      rM   z_WindowsConsoleWriter.writablec                 C   s"   | t krdS | tkrdS d| S )NERROR_SUCCESSERROR_NOT_ENOUGH_MEMORYzWindows error {})r_   r`   r$   )errnor1   r1   r2   _get_error_message   s
   
z(_WindowsConsoleWriter._get_error_messagec                 C   sl   t |}t|}t|td }t }tt| j||t|d  d|j	 }|dkr4|dkr4t
| t |S )Nr   r   )r    r<   minMAX_BYTES_WRITTENr   WriteConsoleWr   r@   r   rV   rT   rb   rP   )rA   rW   bytes_to_be_writtenr   code_units_to_be_writtencode_units_writtenbytes_writtenr1   r1   r2   write   s   
z_WindowsConsoleWriter.writeN)r+   r,   r-   r9   staticmethodrb   rj   r1   r1   r1   r2   r^      s
    
r^   c                   @   sH   e Zd Zdd Zedd Zdd Zdd Zd	d
 Zdd Z	dd Z
dS )ConsoleStreamc                 C   s   || _ || _d S r3   )_text_streamrY   )rA   text_streambyte_streamr1   r1   r2   rB      s   
zConsoleStream.__init__c                 C   s   | j jS r3   )rY   namerH   r1   r1   r2   rp      s   zConsoleStream.namec                 C   sB   t |tr| j|S z|   W n	 ty   Y nw | j|S r3   )
isinstancer   rm   rj   flush	ExceptionrY   )rA   xr1   r1   r2   rj      s   
zConsoleStream.writec                 C   s   |D ]}|  | qd S r3   )rj   )rA   linesliner1   r1   r2   
writelines   s   zConsoleStream.writelinesc                 C      t | j|S r3   )getattrrm   rA   rp   r1   r1   r2   __getattr__      zConsoleStream.__getattr__c                 C   s
   | j  S r3   )rY   rG   rH   r1   r1   r2   rG      rC   zConsoleStream.isattyc                 C   s   d | j| jS )Nz'<ConsoleStream name={!r} encoding={!r}>)r$   rp   encodingrH   r1   r1   r2   __repr__   s   zConsoleStream.__repr__N)r+   r,   r-   rB   propertyrp   rj   rw   r{   rG   r~   r1   r1   r1   r2   rl      s    
	rl   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	WindowsChunkedWriterz
    Wraps a stream (such as stdout), acting as a transparent proxy for all
    attribute access apart from method 'write()' which we wrap to write in
    limited chunks due to a Windows limitation on binary console streams.
    c                 C   r?   r3   )_WindowsChunkedWriter__wrapped)rA   wrappedr1   r1   r2   rB      s   
zWindowsChunkedWriter.__init__c                 C   rx   r3   )ry   r   rz   r1   r1   r2   r{      r|   z WindowsChunkedWriter.__getattr__c                 C   sR   t |}d}||k r't|| t}| j||||   ||7 }||k s
d S d S )Nr   )r    rc   rd   r   rj   )rA   texttotal_to_writewrittento_writer1   r1   r2   rj      s   zWindowsChunkedWriter.writeN)r+   r,   r-   __doc__rB   r{   rj   r1   r1   r1   r2   r      s
    r   c                 C   sP   t r"t d d dkr$| tvr&tt| ttt|  t|  d S d S d S d S )Nr   )   r   )r   sysgetwindowsversion_wrapped_std_streamssetattrr   ry   add)rp   r1   r1   r2   _wrap_std_stream  s   r   c                 C   $   t tttdddd}t|| S N	utf-16-lestrictT)line_buffering)r   rE   BufferedReaderrJ   STDIN_HANDLErl   buffer_streamrn   r1   r1   r2   _get_text_stdin     
r   c                 C   r   r   )r   rE   BufferedWriterr^   STDOUT_HANDLErl   r   r1   r1   r2   _get_text_stdout  r   r   c                 C   r   r   )r   rE   r   r^   STDERR_HANDLErl   r   r1   r1   r2   _get_text_stderr"  r   r   c                   C   s   t dtjdd  S )N r   )zlibcrc32joinr   argvr1   r1   r1   r2   _hash_py_argv.  s   r   c                     s   t d} tt t|   st z fddtd| jD }W t   nt   w tt	ds]|dd  }t
|dkr]|d }|drJ|dkrKn|dd  }|drWnt
|dks=|dd  S )Nr   c                    s   g | ]} | qS r1   r1   ).0iargv_unicoder1   r2   
<listcomp>9  s    z%_get_windows_argv.<locals>.<listcomp>frozenr   -)z-cz-m)r   r   r   r   r   rangerV   r   hasattrr   r    
startswith)argcr   argr1   r   r2   _get_windows_argv3  s*   

r   )r   r   r   c                 C   sN   t | dsdS z|  }W n
 ty   Y dS w t|}tt|tt S )NfilenoF)	r   r   rT   msvcrtget_osfhandleboolGetConsoleModer   r   )fr   r@   r1   r1   r2   _is_consoleR  s   

r   c                 C   s   t d ur:|dv r<|dv r>t| r@t|  }|d urBts-t| dd } | d u r)d S || S t|  t	j
 || S d S d S d S d S d S )N)r   N)r   NrY   )r<   r   _stream_factoriesgetr   r   ry   r   setmodeosO_BINARY)r   r}   errorsfuncr1   r1   r2   _get_windows_console_stream_  s$   r   )F)NctypesrE   r   r   rR   r   r   r   r   r   r   r   r   r	   r
   r   r   r   ctypes.wintypesr   r   r   r   r   _compatr   r   r   r   r6   r8   ImportErrorr.   kernel32GetStdHandlerO   re   r   rP   r   shell32r   r   r   r   r   r5   r4   r_   r`   rQ   STDIN_FILENOSTDOUT_FILENOSTDERR_FILENOrU   rd   	Structurer   r<   rF   r>   rJ   r^   objectrl   r   setr   r   r   r   r   r   _initial_argv_hashr   r   r   r   r1   r1   r1   r2   <module>   s   	


	# "


