U
    nËj*I  ã                
   @   s~  U 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 ej	 
d¡Zej	 
d¡ZdZejejejgejf  ed< e d¡Zdjejeje eje eeejdœd	d
„Zeedœdd„Zejej edœdd„ZG dd„ dejƒZG dd„ dƒZdkejej eedœdd„Zdlejej eedœdd„Z ejej ejej dœdd„Z!ejej ejej dœdd„Z"ejedœdd„Z#ejeeje ed œd!d"„Z$ejeje eje ed#œd$d%„Z%dmejej eje eje ejejej egef ejejej gejej f eeejd&œd'd(„Z&dnejej eje eje eejd)œd*d+„Z'doejej eje eje eejd,œd-d.„Z(ejd/œd0d1„Z)ejd/œd2d3„Z*ejd/œd4d5„Z+dpeje eje ejd6œd7d8„Z,dqeje eje ejd6œd9d:„Z-dreje eje ejd6œd;d<„Z.ej/ed=e0f eeje eje ejej d>œd?d@„Z1dsdCeeje eje eej2ejej ef dDœdEdF„Z3G dGdH„ dHƒZ4eedIœdJdK„Z5ejej edœdLdM„Z6dtejejej  eje edNœdOdP„Z7ej	 
d¡�rJe�rJdQdRl8m9Z9 ed/œdSdT„Z:eƒ Z;ej<ejejf edU< duejeje ejdNœdVd„Zn8ed/œdWdT„Z:ejeje eje ejej dXœdYdZ„Z9ee0d[œd\d]„Z=ejej edœd^d_„Z>ejg ejej f ejg ejf ejg ejej f d`œdadb„Z?e?dcdd„ e,ƒZ@e?dedd„ e-ƒZAe?dfdd„ e.ƒZBe)e*e+dgœZCejDeejg ejf f edh< e,e-e.dgœZEejDeejeje eje gejf f edi< dS )vé    N)ÚWeakKeyDictionaryÚcygwinÚwinÚauto_wrap_for_ansiz\033\[[;?0-9]*[a-zA-Z]F)ÚstreamÚencodingÚerrorsÚforce_readableÚforce_writableÚreturnc                 C   s0   |d krt | ƒ}|d krd}t| ||d||d�S )NÚreplaceT)Úline_bufferingr	   r
   )Úget_best_encodingÚ_NonClosingTextIOWrapper)r   r   r   r	   r
   © r   ú1/tmp/pip-unpacked-wheel-jwr801_l/click/_compat.pyÚ_make_text_stream   s    úr   )r   r   c                 C   s.   zt  | ¡jdkW S  tk
r(   Y dS X dS )z$Checks if a given encoding is ascii.ÚasciiFN)ÚcodecsÚlookupÚnameÚLookupError)r   r   r   r   Úis_ascii_encoding$   s    r   )r   r   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   ,   s    r   c                	       s\   e Zd Zdejeje eje eeejddœ‡ fdd„Z	ddœdd„Z
edœd	d
„Z‡  ZS )r   FN)r   r   r   r	   r
   Úextrar   c                    s4   t  t jt|||ƒ¡ | _}tƒ j|||f|Ž d S ©N)ÚtÚcastÚBinaryIOÚ_FixupStreamÚ_streamÚsuperÚ__init__)Úselfr   r   r   r	   r
   r   ©Ú	__class__r   r   r&   5   s
    	 
ÿ
z!_NonClosingTextIOWrapper.__init__©r   c                 C   s&   z|   ¡  W n tk
r    Y nX d S r   )ÚdetachÚ	Exception©r'   r   r   r   Ú__del__C   s    z _NonClosingTextIOWrapper.__del__c                 C   s
   | j  ¡ S r   )r$   Úisattyr-   r   r   r   r/   I   s    z_NonClosingTextIOWrapper.isatty)FF)Ú__name__Ú
__module__Ú__qualname__r    r"   ÚOptionalÚstrÚboolÚAnyr&   r.   r/   Ú__classcell__r   r   r(   r   r   4   s     úør   c                   @   sr   e Zd ZdZdejeedœdd„Zeej	dœdd„Z
eed	œd
d„Zedœdd„Zedœdd„Ze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).
    F)r   r	   r
   c                 C   s   || _ || _|| _d S r   )r$   Ú_force_readableÚ_force_writable)r'   r   r	   r
   r   r   r   r&   X   s    z_FixupStream.__init__©r   r   c                 C   s   t | j|ƒS r   )r   r$   ©r'   r   r   r   r   Ú__getattr__b   s    z_FixupStream.__getattr__)Úsizer   c                 C   s2   t | jdd ƒ}|d k	r&t t||ƒ¡S | j |¡S )NÚread1)r   r$   r    r!   ÚbytesÚread)r'   r=   Úfr   r   r   r>   e   s    z_FixupStream.read1r*   c                 C   sZ   | j r
dS t| jdd ƒ}|d k	r.t t|ƒ ¡S z| j d¡ W n tk
rT   Y dS X dS )NTÚreadabler   F)r8   r   r$   r    r!   r5   r@   r,   ©r'   Úxr   r   r   rB   m   s    z_FixupStream.readablec                 C   s‚   | j r
dS t| jdd ƒ}|d k	r.t t|ƒ ¡S z| j d¡ W n> tk
r|   z| j d¡ W n tk
rv   Y Y dS X Y nX dS )NTÚwritableÚ ó    F)r9   r   r$   r    r!   r5   Úwriter,   rC   r   r   r   rE   y   s    z_FixupStream.writablec                 C   sV   t | jdd ƒ}|d k	r$t t|ƒ ¡S z| j | j ¡ ¡ W n tk
rP   Y dS X dS )NÚseekableFT)r   r$   r    r!   r5   ÚseekÚtellr,   rC   r   r   r   rI   ˆ   s    z_FixupStream.seekableN)FF)r0   r1   r2   Ú__doc__r    r"   r5   r&   r4   r6   r<   Úintr?   r>   rB   rE   rI   r   r   r   r   r#   N   s     üü
r#   )r   Údefaultr   c                 C   s0   zt |  d¡tƒW S  tk
r*   | Y S X d S ©Nr   )Ú
isinstancer@   r?   r,   ©r   rN   r   r   r   Ú_is_binary_reader“   s    rR   c                 C   sT   z|   d¡ W n@ tk
rN   z|   d¡ W Y dS  tk
rD   Y nX | Y S X dS )NrG   rF   FT)rH   r,   rQ   r   r   r   Ú_is_binary_writerœ   s    

rS   c                 C   sH   t | dƒrt tj| ¡S t| dd ƒ}|d k	rDt |dƒrDt tj|¡S d S ©NFÚbufferT)rR   r    r!   r"   r   ©r   Úbufr   r   r   Ú_find_binary_reader©   s    
rX   c                 C   sH   t | dƒrt tj| ¡S t| dd ƒ}|d k	rDt |dƒrDt tj|¡S d S rT   )rS   r    r!   r"   r   rV   r   r   r   Ú_find_binary_writer»   s    
rY   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Í   s    r[   )r   ÚattrÚvaluer   c                 C   s$   t | |dƒ}||kp"|dko"|dk	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   r\   r]   Zstream_valuer   r   r   Ú_is_compat_stream_attrÖ   s    r^   )r   r   r   r   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   )r^   )r   r   r   r   r   r   Ú_is_compatible_text_streamß   s      ÿ
þr_   )Útext_streamr   r   Ú	is_binaryÚfind_binaryr	   r
   r   c           	      C   s~   || dƒrt  t j| ¡}nFt  t j| ¡} t| ||ƒrH|d krDt| ƒsH| S || ƒ}|d kr\| S |}|d krld}t|||||d�S )NFr   )r	   r
   )r    r!   r"   ÚTextIOr_   r[   r   )	r`   r   r   ra   rb   r	   r
   Zbinary_readerZpossible_binary_readerr   r   r   Ú_force_correct_text_streamê   s,    	
