o
    iB                  
   @   s   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 d dl	m
Z
mZ d dlmZ de
e ded	ee
e  d
edef
ddZde jfddZdddZedkrWe  dS dS )    N)Counter)zip_longest)Path)ListOptional)get_commandline_argsscps
num_splitsnames
output_dir	log_levelc              
   C   sT  t j|dd |dk rt| d|d u r.dd | D }tt|t|kr.td| |D ]}t|| jddd	 q0d
d | D }t|D ]!}|D ]}t|| d|   rit|| d|  	  qMqIt
 }d}	tt| D ]i\}	}
tdd |
D rtdd }|
D ]}| jddd }|d ur||krtdq|	| }||  d7  < t|
|D ])\}}t|| d|  jddd}|| W d    n1 sw   Y  qqv|	d |k rtd|	d  d| |D ]'}t|| d jddd}|t| W d    n	1 sw   Y  qt dt|   d S )Nz>%(asctime)s (%(module)s:%(lineno)d) %(levelname)s: %(message)s)levelformat   z must be more than 1c                 S   s   g | ]}t |jqS  )r   name.0sr   r   J/home/ubuntu/.local/lib/python3.10/site-packages/espnet2/bin/split_scps.py
<listcomp>   s    zsplit_scps.<locals>.<listcomp>znames are duplicated: T)parentsexist_okc                 S   s   g | ]	}t |d ddqS )rutf-8encoding)openr   r   r   r   r   #   s    zsplit.c                 s   s    | ]}|d u V  qd S Nr   )r   liner   r   r   	<genexpr>-   s    zsplit_scps.<locals>.<genexpr>zNumber of lines are mismatched   )maxsplitr   z"Not sorted or not having same keysar   r   z-The number of lines is less than num_splits: z < r	   wzN lines of split text: )loggingbasicConfigRuntimeErrorlensetr   mkdirrangeexistsunlinkr   	enumerater   anyrstripsplitzipr   writestrinfovalues)r   r	   r
   r   r   r   	scp_filesncounterlinenumlinesprev_keyr    keynumfr   r   r   
split_scps   sf   rA   returnc                  C   sn   t jdt jd} | jddd dddd	 | jd
dddd | jdddd | jddtd | jdddd | S )NzSplit scp files)descriptionformatter_classz--log_levelc                 S   s   |   S r   )upper)xr   r   r   <lambda>S   s    zget_parser.<locals>.<lambda>INFO)CRITICALERRORWARNINGrH   DEBUGNOTSETzThe verbose level of logging)typedefaultchoiceshelpz--scpsTzInput texts+)requiredrQ   nargsz--nameszOutput names for each files)rQ   rT   z--num_splitszSplit number)rQ   rN   z--output_dirzOutput directory)rS   rQ   )argparseArgumentParserArgumentDefaultsHelpFormatteradd_argumentint)parserr   r   r   
get_parserL   s    r[   c                 C   s:   t t tjd t }|| }t|}tdi | d S )N)filer   )printr   sysstderrr[   
parse_argsvarsrA   )cmdrZ   argskwargsr   r   r   main`   s
   
re   __main__r   )rU   r&   r^   collectionsr   	itertoolsr   pathlibr   typingr   r   espnet.utils.cli_utilsr   r5   rY   rA   rV   r[   re   __name__r   r   r   r   <module>   s0   

?

