o
    Œõ±j&  ã                   @   sÖ  d Z ddlZddlZddlZddlmZmZm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yj   dZY nw zej dd� W n e!y€   e  ¡  Y nw d2dd„Z"zddl"m"Z" W n	 e#y—   Y nw G dd„ dƒZ$G dd„ dƒZ%G dd„ dƒ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-„ Z0d.d/„ Z1d0d1„ Z2dS )3z*
General helpers required for `tqdm.std`.
é    N)ÚpartialÚpartialmethodÚwraps)Ú	signature©Úeast_asian_width)Úwarn©Úproxyc                 c   ó   � | ]}t  |¡V  qd S ©N©ÚCUR_OSÚ
startswith©Ú.0Úi© r   ú}/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/tqdm/utils.pyÚ	<genexpr>   ó   € r   )Úwin32Úcygwinc                 c   r   r   r   r   r   r   r   r      r   )ÚaixÚlinuxÚdarwinÚfreebsdz\x1b\[[;\d]*[A-Za-z]F)ÚstripÚ c                    s°   ˆdu ri ‰| d dkr| dd… } t dtdd� |r$| | › d|› �fn| f}i ‰ |D ]‰ˆ ¡ d ‰tˆƒ‰ˆ  ‡‡fdd„tj ¡ D ƒ¡ q+|rLtnt	‰‡ ‡‡fd	d
„}|S )z€
    Basic (env-only) version of [envwrap](https://github.com/tqdm/envwrap).
    Install `envwrap` for config file support.
    NéÿÿÿÿÚ_z*Trailing underscore in `name` is automaticé   ©Ú
stacklevelc                 3   s2   � | ]\}}|  ˆ¡r|ˆ d …  ¡ |fV  qd S r   )r   Úlower©r   ÚkÚv)r   Úprefixr   r   r   1   s   € ÿ
ÿzenvwrap.<locals>.<genexpr>c              
      sÜ   t | ƒj‰ ‡ fdd„ˆ ¡ D ƒ}|D ]S}ˆ | }|j|jur?t|jd|jfƒD ]}z
||| ƒ||< W n	 ty<   Y q'w  q|jd urPt|jƒ|| ƒ||< qzˆ| || ƒ||< W q t	ye   Y qw ˆ| fi |¤ŽS )Nc                    s   i | ]\}}|ˆ v r||“qS r   r   r%   ©Úparamsr   r   Ú
<dictcomp>8   s    z)envwrap.<locals>.wrap.<locals>.<dictcomp>Ú__args__)
r   Ú
parametersÚitemsÚ
annotationÚemptyÚgetattrÚ	ExceptionÚdefaultÚtypeÚKeyError)ÚfuncÚ	overridesr&   ÚparamÚtyp)Úenv_overridesÚpartÚtypesr)   r   Úwrap5   s*   
ÿ€
ÿzenvwrap.<locals>.wrap)
r   ÚDeprecationWarningÚupperÚlenÚupdateÚosÚenvironr.   r   r   )ÚnameÚappr<   Ú	is_methodÚprefixesr=   r   )r:   r   r;   r(   r<   r   Úenvwrap"   s    
ÿrH   )rH   c                   @   s"   e Zd ZdZddd„Zdd„ ZdS )	ÚFormatReplacezN
    >>> a = FormatReplace('something')
    >>> f"{a:5d}"
    'something'
    r   c                 C   s   || _ d| _d S ©Nr   )ÚreplaceÚformat_called)ÚselfrK   r   r   r   Ú__init__[   s   
zFormatReplace.__init__c                 C   s   |  j d7  _ | jS )Né   )rL   rK   )rM   r    r   r   r   Ú
__format___   s   zFormatReplace.__format__N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rN   rP   r   r   r   r   rI   U   s    
rI   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©rM   Úotherr   r   r   Ú__lt__f   ó   zComparable.__lt__c                 C   s   | |k p| |kS r   r   rX   r   r   r   Ú__le__i   s   zComparable.__le__c                 C   s   | j |j kS r   rV   rX   r   r   r   Ú__eq__l   r[   zComparable.__eq__c                 C   s
   | |k S r   r   rX   r   r   r   Ú__ne__o   ó   
zComparable.__ne__c                 C   s
   | |k S r   r   rX   r   r   r   Ú__gt__r   r_   zComparable.__gt__c                 C   s
   | |k  S r   r   rX   r   r   r   Ú__ge__u   r_   zComparable.__ge__N)
