
    Qg-.                     V   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              Z ed
 dD              Z ej8                  d      Z	 erddlZne	 	  ej@                  d       d(dZ" G d de#      Z$ G d de#      Z% G d de#      Z& G d de&      Z' G d de&      Z( G d de&      Z)d Z*d Z+d Z,d Z-d  Z.d! Z/d" Z0d# Z1d$ Z2d% Z3d& Z4d' Z5y# e!$ r  ej@                          Y w xY w# e$ r dZY w xY w))z*
General helpers required for `tqdm.std`.
    N)partialpartialmethodwraps)	signatureeast_asian_width)warnproxyc              #   F   K   | ]  }t         j                  |        y wNCUR_OS
startswith.0is     >/mnt/exchange/gdown/lib/python3.12/site-packages/tqdm/utils.py	<genexpr>r      s     ?aVq!?   !)win32cygwinc              #   F   K   | ]  }t         j                  |        y wr   r   r   s     r   r   r      s     QaVq!Qr   )aixlinuxdarwinfreebsdz\x1b\[[;\d]*[A-Za-z]F)stripc                 
   i t        |       }t        j                  j                         D ci c]+  \  }}|j	                  |       s||d j                         |- c}}|rt        nt        fd}|S c c}}w )a  
    Override parameter defaults via `os.environ[prefix + param_name]`.
    Maps UPPER_CASE env vars map to lower_case param names.
    camelCase isn't supported (because Windows ignores case).

    Precedence (highest first):

    - call (`foo(a=3)`)
    - environ (`FOO_A=2`)
    - signature (`def foo(a=1)`)

    Parameters
    ----------
    prefix  : str
        Env var prefix, e.g. "FOO_"
    types  : dict, optional
        Fallback mappings `{'param_name': type, ...}` if types cannot be
        inferred from function signature.
        Consider using `types=collections.defaultdict(lambda: ast.literal_eval)`.
    is_method  : bool, optional
        Whether to use `functools.partialmethod`. If (default: False) use `functools.partial`.

    Examples
    --------
    ```
    $ cat foo.py
    from tqdm.utils import envwrap
    @envwrap("FOO_")
    def test(a=1, b=2, c=3):
        print(f"received: a={a}, b={b}, c={c}")

    $ FOO_A=42 FOO_C=1337 python -c 'import foo; foo.test(c=99)'
    received: a=42, b=2, c=99
    ```
    Nc                    t        |       j                  }j                         D ci c]  \  }}||v s|| }}}|D ]  }||   }|j                  |j                  ur8t        |j                  d|j                  f      D ]  }	  |||         ||<    V X|j                  " t        |j                        ||         ||<   	  	|   ||         ||<     | fi |S c c}}w # t        $ r Y rw xY w# t        $ r Y w xY w)N__args__)
r   
parametersitems
annotationemptygetattr	ExceptiondefaulttypeKeyError)
funcparamskv	overridesparamtypenv_overridesparttypess
          r   wrapzenvwrap.<locals>.wrapL   s.   4++&3&9&9&;KdaqF{QTK	K 	A1IEu{{2"5#3#3Z%BRBRATU C'*9Q<'8	!  *2tEMM29Q<@	!#+58IaL#9IaL	" D&I&&' L %    s.   C$C$C*C9*	C65C69	DD)lenosenvironr#   r   lowerr   r   )	prefixr4   	is_methodr   r-   r.   r5   r2   r3   s	    `     @@r   envwrapr<   "   sr    H }FA24**2B2B2D]$!QU[H\QqrU[[]A%]M%=7D'. K5 ^s   A?A?c                       e Zd ZdZddZd Zy)FormatReplacezN
    >>> a = FormatReplace('something')
    >>> f"{a:5d}"
    'something'
    c                      || _         d| _        y Nr   )replaceformat_called)selfrA   s     r   __init__zFormatReplace.__init__l   s        c                 D    | xj                   dz  c_         | j                  S )N   )rB   rA   )rC   _s     r   
