
    nj                        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ej                  Z G d	 d
ej                  Zdedededej        ej        ddf         fdZdedededefdZdededefdZej        d         ej        dd         fdedej        e         ddfdZedk    r e             dS dS )z/CLI utility to compute crc32c on an input file.    N   )crc32ci   i   c                   8    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     [/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/crc32c/_cli.pyr   r      s4         MMMNNNMMMOOOOOr   r   c                   $    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   r   filenor   
block_sizereturnc              #      K   t          d||          D ]S}t          |||z
            }t          j        | ||t          j                  5 }|V  d d d            n# 1 swxY w Y   Td S )Nr   )lengthoffsetaccess)rangeminmmapACCESS_READ)r   r   r   r   r   mms         r   _mmap_iteratorr&      s       9j11  ZV!344Y6&9I
 
 
 	HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   AA 	#A 	r   use_mmapc                    t          | d          5 }|                                }t          j        |          j        }|rt          |||          }n*t          j        |j        |          }t          |d          }d}t          j                    }	|D ]}
t          |
|          }t          j                    }d d d            n# 1 swxY w Y   t          | ||||	z
            S )Nrbr   r   )openr   osstatst_sizer&   	functoolspartialreaditertime	monotonicr   r   )r   r   r'   
input_filer   r   data_iteratorr0   r	   startdataends               r   _get_checksumr9   (   s   	h		 ""$$GFOO+	 	,*69jIIMM$Z_jAAD sOOM  ! 	. 	.DdH--HHn               h	8cEkKKKs   B)CC
C
resultformatting_optsc                     | j         d}|j        r|d| j         z  }|j        r| j        | j        z  }|d|dz  dz  ddz  }|S )N08x z (i   z.2fz MB/s))r	   r   r   r   r   r
   )r:   r;   reportspeeds       r   _format_resultrA   ;   sr     %%F$ ('fo'''! 7 6?26ut|d*66666Mr   nameargsc                    t          j        t          j        d         d          }|                    ddd           |                    d          }|                    d	d
dd           |                    ddt          d           |                    d          }|                    dddd           |                    dddd           |                    |          }|j         }|rt          nt          }t          j        t          ||          }t          |j         |j                  }	t#          ||j                  D ]}
t'          t)          |
|	                      d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)rI   actionz-bz--block-sizez Block size for iterative reading)typerI   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_argsdisable_mmapDEFAULT_BLOCK_SIZE_MMAPDEFAULT_BLOCK_SIZE_FREADr.   r/   r9   r   hide_filenamer   maprF   printrA   )rB   rC   parserio_groupformatting_groupoptsr'   r   get_checksumr;   r:   s              r   mainr_   G   s    $!P  F 3_EEE((77H%CL     0	     001EFF!!5	 "    !!.	 "    T""D$$H,4R((:RJ$*x  L )T-?)?QQOlDN33 7 7nV_5566667 7r   __main__)__doc__rM   r.   r#   r+   rO   r2   typing_crc32cr   rV   rU   
NamedTupler   r   r   	Generatorr&   r   r   r9   rA   rP   Listr_   r   r   r   r   <module>rg      s   5 5       				 



        $ *     *       *   
-0dit+,   LC LS LD LEW L L L L&		1C		 	 	 	 Xa[38ABB< *7 *7s *7C(8 *7D *7 *7 *7 *7Z zDFFFFF r   