B
    L[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	
dZdejkoddejd kZej	
dove Zd	Ze 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reZeZeZeefZe e!fZ"dd Z#e$Z%dd Z&e 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 Z3nd 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rejAZBdRZCnejDZBe ZCG dSdT dTeZEdZFdZGdZHdUdV ZIddWdXZJerFdYZdZd[lKmLZLmMZM d\d] ZNerdd_d`Zyd dlGZGW n e*k
r*   Y nX e ZOddadb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winP   z\033\[((?:\d|;)*)([a-zA-Z])c               C   s   t  pt  S )N)sysgetfilesystemencodinggetdefaultencoding r
   r
   ,lib/python3.7/site-packages/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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 }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   Zextrar
   r
   r   r#   7   s    z!_NonClosingTextIOWrapper.__init__c             C   sR   t |tst|rDy|   W n tk
r2   Y nX | jt|S t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 ]}|  | qW d S )N)r+   )r$   linesliner
   r
   r   
writelinesJ   s    
z#_NonClosingTextIOWrapper.writelinesc             C   s&   y|    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  S )N)r    isatty)r$   r
   r
   r   r2   T   s    z_NonClosingTextIOWrapper.isattyN)FF)	__name__
__module____qualname__r#   PY2r+   r/   r1   r2   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|S | j|S )Nread1)r   r    r6   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d W n tk
rJ   dS X dS )NTreadabler   F)r7   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d W n: tk
rp   y| jd W n tk
rj   dS X Y nX dS )NTwritable     F)r8   r   r    r+   r)   )r$   r,   r
   r
   r   r@      s    z_FixupStream.writablec             C   sL   t | jdd }|d k	r| S y| j| j  W n tk
rF   dS X dS )NseekableFT)r   r    seektellr)   )r$   r,   r
   r
   r   rC      s    z_FixupStream.seekableN)FF)
r3   r4   r5   __doc__r#   r9   r:   r?   r@   rC   r
   r
   r
   r   r   Y   s   
r   c             C   s   |   S )N)	iteritems)r,   r
   r
   r   <lambda>   s    rH   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    rJ   c             C   s4   y|   }W n tk
r    Y nX t|tj | S )N)filenor)   msvcrtZsetmodeosZO_BINARY)r>   rK   r
   r
   r   rJ      s    c             C   sL   y|   }W n tk
r    Y n(X t|tj}t|tj|tj @  | S )N)rK   r)   fcntlZF_GETFLZF_SETFLrM   
O_NONBLOCK)r>   rK   flagsr
   r
   r   rJ      s    c             C   s   t | d k	S )N)_identifier_research)r,   r
   r
   r   isidentifier   s    rS   c               C   s
   t tjS )N)rJ   r   stdinr
   r
   r
   r   get_binary_stdin   s    rU   c               C   s   t d ttjS )Nstdout)_wrap_std_streamrJ   r   rV   r
   r
   r
   r   get_binary_stdout   s    rX   c               C   s   t d ttjS )Nstderr)rW   rJ   r   rY   r
   r
   r
   r   get_binary_stderr   s    rZ   c             C   s,   t tj| |}|d k	r|S ttj| |ddS )NT)r   )_get_windows_console_streamr   rT   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 )NrV   T)r   )rW   r[   r   rV   r   )r   r   r   r
   r
   r   get_text_stdout   s    
r]   c             C   s4   t d ttj| |}|d k	r"|S ttj| |ddS )NrY   T)r   )rW   r[   r   rY   r   )r   r   r   r
   r
   r   get_text_stderr   s    
r^   c             C   s   t | tr| t d} | S )Nr   )r%   bytesdecoder   )valuer
   r
   r   filename_to_ui  s    
rb   c             C   s   |   S )N)rS   )r,   r
   r
   r   rH     s    c             C   s   t |  S )N)iteritems)r,   r
   r
   r   rH     s    c             C   s   t | tttfS )N)r%   r_   
memoryviewrI   )r,   r
   r
   r   r'     s    c             C   s*   yt | dtS  tk
r$   |S X d S )Nr   )r%   r<   r_   r)   )r   defaultr
   r
   r   _is_binary_reader  s    rg   c             C   sL   y|  d W n8 tk
rF   y|  d dS  tk
r@   Y nX |S X dS )NrB   rA   FT)r+   r)   )r   rf   r
   r
   r   _is_binary_writer  s    
rh   c             C   s4   t | dr| S t| dd }|d k	r0t |dr0|S d S )NFr*   T)rg   r   )r   bufr
   r
   r   _find_binary_reader&  s
    
rj   c             C   s4   t | dr| S t| dd }|d k	r0t |dr0|S d S )NFr*   T)rh   r   )r   ri   r
   r
   r   _find_binary_writer5  s
    
