o
    jF                     @  s~  U d dl mZ d dl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
Zd dlmZ d dlmZ e	jdZe	jdZedZ		ddddZdddZdddZG dd dejZG dd dZddd d!Zddd"d#Zdd%d&Zdd'd(Zdd)d*Z dd-d.Z!dd/d0Z"		ddd6d7Z#	ddd9d:Z$	ddd<d=Z%dd>d?Z&dd@dAZ'ddBdCZ(dddDdEZ)dddFdGZ*dddHdIZ+ddMdNZ,	O		P	dddUdVZ-G dWdX dXZ.ddYdZZ/dd[d\Z0	ddd`daZ1e	jdrerdbdcl2m3Z3 ddddeZ4n
ddfdeZ4ddidjZ3ddmdnZ5ddodpZ6ddudvZ7e7dwdx e)Z8e7dydx e*Z9e7dzdx e+Z:e&e'e(d{Z;d|e<d}< e)e*e+d{Z=d~e<d< dS )    )annotationsN)TracebackTypeWeakKeyDictionarycygwinwinz\033\[[0-?]*[ -/]*[@-~]Fstream
t.BinaryIOencoding
str | Noneerrorsforce_readableboolforce_writablereturnt.TextIOc                 C  s0   |d u rt | }|d u rd}t| ||d||dS )NreplaceT)line_bufferingr   r   )get_best_encoding_NonClosingTextIOWrapper)r   r
   r   r   r    r   K/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/click/_compat.py_make_text_stream   s   r   strc                 C  s(   z	t | jdkW S  ty   Y dS w )z$Checks if a given encoding is ascii.asciiF)codecslookupnameLookupError)r
   r   r   r   is_ascii_encoding+   s
   r   t.IO[t.Any]c                 C  s$   t | ddp	t }t|rdS |S )z1Returns the default stream encoding if not found.r
   Nzutf-8)getattrsysgetdefaultencodingr   r   rvr   r   r   r   3   s   r   c                      s8   e Zd Z		dd fddZdddZdddZ  ZS )r   Fr   r	   r
   r   r   r   r   r   extrat.Anyr   Nonec                   s8   t t jt||| | _}t j|||fi | d S N)tcastBinaryIO_FixupStream_streamsuper__init__)selfr   r
   r   r   r   r&   	__class__r   r   r0   <   s   	
z!_NonClosingTextIOWrapper.__init__c                 C  s$   z|    W d S  ty   Y d S w r)   )detach	Exceptionr1   r   r   r   __del__J   s
   z _NonClosingTextIOWrapper.__del__c                 C  s
   | j  S r)   )r.   isattyr6   r   r   r   r8   P   s   
z_NonClosingTextIOWrapper.isattyFF)r   r	   r
   r   r   r   r   r   r   r   r&   r'   r   r(   )r   r(   r   r   )__name__
__module____qualname__r0   r7   r8   __classcell__r   r   r2   r   r   ;   s    
r   c                   @  sR   e Zd ZdZ		d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 )!r-   aQ  The new io interface needs more from streams than streams
    traditionally implement.  As such, this fix-up code is necessary in
    some circumstances.

    The forcing of readable and writable flags are there because some tools
    put badly patched objects on sys (one such offender are certain version
    of jupyter notebook).
    Fr   r	   r   r   r   c                 C  s   || _ || _|| _d S r)   )r.   _force_readable_force_writable)r1   r   r   r   r   r   r   r0   _   s   
z_FixupStream.__init__r   r   r   r'   c                 C     t | j|S r)   )r!   r.   r1   r   r   r   r   __getattr__i      z_FixupStream.__getattr__sizeintbytesc                 C  s2   t | jdd }|d urtt||S | j|S )Nread1)r!   r.   r*   r+   rG   read)r1   rE   fr   r   r   rH   l   s   z_FixupStream.read1c                 C  sV   | j rdS t| jdd }|d urtt| S z	| jd W dS  ty*   Y dS w )NTreadabler   F)r?   r!   r.   r*   r+   r   rI   r5   r1   xr   r   r   rK   t   s   z_FixupStream.readablec                 C  s|   | j rdS t| jdd }|d urtt| S z	| jd W dS  ty=   z
| jd W Y dS  ty<   Y Y dS w w )NTwritable    F)r@   r!   r.   r*   r+   r   writer5   rL   r   r   r   rN      s    z_FixupStream.writablec                 C  sR   t | jdd }|d urtt| S z| j| j  W dS  ty(   Y dS w )NseekableFT)r!   r.   r*   r+   r   seektellr5   rL   r   r   r   rQ      s   z_FixupStream.seekableNr9   )r   r	   r   r   r   r   r   r   r   r'   )rE   rF   r   rG   r:   )
r;   r<   r=   __doc__r0   rC   rH   rK   rN   rQ   r   r   r   r   r-   U   s    




r-   defaultc                 C  s*   z	t | dtW S  ty   | Y S w Nr   )
isinstancerI   rG   r5   r   rV   r   r   r   _is_binary_reader   s
   rZ   c                 C  sL   z|  d W dS  ty%   z	|  d W Y dS  ty$   Y | Y S w w )NrO    FT)rP   r5   rY   r   r   r   _is_binary_writer   s   
