U
    (Q^#                     @   s4  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ZddlmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZ zd dlmZ ejZejZW n ek
r   dZY nX d dlmZmZ ee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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Z2G dd dej3Z4edkr~dZ5n
d/ddZ5G dd de j6Z7G dd de7Z8G dd de7Z9G dd de:Z;G dd de:Z<e= Z>d d! Z?d"d# Z@d$d% ZAd&d' ZBe
rd(d) ZCeC ZDd*d+ ZEe@eAeBd,ZFd-d. ZGdS )0    N   )_NonClosingTextIOWrapper	text_typePY2)byrefPOINTERc_intc_charc_char_pc_void_p	py_object	c_ssize_tc_ulongwindllWINFUNCTYPE)	pythonapi)LPWSTRLPCWSTRGetCommandLineWCommandLineToArgvWiii   i        i  c                   @   sj   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
rfe	dded f dS )	Py_bufferbufobjlenitemsizereadonlyndimformatshapestrides
suboffsetsZinternalZ
smalltabler   N)__name__
__module____qualname__r   r   r   r   r
   	c_ssize_p_fields_r   insert r+   r+   4/tmp/pip-install-bd4o36v9/click/click/_winconsole.pyr   @   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_bufferX   s    
r5   c                   @   s   e Zd Zdd Zdd ZdS )_WindowsConsoleRawIOBasec                 C   s
   || _ d S r-   )handle)selfr7   r+   r+   r,   __init__e   s    z!_WindowsConsoleRawIOBase.__init__c                 C   s   t j|  dS NT)io	RawIOBaseisattyr8   r+   r+   r,   r=   h   s    z_WindowsConsoleRawIOBase.isattyN)r%   r&   r'   r9   r=   r+   r+   r+   r,   r6   c   s   r6   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,   readableo   s    z_WindowsConsoleReader.readablec                 C   s   t |}|sdS |d r tdt|dd}|d }t }t| j||t|d }t tkrdt	
d |svtdt  |d tkrdS d|j S )Nr   r   z>cannot read odd number of bytes from UTF-16-LE encoded consoleT)r3   g?zWindows error: %s)r   
ValueErrorr5   r   ReadConsoleWr7   r   GetLastErrorERROR_OPERATION_ABORTEDtimesleepOSErrorEOFvalue)r8   bZbytes_to_be_readbufferZcode_units_to_be_readZcode_units_readrvr+   r+   r,   readintor   s&    
 

z_WindowsConsoleReader.readintoN)r%   r&   r'   r@   rM   r+   r+   r+   r,   r?   m   s   r?   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,   r3      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 %s)rO   rP   )errnor+   r+   r,   _get_error_message   s
    z(_WindowsConsoleWriter._get_error_messagec                 C   sh   t |}t|}t|td }t }t| j||t|d  d|j }|dkrd|dkrdt	| 
t |S )Nr   r   )r   r5   minMAX_BYTES_WRITTENr   WriteConsoleWr7   r   rI   rG   rR   rC   )r8   rJ   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'   r3   staticmethodrR   rV   r+   r+   r+   r,   rN      s   
rN   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 r-   )_text_streamrK   )r8   text_streamZbyte_streamr+   r+   r,   r9      s    zConsoleStream.__init__c                 C   s   | j jS r-   )rK   namer>   r+   r+   r,   r[      s    zConsoleStream.namec                 C   sD   t |tr| j|S z|   W n tk
r6   Y nX | j|S r-   )
isinstancer   rY   rV   flush	ExceptionrK   )r8   xr+   r+   r,   rV      s    
zConsoleStream.writec                 C   s   |D ]}|  | qd S r-   )rV   )r8   linesliner+   r+   r,   
writelines   s    zConsoleStream.writelinesc                 C   s   t | j|S r-   )getattrrY   r8   r[   r+   r+   r,   __getattr__   s    zConsoleStream.__getattr__c                 C   s
   | j  S r-   )rK   r=   r>   r+   r+   r,   r=      s    zConsoleStream.isattyc                 C   s   d| j | jf S )Nz#<ConsoleStream name=%r encoding=%r>)r[   encodingr>   r+   r+   r,   __repr__   s    zConsoleStream.__repr__N)r%   r&   r'   r9   propertyr[   rV   rb   re   r=   rg   r+   r+   r+   r,   rX      s   
	rX   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   s
   || _ d S r-   )_WindowsChunkedWriter__wrapped)r8   wrappedr+   r+   r,   r9      s    zWindowsChunkedWriter.__init__c                 C   s   t | j|S r-   )rc   rj   rd   r+   r+   r,   re      s    z WindowsChunkedWriter.__getattr__c                 C   sH   t |}d}||k rDt|| t}| j||||   ||7 }qd S )Nr   )r   rS   rT   rj   rV   )r8   textZtotal_to_writeZwrittenZto_writer+   r+   r,   rV      s    zWindowsChunkedWriter.writeN)r%   r&   r'   __doc__r9   re   rV   r+   r+   r+   r,   ri      s   ri   c                 C   sD   t r@t d d dkr@| tkr@tt| ttt|  t|  d S )Nr   )   r   )r   sysgetwindowsversion_wrapped_std_streamssetattrri   rc   add)r[   r+   r+   r,   _wrap_std_stream   s     rt   c                 C   s$   t tttdddd}t|| S N	utf-16-lestrictT)line_buffering)r   r;   BufferedReaderr?   STDIN_HANDLErX   Zbuffer_streamrZ   r+   r+   r,   _get_text_stdin   s      r|   c                 C   s$   t tttdddd}t|| S ru   )r   r;   BufferedWriterrN   STDOUT_HANDLErX   r{   r+   r+   r,   _get_text_stdout   s      r   c                 C   s$   t tttdddd}t|| S ru   )r   r;   r}   rN   STDERR_HANDLErX   r{   r+   r+   r,   _get_text_stderr   s      r   c                   C   s   t dtjdd  S )N r   )zlibcrc32joinro   argvr+   r+   r+   r,   _hash_py_argv  s    r   c                     s   t d} tt t|   fddtd| jD }ttds|dd  }t|dkr|d }|	dr|dkrpq|dd  }|	drHqqH|dd  S )Nr   c                    s   g | ]} | qS r+   r+   ).0iZargv_unicoder+   r,   
<listcomp>  s     z%_get_windows_argv.<locals>.<listcomp>frozenr   -)z-cz-m)
r   r   r   r   rangerI   hasattrro   r   
startswith)Zargcr   argr+   r   r,   _get_windows_argv	  s    

r   )r   r   r   c                 C   s|   t d k	rx|dkrx|dkrxt| drx|  rxt|  }|d k	rxts^t| dd } | d krpd S nt	|  t
j || S d S )N)rv   N)rw   Nr=   rK   )r5   r   r=   _stream_factoriesgetfilenor   rc   msvcrtZsetmodeosO_BINARY)frf   errorsfuncr+   r+   r,   _get_windows_console_stream"  s"    r   )F)Hr;   r   ro   r   rE   ctypesr   _compatr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r0   r1   ImportErrorZctypes.wintypesr   r   r(   kernel32ZGetStdHandlerB   rU   rC   r   shell32r   rz   r~   r   r/   r.   rO   rP   rD   ZSTDIN_FILENOZSTDOUT_FILENOZSTDERR_FILENOrH   rT   	Structurer   r5   r<   r6   r?   rN   objectrX   ri   setrq   rt   r|   r   r   r   Z_initial_argv_hashr   r   r   r+   r+   r+   r,   <module>   s   4

  


$