U
    ~fh+                     @   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rdS t| d | |d	krt| d
kr|  S td| rt	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rz
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!   ,/tmp/pip-unpacked-wheel-q5zzfsrg/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 ]}
||
 qt|ddd   dS ||}
|
dk r||7 }qP|||d|
t|    ||rdn||d|
   d}||
|	 d }qqPd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 rt
jn
tt
jd	t }tt|}tD ]}|| qt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 rt j|d  t d n8 r܈ d dd dkrt 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rt%d%W nL t(k
r<   d&|
  t j)t jj }|D ]}| q$ Y nX |d'd(}|d)d*}|d+d"}|d,d}|d-d}|d.d"rG 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&   
& 
:

#