3
[ð]g[  ã               @   s¼  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  dkZej	j
dƒZdejkoddejd kZej	j
dƒove Zd	Ze jd
ƒZdd„ Zdrdd„Zdd„ Zdd„ ZG dd„ dejƒZG dd„ deƒZe�r²eZeZeZeefZe e!fZ"dd„ Z#e$Z%dd„ Z&e jdƒZ'dd„ Z(yd dl)Z)W n e*k
�r4   Y n
X dd„ Z(yd dl+Z+W n e*k
�r`   Y n
X d d„ Z(d!d"„ Z,d#d$„ Z-d%d&„ Z.d'd(„ Z/dsd)d*„Z0dtd+d,„Z1dud-d.„Z2d/d0„ Z3n¾d dlZeZe4ZefZe fZ"e5Z%d1d„ Z,d2d„ Z#d3d„ Z&dvd4d5„Z6dwd6d7„Z7d8d9„ Z8d:d;„ Z9d<d=„ Z:d>d?„ Z;dxd@dA„Z<dydBdC„Z=dDd$„ Z-dEd&„ Z.dFd(„ Z/dzdGd*„Z0d{dHd,„Z1d|dId.„Z2dJd0„ Z3d}dKdL„Z>d~dOdP„Z?e@edQƒ�rœejAZBdRZCnejDZBe ZCG dSdT„ dTeƒZEdZFdZGdZHdUdV„ ZIddWdX„ZJe�rFdYZdZd[lKmLZLmMZM d\d]„ ZNe�rd€d_d`„Zyd dlGZGW n e*k
�r*   Y nX eƒ ZOd�dadb„ZFdcdd„ ZHnded]„ ZNdfd„ ZLdgd„ ZMdhdi„ ZPdjdk„ ZQdldm„ ZReRdnd„ e0ƒZSeRdod„ e1ƒZTeRdpd„ e2ƒZUe-e.e/dqœZVe0e1e2dqœZWdS )‚é    N)ÚWeakKeyDictionaryé   ÚcygwinZAPPENGINE_RUNTIMEzDevelopment/ZSERVER_SOFTWAREÚwinéP   z\033\[((?:\d|;)*)([a-zA-Z])c               C   s   t jƒ pt jƒ S )N)ÚsysÚgetfilesystemencodingÚgetdefaultencoding© r
   r
   ú./tmp/pip-build-w1as9q70/click/click/_compat.pyÚget_filesystem_encoding   s    r   Fc             C   s0   |d krt | ƒ}|d krd}t| ||d||d�S )NÚreplaceT)Úline_bufferingÚforce_readableÚforce_writable)Úget_best_encodingÚ_NonClosingTextIOWrapper)ÚstreamÚencodingÚerrorsr   r   r
   r
   r   Ú_make_text_stream   s    r   c             C   s*   yt j| ƒjdkS  tk
r$   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   c             C   s$   t | ddƒptjƒ }t|ƒr dS |S )z1Returns the default stream encoding if not found.r   Nzutf-8)Úgetattrr   r	   r   )r   Úrvr
   r
   r   r   -   s    r   c               @   s:   e Zd Zddd„Zer&dd„ Zdd„ Zdd	„ Zd
d„ ZdS )r   Fc             K   s,   t |||ƒ | _}tjj| |||f|Ž d S )N)Ú_FixupStreamÚ_streamÚioÚTextIOWrapperÚ__init__)Úselfr   r   r   r   r   Úextrar
   r
   r   r#   7   s    z!_NonClosingTextIOWrapper.__init__c             C   sR   t |tƒst|ƒrDy| jƒ  W n tk
r2   Y nX | jjt|ƒƒS tjj| |ƒS )N)	Ú
isinstanceÚstrÚis_bytesÚflushÚ	ExceptionÚbufferÚwriter!   r"   )r$   Úxr
   r
   r   r,   A   s    z_NonClosingTextIOWrapper.writec             C   s   x|D ]}| j |ƒ qW d S )N)r,   )r$   ÚlinesÚliner
   r
   r   Ú
