U
    nËj´  ã                   @   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sät‚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Z0dZ1dZ2dZ3zd d lm4Z4 W n e5k
�rÞ   dZ6Y n(X G d!d"„ d"eƒZ7e4j8Z8e4j9Z9d=d$d%„Z6G d&d'„ d'e j:ƒZ;G d(d)„ d)e;ƒZ<G d*d+„ d+e;ƒZ=G d,d-„ d-ƒZ>ej?ej@d.œd/d0„ZAej?ej@d.œd1d2„ZBej?ej@d.œd3d4„ZCeAeBeCd5œZDejEeFejGej?gej@f f eHd6< ej@eId7œd8d9„ZJej@ejKeL ejKeL ejKej@ d:œd;d<„ZMd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Ú
suboffsetsZinternalN)
Ú__name__Ú
__module__Ú__qualname__r   r
   r   r   r   Ú	c_ssize_pÚ_fields_© r,   r,   ú5/tmp/pip-unpacked-wheel-jwr801_l/click/_winconsole.pyr   K   s   õr   Fc              	   C   sT   t ƒ }|rtnt}tt| ƒt|ƒ|ƒ zt|j }| 	|j
¡W ¢S tt|ƒƒ X d S ©N)r   ÚPyBUF_WRITABLEÚPyBUF_SIMPLEÚPyObject_GetBufferr
   r   ÚPyBuffer_Releaser   r   Úfrom_addressr   )r   Úwritabler   ÚflagsZbuffer_typer,   r,   r-   Ú
get_buffer]   s    
r6   c                       s$   e Zd Zdd„ Z‡ fdd„Z‡  ZS )Ú_WindowsConsoleRawIOBasec                 C   s
   || _ d S r.   )Úhandle)Úselfr8   r,   r,   r-   Ú__init__j   s    z!_WindowsConsoleRawIOBase.__init__c                    s   t ƒ  ¡  dS ©NT)ÚsuperÚisatty©r9   ©Ú	__class__r,   r-   r=   m   s    
z_WindowsConsoleRawIOBase.isatty)r'   r(   r)   r:   r=   Ú__classcell__r,   r,   r?   r-   r7   i   s   r7   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_WindowsConsoleReaderc                 C   s   dS r;   r,   r>   r,   r,   r-   Úreadables   s    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rht
 d¡ |s|tdtƒ › �ƒ‚|d tkrŒdS d|j S )Nr   r   z>cannot read odd number of bytes from UTF-16-LE encoded consoleT)r4   gš™™™™™¹?zWindows error: )r   Ú
ValueErrorr6   r   ÚReadConsoleWr   r8   r   ÚGetLastErrorÚERROR_OPERATION_ABORTEDÚtimeÚsleepÚOSErrorÚEOFÚvalue)r9   ÚbZbytes_to_be_readÚbufferZcode_units_to_be_readZcode_units_readÚrvr,   r,   r-   Úreadintov   s0    ÿû

