o
    ­+ca´  ã                	   @   sú  U 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 ejdksrJ ‚d dlZd dlmZ d dlmZ 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eƒdejfƒZ%edƒZ&edƒZ'edƒZ(d Z)dZ*d Z+dZ,dZ-d Z.dZ/dZ0dZ1dZ2zd d lm3Z3 W n e4yí   dZ5Y nw G d!d"„ d"eƒZ6e3j7Z7e3j8Z8d?d$d%„Z5G d&d'„ d'e j9ƒZ:G d(d)„ d)e:ƒZ;G d*d+„ d+e:ƒZ<G d,d-„ d-ƒZ=d.ej>d/ej?fd0d1„Z@d.ej>d/ej?fd2d3„ZAd.ej>d/ej?fd4d5„ZBe@eAeBd6œZCejDeEejFej>gej?f f eGd7< d8ej?d/eHfd9d:„ZId8ej?d;ejJeK d<ejJeK d/ejJej? fd=d>„ZLdS )@é    N)Úbyref)Úc_char)Úc_char_p)Úc_int)Ú	c_ssize_t)Úc_ulong)Úc_void_p)ÚPOINTER)Ú	py_object)Ú	Structure)ÚDWORD)ÚHANDLE)ÚLPCWSTR)ÚLPWSTRé   )Ú_NonClosingTextIOWrapperÚwin32)Úwindll)ÚWINFUNCTYPEÚGetCommandLineWÚCommandLineToArgvWÚ	LocalFreeiöÿÿÿiõÿÿÿiôÿÿÿé   iã  é   ó   iÿ  )Ú	pythonapic                   @   sR   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	dS )Ú	Py_bufferÚbufÚobjÚlenÚitemsizeÚreadonlyÚndimÚformatÚshapeÚstridesÚ
suboffsetsÚinternalN)
Ú__name__Ú
__module__Ú__qualname__r   r
   r   r   r   Ú	c_ssize_pÚ_fields_© r-   r-   ú3/usr/lib/python3/dist-packages/click/_winconsole.pyr   K   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_typer-   r-   r.   Ú
get_buffer]   s   
r8   c                       s$   e Zd Zdd„ Z‡ fdd„Z‡  ZS )Ú_WindowsConsoleRawIOBasec                 C   s
   || _ d S r/   )Úhandle)Úselfr:   r-   r-   r.   Ú__init__j   ó   
z!_WindowsConsoleRawIOBase.__init__c                    s   t ƒ  ¡  dS ©NT)ÚsuperÚisatty©r;   ©Ú	__class__r-   r.   r@   m   s   
z_WindowsConsoleRawIOBase.isatty)r(   r)   r*   r<   r@   Ú__classcell__r-   r-   rB   r.   r9   i   s    r9   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_WindowsConsoleReaderc                 C   ó   dS r>   r-   rA   r-   r-   r.   Úreadables   ó   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)r5   gš™™™™™¹?zWindows error: )r   Ú
ValueErrorr8   r   ÚReadConsoleWr   r:   r   ÚGetLastErrorÚERROR_OPERATION_ABORTEDÚtimeÚsleepÚOSErrorÚEOFÚvalue)r;   ÚbÚbytes_to_be_readÚbufferÚcode_units_to_be_readÚcode_units_readÚrvr-   r-   r.   Úreadintov   s0   ÿû


z_WindowsConsoleReader.readintoN)r(   r)   r*   rG   rX   r-   r-   r-   r.   rE   r   s    rE   c                   @   s(   e Zd Zdd„ Zedd„ ƒZdd„ ZdS )Ú_WindowsConsoleWriterc                 C   rF   r>   r-   rA   r-   r-   r.   r5   –   rH   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 )rZ   r[   )Úerrnor-   r-   r.   Ú_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   r8   ÚminÚMAX_BYTES_WRITTENr   ÚWriteConsoleWr   r:   r   rQ   rO   r]   rK   )r;   rR   Úbytes_to_be_writtenr   Úcode_units_to_be_writtenÚcode_units_writtenÚbytes_writtenr-   r-   r.   Úwrite¡   s   û
z_WindowsConsoleWriter.writeN)r(   r)   r*   r5   Ústaticmethodr]   re   r-   r-   r-   r.   rY   •   s
    
