a
    xd&%                     @   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rddlZneW n ey   dZY n.0 zejdd W n ey   e  Y n0 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   B/var/www/html/Ranjet/env/lib/python3.9/site-packages/tqdm/utils.py	<genexpr>       r   )win32cygwinc                 c   s   | ]}t |V  qd S r   r	   r   r   r   r   r      r   )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   Z_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   s0   zt | |W S  ty*   t| | Y S 0 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 | i |W S  t yb } z:|jdkr, ztd_W n tyL   Y n0 W Y d }~n\d }~0  ty } z<dt|vr~ ztd_W n ty   Y n0 W Y d }~n
d }~0 0 d S )N   infclosed)OSErrorerrnofloatZminitersReferenceError
ValueErrorstr)argskwargsefunctqdm_instancer   r   inner}   s     
z7DisableOnWriteError.disable_on_exception.<locals>.innerr   )rZ   rY   r[   r   rX   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?   rZ   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&   | g|R i |} t |  |S r   len)datarU   rV   rescallbackrY   r   r   rE      s    z)CallbackIOWrapper.__init__.<locals>.writera   c                     s   | i |} t | |S r   rb   )rU   rV   rd   rf   r   r   ra      s    z(CallbackIOWrapper.__init__.<locals>.readz Can only wrap read/write methodsN)rB   r`   r   r2   r   r>   KeyError)r   rg   streammethodrE   ra   rC   rf   r   r      s    
zCallbackIOWrapper.__init__)ra   )r#   r$   r%   r   rJ   r   r   rC   r   r`      s   r`   c                 C   sp   zd |  W nX ty"   Y dS  tyf   z|  dpDd| kW  Y S  ty`   Y Y dS 0 Y n0 dS d S )Nu   █▉Fzutf-ZU8T)rF   UnicodeEncodeError	Exceptionlowerr   )rA   r   r   r   _is_utf   s    rn   c                 C   s&   zt | jW S  ty    Y dS 0 d S )NF)rn   rA   r<   fpr   r   r   _supports_unicode   s    rq   c                 C   s2   t | tr*| D ]}t|dkr dS qdS t| S )N   FT)
isinstancerT   ordrq   )rG   cr   r   r   	_is_ascii   s    
rv   c                  C   s$   d} t rt} | du 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   zd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y   Y n0 d	S )
Nr   )create_string_bufferwindll)stdinstdoutiii   ZhhhhHhhhhhhNN)structctypesr}   r~   sysr   r   kernel32ZGetStdHandleGetConsoleScreenBufferInfounpackrawrl   )rp   r   r}   r~   r   r   Z	io_handlehcsbire   Z_bufxZ_bufyZ_curxZ_curyZ_wattrlefttoprightZbottomZ_maxxZ_maxyr   r   r   rx      s(    rx   c                     sB   z*ddl ddlm   fdddD W S  ty<   Y n0 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   rl   )r!   r   r   r   ry      s    ry   c                 C   s   z(ddl m } ddlm} ddlm} W n ty<   Y dS 0 z(|d|| |dd d \}}||fW S  ty   zd	d
 dD W  Y S  ttfy   Y Y dS 0 Y n0 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     r   z'_screen_shape_linux.<locals>.<listcomp>)COLUMNSLINES)	r   Zfcntlr   termiosr   ImportErrorrl   rh   rS   )rp   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   ro   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 u 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 v rdndV  qdS )ZFWr   r    Nr   )r   chr   r   r   r   2  r   z_text_width.<locals>.<genexpr>)sumrT   )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)rd   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.
    Nz[0m)rc   r   boolr   searchendswith)rd   lengthZansi_presentr   r   r   	disp_trim=  s    r   )1r&   r   rer   	functoolsr   unicodedatar   warningsr   weakrefr   rangechrrT   _rangeZ_unichZ_unicodeZ_basestringplatformr
   anyrw   rz   compiler   r   r   init	TypeErrorr;   r   r'   r1   r@   rK   r`   rn   rq   rv   r|   rx   ry   r{   r   r   r   r   r   r   r   r   r   <module>   sP   


+	