__format__zFormatReplace.__format__p   s    a||rE   N) )__name__
__module____qualname____doc__rD   rI    rE   r   r>   r>   f   s    
rE   r>   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	
Comparablez1Assumes child has self._comparable attr/@propertyc                 4    | j                   |j                   k  S r   _comparablerC   others     r   __lt__zComparable.__lt__w   s    %"3"333rE   c                     | |k  xs | |k(  S r   rO   rU   s     r   __le__zComparable.__le__z   s    u0$%-0rE   c                 4    | j                   |j                   k(  S r   rS   rU   s     r   __eq__zComparable.__eq__}   s    5#4#444rE   c                     | |k(   S r   rO   rU   s     r   __ne__zComparable.__ne__       5=  rE   c                     | |k   S r   rO   rU   s     r   __gt__zComparable.__gt__   r^   rE   c                     | |k   S r   rO   rU   s     r   __ge__zComparable.__ge__   s    %<rE   N)
rK   rL   rM   rN   rW   rY   r[   r]   r`   rb   rO   rE   r   rQ   rQ   u   s#    ;415!! rE   rQ   c                   *    e Zd Zd Zd Zd Zd Zd Zy)ObjectWrapperc                 .    t        | j                  |      S r   )r&   _wrappedrC   names     r   __getattr__zObjectWrapper.__getattr__   s    t}}d++rE   c                 0    t        | j                  ||      S r   )setattrrf   rC   rh   values      r   __setattr__zObjectWrapper.__setattr__   s    t}}dE22rE   c                 f    	 t         j                  | |      S # t        $ r t        | |      cY S w xY w)z7Actual `self.getattr` rather than self._wrapped.getattr)objectri   AttributeErrorr&   rg   s     r   wrapper_getattrzObjectWrapper.wrapper_getattr   s6    	'%%dD11 	'4&&	's    00c                 0    t         j                  | ||      S )z7Actual `self.setattr` rather than self._wrapped.setattr)rp   rn   rl   s      r   wrapper_setattrzObjectWrapper.wrapper_setattr   s    !!$e44rE   c                 (    | j                  d|       y)z4
        Thin wrapper around a given object
        rf   N)rt   )rC   wrappeds     r   rD   zObjectWrapper.__init__   s     	Z1rE   N)rK   rL   rM   ri   rn   rr   rt   rD   rO   rE   r   rd   rd      s    ,3'52rE   rd   c                   .     e Zd ZdZ fdZd Zd Z x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                 H    t         |   |       | j                  d|       y )Nencoding)superrD   rt   )rC   rv   rz   	__class__s      r   rD   zSimpleTextIOWrapper.__init__   s     !Z2rE   c                 t    | j                   j                  |j                  | j                  d                  S )zP
        Encode `s` and pass to the wrapped object's `.write()` method.
        rz   )rf   writeencoderr   )rC   ss     r   r~   zSimpleTextIOWrapper.write   s-     }}""188D,@,@,L#MNNrE   c                 6    | j                   t        |d|      k(  S Nrf   rf   r&   rU   s     r   r[   zSimpleTextIOWrapper.__eq__       }}z5 AAArE   )rK   rL   rM   rN   rD   r~   r[   __classcell__r|   s   @r   rx   rx      s    
3OBrE   rx   c                   8     e Zd ZdZed        Z fdZd Z xZS )DisableOnWriteErrorzO
    Disable the given `tqdm_instance` upon `write()` or `flush()` errors.
    c                 ,     t                 fd}|S )zV
        Quietly set `tqdm_instance.miniters=inf` if `func` raises `errno=5`.
        c                  8   	  | i |S # t         $ r@}|j                  dk7  r 	 t        d      _        n# t        $ r Y nw xY wY d }~y Y d }~y d }~wt
        $ r>}dt        |      vr 	 t        d      _        n# t        $ r Y nw xY wY d }~y Y d }~y d }~ww xY w)N   infclosed)OSErrorerrnofloatminitersReferenceError
ValueErrorstr)argskwargser+   tqdm_instances      r   innerz7DisableOnWriteError.disable_on_exception.<locals>.inner   s    T,V,, 77a<-25\M*%  +  3q6)-25\M*%  +	sc    	BA6A	AAAABB*A;:B;	BBBBBr
   )r   r+   r   s   `` r   disable_on_exceptionz(DisableOnWriteError.disable_on_exception   s    
 m,	" rE   c                    t         |   |       t        |d      r,| j                  d| j	                  ||j
                               t        |d      r-| j                  d| j	                  ||j                               y y )Nr~   flush)r{   rD   hasattrrt   r   r~   r   )rC   rv   r   r|   s      r   rD   zDisableOnWriteError.__init__   ss    !7G$  22='--PR7G$  22='--PR %rE   c                 6    | j                   t        |d|      k(  S r   r   rU   s     r   r[   zDisableOnWriteError.__eq__   r   rE   )	rK   rL   rM   rN   staticmethodr   rD   r[   r   r   s   @r   r   r      s(      2RBrE   r   c                         e Zd Zd fd	Z xZS )CallbackIOWrapperc                    t         |   |       t        ||      |dk(  r't              fd       }| j	                  d|       y|dk(  r't              fd       }| j	                  d|       yt        d      )z{
        Wrap a given `file`-like object's `read()` or `write()` to report
        lengths to the given `callback`
        r~   c                 B     | g|i |} t        |              |S r   r6   )datar   r   rescallbackr+   s       r   r~   z)CallbackIOWrapper.__init__.<locals>.write   s(    41$1&1T#
rE   readc                  :     | i |} t        |             |S r   r   )r   r   r   r   r+   s      r   r   z(CallbackIOWrapper.__init__.<locals>.read   s#    T,V,T#rE   z Can only wrap read/write methodsN)r{   rD   r&   r   rt   r*   )rC   r   streammethodr~   r   r+   r|   s    `    @r   rD   zCallbackIOWrapper.__init__   s    
 	 vv&W4[    %0v4[    .=>>rE   )r   )rK   rL   rM   rD   r   r   s   @r   r   r      s    ? ?rE   r   c                     	 dj                  |        y# t        $ r Y yt        $ r: 	 | j                         j	                  d      xs d| k(  cY S # t        $ r Y Y yw xY ww xY w)Nu   █▉TFzutf-U8)r   UnicodeEncodeErrorr'   r9   r   )rz   s    r   _is_utfr      so    
x(    	>>#..v6L48;KL 		s1    	A!A!%AA!	AA!AA!c                 L    	 t        | j                        S # t        $ r Y yw xY wNF)r   rz   rq   )fps    r   _supports_unicoder   
  s(    r{{## s    	##c                 h    t        | t              r| D ]  }t        |      dkD  s y yt        |       S )N   FT)
isinstancer   ordr   )r   cs     r   	_is_asciir     s9    !S 	A1v|	 QrE   c                  J    d} t         rt        } | 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)_screen_shapes    r   _screen_shape_wrapperr     s*    
 M- .M+rE   c                 V   	 dd l }ddlm}m} ddlm}m} d}| |k(  rd}n| |k(  rd}|j                  j                  |      } |d      }|j                  j                  ||      }	|	r2|j                  d|j                        \  }
}}}}}}}}}}||z
  ||z
  fS 	 y	# t        $ r Y y	w xY w)