ÿÿûrd   )Útext_readerr   r   r	   r   c                 C   s   t | ||tt|d�S )N©r	   )rd   rR   rX   )re   r   r   r	   r   r   r   Ú_force_correct_text_reader  s    úrg   )Útext_writerr   r   r
   r   c                 C   s   t | ||tt|d�S )N©r
   )rd   rS   rY   )rh   r   r   r
   r   r   r   Ú_force_correct_text_writer(  s    úrj   r*   c                  C   s   t tjƒ} | d krtdƒ‚| S )Nz6Was not able to determine binary stream for sys.stdin.)rX   r   ÚstdinÚRuntimeError)Úreaderr   r   r   Úget_binary_stdin8  s    
rn   c                  C   s   t tjƒ} | d krtdƒ‚| S )Nz7Was not able to determine binary stream for sys.stdout.)rY   r   Ústdoutrl   ©Úwriterr   r   r   Úget_binary_stdout?  s    
rr   c                  C   s   t tjƒ} | d krtdƒ‚| S )Nz7Was not able to determine binary stream for sys.stderr.)rY   r   Ústderrrl   rp   r   r   r   Úget_binary_stderrF  s    
rt   )r   r   r   c                 C   s,   t tj| |ƒ}|d k	r|S ttj| |dd�S )NTrf   )Ú_get_windows_console_streamr   rk   rg   ©r   r   r   r   r   r   Úget_text_stdinM  s    rw   c                 C   s,   t tj| |ƒ}|d k	r|S ttj| |dd�S ©NTri   )ru   r   ro   rj   rv   r   r   r   Úget_text_stdoutV  s    ry   c                 C   s,   t tj| |ƒ}|d k	r|S ttj| |dd�S rx   )ru   r   rs   rj   rv   r   r   r   Úget_text_stderr_  s    rz   zos.PathLike[str])ÚfileÚmoder   r   r   c                 C   s"   d|k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_openh  s    
r€   ÚrÚstrictzt.Union[str, os.PathLike[str]])Úfilenamer|   r   r   Úatomicr   c              
      s4  dˆ k}t  | ¡} t  | ¡dkrrt‡ fdd„dD ƒƒrT|rDtƒ dfS t||d�dfS |rbtƒ dfS t||d�dfS |sˆt| ˆ ||ƒdfS d	ˆ kr˜t	d