r\   t.BinaryIO | Nonec                 C  H   t | drttj| S t| dd }|d ur"t |dr"ttj|S d S NFbufferT)rZ   r*   r+   r,   r!   r   bufr   r   r   _find_binary_reader      
rc   c                 C  r^   r_   )r\   r*   r+   r,   r!   ra   r   r   r   _find_binary_writer   rd   re   c                 C  s   t t| ddpdS )z3A stream is misconfigured if its encoding is ASCII.r
   Nr   )r   r!   r   r   r   r   _stream_is_misconfigured      rg   attrvaluec                 C  s$   t | |d}||kp|du o|duS )zA stream attribute is compatible if it is equal to the
    desired value or the desired value is unset and the attribute
    has a value.
    N)r!   )r   ri   rj   stream_valuer   r   r   _is_compat_stream_attr   s   rl   c                 C  s   t | d|ot | d|S )zcCheck if a stream's encoding and errors attributes are
    compatible with the desired values.
    r
   r   )rl   )r   r
   r   r   r   r   _is_compatible_text_stream   s
   
rm   text_stream	is_binary%t.Callable[[t.IO[t.Any], bool], bool]find_binary,t.Callable[[t.IO[t.Any]], t.BinaryIO | None]c           	      C  s~   || drt t j| }n#t t j| } t| ||r$|d u r"t| s$| S || }|d u r.| S |}|d u r6d}t|||||dS )NFr   )r   r   )r*   r+   r,   TextIOrm   rg   r   )	rn   r
   r   ro   rq   r   r   binary_readerpossible_binary_readerr   r   r   _force_correct_text_stream   s&   
	rv   text_readerc                 C     t | ||tt|dS )Nr   )rv   rZ   rc   )rw   r
   r   r   r   r   r   _force_correct_text_reader     rz   text_writerc                 C  rx   )Nr   )rv   r\   re   )r|   r
   r   r   r   r   r   _force_correct_text_writer/  r{   r~   c                  C     t tj} | d u rtd| S )Nz6Was not able to determine binary stream for sys.stdin.)rc   r"   stdinRuntimeError)readerr   r   r   get_binary_stdin?     
r   c                  C  r   )Nz7Was not able to determine binary stream for sys.stdout.)re   r"   stdoutr   writerr   r   r   get_binary_stdoutF  r   r   c                  C  r   )Nz7Was not able to determine binary stream for sys.stderr.)re   r"   stderrr   r   r   r   r   get_binary_stderrM  r   r   c                 C  ,   t tj| |}|d ur|S ttj| |ddS )NTry   )_get_windows_console_streamr"   r   rz   r
   r   r%   r   r   r   get_text_stdinT     r   c                 C  r   NTr}   )r   r"   r   r~   r   r   r   r   get_text_stdout[  r   r   c                 C  r   r   )r   r"   r   r~   r   r   r   r   get_text_stderrb  r   r   filestr | os.PathLike[str] | intmodec                 C  s"   d|v r	t | |S t | |||dS )z?Handles not passing ``encoding`` and ``errors`` in binary mode.br
   r   )open)r   r   r
   r   r   r   r   _wrap_io_openi  s   
r   rstrictfilenamestr | os.PathLike[str]atomictuple[t.IO[t.Any], bool]c              
     s  d v }t | } t | dkr9t fdddD r*|r"t dfS t||ddfS |r1t dfS t||ddfS |sDt|  ||dfS d	 v rLt	d
d v rTt	dd vr\t	ddd l
}dd l}zt | j}W n tyw   d }Y nw t jt jB t jB }	|r|	tt ddO }		 t jt j| d|dd}
zt |
|	|d u rdn|}W n3 ty } z'|j
|jkst jdkr|j
|jkrt j|jrt |jt jrW Y d }~q d }~ww |d urt |
| t| ||}t ||
t j!| }t"#t"j$t"j% |dfS )Nr   -c                 3  s    | ]}| v V  qd S r)   r   ).0mr   r   r   	<genexpr>  s    zopen_stream.<locals>.<genexpr>)warM   Fr   Tr   zAppending to an existing file is not supported, because that would involve an expensive `copy`-operation to a temporary file. Open the file in normal `w`-mode and copy explicitly if that's what you're after.rM   z&Use the `overwrite`-parameter instead.r   z,Atomic writes only make sense with `w`-mode.r   O_BINARYz.__atomic-writel        08xi  nt)&osfspathfsdecodeanyr   r   r   r   r   
ValueErrorerrnorandomstatst_modeOSErrorO_RDWRO_CREATO_EXCLr!   pathjoindirname	randranger   EEXISTr   EACCESisdirr   accessW_OKchmod_AtomicFilerealpathr*   r+   IOAny)r   r   r
   r   r   binaryr   r   permflagstmp_filenamefderJ   afr   r   r   open_streamv  sn   





