U
    µ½|e&%  ã                   @   s¶  d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ eeeef\ZZZZejZedd„ d	D ƒƒZed
d„ dD ƒƒZe d¡Zzer¤ddlZne‚W n ek
rÂ   dZY n0X zejdd� W n ek
rð   e ¡  Y nX G dd„ deƒZG dd„ deƒZ G dd„ deƒZ!G dd„ de!ƒZ"G dd„ de!ƒZ#G dd„ de!ƒZ$dd„ Z%dd„ Z&dd „ Z'd!d"„ Z(d#d$„ Z)d%d&„ Z*d'd(„ Z+d)d*„ Z,d+d,„ Z-d-d.„ Z.d/d0„ Z/d1d2„ Z0dS )3z*
General helpers required for `tqdm.std`.
é    N)Úwraps©Úeast_asian_width)Úwarn©Úproxyc                 c   s   | ]}t  |¡V  qd S ©N©ÚCUR_OSÚ
startswith©Ú.0Úi© r   úG/var/www/website-v5/atlas_env/lib/python3.8/site-packages/tqdm/utils.pyÚ	<genexpr>   s     r   )Úwin32Úcygwinc                 c   s   | ]}t  |¡V  qd S r   r	   r   r   r   r   r      s     )ÚaixÚlinuxÚdarwinz\x1b\[[;\d]*[A-Za-z]F)Ústripc                   @   s"   e Zd ZdZddd„Zdd„ ZdS )	ÚFormatReplacezV
    >>> a = FormatReplace('something')
    >>> "{:5d}".format(a)
    'something'
    Ú c                 C   s   || _ d| _d S ©Nr   )ÚreplaceÚformat_called)Úselfr   r   r   r   Ú__init__'   s    zFormatReplace.__init__c                 C   s   |  j d7  _ | jS )Né   )r   r   )r   Ú_r   r   r   Ú
__format__+   s    zFormatReplace.__format__N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r!   r   r   r   r   r   !   s   
r   c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )Ú
Comparablez1Assumes child has self._comparable attr/@propertyc                 C   s   | j |j k S r   ©Ú_comparable©r   Úotherr   r   r   Ú__lt__2   s    zComparable.__lt__c                 C   s   | |k p| |kS r   r   r)   r   r   r   Ú__le__5   s    zComparable.__le__c                 C   s   | j |j kS r   r'   r)   r   r   r   Ú__eq__8   s    zComparable.__eq__c                 C   s
   | |k S r   r   r)   r   r   r   Ú__ne__;   s    zComparable.__ne__c                 C   s
   | |k S r   r   r)   r   r   r   Ú__gt__>   s    zComparable.__gt__c                 C   s
   | |k  S r   r   r)   r   r   r   Ú__ge__A   s    zComparable.__ge__N)
r"   r#   r$   r%   r+   r,   r-   r.   r/   r0   r   r   r   r   r&   0   s   r&   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚObjectWrapperc                 C   s   t | j|ƒS r   )ÚgetattrÚ_wrapped©r   Únamer   r   r   Ú__getattr__F   s    zObjectWrapper.__getattr__c                 C   s   t | j||ƒS r   )Úsetattrr3   ©r   r5   Úvaluer   r   r   Ú__setattr__I   s    zObjectWrapper.__setattr__c                 C   s2   zt  | |¡W S  tk
r,   t| |ƒ Y S X dS )z7Actual `self.getattr` rather than self._wrapped.getattrN)Úobjectr6   ÚAttributeErrorr2   r4   r   r   r   Úwrapper_getattrL   s    zObjectWrapper.wrapper_getattrc                 C   s   t  | ||¡S )z7Actual `self.setattr` rather than self._wrapped.setattr)r;   r:   r8   r   r   r   Úwrapper_setattrS   s    zObjectWrapper.wrapper_setattrc                 C   s   |   d|¡ dS )z4
        Thin wrapper around a given object
        r3   N)r>   )r   Úwrappedr   r   r   r   W   s    zObjectWrapper.__init__N)r"   r#   r$   r6   r:   r=   r>   r   r   r   r   r   r1   E   s
   r1   c                       s0   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Z‡  ZS )ÚSimpleTextIOWrapperz™
    Change only `.write()` of the wrapped object by encoding the passed
    value and passing the result to the wrapped object's `.write()` method.
    c                    s    t t| ƒ |¡ |  d|¡ d S )NÚencoding)Úsuperr@   r   r>   )r   r?   rA   ©Ú	__class__r   r   r   d   s    zSimpleTextIOWrapper.__init__c                 C   s   | j  | |  d¡¡¡S )zP
        Encode `s` and pass to the wrapped object's `.write()` method.
        rA   )r3   ÚwriteÚencoder=   )r   Úsr   r   r   rE   h   s    zSimpleTextIOWrapper.writec                 C   s   | j t|d|ƒkS ©Nr3   ©r3   r2   r)   r   r   r   r-   n   s    zSimpleTextIOWrapper.__eq__)r"   r#   r$   r%   r   rE   r-   Ú__classcell__r   r   rC   r   r@   ^   s   r@   c                       s4   e Zd ZdZedd„ ƒZ‡ fdd„Zdd„ Z‡  ZS )ÚDisableOnWriteErrorzO
    Disable the given `tqdm_instance` upon `write()` or `flush()` errors.
    c                    s   t ˆƒ‰‡ ‡fdd„}|S )zV
        Quietly set `tqdm_instance.miniters=inf` if `func` raises `errno=5`.
        c                     s¶   zˆ | |ŽW S  t k