writelinesJ   s    
z#_NonClosingTextIOWrapper.writelinesc             C   s&   y| j ƒ  W n tk
r    Y nX d S )N)Údetachr*   )r$   r
   r
   r   Ú__del__N   s    z _NonClosingTextIOWrapper.__del__c             C   s
   | j jƒ S )N)r    Úisatty)r$   r
   r
   r   r3   T   s    z_NonClosingTextIOWrapper.isattyN)FF)	Ú__name__Ú
__module__Ú__qualname__r#   ÚPY2r,   r0   r2   r3   r
   r
   r
   r   r   5   s   
	r   c               @   sB   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ Zdd„ Z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).
    Fc             C   s   || _ || _|| _d S )N)r    Ú_force_readableÚ_force_writable)r$   r   r   r   r
   r
   r   r#   c   s    z_FixupStream.__init__c             C   s   t | j|ƒS )N)r   r    )r$   r   r
   r
   r   Ú__getattr__h   s    z_FixupStream.__getattr__c             C   s:   t | jdd ƒ}|d k	r||ƒS tr.| jj|ƒS | jj|ƒS )NÚread1)r   r    r7   ÚreadlineÚread)r$   ÚsizeÚfr
   r
   r   r;   k   s    z_FixupStream.read1c             C   sP   | j r
dS t| jdd ƒ}|d k	r&|ƒ S y| jjdƒ W n tk
rJ   dS X dS )NTÚreadabler   F)r8   r   r    r=   r*   )r$   r-   r
   r
   r   r@   v   s    z_FixupStream.readablec             C   sv   | j r
dS t| jdd ƒ}|d k	r&|ƒ S y| jjdƒ W n: tk
rp   y| jjdƒ W n tk
rj   dS X Y nX dS )NTÚwritableÚ ó    F)r9   r   r    r,   r*   )r$   r-   r
   r
   r   rA   ‚   s    z_FixupStream.writablec             C   sL   t | jdd ƒ}|d k	r|ƒ S y| jj| jjƒ ƒ W n tk
rF   dS X dS )NÚseekableFT)r   r    ÚseekÚtellr*   )r$   r-   r
   r
   r   rD   ‘   s    z_FixupStream.seekableN)FF)
r4   r5   r6   Ú__doc__r#   r:   r;   r@   rA   rD   r
   r
   r
   r   r   Y   s   
r   c             C   s   | j ƒ S )N)Ú	iteritems)r-   r
   r
   r   Ú<lambda>¢   s    rI   c             C   s   t | ttfƒS )N)r&   r+   Ú	bytearray)r-   r
   r
   r   r(   ¥   s    r(   z^[a-zA-Z_][a-zA-Z0-9_]*$c             C   s   | S )Nr
   )r?   r
   r
   r   Úset_binary_mode¼   s    rK   c             C   s4   y| j ƒ }W n tk
r    Y nX tj|tjƒ | S )N)Úfilenor*   ÚmsvcrtZsetmodeÚosÚO_BINARY)r?   rL   r
   r
   r   rK   Ä   s    c             C   sL   y| j ƒ }W n tk
r    Y n(X tj|tjƒ}tj|tj|tj @ ƒ | S )N)rL   r*   ÚfcntlÚF_GETFLÚF_SETFLrN   Ú
O_NONBLOCK)r?   rL   Úflagsr
   r
   r   rK   Ò   s    c             C   s   t j| ƒd k	S )N)Ú_identifier_reÚsearch)r-   r
   r
   r   ÚisidentifierÜ   s    rW   c               C   s
   t tjƒS )N)rK   r   Ústdinr
   r
   r
   r   Úget_binary_stdinß   s    rY   c               C   s   t dƒ ttjƒS )NÚstdout)Ú_wrap_std_streamrK   r   rZ   r
   r
   r
   r   Úget_binary_stdoutâ   s    r\   c               C   s   t dƒ ttjƒS )NÚstderr)r[   rK   r   r]   r
   r
   r
   r   Úget_binary_stderræ   s    r^   c             C   s,   t tj| |ƒ}|d k	r|S ttj| |dd�S )NT)r   )Ú_get_windows_console_streamr   rX   r   )r   r   r   r
   r
   r   Úget_text_stdinê   s
    