r   c                   @  sX   e Zd Zd"dd	Zed#d
dZd$d%ddZd&ddZd'ddZd(ddZ	d#dd Z
d!S ))r   rJ   r    r   r   real_filenamer   r(   c                 C  s   || _ || _|| _d| _d S NF)_f_tmp_filename_real_filenameclosed)r1   rJ   r   r   r   r   r   r0     s   
z_AtomicFile.__init__c                 C  s   | j S r)   )r   r6   r   r   r   r     s   z_AtomicFile.nameFdeleter   c                 C  s.   | j rd S | j  t| j| j d| _ d S )NT)r   r   closer   r   r   r   )r1   r   r   r   r   r     s
   

z_AtomicFile.closer   r'   c                 C  rA   r)   )r!   r   rB   r   r   r   rC     rD   z_AtomicFile.__getattr__c                 C  s   | S r)   r   r6   r   r   r   	__enter__  s   z_AtomicFile.__enter__exc_typetype[BaseException] | None	exc_valueBaseException | NonetbTracebackType | Nonec                 C  s   | j |d ud d S )N)r   )r   )r1   r   r   r   r   r   r   __exit__  rh   z_AtomicFile.__exit__c                 C  s
   t | jS r)   )reprr   r6   r   r   r   __repr__  s   
z_AtomicFile.__repr__N)rJ   r    r   r   r   r   r   r(   r   r   F)r   r   r   r(   rT   )r   r   )r   r   r   r   r   r   r   r(   )r;   r<   r=   r0   propertyr   r   rC   r   r   r   r   r   r   r   r     s    



r   c                 C  s   t d| S )Nr[   )_ansi_resub)rj   r   r   r   
strip_ansi  rD   r   c                 C  s0   t | ttfr| j} t | ttfs| jjdS )Nz
ipykernel.)rX   r-   r   r.   r3   r<   
startswithrf   r   r   r   _is_jupyter_kernel_output  s   r   t.IO[t.Any] | Nonecolorbool | Nonec                 C  s@   |d u r| d u rt j} nt| drdS t|  ot|  S | S )Nr   F)r"   r   hasattrr8   r   )r   r   r   r   r   should_strip_ansi  s   
r      )r   c                  C  s   dd l } |  S rW   )localegetpreferredencoding)r   r   r   r   _get_argv_encoding  s   r   c                   C  s   t tjdd p
t S )Nr
   )r!   r"   r   getfilesystemencodingr   r   r   r   r     s   rJ   t.TextIO | Nonec                 C  s   d S r)   r   )rJ   r
   r   r   r   r   r     s   r   rM   rF   c                 C  s   t t| S r)   )lenr   )rM   r   r   r   term_len  rD   r   c                 C  s    z|   W S  ty   Y dS w r   )r8   r5   rf   r   r   r   r8     s
   
r8   src_funct.Callable[[], t.TextIO | None]wrapper_funct.Callable[[], t.TextIO]c                   s   t   d fdd}|S )Nr   r   c                    sn    } | d u r	d S z  | }W n ty   d }Y nw |d ur"|S  }z| | < W |S  ty6   Y |S w r)   )getr5   r$   cacher   r   r   r   func)  s$   
z&_make_cached_stream_func.<locals>.func)r   r   r   )r   r   r   r   r   r   _make_cached_stream_func#  s   r   c                   C     t jS r)   )r"   r   r   r   r   r   <lambda>?      r   c                   C  r   r)   )r"   r   r   r   r   r   r   @  r   c                   C  r   r)   )r"   r   r   r   r   r   r   A  r   )r   r   r   z-cabc.Mapping[str, t.Callable[[], t.BinaryIO]]binary_streamszAcabc.Mapping[str, t.Callable[[str | None, str | None], t.TextIO]]text_streamsr9   )r   r	   r
   r   r   r   r   r   r   r   r   r   )r
   r   r   r   )r   r    r   r   r   )r   r    rV   r   r   r   )r   r    r   r]   )r   r   r   r   )r   r   ri   r   rj   r   r   r   )r   r   r
   r   r   r   r   r   )rn   r    r
   r   r   r   ro   rp   rq   rr   r   r   r   r   r   r   )
rw   r    r
   r   r   r   r   r   r   r   )
r|   r    r
   r   r   r   r   r   r   r   )r   r	   )NN)r
   r   r   r   r   r   )
r   r   r   r   r
   r   r   r   r   r    )r   Nr   F)r   r   r   r   r
   r   r   r   r   r   r   r   )rj   r   r   r   )r   r    r   r   )r   r   r   r   r   r   r   )rJ   r   r
   r   r   r   r   r   )rM   r   r   rF   )r   r   r   r   r   r   )>
__future__r   r   collections.abcabccabcior   rer"   typingr*   typesr   weakrefr   platformr   CYGWINWINcompiler   r   r   r   TextIOWrapperr   r-   rZ   r\   rc   re   rg   rl   rm   rv   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   _winconsoler   r   r   r8   r   _default_text_stdin_default_text_stdout_default_text_stderrr   __annotations__r  r   r   r   r   <module>   s    


E	



	
	2



Q
$





