o
    [ÞhI  ã                   @  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dZded< e d	¡Z	
	
d…d†dd„Zd‡dd„Zdˆdd„ZG dd„ dejƒZG dd „ d ƒZd‰dŠd"d#„Zd‰dŠd$d%„Zd‹d'd(„Z d‹d)d*„Z!dŒd+d,„Z"d�d/d0„Z#dŽd1d2„Z$	
	
d…d�d8d9„Z%	
d‰d�d;d<„Z&	
d‰d‘d>d?„Z'd’d@dA„Z(d’dBdC„Z)d’dDdE„Z*d“d”dFdG„Z+d“d”dHdI„Z,d“d”dJdK„Z-d•dOdP„Z.	Q		R	
d–d—dWdX„Z/G dYdZ„ dZƒZ0d˜d[d\„Z1d™d]d^„Z2	d“dšdbdc„Z3e	j d¡�re�rdddel4m5Z5 d›dfdg„Z6eƒ Z7dhedi< dœd�djd„Zn
d›dkdg„Z6dždndo„Z5dŸdrds„Z8d™dtdu„Z9d dzd{„Z:e:d|d}„ e+ƒZ;e:d~d}„ e,ƒZ<e:dd}„ 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't.Callable[[t.TextIO], t.TextIO] | NoneÚauto_wrap_for_ansiz\033\[[;?0-9]*[a-zA-Z]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   úM/var/www/html/premium_crap/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   0   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   r1   9   s   	
ÿz!_NonClosingTextIOWrapper.__init__c                 C  s$   z|   ¡  W d S  ty   Y d S w r*   )ÚdetachÚ	Exception©r2   r   r   r   Ú__del__G   s
   ÿz _NonClosingTextIOWrapper.__del__c                 C  s
   | j  ¡ S r*   )r/   Úisattyr7   r   r   r   r9   M   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__r1   r8   r9   Ú__classcell__r   r   r3   r   r   8   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)r2   r	   r   r   r   r   r   r1   \   s   
z_FixupStream.__init__r   r   r   r(   c                 C  ó   t | j|ƒS r*   )r"   r/   ©r2   r   r   r   r   Ú__getattr__f   ó   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,   rH   Úread)r2   rF   Úfr   r   r   rI   i   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   rJ   r6   ©r2   Úxr   r   r   rL   q   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)rA   r"   r/   r+   r,   r   Úwriter6   rM   r   r   r   rO   }   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Útellr6   rM   r   r   r   rR   Œ   s   þÿz_FixupStream.seekableNr:   )r	   r
   r   r   r   r   ©r   r   r   r(   )rF   rG   r   rH   r;   )
r<   r=   r>   Ú__doc__r1   rD   rI   rL   rO   rR   r   r   r   r   r.   R   s    ü




