U
    M»{j+  ã                   @   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
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)Úindenté   )ÚTqdmKeyErrorÚTqdmTypeErrorÚtqdm)Ú__version__Úmainc              
   C   s¢  t  | |f¡ d|kr^| d¡D ]*}zt| |ƒW   S  tk
rH   Y q X q t| › d|› �ƒ‚|dkr–| dksv| dkrzdS | dkr†dS t| d | ƒ‚|d	krät| ƒd
kr²|  ¡ S t d| ¡rÒt	d| › d�ƒ ¡ S t| › d|› �ƒ‚|dkrð| S |dk�r>z
t
| ƒW S  tk
�r< } zt| › d|› �ƒ|‚W 5 d }~X Y nX |dk�rŒz
t| ƒW S  tk
�rŠ } zt| › d|› �ƒ|‚W 5 d }~X Y nX t| › d|› �ƒ‚d S )Nz or z : ÚboolÚTrueÚ TÚFalseFÚchrr   z^\\\w+$ú"ÚstrÚintÚfloat)ÚlogÚdebugÚsplitÚcastr   ÚlenÚencodeÚreÚmatchÚevalr   Ú
ValueErrorr   )ÚvalÚtypÚtÚexc© r!   úG/var/www/html/bwave/python/venv/lib/python3.8/site-packages/tqdm/cli.pyr      sB    

&

&r   ó   \né   c                 C   s   d S ©Nr!   )r   r!   r!   r"   Ú<lambda>8   ó    r&   Tc                 C   s   |j }|sD|  |¡}|s.t|ddd„ ƒƒ  dS ||ƒ |t|ƒƒ q
d}t|ƒ}	|  |¡}|s°|rš||ƒ |r‚|d| |¡ ƒ n| |¡D ]}
||
ƒ qŒt|ddd„ ƒƒ  dS | |¡}
|
dk rÌ||7 }qP|||d|
t|ƒ …  ƒ ||ròdn||d|
…  ƒ d}||
|	 d… }q°qPdS )	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)`.
    Úflushc                   S   s   d S r%   r!   r!   r!   r!   r"   r&   J   r'   zposix_pipe.<locals>.<lambda>Nr'   r   c                   S   s   d S r%   r!   r!   r!   r!   r"   r&   a   r'   r   )ÚwriteÚreadÚgetattrr   Úcountr   Úfind)ZfinZfoutÚdelimÚbuf_sizeÚcallbackÚcallback_lenÚfp_writeÚtmpÚbufZ	len_delimÚir!   r!   r"   Ú
posix_pipe7   s8    



r6   z\n {4}(\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krt jdd… ‰ zˆ  d¡}W n@ tk
rd   ˆ D ]"}| d¡r8|tdƒd… } q`q8d}Y nX ˆ |d  }tjtt|ƒdd� t j	dk r–t
jn
tt
jd	ƒt }tt |¡ƒ}tD ]}| |¡ q¸t 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 ƒƒ�rpt j td ¡ t  d¡ nlt‡ fdd„dD ƒƒ�r¤t j |d ¡ t  d¡ n8ˆ �rÜˆ d dd… dk�rÜt j  dˆ d › d|
› �¡ t! d dgˆ  ¡¡‰ ttˆ ddd
… ˆ d
dd
… ƒƒ}t |¡ | dd¡ dˆi}z¾| ¡ D ]^\}}| "dd¡}zt#||| ƒ||< W n0 t$k
�r– } zt%t&|ƒƒ‚W 5 d}~X Y nX �q<t d t&|ƒ ¡ | d!d"¡}| d#d"¡}| d$d"¡}t'|||fƒdk�rît%d%ƒ‚W nL t(k
�r<   ˆ d&|
 ¡ t j)t jj }‰|D ]}ˆ|ƒ �q$‚ Y �n¨X | d'd(¡}| d)d*¡}| d+d"¡}| d,d¡}| d-d¡}| d.d"¡�ršG d/d0„ d0t*ƒ}nt j}t|d1|ƒ}tt j)d1t j)ƒ}|�sÈ|�rRzddl+‰W n" t,k
