
    5i                        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        yy)z/CLI utility to compute crc32c on an input file.    N   )crc32ci   i   c                   6    e Zd ZU eed<   eed<   eed<   eed<   y)_ChecksumingResultfilename	file_sizechecksumdurationN)__name__
__module____qualname__str__annotations__intfloat     m/home/marpiech/ifpan-abm-pgxpred/analysis/marpiech-gwas-test/venv/lib/python3.12/site-packages/crc32c/_cli.pyr   r      s    MNMOr   r   c                   "    e Zd ZU eed<   eed<   y)_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 ]E  }t        |||z
        }t        j                  | ||t        j                        5 }| d d d        G y # 1 sw Y   RxY ww)Nr   )lengthoffsetaccess)rangeminmmapACCESS_READ)r   r   r   r   r   mms         r   _mmap_iteratorr&      sm      9j1 ZV!34YY6&9I9I
 	H	 		 	s   AA%	AA%A"	A%r   use_mmapc                    t        | d      5 }|j                         }t        j                  |      j                  }|rt        |||      }n,t        j                  |j                  |      }t        |d      }d}t        j                         }	|D ]  }
t        |
|      } t        j                         }d d d        t        | 	z
        S # 1 sw Y   xY w)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	 ""$GGFO++	*69jIM$$Z__jAD sOM ! 	.DdH-H	.nn h	8cEkKK s   B)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$$Afoo&''!!  6??2But|d*3/v66Mr   nameargsc                    t        j                  t        j                  d   d      }|j	                  ddd       |j                  d      }|j	                  d	d
dd       |j	                  ddt        d       |j                  d      }|j	                  dddd       |j	                  dddd       |j                  |      }|j                   }|rt        nt        }t        j                  t        ||      }t        |j                   |j                         }	t#        ||j$                        D ]  }
t'        t)        |
|	              y)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   sb    $$!PF 3_E((7H%CL   /	   001EF!!5	 "  !!.	 "  T"D$$$H,4(:RJ$$*xL )T-?-?)?QOlDNN3 7nV_56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    	 
   $ * ** ** 
-0diit+,LC LS LD LEW L&		1C		 XXa[388AB< *7s *7C(8 *7D *7Z zF r   