rY   c                   @   s�   e Zd Zdejdejddfdd„Zedefdd„ƒZ	d	ej
defd
d„Zdejej
 ddfdd„Zdedejfdd„Zdefdd„Zdd„ ZdS )ÚConsoleStreamÚtext_streamÚbyte_streamÚreturnNc                 C   s   || _ || _d S r/   )Ú_text_streamrT   )r;   rh   ri   r-   r-   r.   r<   ¶   s   
zConsoleStream.__init__c                 C   s   | j jS r/   )rT   ÚnamerA   r-   r-   r.   rl   º   s   zConsoleStream.nameÚxc                 C   sB   t |tƒr| j |¡S z|  ¡  W n	 ty   Y nw | j |¡S r/   )Ú
isinstanceÚstrrk   re   ÚflushÚ	ExceptionrT   )r;   rm   r-   r-   r.   re   ¾   s   
ÿzConsoleStream.writeÚlinesc                 C   s   |D ]}|   |¡ qd S r/   )re   )r;   rr   Úliner-   r-   r.   Ú
writelinesÇ   s   ÿzConsoleStream.writelinesrl   c                 C   s   t | j|ƒS r/   )Úgetattrrk   )r;   rl   r-   r-   r.   Ú__getattr__Ë   s   zConsoleStream.__getattr__c                 C   s
   | j  ¡ S r/   )rT   r@   rA   r-   r-   r.   r@   Î   r=   zConsoleStream.isattyc                 C   s   d| j ›d| j›d�S )Nz<ConsoleStream name=z
 encoding=ú>)rl   ÚencodingrA   r-   r-   r.   Ú__repr__Ñ   s   zConsoleStream.__repr__)r(   r)   r*   ÚtÚTextIOÚBinaryIOr<   Úpropertyro   rl   ÚAnyStrÚintre   ÚIterablert   ÚAnyrv   Úboolr@   ry   r-   r-   r-   r.   rg   µ   s    	rg   Úbuffer_streamrj   c                 C   ó.   t t ttƒ¡dddd�}t tjt|| ƒ¡S ©Nú	utf-16-leÚstrictT)Úline_buffering)	r   ÚioÚBufferedReaderrE   ÚSTDIN_HANDLErz   Úcastr{   rg   ©rƒ   rh   r-   r-   r.   Ú_get_text_stdinÕ   ó   ürŽ   c                 C   r„   r…   )	r   r‰   ÚBufferedWriterrY   ÚSTDOUT_HANDLErz   rŒ   r{   rg   r�   r-   r-   r.   Ú_get_text_stdoutß   r�   r’   c                 C   r„   r…   )	r   r‰   r�   rY   ÚSTDERR_HANDLErz   rŒ   r{   rg   r�   r-   r-   r.   Ú_get_text_stderré   r�   r”   )r   r   r   Ú_stream_factoriesÚfc              	   C   sT   t | dƒsdS z|  ¡ }W n ttjfy   Y dS w t |¡}tt|t	t
ƒ ƒƒƒS )NÚfilenoF)Úhasattrr—   rO   r‰   ÚUnsupportedOperationÚmsvcrtÚget_osfhandler‚   ÚGetConsoleModer   r   )r–   r—   r:   r-   r-   r.   Ú_is_consoleú   s   
ÿ
r�   rx   Úerrorsc                 C   sj   t d ur+|dv r-|dv r/t| ƒr1t |  ¡ ¡}|d ur3t| dd ƒ}|d u r'd S ||ƒS d S d S d S d S d S )N>   Nr†   >   Nr‡   rT   )r8   r�   r•   Úgetr—   ru   )r–   rx   rž   ÚfuncrR   r-   r-   r.   Ú_get_windows_console_stream  s   ÿôr¡   )F)Mr‰   ÚsysrM   Útypingrz   Úctypesr   r   r   r   r   r   r   r	   r
   r   Úctypes.wintypesr   r   r   r   Ú_compatr   Úplatformrš   r   r   r+   Úkernel32ÚGetStdHandlerJ   r`   rœ   rK   r   Úshell32r   r   r‹   r‘   r“   r1   r0   rZ   r[   rL   ÚSTDIN_FILENOÚSTDOUT_FILENOÚSTDERR_FILENOrP   r_   r   ÚImportErrorr8   r   r2   r4   Ú	RawIOBaser9   rE   rY   rg   r|   r{   rŽ   r’   r”   r•   ÚMappingr   ÚCallableÚ__annotations__r‚   r�   ÚOptionalro   r¡   r-   r-   r-   r.   Ú<module>   sœ   
ÿý
	#  

(ýÿÿÿ
þ