o
    _cw*                     @   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m	Z	m
Z
 ddlmZ dgZeeZdd	 Zd
ddd dfddZedZedZdZdZejdfddZdS )zI
Module version for monitoring CLI pipes (`... | python -m tqdm | ...`).
    N)literal_eval   )TqdmKeyErrorTqdmTypeErrortqdm)__version__mainc              	   C   s   t | |f d|v r,|dD ]}zt| |W   S  ty#   Y qw t| d | |dkrH| dks8| dkr:dS | dkr@dS t| d | zt|d	 |  d
 W S  tyv   |dkrntttd|  d 	  Y S t| d | w )Nz or z : boolTrue TFalseFz("z")chr")
logdebugsplitcastr   eval	Exceptionr   ordencode)valtypt r   3/usr/local/lib/python3.10/dist-packages/tqdm/cli.pyr      s,    r      \n   c                 C      d S Nr   )floatr   r   r   <lambda>,       r!   Tc                 C   s"  |j }|s#	 | |}|st|ddd   dS || |t| qd}t|}		 | |}|sZ|rO|| |rC|d||  n||D ]}
||
 qHt|ddd   dS 	 ||}
|
d	k ri||7 }n'|||d|
t|    ||r|dn||d|
   d}||
|	 d }q[q*)
aZ  
    Params
    ------
    fin  : binary file with `read(buf_size : int)` method
    fout  : binary file with `write` (and optionally `flush`) methods.
    callback  : function(float), e.g.: `tqdm.update`
    callback_len  : If (default: True) do `callback(len(buffer))`.
      Otherwise, do `callback(data) for data in buffer.split(delim)`.
    Tflushc                   S   r   r   r   r   r   r   r   r!   >   r"   zposix_pipe.<locals>.<lambda>N    r   c                   S   r   r   r   r   r   r   r   r!   U   r"   r   )writereadgetattrlencountr   find)ZfinZfoutdelimbuf_sizecallbackcallback_lenfp_writetmpbufZ	len_delimir   r   r   
posix_pipe+   sD   



r3   z\n {8}(\S+)\s{2,}:\s*([^,]+)z\s*(?<!\S)--?([^\s=]+)(\s+|=|$))iterableguioutfilea  
        Extra CLI Options
        -----------------
        name  : type, optional
            TODO: find out why this is needed.
        delim  : chr, optional
            Delimiting character [default: '\n']. Use '\0' for null.
            N.B.: on Windows systems, Python converts '\n' to '\r\n'.
        buf_size  : int, optional
            String buffer size in bytes [default: 256]
            used when `delim` is specified.
        bytes  : bool, optional
            If true, will count bytes, ignore `delim`, and default
            `unit_scale` to True, `unit_divisor` to 1024, and `unit` to 'B'.
        tee  : bool, optional
            If true, passes `stdin` to both `stderr` and `stdout`.
        update  : bool, optional
            If true, will treat input as newly elapsed iterations,
            i.e. numbers to pass to `update()`. Note that this is slow
            (~2e5 it/s) since every input must be decoded as a number.
        update_to  : bool, optional
            If true, will treat input as total elapsed iterations,
            i.e. numbers to assign to `self.n`. Note that this is slow
            (~2e5 it/s) since every input must be decoded as a number.
        null  : bool, optional
            If true, will discard input (no stdout).
        manpath  : str, optional
            Directory in which to install tqdm man pages.
        comppath  : str, optional
            Directory in which to place tqdm completion.
        log  : str, optional
            CRITICAL|FATAL|ERROR|WARN(ING)|[default: 'INFO']|DEBUG|NOTSET.
c                    s   du rt jdd  z d}W n ty1    D ]}|dr,|tdd } nqd}Y nw  |d  }tjtt|dd t	j
jt }tt|}tD ]}|| qQtt|  t|}t|ddd |d	dd |ddd }	d
dd |	D }d}
|
d |d d }t fdddD rt jtd  t d n1t fdddD rt j|d  t d n r݈ d dd	 dkrt jd  d |
 t!ddg   tt ddd  ddd }t| |dd di}zY| D ])\}}|"dd}zt#||| ||< W q t$y6 } zt%t&|d}~ww tdt&|  |dd }|d!d }|d"d }t'|||fdkr`t%d#W n" t(y   d$|
  t j)t jj}|D ]}| qz w |d%d&}|d'd(}|d)d }|d*d}|d+d}|d,d rG d-d. d.t*}n	t j}t|d/|}tt j)d/t j)}|s|rdd0l+m,} dd1l-m. zddl/W n t0y   dd2l1m2 Y nw fd3d4}|dur|d5||d5 |dur|d6||d7 t d |r-|jtd/jG fd8d.d.t*}|rk|3d9d: |3d;d |3d<d= t| t	dCi |t4||d