rQ   rR   rS   rT   rZ   r\   r]   r^   r`   ra   r   r   r   r   rU   d   s    rU   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   )r1   Ú_wrapped©rM   rD   r   r   r   Ú__getattr__z   r[   zObjectWrapper.__getattr__c                 C   s   t | j||ƒS r   )Úsetattrrc   ©rM   rD   Úvaluer   r   r   Ú__setattr__}   s   zObjectWrapper.__setattr__c                 C   s,   zt  | |¡W S  ty   t| |ƒ Y S w )z7Actual `self.getattr` rather than self._wrapped.getattr)Úobjectre   ÚAttributeErrorr1   rd   r   r   r   Úwrapper_getattr€   s
   ÿzObjectWrapper.wrapper_getattrc                 C   s   t  | ||¡S )z7Actual `self.setattr` rather than self._wrapped.setattr)rj   ri   rg   r   r   r   Úwrapper_setattr‡   s   zObjectWrapper.wrapper_setattrc                 C   s   |   d|¡ dS )z4
        Thin wrapper around a given object
        rc   N)rm   )rM   Úwrappedr   r   r   rN   ‹   s   zObjectWrapper.__init__N)rQ   rR   rS   re   ri   rl   rm   rN   r   r   r   r   rb   y   s    rb   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 ƒ  |¡ |  d|¡ d S )NÚencoding)ÚsuperrN   rm   )rM   rn   rp   ©Ú	__class__r   r   rN   ˜   s   zSimpleTextIOWrapper.__init__c                 C   s   | j  | |  d¡¡¡S )zP
        Encode `s` and pass to the wrapped object's `.write()` method.
        rp   )rc   ÚwriteÚencoderl   )rM   Úsr   r   r   rt   œ   s   zSimpleTextIOWrapper.writec                 C   ó   | j t|d|ƒkS ©Nrc   ©rc   r1   rX   r   r   r   r]   ¢   ó   zSimpleTextIOWrapper.__eq__)rQ   rR   rS   rT   rN   rt   r]   Ú__classcell__r   r   rr   r   ro   ’   s
    ro   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 y9 } z%|jdkr‚ ztdƒˆ_W n	 ty&   Y nw W Y d }~d S W Y d }~d S d }~w tyj } z&dt|ƒvrG‚ ztdƒˆ_W n	 tyW   Y nw W Y d }~d S W Y d }~d S d }~ww )Né   ÚinfÚclosed)ÚOSErrorÚerrnoÚfloatÚminitersÚReferenceErrorÚ
ValueErrorÚstr)ÚargsÚkwargsÚe©r6   Útqdm_instancer   r   Úinner±   s2   
ÿÿ€ÿÿ€úz7DisableOnWriteError.disable_on_exception.<locals>.innerr	   )r‹   r6   rŒ   r   rŠ   r   Údisable_on_exceptionª   s   z(DisableOnWriteError.disable_on_exceptionc                    sT   t ƒ  |¡ t|dƒr|  d|  ||j¡¡ t|dƒr(|  d|  ||j¡¡ d S d S )Nrt   Úflush)rq   rN   Úhasattrrm   r�   rt   rŽ   )rM   rn   r‹   rr   r   r   rN   Ä   s   
ÿ
ÿÿzDisableOnWriteError.__init__c                 C   rw   rx   ry   rX   r   r   r   r]   Í   rz   zDisableOnWriteError.__eq__)	rQ   rR   rS   rT   Ústaticmethodr�   rN   r]   r{   r   r   rr   r   r|   ¦   s    
	r|   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )ÚCallbackIOWrapperÚreadc                    sz   t ƒ  |¡ t||ƒ‰|dkr"tˆƒ‡ ‡fdd„ƒ}|  d|¡ dS |dkr9tˆƒ‡ ‡fdd„ƒ}|  d|¡ dS tdƒ‚)	z{
        Wrap a given `file`-like object's `read()` or `write()` to report
        lengths to the given `callback`
        rt   c                    s&   ˆ| g|¢R i |¤Ž}ˆ t | ƒƒ |S r   ©r@   )Údatar‡   rˆ   Úres©Úcallbackr6   r   r   rt   Ú   s   z)CallbackIOWrapper.__init__.<locals>.writer’   c                     s   ˆ| i |¤Ž}ˆ t |ƒƒ |S r   r“   )r‡   rˆ   r”   r–   r   r   r’   á   s   z(CallbackIOWrapper.__init__.<locals>.readz Can only wrap read/write methodsN)rq   rN   r1   r   rm   r5   )rM   r—   ÚstreamÚmethodrt   r’   rr   r–   r   rN   Ò   s   
zCallbackIOWrapper.__init__)r’   )rQ   rR   rS   rN   r{   r   r   rr   r   r‘   Ñ   s    r‘   c                 C   sf   zd  | ¡ W dS  ty   Y dS  ty2   z|  ¡  d¡p#d| kW  Y S  ty1   Y Y dS w w )Nu   â–ˆâ–‰Fzutf-ÚU8T)ru   ÚUnicodeEncodeErrorr2   r$   r   )rp   r   r   r   Ú_is_utfë   s   	øÿýrœ   c                 C   s"   zt | jƒW S  ty   Y dS w )NF)rœ   rp   rk   ©Úfpr   r   r   Ú_supports_unicodeù   s
   ÿrŸ   c                 C   s2   t | tƒr| D ]}t|ƒdkr dS qdS t| ƒS )Néÿ   FT)Ú
isinstancer†   ÚordrŸ   )rv   Úcr   r   r   Ú	_is_ascii   s   
ÿr¤   c                  C   s   dd„ } | S )zy
    Return a function which returns console dimensions (width, height).
    Supported: linux, osx, windows, cygwin.
    c                 S   sN   zddl m} |t| ddd„ ƒƒ ƒ\}}|d |d fW S  ty&   Y dS w )Nr   )Úget_terminal_sizeÚfilenoc                   S   s   d S r   r   r   r   r   r   Ú<lambda>  s    z6_screen_shape_wrapper.<locals>.inner.<locals>.<lambda>rO   )NN)rB   r¥   r1   r2   )rž   r¥   ÚcolsÚlinesr   r   r   rŒ     s   ÿz$_screen_shape_wrapper.<locals>.innerr   ©rŒ   r   r   r   Ú_screen_shape_wrapper	  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!   r"   Nc                    s   ˆ | ƒd S rJ   r   r�   ©Úshaper   r   rŒ   $  s   z$_environ_cols_wrapper.<locals>.inner)r   r>   r«   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)rB   rD   Ú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 )ÚFWr!   rO   Nr   )r   Úchr   r   r   r   0  s   €" z_text_width.<locals>.<genexpr>)Úsumr†   )rv   r   r   r   Ú_text_width/  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)r”   r   r   r   Údisp_len3  s   r¸   c                 C   sz   t | ƒt| ƒkr| d|… S tt | ¡ƒ}t| ƒ|kr'| dd… } t| ƒ|ks|r;tt | ¡ƒr;|  d¡r7| S | d S | S )zB
    Trim a string which may contain ANSI control characters.
    Nr   z[0m)r@   r¸   Úboolr¶   ÚsearchÚendswith)r”   ÚlengthÚansi_presentr   r   r   Ú	disp_trim;  s   ÿr¾   )r   NF)3rT   rB   ÚreÚsysÚ	functoolsr   r   r   Úinspectr   Úunicodedatar   Úwarningsr   Úweakrefr
   ÚrangeÚchrr†   Ú_rangeÚ_unichÚ_unicodeÚ_basestringÚplatformr   ÚanyÚIS_WINÚIS_NIXÚcompiler¶   r°   ÚImportErrorÚinitÚ	TypeErrorrH   ÚModuleNotFoundErrorrI   rU   rb   ro   r|   r‘   rœ   rŸ   r¤   r«   r®   r±   rµ   r¸   r¾   r   r   r   r   Ú<module>   s`    

þÿÿ
-ÿ+	