o
    #j                     @   s  d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	 dZ
dZG dd dejZG d	d
 d
ejZdedededejejddf fddZdedededefddZdededefddZejd ejdd fdedeje ddfddZedkre  dS dS )z/CLI utility to compute crc32c on an input file.    N   )crc32ci   i   c                   @   s.   e Zd ZU eed< eed< eed< eed< dS )_ChecksumingResultfilename	file_sizechecksumdurationN)__name__
__module____qualname__str__annotations__intfloat r   r   L/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/crc32c/_cli.pyr      s
   
 r   c                   @   s   e Zd ZU eed< eed< dS )_FormattingOptionsshow_filename
show_speedN)r	   r
   r   boolr   r   r   r   r   r      s   
 r   filenor   
block_sizereturnc              	   c   s`    t d||D ]&}t||| }tj| ||tjd}|V  W d    n1 s(w   Y  qd S )Nr   )lengthoffsetaccess)rangeminmmapACCESS_READ)r   r   r   r   r   mmr   r   r   _mmap_iterator   s   
r!   r   use_mmapc                 C   s   t | d;}| }t|j}|rt|||}nt|j|}t	|d}d}t
 }	|D ]}
t|
|}q-t
 }W d    n1 sCw   Y  t| ||||	 S )Nrb    r   )openr   osstatst_sizer!   	functoolspartialreaditertime	monotonicr   r   )r   r   r"   Z
input_filer   r   Zdata_iteratorr+   r   startdataendr   r   r   _get_checksum(   s   

r2   resultformatting_optsc                 C   sP   | j d}|jr|d| j 7 }|jr&| j| j }|d|d d dd7 }|S )N08x z (i   z.2fz MB/s))r   r   r   r   r   r   )r3   r4   reportspeedr   r   r   _format_result;   s   
r9   nameargsc                 C   s   t jtjd dd}|jdddd |d}|jd	d
ddd |jddtdd |d}|jddddd |jddddd ||}|j }|rMt	nt
}tjt||d}t|j |j}	t||jD ]	}
tt|
|	 qedS )zMain application entry-point.r   z-Calculates and prints crc32c on input file(s))description	filenames+zinput file(s))nargshelpzI/O optionsz-Mz--disable-mmapzAvoid reading file with mmap
store_true)r@   actionz-bz--block-sizez Block size for iterative reading)typer@   zFormatting optionsz-sz--show-speedz&Report checksumming speed on each filez-Nz--hide-filenamezDo not print filename in result)r   r"   N)argparseArgumentParsersysargvadd_argumentadd_argument_groupr   
parse_argsZdisable_mmapDEFAULT_BLOCK_SIZE_MMAPDEFAULT_BLOCK_SIZE_FREADr)   r*   r2   r   Zhide_filenamer   mapr=   printr9   )r:   r;   parserZio_groupZformatting_groupoptsr"   r   Zget_checksumr4   r3   r   r   r   mainG   sJ   



rQ   __main__)__doc__rD   r)   r   r&   rF   r-   typingZ_crc32cr   rL   rK   
NamedTupler   r   r   	Generatorr!   r   r   r2   r9   rG   ListrQ   r	   r   r   r   r   <module>   sD    

2-