|j5 W d   dS 1 sdw   Y  dS |d(krt| |j}|s~|rt	dCi |&|rfd>d?}nfd@d?}|D ]}|| || qW d   n1 sw   Y  dS dS t	|fi |D ]}|| qdS t| t	dCi |-d }|rfdAd?}n|rfdBd?}nj5}d}t4|||||| W d   dS 1 sw   Y  dS )Dz
    Parameters (internal use only)
    ---------
    fp  : file-like object for tqdm
    argv  : list (default: sys.argv[1:])
    Nr   z--logz--log=INFOz/%(levelname)s:%(module)s:%(lineno)d:%(message)s)levelformat      r   c                 s   sX    | ]'}|d  t vr|d dkrdndj|d  dd|d  g|dd R  V  qdS )r   r   r	   z
  --{0}  : {2}{3}z
  --{0}=<{1}>  : {2}{3}_-N)UNSUPPORTED_OPTSr:   replace).0Zotdr   r   r   	<genexpr>   s    
zmain.<locals>.<genexpr>z!Usage:
  tqdm [--help | options]
z^
Options:
  -h, --help     Print this help and exit.
  -v, --version  Print version and exit.

c                 3       | ]}| v V  qd S r   r   rA   vargvr   r   rB          )z-vz	--versionr   c                 3   rD   r   r   rE   rG   r   r   rB      rI   )z-hz--helpz--zError:Unknown argument:{0}
{1} r   r   Tr7   r>   r=   zargs:bytesFupdate	update_toz1Can only have one of --bytes --update --update_toz
Error:
r,   r   r+   r   teemanpathcomppathnullc                   @   s   e Zd Zedd ZdS )main.<locals>.stdoutc                 S   r   r   r   )r=   r   r   r   r%      s   main.<locals>.stdout.writeN__name__
__module____qualname__staticmethodr%   r   r   r   r   stdout   s    rY   buffer)path)copyfile)	resourcesc                    sn   t dr td|  | nd| } t|| W d   n1 s*w   Y  td| dS )zcopy resource `name` to `dst`filesr   Nz
written:%s)hasattrstrr^   r[   r   info)namedstsrc)r\   r]   r   r   cp   s   
zmain.<locals>.cpztqdm.1zcompletion.shztqdm_completion.shc                       s    e Zd Ze fddZdS )rR   c                    s@   t j d |  W d    n1 sw   Y  |  d S )N)r7   )r   Zexternal_write_mode)xfpr/   stdout_writer   r   r%     s   
rS   NrT   r   rg   r   r   rY     s    unitBZ
unit_scaleZunit_divisori   c                         t|   d S r   rL   numericdecoder2   r   r   r   r-   #     zmain.<locals>.callbackc                         t|   j  d S r   rL   rn   ro   nrp   rq   r   r   r-   &     c                    rl   r   rm   rp   rq   r   r   r-   3  rr   c                    rs   r   rt   rp   rq   r   r   r-   6  rv   r   )6sysrH   index
ValueError
startswithr(   loggingbasicConfigr'   r   __init____doc__CLI_EXTRA_DOCdictRE_OPTSfindallr?   popr   r   sorteditemsr   zipjoinstripanyrY   r%   r   exitstderrr:   RE_SHLEXr@   r   KeyErrorr   r`   sumr   stdinobjectosr[   shutilr\   Zimportlib_resourcesImportError	importlibr]   
setdefaultr3   rL   )rh   rH   Zlog_idxr2   ZlogLeveldZ	opt_typesor   Zopt_types_descZ
help_shortoptsZ	tqdm_argsrF   eZdelim_per_charrL   rM   r   r,   r+   rN   rO   rP   rY   r[   re   r%   r-   r.   r   )rH   r\   rh   r/   r]   ri   r   r   r      s  


*
"




$

&
$)r~   r{   rerw   astr   rn   Zstdr   r   r   versionr   __all__	getLoggerrU   r   r   r3   compiler   r   r?   r   r   r   r   r   r   r   <module>   s$    


:
#