r^ } z4|jdkr*‚ ztdƒˆ_W n tk
rL   Y nX W 5 d }~X Y nT tk
r° } z6dt|ƒkr|‚ ztdƒˆ_W n tk
rž   Y nX W 5 d }~X Y nX d S )Né   ÚinfÚclosed)ÚOSErrorÚerrnoÚfloatÚminitersÚReferenceErrorÚ
ValueErrorÚstr)ÚargsÚkwargsÚe©ÚfuncÚtqdm_instancer   r   Úinner}   s     
z7DisableOnWriteError.disable_on_exception.<locals>.innerr   )r[   rZ   r\   r   rY   r   Údisable_on_exceptionv   s    z(DisableOnWriteError.disable_on_exceptionc                    sT   t t| ƒ |¡ t|dƒr0|  d|  ||j¡¡ t|dƒrP|  d|  ||j¡¡ d S )NrE   Úflush)rB   rK   r   Úhasattrr>   r]   rE   r^   )r   r?   r[   rC   r   r   r   �   s    
 ÿ
 ÿzDisableOnWriteError.__init__c                 C   s   | j t|d|ƒkS rH   rI   r)   r   r   r   r-   ™   s    zDisableOnWriteError.__eq__)	r"   r#   r$   r%   Ústaticmethodr]   r   r-   rJ   r   r   rC   r   rK   r   s
   
	rK   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )ÚCallbackIOWrapperÚreadc                    s~   t t| ƒ |¡ t||ƒ‰|dkrFtˆƒ‡ ‡fdd„ƒ}|  d|¡ n4|dkrrtˆƒ‡ ‡fdd„ƒ}|  d|¡ ntdƒ‚dS )	z{
        Wrap a given `file`-like object's `read()` or `write()` to report
        lengths to the given `callback`
        rE   c                    s    ˆ| f|ž|Ž}ˆ t | ƒƒ |S r   ©Úlen)ÚdatarV   rW   Úres©ÚcallbackrZ   r   r   rE   ¦   s    z)CallbackIOWrapper.__init__.<locals>.writerb   c                     s   ˆ| |Ž}ˆ t |ƒƒ |S r   rc   )rV   rW   re   rg   r   r   rb   ­   s    
z(CallbackIOWrapper.__init__.<locals>.readz Can only wrap read/write methodsN)rB   ra   r   r2   r   r>   ÚKeyError)r   rh   ÚstreamÚmethodrE   rb   rC   rg   r   r   ž   s    
zCallbackIOWrapper.__init__)rb   )r"   r#   r$   r   rJ   r   r   rC   r   ra   �   s   ra   c                 C   sv   zd  | ¡ W n^ tk
r$   Y dS  tk
rl   z|  ¡  d¡pHd| kW  Y S  tk
rf   Y Y dS X Y nX dS d S )Nu   â–ˆâ–‰Fzutf-ZU8T)rF   ÚUnicodeEncodeErrorÚ	ExceptionÚlowerr   )rA   r   r   r   Ú_is_utf·   s    ro   c                 C   s(   zt | jƒW S  tk
r"   Y dS X d S )NF)ro   rA   r<   ©Úfpr   r   r   Ú_supports_unicodeÅ   s    rr   c                 C   s2   t | tƒr*| D ]}t|ƒdkr dS qdS t| ƒS )Néÿ   FT)Ú
isinstancerU   Úordrr   )rG   Úcr   r   r   Ú	_is_asciiÌ   s    
rw   c                  C   s$   d} t rt} | dkrt} tr t} | S )zy
    Return a function which returns console dimensions (width, height).
    Supported: linux, osx, windows, cygwin.
    N)ÚIS_WINÚ_screen_shape_windowsÚ_screen_shape_tputÚIS_NIXÚ_screen_shape_linux)Z_screen_shaper   r   r   Ú_screen_shape_wrapperÕ   s    r}   c                 C   sÀ   z¦dd l }ddlm}m} ddlm}m} d}| |kr<d}n| |krHd}|j |¡}|dƒ}|j 	||¡}	|	r¤| 