r.   Údefaultc                 C  s*   z	t |  d¡tƒW S  ty   | Y S w ©Nr   )Ú
isinstancerJ   rH   r6   ©r	   rW   r   r   r   Ú_is_binary_reader—   s
   ÿr[   c                 C  sL   z|   d¡ W dS  ty%   z	|   d¡ W Y dS  ty$   Y | Y S w w )NrP   Ú FT)rQ   r6   rZ   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)r[   r+   r,   r-   r"   ©r	   Úbufr   r   r   Ú_find_binary_reader­   ó   
rd   c                 C  r_   r`   )r]   r+   r,   r-   r"   rb   r   r   r   Ú_find_binary_writer¿   re   rf   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Ñ   ó   rh   ÚattrÚvaluec                 C  s$   t | |dƒ}||kp|du o|duS )zŽA 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	   rj   rk   Ústream_valuer   r   r   Ú_is_compat_stream_attrÚ   s   rm   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   )rm   )r	   r   r   r   r   r   Ú_is_compatible_text_streamã   s
   ÿ
þrn   Ú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-   ÚTextIOrn   rh   r   )	ro   r   r   rp   rr   r   r   Úbinary_readerÚpossible_binary_readerr   r   r   Ú_force_correct_text_streamî   s&   
	ûrw   Útext_readerc                 C  ó   t | ||tt|d�S )N©r   )rw   r[   rd   )rx   r   r   r   r   r   r   Ú_force_correct_text_reader  ó   úr{   Útext_writerc                 C  ry   )N©r   )rw   r]   rf   )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.)rd   r#   ÚstdinÚRuntimeError)Úreaderr   r   r   Úget_binary_stdin<  ó   
r„   c                  C  r€   )Nz7Was not able to determine binary stream for sys.stdout.)rf   r#   Ústdoutr‚   ©Úwriterr   r   r   Úget_binary_stdoutC  r…   r‰   c                  C  r€   )Nz7Was not able to determine binary stream for sys.stderr.)rf   r#   Ústderrr‚   r‡   r   r   r   Úget_binary_stderrJ  r…   r‹   c                 C  ó,   t tj| |ƒ}|d ur|S ttj| |dd�S )NTrz   )Ú_get_windows_console_streamr#   r�   r{   ©r   r   r&   r   r   r   Úget_text_stdinQ  ó   r�   c                 C  rŒ   ©NTr~   )r�   r#   r†   r   rŽ   r   r   r   Úget_text_stdoutX  r�   r’   c                 C  rŒ   r‘   )r�   r#   rŠ   r   rŽ   r   r   r   Úget_text_stderr_  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_openf  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 r©dn|¡}W n3 tyà } z'|j
|jksÕt jdkrÛ|j
|jkrÛt j |j¡rÛt  |jt j¡rÛW Y d }~q‹‚ d }~ww |d urët  |
|¡ 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ÚarN   Fr˜   Tr§   zÏAppending 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.rN   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ÚerK   Úafr   r¤   r   Úopen_streams  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Â   rK   r!   rÉ   r   Úreal_filenamer   r)   c                 C  s   || _ || _|| _d| _d S ©NF)Ú_fÚ_tmp_filenameÚ_real_filenameÚclosed)r2   rK   rÉ   rÎ   r   r   r   r1   Å  s   
z_AtomicFile.__init__c                 C  s   | j S r*   )rÒ   r7   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Ò   )r2   rÔ   r   r   r   rÕ   Ï  s
   

z_AtomicFile.closer   r(   c                 C  rB   r*   )r"   rÐ   rC   r   r   r   rD   Ö  rE   z_AtomicFile.__getattr__c                 C  s   | S r*   r   r7   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Õ   )r2   r×   rÙ   rÛ   r   r   r   Ú__exit__Ü  ri   z_AtomicFile.__exit__c                 C  s
   t | jƒS r*   )ÚreprrÐ   r7   r   r   r   Ú__repr__ä  s   
z_AtomicFile.__repr__N)rK   r!   rÉ   r   rÎ   r   r   r)   ©r   r   ©F)rÔ   r   r   r)   rU   )r   rÂ   )r×   rØ   rÙ   rÚ   rÛ   rÜ   r   r)   )r<   r=   r>   r1   Úpropertyr   rÕ   rD   rÖ   rÝ   rß   r   r   r   r   rÂ   Ä  s    



rÂ   c                 C  s   t  d| ¡S )Nr\   )Ú_ansi_reÚsub)rk   r   r   r   Ú
strip_ansiè  rE   rå   c                 C  s0   t | ttfƒr| j} t | ttfƒs| jj d¡S )Nz
ipykernel.)rY   r.   r   r/   r4   r=   Ú
startswithrg   r   r   r   Ú_is_jupyter_kernel_outputì  s   ÿrç   út.IO[t.Any] | NoneÚcolorúbool | Nonec                 C  s0   |d u r| d u rt j} t| ƒ ot| ƒ S | S r*   )r#   r�   r9   rç   )r	   ré   r   r   r   Úshould_strip_ansió  s
   rë   é   )r�   c                  C  s   dd l } |  ¡ S rX   )ÚlocaleÚgetpreferredencoding)rí   r   r   r   Ú_get_argv_encoding  s   rï   z'cabc.MutableMapping[t.TextIO, t.TextIO]Ú_ansi_stream_wrappersc                   s¢   zt  | ¡}W n ty   d}Y nw |dur|S ddl}t| |ƒ}|j| |d�‰t tjˆj	¡}|j
‰ d
‡ ‡fdd	„}||_
z|t | < W |S  tyP   Y |S w )zbSupport ANSI color and style codes on Windows by wrapping a
        stream with colorama.
        Nr   )ÚstripÚsr   r   rG   c                   s$   zˆ | ƒW S  t y   ˆ ¡  ‚ w r*   )ÚBaseExceptionÚ	reset_all)rò   ©Ú_writeÚansi_wrapperr   r   Ú_safe_write  s   
þz'auto_wrap_for_ansi.<locals>._safe_write)rò   r   r   rG   )rð   Úgetr6   Úcoloramarë   ÚAnsiToWin32r+   r,   rt   r	   rQ   )r	   ré   Úcachedrú   rñ   r&   rø   r   rõ   r   r   
  s*   ÿ

ýýc                   C  s   t tjdd ƒp
t ¡ S )Nr   )r"   r#   r�   Úgetfilesystemencodingr   r   r   r   rï   /  s   rK   út.TextIO | Nonec                 C  s   d S r*   r   )rK   r   r   r   r   r   r�   2  s   r�   rN   rG   c                 C  s   t t| ƒƒS r*   )Úlenrå   )rN   r   r   r   Úterm_len8  rE   r   c                 C  s    z|   ¡ W S  ty   Y dS w rÏ   )r9   r6   rg   r   r   r   r9   <  s
   
ÿr9   Ú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*   )rù   r6   r%   ©Úcacher  r  r   r   ÚfuncI  s$   ÿ
þþz&_make_cached_stream_func.<locals>.func)r   rþ   r   )r  r  r  r   r  r   Ú_make_cached_stream_funcC  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_streamsr:   )r	   r
   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   )r	   r!   r   r   rá   )r	   r!   rW   r   r   r   )r	   r!   r   r^   )r	   r   r   r   )r	   r   rj   r   rk   r   r   r   )r	   r   r   r   r   r   r   r   )ro   r!   r   r   r   r   rp   rq   rr   rs   r   r   r   r   r   r   )
rx   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    )rk   r   r   r   )r	   r!   r   r   )r	   rè   ré   rê   r   r   rà   r*   )r	   r   ré   rê   r   r   )rK   r   r   r   r   r   r   rþ   )rN   r   r   rG   )r  r  r  r  r   r  )@Ú
__future__r   r   Úcollections.abcÚabcÚcabcÚior«   Úrer#   Útypingr+   Útypesr   Úweakrefr   Úplatformræ   ÚCYGWINÚWINr   Ú__annotations__Úcompilerã   r   r    r   ÚTextIOWrapperr   r.   r[   r]   rd   rf   rh   rm   rn   rw   r{   r   r„   r‰   r‹   r�   r’   r“   rš   rÍ   rÂ   rå   rç   rë   Ú_winconsoler�   rï   rð   r   r9   r  Ú_default_text_stdinÚ_default_text_stdoutÚ_default_text_stderrr  r  r   r   r   r   Ú<module>   s’    
û

E	



	
	ù2üü



ûQ
$
ÿ

%



ýý