ƒ‚dˆ kr¨t	dƒ‚dˆ kr¸t	dƒ‚dd l
}dd l}zt  | ¡j}W n tk
rð   d }Y nX t jt jB t jB }	|�r|	tt ddƒO }	t j t j | ¡d| d¡d›�¡}
z&t  |
|	|d k�rVdn|¡}W �qäW nz tk
�rÞ } zZ|j
|jk�sÂt jdk�rÌ|j
|jk�rÌt j |j¡�rÌt  |jt j¡�rÌW Y ¢
�q‚ W 5 d }~X Y nX �q|d k	�rút  |
|¡ t|ˆ ||ƒ}t ||
t j !| ¡ƒ}t" #t"j$t"j% |¡dfS )Nr}   ú-c                 3   s   | ]}|ˆ kV  qd S r   r   )Ú.0Úm©r|   r   r   Ú	<genexpr>‚  s     zopen_stream.<locals>.<genexpr>)ÚwÚarD   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.rD   z&Use the `overwrite`-parameter instead.rŠ   z,Atomic writes only make sense with `w`-mode.r   ÚO_BINARYz.__atomic-writel        Z08xi¶  Únt)&ÚosÚfspathÚfsdecodeÚanyrr   ry   rn   rw   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!   ÚIOr6   )rƒ   r|   r   r   r„   Úbinaryr“   r”   ÚpermÚflagsÚtmp_filenameÚfdÚerA   Úafr   rˆ   r   Úopen_streamu  sj    


ÿ

þ
ÿ
þýü

r¯   c                   @   sš   e Zd Zejej eeddœdd„Zeedœdd„ƒZ	de
dd	œd
d„Zeejdœdd„Zd dœdd„Zejeje  ejddœdd„Zedœdd„ZdS )r¥   N)rA   r«   Úreal_filenamer   c                 C   s   || _ || _|| _d| _d S ©NF)Ú_fÚ_tmp_filenameÚ_real_filenameÚclosed)r'   rA   r«   r°   r   r   r   r&   Ç  s    z_AtomicFile.__init__r*   c                 C   s   | j S r   )r´   r-   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´   )r'   r¶   r   r   r   r·   Ñ  s
    
z_AtomicFile.closer:   c                 C   s   t | j|ƒS r   )r   r²   r;   r   r   r   r<   Ø  s    z_AtomicFile.__getattr__c                 C   s   | S r   r   r-   r   r   r   Ú	__enter__Û  s    z_AtomicFile.__enter__)Úexc_typeÚ_r   c                 G   s   | j |d k	d� d S )N)r¶   )r·   )r'   r¹   rº   r   r   r   Ú__exit__Þ  s    z_AtomicFile.__exit__c                 C   s
   t | jƒS r   )Úreprr²   r-   r   r   r   Ú__repr__á  s    z_AtomicFile.__repr__)F)r0   r1   r2   r    r§   r6   r4   r&   Úpropertyr   r5   r·   r<   r¸   r3   ÚTypeÚBaseExceptionr»   r½   r   r   r   r   r¥   Æ  s    r¥   )r]   r   c                 C   s   t  d| ¡S )NrF   )Ú_ansi_reÚsub)r]   r   r   r   Ú
