o
    [h'                     @   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
suboffsetsZinternalZ
smalltabler   N)__name__
__module____qualname__r   r
   r   r   r   	c_ssize_pZ_fields_r   insert r.   r.   x/home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/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    Zfrom_addressr   PyBuffer_Release)r   writabler   flagsZbuffer_typer.   r.   r/   
get_buffern   s   
r7   c                   @      e Zd Zdd Zdd ZdS )_WindowsConsoleRawIOBasec                 C   
   || _ d S r0   )handle)selfr;   r.   r.   r/   __init__z      
z!_WindowsConsoleRawIOBase.__init__c                 C   s   t j|  dS NT)io	RawIOBaseisattyr<   r.   r.   r/   rB   }   s   z_WindowsConsoleRawIOBase.isattyN)r)   r*   r+   r=   rB   r.   r.   r.   r/   r9   y       r9   c                   @   r8   )_WindowsConsoleReaderc                 C      dS r?   r.   rC   r.   r.   r/   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)r5   g?zWindows error: {})r    
ValueErrorr7   r   ReadConsoleWr   r;   r   GetLastErrorERROR_OPERATION_ABORTEDtimesleepOSErrorr$   EOFvalue)r<   bZbytes_to_be_readbufferZcode_units_to_be_readZcode_units_readrvr.   r.   r/   readinto   s0   


z_WindowsConsoleReader.readintoN)r)   r*   r+   rG   rU   r.   r.   r.   r/   rE      rD   rE   c                   @   s(   e Zd Zdd Zedd Zdd ZdS )_WindowsConsoleWriterc                 C   rF   r?   r.   rC   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 {})rW   rX   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    r7   minMAX_BYTES_WRITTENr   WriteConsoleWr   r;   r   rQ   rO   rZ   rK   )r<   rR   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+   r5   staticmethodrZ   r^   r.   r.   r.   r/   rV      s
    
rV   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 r0   )_text_streamrS   )r<   text_streamZbyte_streamr.   r.   r/   r=      s   
zConsoleStream.__init__c                 C   s   | j jS r0   )rS   namerC   r.   r.   r/   rc      s   zConsoleStream.namec                 C   sB   t |tr| j|S z|   W n	 ty   Y nw | j|S r0   )
isinstancer   ra   r^   flush	ExceptionrS   )r<   xr.   r.   r/   r^      s   
zConsoleStream.writec                 C   s   |D ]}|  | qd S r0   )r^   )r<   linesliner.   r.   r/   
writelines   s   zConsoleStream.writelinesc                 C      t | j|S r0   )getattrra   r<   rc   r.   r.   r/   __getattr__      zConsoleStream.__getattr__c                 C   s
   | j  S r0   )rS   rB   rC   r.   r.   r/   rB      r>   zConsoleStream.isattyc                 C   s   d | j| jS )Nz'<ConsoleStream name={!r} encoding={!r}>)r$   rc   encodingrC   r.   r.   r/   __repr__   s   zConsoleStream.__repr__N)r)   r*   r+   r=   propertyrc   r^   rj   rn   rB   rq   r.   r.   r.   r/   r`      s    
	r`   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:   r0   )_WindowsChunkedWriter__wrapped)r<   wrappedr.   r.   r/   r=      s   
zWindowsChunkedWriter.__init__c                 C   rk   r0   )rl   rt   rm   r.   r.   r/   rn      ro   z WindowsChunkedWriter.__getattr__c                 C   sR   t |}d}||k r't|| t}| j||||   ||7 }||k s
d S d S )Nr   )r    r[   r\   rt   r^   )r<   textZtotal_to_writeZwrittenZto_writer.   r.   r/   r^      s   zWindowsChunkedWriter.writeN)r)   r*   r+   __doc__r=   rn   r^   r.   r.   r.   r/   rs      s
    rs   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setattrrs   rl   add)rc   r.   r.   r/   _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   r@   BufferedReaderrE   STDIN_HANDLEr`   Zbuffer_streamrb   r.   r.   r/   _get_text_stdin     
r   c                 C   r   r   )r   r@   BufferedWriterrV   STDOUT_HANDLEr`   r   r.   r.   r/   _get_text_stdout  r   r   c                 C   r   r   )r   r@   r   rV   STDERR_HANDLEr`   r   r.   r.   r/   _get_text_stderr"  r   r   c                   C   s   t dtjdd  S )N r   )zlibcrc32joinry   argvr.   r.   r.   r/   _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 r.   r.   ).0iZargv_unicoder.   r/   
<listcomp>9  s    z%_get_windows_argv.<locals>.<listcomp>frozenr   -)z-cz-m)r   r   r   r   r   rangerQ   r   hasattrry   r    
startswith)Zargcr   argr.   r   r/   _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   rO   msvcrtZget_osfhandleboolGetConsoleModer   r   )fr   r;   r.   r.   r/   _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   NrS   )r7   r   _stream_factoriesgetr   r   rl   r   ZsetmodeosO_BINARY)r   rp   errorsfuncr.   r.   r/   _get_windows_console_stream_  s$   r   )F)Nctypesr@   r   ry   rM   r   r   r   r   r   r   r   r   r	   r
   r   r   r   Zctypes.wintypesr   r   r   r   r   Z_compatr   r   r   r   r3   r4   ImportErrorr,   Zkernel32ZGetStdHandlerJ   r]   r   rK   r   Zshell32r   r   r   r   r   r2   r1   rW   rX   rL   ZSTDIN_FILENOZSTDOUT_FILENOZSTDERR_FILENOrP   r\   Z	Structurer   r7   rA   r9   rE   rV   objectr`   rs   setr{   r~   r   r   r   r   Z_initial_argv_hashr   r   r   r   r.   r.   r.   r/   <module>   s   	


	# "


