o
    
j_!                     @  s  U d dl mZ d dlm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mZ ejdksJ 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Z0d Z1dZ2d Z3dZ4dZ5d Z6dZ7d Z8d!Z9d"Z:e	j;rzd d#lm<Z< W n e=y   d d#l>m<Z< Y nw zd d$l
m?Z? W n e=y#   dZ@Y nw G d%d& d&eZAe?jBZBe?jCZCdMdNd.d/Z@G d0d1 d1ejDZEG d2d3 d3eEZFG d4d5 d5eEZGG d6d7 d7ZHdOd;d<ZIdOd=d>ZJdOd?d@ZKeIeJeKdAZLdBeMdC< dPdEdFZNdQdKdLZOdS )R    )annotationsN)Array)byref)c_char)c_char_p)c_int)	c_ssize_t)c_ulong)c_void_p)POINTER)	py_object)	Structure)DWORD)HANDLE)LPCWSTR)LPWSTR)gettext   )_NonClosingTextIOWrapperwin32)windll)WINFUNCTYPEGetCommandLineWCommandLineToArgvW	LocalFreeiii   i        i  )Buffer)	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_ r1   r1   D/home/kuhnn/.local/lib/python3.10/site-packages/click/_winconsole.pyr    X   s    r    Fr"   r   writableboolreturnArray[c_char]c              	   C  s^   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"   r3   r!   flagsbuffer_typeoutr1   r1   r2   
get_bufferj   s   
r@   c                      s(   e Zd Zd
ddZd fdd	Z  ZS )_WindowsConsoleRawIOBasehandle
int | Noner5   Nonec                 C  s
   || _ d S r7   )rB   )selfrB   r1   r1   r2   __init__x      
z!_WindowsConsoleRawIOBase.__init__t.Literal[True]c                   s   t    dS NT)superisattyrE   	__class__r1   r2   rK   {   s   
z_WindowsConsoleRawIOBase.isatty)rB   rC   r5   rD   r5   rH   )r,   r-   r.   rF   rK   __classcell__r1   r1   rM   r2   rA   w   s    
rA   c                   @  s    e Zd ZdddZddd	Zd
S )_WindowsConsoleReaderr5   rH   c                 C     dS rI   r1   rL   r1   r1   r2   readable      z_WindowsConsoleReader.readablebr   intc                 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 |sAttdjt d|d tkrIdS d|j S )	Nr   r   z>cannot read odd number of bytes from UTF-16-LE encoded consoleT)r3   g?Windows error: {error}error)r#   
ValueErrorr@   r	   ReadConsoleWr   rB   r   GetLastErrorERROR_OPERATION_ABORTEDtimesleepOSError_r'   EOFvalue)rE   rU   bytes_to_be_readbuffercode_units_to_be_readcode_units_readrvr1   r1   r2   readinto   s0   