Nr   )create_string_bufferwindll)stdinstdoutiii   hhhhHhhhhhhNN)structctypesr   r   sysr   r   kernel32GetStdHandleGetConsoleScreenBufferInfounpackrawr'   )r   r   r   r   r   r   	io_handlehcsbir   _bufx_bufy_curx_cury_wattrlefttoprightbottom_maxx_maxys                        r   r   r   )  s    7%	;I6\IOO((3#B'oo88DA#]]=$((CUE5%sE6E4<#--    s   BB 	B('B(c                      	 ddl }ddlm} dD cg c](  }t         ||j	                  d|z                     dz
  * c}S c c}w # t
        $ r Y yw xY w)zcygwin xterm (windows)r   N)
check_call)colslinesztput rG   r   )shlex
subprocessr   intsplitr'   )rH   r   r   r   s       r   r   r   A  s^    )*, Ju{{7Q;789A= , 	, , s!   A -A A  A 	AAc                 0   	 ddl m } ddlm} ddlm} 	  |d || |d            d d \  }}||fS # t
        $ rM 	 dD cg c]!  }t        t        j                  |         d	z
  # nc c}w c}cY S # t        t        f$ r Y Y y
w xY ww xY w# t        $ r Y y
w xY w)Nr   )array)ioctl)
TIOCGWINSZr   z           )COLUMNSLINESrG   r   )r   fcntlr   termiosr   r'   r   r7   r8   r*   r   ImportError)r   r   r   r   rowsr   r   s          r   r   r   M  s    "&	"sE"j($CDRaHJD$: 	""8LM1BJJqM*Q.MMMj) "!"	"  sH   B	 0 	BA/&A%$A/,B/B>BBB		BBc                  l    t        dt        d       t               syt              f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                      |       d   S r@   rO   )r   shapes    r   r   z$_environ_cols_wrapper.<locals>.innerk  s    Ry|rE   )r	   DeprecationWarningr   r   )r   r   s    @r   _environ_cols_wrapperr   `  sC    
 	 
,-?AO!#E
5\  LrE   c                  <    t         j                  dk(  rt        dS dS )NntrJ   z[A)r7   rh   coloramarO   rE   r   _term_move_upr   r  s    ''T/(82GxGrE   c                 8    t        d t        |       D              S )Nc              3   >   K   | ]  }t        |      d v rdnd  yw)FWr   rG   Nr   )r   chs     r   r   z_text_width.<locals>.<genexpr>w  s"     IB$R(D0qa7Is   )sumr   )r   s    r   _text_widthr  v  s    I#a&IIIrE   c                 @    t        t        j                  d|             S )zp
    Returns the real on-screen length of a string which may contain
    ANSI control codes and wide chars.
    rJ   )r  RE_ANSIsub)r   s    r   disp_lenr  z  s    
 w{{2t,--rE   c                 .   t        |       t        |       k(  r| d| S t        t        j	                  |             }t        |       |kD  r| dd } t        |       |kD  r|r6t        t        j	                  |             r| j                  d      r| S | dz   S | S )zB
    Trim a string which may contain ANSI control characters.
    Nz[0m)r6   r  boolr  searchendswith)r   lengthansi_presents      r   	disp_trimr    s     4yHTN"GV}t,-L
4.6
!CRy 4.6
!W^^D12}}Y/tETI5EEKrE   r   )6rN   r7   rer   	functoolsr   r   r   inspectr   unicodedatar   warningsr	   weakrefr   rangechrr   _range_unich_unicode_basestringplatformr   anyr   r   compiler  r   r   init	TypeErrorr<   rp   r>   rQ   rd   rx   r   r   r   r   r   r   r   r   r   r   r   r  r  r  rO   rE   r   <module>r      sg   
 	 
 3 3  (  (-sC(< %+		?+>?	?	Q+PQ	Q
"**,
- 	E"
AHF    *2F 22B- B((B- (BV? ?4 0	"&$HJ.I    Hs$   9	D D DDD('D(