�rö   dd2l-m.‰ Y nX dd3l/m0} ‡fd4d5„}|dk	�r,|d6||ƒd6 ƒ |dk	�rH|d7||ƒd8 ƒ t  d¡ |�r„|j‰tˆd1ˆƒj‰G ‡‡‡fd9d0„d0t*ƒ}|�rä| 1d:d;¡ | 1d<d¡ | 1d=d>¡ t |¡ t
f |Ž�‰t2||d|ˆj3ƒ W 5 Q R X �n |d*k�r|t |¡ |j}|�s
|�r^t
f |Ž�B‰|�r*‡fd?d@„}n‡fdAd@„}|D ]}||ƒ ||ƒ �q:W 5 Q R X nt
|f|ŽD ]}||ƒ �qjnht |¡ t
f |Ž�N‰d"}|�rª‡fdBd@„}n|�r¾‡fdCd@„}n
ˆj3}d}t2||||||ƒ W 5 Q R X 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)é   é   z    r>   é   r   c                 s   sT   | ]L}|d  t kr|d dkr"dndj|d   dd¡|d  f|dd… žŽ 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   s   | ]}|ˆ kV  qd S r%   r!   ©rE   Úv©Úargvr!   r"   rF   Ñ   s     )z-vz	--versionr   c                 3   s   | ]}|ˆ kV  qd S r%   r!   rH   rJ   r!   r"   rF   Ô   s     )z-hz--helpz--zError:Unknown argument:ú r   r   Tr:   rB   rA   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   s   d S r%   r!   )rA   r!   r!   r"   r)   ý   s    úmain.<locals>.stdout.writeN©Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr)   r!   r!   r!   r"   Ústdoutü   s   r[   Úbuffer©Ú	resources)ÚPathc                    s,   ˆ   d¡|  }| | ¡ ¡ t d|¡ dS )zcopy resource `name` to `dst`r   z
written:%sN)ÚfilesÚwrite_bytesÚ
read_bytesr   Úinfo)ÚnameÚdstÚfir]   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 )rT   c              	      s,   t jˆ d�� ˆ| ƒ W 5 Q R X ˆ| ƒ d S )N)r:   )r   Zexternal_write_mode)Úx©Úfpr2   Ústdout_writer!   r"   r)     s    rU   NrV   r!   ri   r!   r"   r[     s   ÚunitÚBZ
unit_scaleZunit_divisori   c                    s   ˆ   t|  ¡ ƒ¡ d S r%   ©rN   ÚnumericÚdecode©r5   ©r   r!   r"   r0   ,  s    zmain.<locals>.callbackc                    s   ˆ   t|  ¡ ƒˆ j ¡ d S r%   ©rN   ro   rp   Únrq   rr   r!   r"   r0   /  s    c                    s   ˆ   t|  ¡ ƒ¡ d S r%   rn   rq   rr   r!   r"   r0   <  s    c                    s   ˆ   t|  ¡ ƒˆ j ¡ d S r%   rs   rq   rr   r!   r"   r0   ?  s    )4ÚsysrK   Úindexr   Ú
startswithr   ÚloggingÚbasicConfigr+   Úversion_infor   Ú__doc__r   ÚCLI_EXTRA_DOCÚdictÚRE_OPTSÚfindallrC   Úpopr   r   ÚsortedÚitemsr   ÚzipÚjoinÚstripÚanyr[   r)   r   ÚexitÚstderrÚRE_SHLEXrD   r   ÚKeyErrorr   r   ÚsumÚ	ExceptionÚstdinÚobjectZimportlib_resourcesÚImportErrorÚ	importlibr^   Úpathlibr_   Ú
setdefaultr6   rN   )rj   rK   Zlog_idxr5   ZlogLevelÚdZ	opt_typesÚor   Zopt_types_descZ
help_shortÚoptsZ	tqdm_argsrI   ÚeZdelim_per_charrN   rO   r�   r/   r.   rP   rQ   rR   r[   r_   rg   r)   r0   r1   r!   )rK   rj   r2   r^   rk   r   r"   r	   œ   sò    

ÿ
 ÿ
*
ýüü"
"




 


)r{   rx   r   ru   Úastr   ro   Útextwrapr   Zstdr   r   r   Úversionr   Ú__all__Ú	getLoggerrW   r   r   r6   Úcompiler~   r‰   rC   r|   rˆ   r	   r!   r!   r!   r"   Ú<module>   s&   
& ÿ
:

#