rk   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    rl   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    rm   c             C   sd   t | dr| }n8|d kr$t| s$| S t| ||r4| S t| }|d krH| S |d krTd}t||||dS )NFr   )r   )rg   rl   rm   rj   r   )Ztext_readerr   r   r   Zbinary_readerr
   r
   r   _force_correct_text_reader[  s    
rn   c             C   sd   t | dr| }n8|d kr$t| s$| S t| ||r4| S t| }|d krH| S |d krTd}t||||dS )NFr   )r   )rh   rl   rm   rk   r   )Ztext_writerr   r   r   Zbinary_writerr
   r
   r   _force_correct_text_writery  s    
ro   c              C   s   t tj} | d krtd| S )Nz6Was not able to determine binary stream for sys.stdin.)rj   r   rT   RuntimeError)readerr
   r
   r   rU     s    
c              C   s   t tj} | d krtd| S )Nz7Was not able to determine binary stream for sys.stdout.)rk   r   rV   rp   )writerr
   r
   r   rX     s    
c              C   s   t tj} | d krtd| S )Nz7Was not able to determine binary stream for sys.stderr.)rk   r   rY   rp   )rr   r
   r
   r   rZ     s    
c             C   s,   t tj| |}|d k	r|S ttj| |ddS )NT)r   )r[   r   rT   rn   )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   rV   ro   )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   rY   ro   )r   r   r   r
   r
   r   r^     s
    
c             C   s2   t | tr| t d} n| dddd} | S )Nr   zutf-8surrogateescape)r%   r_   r`   r   encode)ra   r
   r
   r   rb     s
    
c             C   sB   t | dr| j}n|d k	r |}nt| }t|tr>|dd}|S )Nstrerrorzutf-8r   )hasattrru   r&   r%   r_   r`   )erf   msgr
   r
   r   get_streerror  s    

ry   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rtd
d krtdd krtddd l}|j	t
j| dd\}}|d k	rtj| ||d}nt
| }t||t
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   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.r,   z&Use the `overwrite`-parameter instead.r   z,Atomic writes only make sense with `w`-mode.r   z.__atomic-write)dirprefix)anyrX   r]   rU   r\   openr!   
ValueErrortempfileZmkstemprM   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  ts>yt| j W n tk
r<   Y nX t| j	| j d| _ d S )NT)
r   r   close_can_replacerM   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   r9   (  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)r3   r4   r5   r#   propertyr   r   r9   r   r   r   r
   r
   r
   r   r     s   
r   c             C   s   t d| S )NrA   )_ansi_resub)ra   r
   r
   r   
strip_ansi:  s    r   c             C   s&   |d kr | d krt j} t|  S | S )N)r   rT   r2   )r   colorr
   r
   r   should_strip_ansi>  s
    
r   O      )r[   rW   c              C   s   dd l } |  S )Nr   )localeZgetpreferredencoding)r   r
   r
   r   _get_argv_encodingO  s    r   rA   c             C   s2   t j  | rt }||  t }| dS )Nz
)r   rY   r(   _default_text_stdoutr+   _default_text_stdinr;   rstrip)promptrV   rT   r
   r
   r   	raw_inputT  s    

r   c                s   yt | }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        Y nX d S )N)Z	reset_all)s)_writeansi_wrapperr
   r   _safe_writet  s
    z'auto_wrap_for_ansi.<locals>._safe_write)_ansi_stream_wrappersgetr)   r   coloramaZAnsiToWin32r   r+   )r   r   cachedr   r   r   r
   )r   r   r   auto_wrap_for_ansic  s"    

r   c              C   s*   t jt jjj} | j| j | j| j fS )N)	r   Zwin32ZGetConsoleScreenBufferInfoZ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   rT   r   r
   r
   r
   r   r     s    c              G   s   d S )Nr
   )r,   r
   r
   r   rH     s    c              G   s   d S )Nr
   )r,   r
   r
   r   rH     s    c             C   s   t t| S )N)lenr   )r,   r
   r
   r   term_len  s    r   c             C   s"   y|   S  tk
r   dS X d S )NF)r2   r)   )r   r
   r
   r   r2     s    r2   c                s   t    fdd}|S )Nc                 sl    } y  | }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   rT   r
   r
   r
   r   rH     s    c               C   s   t jS )N)r   rV   r
   r
   r
   r   rH     s    c               C   s   t jS )N)r   rY   r
   r
   r
   r   rH     s    )rT   rV   rY   )FF)NN)NN)NN)F)F)F)F)NN)NN)NN)N)rz   Nr{   F)NN)rA   )N)Xrer!   rM   r   r   weakrefr   version_infor6   platform
startswithZCYGWINenvironZ
APP_ENGINEZWINZDEFAULT_COLUMNScompiler   r   r   r   r   r"   r   objectr   ZunicodeZ	text_typer&   r_   r   Zstring_typesintZlongZ	int_typesrG   ZxrangeZ
range_typer'   rQ   rJ   rL   ImportErrorrN   rS   rU   rX   rZ   r\   r]   r^   rb   inputrangerg   rh   rj   rk   rl   rm   rn   ro   ry   r   rv   r   r   r   renamer   r   r   r   r   r   Z_winconsoler[   rW   r   r   r   r2   r   r   r   Z_default_text_stderrZbinary_streamsZtext_streamsr
   r
   r
   r   <module>   s   


$C
	











	
 
0%