z_WindowsConsoleReader.readintoNrO   rU   r   r5   rV   )r,   r-   r.   rS   ri   r1   r1   r1   r2   rQ      s    
rQ   c                   @  s.   e Zd ZdddZeddd	ZdddZdS )_WindowsConsoleWriterr5   rH   c                 C  rR   rI   r1   rL   r1   r1   r2   r3      rT   z_WindowsConsoleWriter.writableerrnorV   strc                 C  s(   | t krdS | tkrdS tdj| dS )NERROR_SUCCESSERROR_NOT_ENOUGH_MEMORYrW   rX   )rn   ro   ra   r'   )rl   r1   r1   r2   _get_error_message   s
   z(_WindowsConsoleWriter._get_error_messagerU   r   c                 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   rB   r   rc   r`   rp   r\   )rE   rU   bytes_to_be_writtenr!   code_units_to_be_writtencode_units_writtenbytes_writtenr1   r1   r2   write   s   
z_WindowsConsoleWriter.writeNrO   )rl   rV   r5   rm   rj   )r,   r-   r.   r3   staticmethodrp   rx   r1   r1   r1   r2   rk      s
    
rk   c                   @  sV   e Zd ZdddZed d
dZd!ddZd"ddZd#ddZd$ddZ	d ddZ
dS )%ConsoleStreamtext_streamt.TextIObyte_stream
t.BinaryIOr5   rD   c                 C  s   || _ || _d S r7   )_text_streamre   )rE   r{   r}   r1   r1   r2   rF      s   
zConsoleStream.__init__rm   c                 C  s   | j jS r7   )re   namerL   r1   r1   r2   r      s   zConsoleStream.namext.AnyStrrV   c                 C  sB   t |tr| j|S z|   W n	 ty   Y nw | j|S r7   )
isinstancerm   r   rx   flush	Exceptionre   )rE   r   r1   r1   r2   rx      s   
zConsoleStream.writelinescabc.Iterable[t.AnyStr]c                 C  s   |D ]}|  | qd S r7   )rx   )rE   r   liner1   r1   r2   
writelines   s   zConsoleStream.writelinesr   t.Anyc                 C  s   t | j|S r7   )getattrr   )rE   r   r1   r1   r2   __getattr__   s   zConsoleStream.__getattr__r4   c                 C  s
   | j  S r7   )re   rK   rL   r1   r1   r2   rK      rG   zConsoleStream.isattyc                 C  s   d| j d| jdS )Nz<ConsoleStream name=z
 encoding=>)r   encodingrL   r1   r1   r2   __repr__   s   zConsoleStream.__repr__N)r{   r|   r}   r~   r5   rD   )r5   rm   )r   r   r5   rV   )r   r   r5   rD   )r   rm   r5   r   )r5   r4   )r,   r-   r.   rF   propertyr   rx   r   r   rK   r   r1   r1   r1   r2   rz      s    


	

rz   buffer_streamr~   r|   c                 C  .   t tttdddd}ttjt|| S N	utf-16-lestrictT)line_buffering)	r   ioBufferedReaderrQ   STDIN_HANDLEtcastTextIOrz   r   r{   r1   r1   r2   _get_text_stdin      r   c                 C  r   r   )	r   r   BufferedWriterrk   STDOUT_HANDLEr   r   r   rz   r   r1   r1   r2   _get_text_stdout   r   r   c                 C  r   r   )	r   r   r   rk   STDERR_HANDLEr   r   r   rz   r   r1   r1   r2   _get_text_stderr   r   r   )r   r   r   z5cabc.Mapping[int, t.Callable[[t.BinaryIO], t.TextIO]]_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   r`   r   UnsupportedOperationmsvcrtget_osfhandler4   GetConsoleModer   r   )r   r   rB   r1   r1   r2   _is_console  s   

r   r   
str | Noneerrorst.TextIO | Nonec                 C  s^   t d u s|dvs|dvst| sd S t|  }|d u rd S t| dd }|d u r+d S ||S )N>   Nr   >   Nr   re   )r@   r   r   getr   r   )r   r   r   funcrU   r1   r1   r2   _get_windows_console_stream  s   r   )F)r"   r   r3   r4   r5   r6   )r   r~   r5   r|   )r   r|   r5   r4   )r   r|   r   r   r   r   r5   r   )P
__future__r   collections.abcabccabcr   sysr^   typingr   ctypesr   r   r   r   r   r   r	   r
   r   r   r   ctypes.wintypesr   r   r   r   r   ra   _compatr   platformr   r   r   r/   kernel32GetStdHandler[   rs   r   r\   r   shell32r   r   r   r   r   r9   r8   rn   ro   r]   STDIN_FILENOSTDOUT_FILENOSTDERR_FILENOrb   rr   TYPE_CHECKINGr   ImportErrortyping_extensionsr   r@   r    r:   r<   	RawIOBaserA   rQ   rk   rz   r   r   r   r   __annotations__r   r   r1   r1   r1   r2   <module>   s   	# 
 