z_WindowsConsoleReader.readintoN)r'   r(   r)   rC   rP   r,   r,   r,   r-   rB   r   s   rB   c                   @   s(   e Zd Zdd„ Zedd„ ƒZdd„ ZdS )Ú_WindowsConsoleWriterc                 C   s   dS r;   r,   r>   r,   r,   r-   r4   –   s    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 )rR   rS   )Ú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rh|dkrht
|  tƒ ¡ƒ‚|S )Nr   r   )r   r6   ÚminÚMAX_BYTES_WRITTENr   ÚWriteConsoleWr   r8   r   rL   rJ   rU   rF   )r9   rM   Zbytes_to_be_writtenr   Zcode_units_to_be_writtenZcode_units_writtenZbytes_writtenr,   r,   r-   Úwrite¡   s    û
z_WindowsConsoleWriter.writeN)r'   r(   r)   r4   ÚstaticmethodrU   rY   r,   r,   r,   r-   rQ   •   s   
rQ   c                   @   s†   e Zd Zejejddœdd„Zeedœdd„ƒZ	ej
edœd	d
„Zejej
 ddœdd„Zeejdœdd„Zedœdd„Zdd„ ZdS )ÚConsoleStreamN)Útext_streamÚbyte_streamÚreturnc                 C   s   || _ || _d S r.   )Ú_text_streamrN   )r9   r\   r]   r,   r,   r-   r:   ¶   s    zConsoleStream.__init__)r^   c                 C   s   | j jS r.   )rN   Únamer>   r,   r,   r-   r`   º   s    zConsoleStream.name)Úxr^   c                 C   sD   t |tƒr| j |¡S z|  ¡  W n tk
r6   Y nX | j |¡S r.   )Ú
isinstanceÚstrr_   rY   ÚflushÚ	ExceptionrN   )r9   ra   r,   r,   r-   rY   ¾   s    
zConsoleStream.write)Úlinesr^   c                 C   s   |D ]}|   |¡ qd S r.   )rY   )r9   rf   Úliner,   r,   r-   Ú
writelinesÇ   s    zConsoleStream.writelines)r`   r^   c                 C   s   t | j|ƒS r.   )Úgetattrr_   )r9   r`   r,   r,   r-   Ú__getattr__Ë   s    zConsoleStream.__getattr__c                 C   s
   | j  ¡ S r.   )rN   r=   r>   r,   r,   r-   r=   Î   s    zConsoleStream.isattyc                 C   s   d| j ›d| j›d�S )Nz<ConsoleStream name=z
 encoding=ú>)r`   Úencodingr>   r,   r,   r-   Ú__repr__Ñ   s    zConsoleStream.__repr__)r'   r(   r)   ÚtÚTextIOÚBinaryIOr:   Úpropertyrc   r`   ÚAnyStrÚintrY   ÚIterablerh   ÚAnyrj   Úboolr=   rm   r,   r,   r,   r-   r[   µ   s   	r[   )Úbuffer_streamr^   c                 C   s.   t t ttƒ¡dddd�}t tjt|| ƒ¡S ©Nú	utf-16-leÚstrictT)Úline_buffering)	r   ÚioÚBufferedReaderrB   ÚSTDIN_HANDLErn   Úcastro   r[   ©rw   r\   r,   r,   r-   Ú_get_text_stdinÕ   s    ür�   c                 C   s.   t t ttƒ¡dddd�}t tjt|| ƒ¡S rx   )	r   r|   ÚBufferedWriterrQ   ÚSTDOUT_HANDLErn   r   ro   r[   r€   r,   r,   r-   Ú_get_text_stdoutß   s    ür„   c                 C   s.   t t ttƒ¡dddd�}t tjt|| ƒ¡S rx   )	r   r|   r‚   rQ   ÚSTDERR_HANDLErn   r   ro   r[   r€   r,   r,   r-   Ú_get_text_stderré   s    ür†   )r   r   r   Ú_stream_factories)Úfr^   c              	   C   sV   t | dƒsdS z|  ¡ }W n ttjfk
r6   Y dS X t |¡}tt|t	t
ƒ ƒƒƒS )NÚfilenoF)Úhasattrr‰   rJ   r|   ÚUnsupportedOperationÚmsvcrtZget_osfhandlerv   ÚGetConsoleModer   r   )rˆ   r‰   r8   r,   r,   r-   Ú_is_consoleú   s    

rŽ   )rˆ   rl   Úerrorsr^   c                 C   sZ   t d k	rV|dkrV|dkrVt| ƒrVt |  ¡ ¡}|d k	rVt| dd ƒ}|d krNd S ||ƒS d S )N>   Nry   >   Nrz   rN   )r6   rŽ   r‡   Úgetr‰   ri   )rˆ   rl   r�   ÚfuncrM   r,   r,   r-   Ú_get_windows_console_stream  s    ÿþýür’   )F)Nr|   ÚsysrH   Útypingrn   Úctypesr   r   r   r   r   r   r   r	   r
   r   Zctypes.wintypesr   r   r   r   Ú_compatr   ÚplatformÚAssertionErrorrŒ   r   r   r*   Úkernel32ZGetStdHandlerE   rX   r�   rF   r   Úshell32r   r   r~   rƒ   r…   r0   r/   rR   rS   rG   ZSTDIN_FILENOZSTDOUT_FILENOZSTDERR_FILENOrK   rW   r   ÚImportErrorr6   r   r1   r2   Ú	RawIOBaser7   rB   rQ   r[   rp   ro   r�   r„   r†   r‡   ÚMappingrs   ÚCallableÚ__annotations__rv   rŽ   ÚOptionalrc   r’   r,   r,   r,   r-   Ú<module>	   s’    ÿ

	#  

ý(  
þ