strip_ansiå  s    rÃ   c                 C   s$   t | ttfƒr| j} q | jj d¡S )Nz
ipykernel.)rP   r#   r   r$   r)   r1   Ú
startswithrZ   r   r   r   Ú_is_jupyter_kernel_outputé  s    rÅ   )r   Úcolorr   c                 C   s0   |d kr*| d krt j} t| ƒ o(t| ƒ S | S r   )r   rk   r/   rÅ   )r   rÆ   r   r   r   Úshould_strip_ansið  s
    rÇ   é   )ru   c                  C   s   dd l } |  ¡ S rO   )ÚlocaleÚgetpreferredencoding)rÉ   r   r   r   Ú_get_argv_encoding   s    rË   Ú_ansi_stream_wrappersc                    s¤   zt  | ¡}W n tk
r&   d}Y nX |dk	r4|S ddl}t| |ƒ}|j| |d�‰t tjˆj	¡}|j
‰ ‡ ‡fdd„}||_
z|t | < W n tk
rž   Y nX |S )zbSupport ANSI color and style codes on Windows by wrapping a
        stream with colorama.
        Nr   )Ústripc                    s.   z
ˆ | ƒW S  t k
r(   ˆ ¡  ‚ Y nX d S r   )rÀ   Ú	reset_all)Ús©Ú_writeZansi_wrapperr   r   Ú_safe_write  s
    
z'auto_wrap_for_ansi.<locals>._safe_write)rÌ   Úgetr,   ÚcoloramarÇ   ÚAnsiToWin32r    r!   rc   r   rH   )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   rk   Úgetfilesystemencodingr   r   r   r   rË   .  s    )rA   r   r   r   c                 C   s   d S r   r   )rA   r   r   r   r   r   ru   1  s    ru   )rD   r   c                 C   s   t t| ƒƒS r   )ÚlenrÃ   )rD   r   r   r   Úterm_len7  s    rÙ   c                 C   s&   z
|   ¡ W S  tk
r    Y dS X d S r±   )r/   r,   rZ   r   r   r   r/   ;  s    
r/   )Úsrc_funcÚwrapper_funcr   c                    s(   t ƒ ‰ tjtj dœ‡ ‡‡fdd„}|S )Nr*   c                     sr   ˆƒ } | d krd S zˆ   | ¡}W n tk
r8   d }Y nX |d k	rF|S ˆƒ }z|ˆ | < W n tk
rl   Y nX |S r   )rÓ   r,   r   ©ÚcacherÚ   rÛ   r   r   ÚfuncH  s    
z&_make_cached_stream_func.<locals>.func)r   r    r3   rc   )rÚ   rÛ   rÞ   r   rÜ   r   Ú_make_cached_stream_funcB  s    rß   c                   C   s   t jS r   )r   rk   r   r   r   r   Ú<lambda>^  rG   rà   c                   C   s   t jS r   )r   ro   r   r   r   r   rà   _  rG   c                   C   s   t jS r   )r   rs   r   r   r   r   rà   `  rG   )rk   ro   rs   Úbinary_streamsÚtext_streams)FF)F)F)FF)F)F)NN)NN)NN)r�   Nr‚   F)NN)N)Fr   ÚiorŽ   Úrer   Útypingr    Úweakrefr   ÚplatformrÄ   ZCYGWINZWINr   r3   ÚCallablerc   Ú__annotations__ÚcompilerÁ   r"   r4   r5   r   r   r§   r6   r   ÚTextIOWrapperr   r#   rR   rS   rX   rY   r[   r^   r_   rd   rg   rj   rn   rr   rt   rw   ry   rz   ÚUnionrM   r€   ÚTupler¯   r¥   rÃ   rÅ   rÇ   Z_winconsoleru   rË   rÌ   ÚMutableMappingrÙ   r/   rß   Z_default_text_stdinZ_default_text_stdoutZ_default_text_stderrrá   ÚMappingrâ   r   r   r   r   Ú<module>   s0   "
  ûúE	  	
  þ  ù
ø2 ü
û ü
û   ÿ þ
   ÿ þ
   ÿ þ

û    ûúQ   ÿ þ ÿ þ'  
þýý$	ýþ"ÿ