r`   c             C   s4   t dƒ ttj| |ƒ}|d k	r"|S ttj| |dd�S )NrZ   T)r   )r[   r_   r   rZ   r   )r   r   r   r
   r
   r   Úget_text_stdoutñ   s    
ra   c             C   s4   t dƒ ttj| |ƒ}|d k	r"|S ttj| |dd�S )Nr]   T)r   )r[   r_   r   r]   r   )r   r   r   r
   r
   r   Úget_text_stderrù   s    
rb   c             C   s   t | tƒr| jtƒ dƒ} | S )Nr   )r&   ÚbytesÚdecoder   )Úvaluer
   r
   r   Úfilename_to_ui  s    
rf   c             C   s   | j ƒ S )N)rW   )r-   r
   r
   r   rI     s    c             C   s   t | jƒ ƒS )N)ÚiterÚitems)r-   r
   r
   r   rI     s    c             C   s   t | tttfƒS )N)r&   rc   Ú
memoryviewrJ   )r-   r
   r
   r   r(     s    c             C   s*   yt | jdƒtƒS  tk
r$   |S X d S )Nr   )r&   r=   rc   r*   )r   Údefaultr
   r
   r   Ú_is_binary_reader  s    rk   c             C   sL   y| j dƒ W n8 tk
rF   y| j dƒ dS  tk
r@   Y nX |S X dS )NrC   rB   FT)r,   r*   )r   rj   r
   r
   r   Ú_is_binary_writer  s    
rl   c             C   s4   t | dƒr| S t| dd ƒ}|d k	r0t |dƒr0|S d S )NFr+   T)rk   r   )r   Úbufr
   r
   r   Ú_find_binary_reader&  s
    
rn   c             C   s4   t | dƒr| S t| dd ƒ}|d k	r0t |dƒr0|S d S )NFr+   T)rl   r   )r   rm   r
   r
   r   Ú_find_binary_writer5  s
    
ro   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_misconfiguredD  s    rp   c             C   s@   t | dd ƒ}t | dd ƒ}||kr,||kr,dS |d kr<|d k	S dS )Nr   r   TF)r   )r   r   r   Zstream_encodingZstream_errorsr
   r
   r   Ú_is_compatible_text_streamL  s    rq   c             C   sf   t | dƒr| }n:|d kr&t| ƒ r&| S t| ||ƒr6| S t| ƒ}|d krJ| S |d krVd}t||||d�S )NFr   )r   )rk   rp   rq   rn   r   )Ztext_readerr   r   r   Zbinary_readerr
   r
   r   Ú_force_correct_text_reader[  s    
rr   c             C   sf   t | dƒr| }n:|d kr&t| ƒ r&| S t| ||ƒr6| S t| ƒ}|d krJ| S |d krVd}t||||d�S )NFr   )r   )rl   rp   rq   ro   r   )Ztext_writerr   r   r   Zbinary_writerr
   r
   r   Ú_force_correct_text_writery  s    
rs   c              C   s   t tjƒ} | d krtdƒ‚| S )Nz6Was not able to determine binary stream for sys.stdin.)rn   r   rX   ÚRuntimeError)Úreaderr
   r
   r   rY   —  s    
c              C   s   t tjƒ} | d krtdƒ‚| S )Nz7Was not able to determine binary stream for sys.stdout.)ro   r   rZ   rt   )Úwriterr
   r
   r   r\   ž  s    
c              C   s   t tjƒ} | d krtdƒ‚| S )Nz7Was not able to determine binary stream for sys.stderr.)ro   r   r]   rt   )rv   r
   r
   r   r^   ¥  s    
c             C   s,   t tj| |ƒ}|d k	r|S ttj| |dd�S )NT)r   )r_   r   rX   rr   )r   r   r   r
   r
   r   r`   ¬  s
    
c             C   s,   t tj| |ƒ}|d k	r|S ttj| |dd�S )NT)r   )r_   r   rZ   rs   )r   r   r   r
   r
   r   ra   ³  s
    
c             C   s,   t tj| |ƒ}|d k	r|S ttj| |dd�S )NT)r   )r_   r   r]   rs   )r   r   r   r
   r
   r   rb   º  s
    