d|j¡\}
}}}}}}}}}}|| || fW S W n tk
rº   Y nX d	S )
Nr   )Úcreate_string_bufferÚwindll)ÚstdinÚstdoutiôÿÿÿiöÿÿÿiõÿÿÿé   ZhhhhHhhhhhh©NN)ÚstructÚctypesr~   r   Úsysr€   r�   Úkernel32ZGetStdHandleZGetConsoleScreenBufferInfoÚunpackÚrawrm   )rq   r„   r~   r   r€   r�   Z	io_handleÚhZcsbirf   Z_bufxZ_bufyZ_curxZ_curyZ_wattrÚleftÚtopÚrightÚbottomZ_maxxZ_maxyr   r   r   ry   ä   s*    ÿ ry   c                     sD   z*ddl ‰ddlm‰  ‡ ‡fdd„dD ƒW S  tk
r>   Y nX dS )zcygwin xterm (windows)r   N)Ú
check_callc                    s&   g | ]}t ˆ ˆ d | ¡ƒƒd ‘qS )ztput r   )ÚintÚsplitr   ©r�   Úshlexr   r   Ú
<listcomp>  s   ÿz&_screen_shape_tput.<locals>.<listcomp>)ÚcolsÚlinesrƒ   )r“   Ú
subprocessr�   rm   )r    r   r’   r   rz   ü   s    ÿrz   c                 C   s´   z(ddl m } ddlm} ddlm} W n tk
r>   Y dS X z(|d|| |dƒƒd d… \}}||fW S  tk
r®   zd	d
„ dD ƒW  Y S  ttfk
r¨   Y Y dS X Y nX d S )Nr   )Úarray)Úioctl)Ú
TIOCGWINSZrƒ   rŠ   z        é   c                 S   s   g | ]}t tj| ƒd  ‘qS )r   )r�   ÚosÚenvironr   r   r   r   r”     s     z'_screen_shape_linux.<locals>.<listcomp>)ÚCOLUMNSÚLINES)	r˜   Úfcntlr™   Útermiosrš   ÚImportErrorrm   ri   rT   )rq   r˜   r™   rš   Úrowsr•   r   r   r   r|     s    
r|   c                     s4   t dtdd� tƒ ‰ ˆ sdS tˆ ƒ‡ fdd„ƒ} | S )zd
    Return a function which returns console width.
    Supported: linux, osx, windows, cygwin.
    zQUse `_screen_shape_wrapper()(file)[0]` instead of `_environ_cols_wrapper()(file)`r›   )Ú
stacklevelNc                    s   ˆ | ƒd S r   r   rp   ©Úshaper   r   r\   &  s    z$_environ_cols_wrapper.<locals>.inner)r   ÚDeprecationWarningr}   r   )r\   r   r¥   r   Ú_environ_cols_wrapper  s     ÿr¨   c                   C   s   t jdkrtd krdS dS )NÚntr   z[A)rœ   r5   Úcoloramar   r   r   r   Ú_term_move_up-  s    r«   c                 C   s   t dd„ t| ƒD ƒƒS )Nc                 s   s"   | ]}t |ƒd krdndV  qdS )ÚFWr›   r   Nr   )r   Úchr   r   r   r   2  s     z_text_width.<locals>.<genexpr>)ÚsumrU   )rG   r   r   r   Ú_text_width1  s    r¯   c                 C   s   t t d| ¡ƒS )zp
    Returns the real on-screen length of a string which may contain
    ANSI control codes and wide chars.
    r   )r¯   ÚRE_ANSIÚsub)re   r   r   r   Údisp_len5  s    r²   c                 C   sp   t | ƒt| ƒkr| d|… S tt | ¡ƒ}t| ƒ|krD| dd… } q*|rltt | ¡ƒrl|  d¡rd| S | d S | S )zB
    Trim a string which may contain ANSI control characters.
    Néÿÿÿÿz[0m)rd   r²   Úboolr°   ÚsearchÚendswith)re   ÚlengthZansi_presentr   r   r   Ú	disp_trim=  s    r¸   )1r%   rœ   Úrer†   Ú	functoolsr   Úunicodedatar   Úwarningsr   Úweakrefr   ÚrangeÚchrrU   Ú_rangeZ_unichZ_unicodeZ_basestringÚplatformr
   Úanyrx   r{   Úcompiler°   rª   r¢   ÚinitÚ	TypeErrorr;   r   r&   r1   r@   rK   ra   ro   rr   rw   r}   ry   rz   r|   r¨   r«   r¯   r²   r¸   r   r   r   r   Ú<module>   sP   


+	