c             C   s2   t | tƒr| jtƒ dƒ} n| jddƒjddƒ} | S )Nr   zutf-8Úsurrogateescape)r&   rc   rd   r   Úencode)re   r
   r
   r   rf   Á  s
    
c             C   sB   t | dƒr| j}n|d k	r |}nt| ƒ}t|tƒr>|jddƒ}|S )NÚstrerrorzutf-8r   )Úhasattrry   r'   r&   rc   rd   )Úerj   Úmsgr
   r
   r   Úget_streerrorÊ  s    

r}   ÚrÚstrictc       	         s&  | dkrbt ‡ fdd„dD ƒƒr@dˆ kr0tƒ dfS t||d	�dfS dˆ krRtƒ dfS t||d	�dfS |s’|d kr|t| ˆ ƒd
fS tj| ˆ ||d	�d
fS dˆ kr¢tdƒ‚dˆ kr²tdƒ‚dˆ krÂtdƒ‚dd l}|j	t
jj| ƒdd�\}}|d k	�rtj|ˆ ||d	�}nt
j|ˆ ƒ}t||t
jj| ƒƒd
fS )Nú-c             3   s   | ]}|ˆ kV  qd S )Nr
   )Ú.0Úm)Úmoder
   r   ú	<genexpr>Ü  s    zopen_stream.<locals>.<genexpr>ÚwÚar-   ÚbF)r   r   TzÏ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.z&Use the `overwrite`-parameter instead.z,Atomic writes only make sense with `w`-mode.r   z.__atomic-write)ÚdirÚprefix)r…   r†   r-   )Úanyr\   ra   rY   r`   Úopenr!   Ú
ValueErrorÚtempfileÚmkstemprN   ÚpathÚdirnameÚfdopenÚ_AtomicFileÚrealpath)	Úfilenamerƒ   r   r   Zatomicr�   ÚfdÚtmp_filenamer?   r
   )rƒ   r   Úopen_stream×  s4    


r—   r   Tc               @   sJ   e Zd Zdd„ Zedd„ ƒZddd„Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dS )r’   c             C   s   || _ || _|| _d| _d S )NF)Ú_fÚ_tmp_filenameÚ_real_filenameÚclosed)r$   r?   r–   Zreal_filenamer
   r
   r   r#     s    z_AtomicFile.__init__c             C   s   | j S )N)rš   )r$   r
   r
   r   r     s    z_AtomicFile.nameFc             C   sV   | j r
d S | jjƒ  ts>ytj| jƒ W n tk
r<   Y nX t| j	| jƒ d| _ d S )NT)
r›   r˜   ÚcloseÚ_can_replacerN   Úremoverš   ÚOSErrorÚ_replacer™   )r$   Údeleter
   r
   r   rœ     s    
z_AtomicFile.closec             C   s   t | j|ƒS )N)r   r˜   )r$   r   r
   r
   r   r:   (  s    z_AtomicFile.__getattr__c             C   s   | S )Nr
   )r$   r
   r
   r   Ú	__enter__+  s    z_AtomicFile.__enter__c             C   s   | j |d k	d� d S )N)r¡   )rœ   )r$   Úexc_typeÚ	exc_valueÚtbr
   r
   r   Ú__exit__.  s    z_AtomicFile.__exit__c             C   s
   t | jƒS )N)Úreprr˜   )r$   r
   r
   r   Ú__repr__1  s    z_AtomicFile.__repr__N)F)r4   r5   r6   r#   Úpropertyr   rœ   r:   r¢   r¦   r¨   r
   r
   r
   r   r’     s   
r’   c             C   s   t jd| ƒS )NrB   )Ú_ansi_reÚsub)re   r
   r
   r   Ú
strip_ansi:  s    r¬   c             C   s&   |d kr | d krt j} t| ƒ S | S )N)r   rX   r3   )r   Úcolorr
   r
   r   Úshould_strip_ansi>  s
    
r®   éO   é   )r_   r[   c              C   s   dd l } | jƒ S )Nr   )ÚlocaleÚgetpreferredencoding)r±   r
   r
   r   Ú_get_argv_encodingO  s    r³   rB   c             C   s2   t jjƒ  | rtƒ }|j| ƒ tƒ }|jƒ jdƒS )Nz
)r   r]   r)   Ú_default_text_stdoutr,   Ú_default_text_stdinr<   Úrstrip)ÚpromptrZ   rX   r
   r
   r   Ú	raw_inputT  s    

r¸   c                s’   yt j| ƒ}W n tk
r&   d}Y nX |dk	r4|S t| |ƒ}tj| |d�‰ˆj}|j‰ ‡ ‡fdd„}||_y|t | < W n tk
rŒ   Y nX |S )a  This function wraps a stream so that calls through colorama
            are issued to the win32 console API to recolor on demand.  It
            also ensures to reset the colors if a write call is interrupted
            to not destroy the console afterwards.
            N)Ústripc          	      s$   yˆ | ƒS    ˆj ƒ  ‚ Y nX d S )N)Ú	reset_all)Ús)Ú_writeÚansi_wrapperr
   r   Ú_safe_writet  s
    z'auto_wrap_for_ansi.<locals>._safe_write)Ú_ansi_stream_wrappersÚgetr*   r®   ÚcoloramaÚAnsiToWin32r   r,   )r   r­   Úcachedr¹   r   r¾   r
   )r¼   r½   r   Úauto_wrap_for_ansic  s"    

rÄ   c              C   s*   t jjt jjƒj} | j| j | j| j fS )N)	rÁ   Úwin32ÚGetConsoleScreenBufferInfoÚSTDOUTZsrWindowZRightZLeftZBottomZTop)r   r
   r
   r   Úget_winterm_size‚  s    rÈ   c               C   s   t tjdd ƒptƒ S )Nr   )r   r   rX   r   r
   r
   r
   r   r³   ‡  s    c              G   s   d S )Nr
   )r-   r
   r
   r   rI   Š  s    c              G   s   d S )Nr
   )r-   r
   r
   r   rI   ‹  s    c             C   s   t t| ƒƒS )N)Úlenr¬   )r-   r
   r
   r   Úterm_lenŽ  s    rÊ   c             C   s"   y| j ƒ S  tk
r   dS X d S )NF)r3   r*   )r   r
   r
   r   r3   ’  s    r3   c                s   t ƒ ‰ ‡ ‡‡fdd„}|S )Nc                 sl   ˆƒ } yˆ j | ƒ}W n tk
r,   d }Y nX |d k	r:|S ˆƒ }yˆƒ } |ˆ | < W n tk
rf   Y nX |S )N)rÀ   r*   )r   r   )ÚcacheÚsrc_funcÚwrapper_funcr
   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   s   t jS )N)r   rX   r
   r
   r
   r   rI   ®  s    c               C   s   t jS )N)r   rZ   r
   r
   r
   r   rI   °  s    c               C   s   t jS )N)r   r]   r
   r
   r
   r   rI   ²  s    )rX   rZ   r]   )FF)NN)NN)NN)F)F)F)F)NN)NN)NN)N)r~   Nr   F)NN)rB   )N)XÚrer!   rN   r   r   Úweakrefr   Úversion_infor7   ÚplatformÚ
startswithZCYGWINÚenvironZ
APP_ENGINEZWINZDEFAULT_COLUMNSÚcompilerª   r   r   r   r   r"   r   Úobjectr   ÚunicodeÚ	text_typer'   rc   r¸   Ústring_typesÚintÚlongZ	int_typesrH   ÚxrangeZ
range_typer(   rU   rK   rM   ÚImportErrorrP   rW   rY   r\   r^   r`   ra   rb   rf   ÚinputÚrangerk   rl   rn   ro   rp   rq   rr   rs   r}   r—   rz   r   r    r�   Úrenamer’   rÄ   rÁ   rÈ   r¬   r®   Z_winconsoler_   r[   r³   r¿   rÊ   r3   rÏ   rµ   r´   Z_default_text_stderrZbinary_streamsZtext_streamsr
   r
   r
   r   Ú<module>   sè   


$C
	











	
 
0%



