U
    -e                     @   s   d Z ddlZddlZddlZedZedZedZedZdZ	dZ
d	d
 Zdd Zdd Zdd ZdddZdddZdS )zUtilities for file names.    Nz([A-Z]+)([A-Z][a-z])z([a-z\d])([A-Z])z(?<!_)_(?!_)z(_{2,})z^\w+(\.\w+)*$z<>:/\|?*c                 C   s    t d| } td| } |  S )z(Convert camel-case string to snake-case.z\1_\2)_uppercase_uppercase_resub_lowercase_uppercase_relowername r   P/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/datasets/naming.pycamelcase_to_snakecase!   s    r
   c                 C   s4   t | } dd | D } ddd tj| D S )z/Convert snake-case string to camel-case string.c                 S   s   g | ]}t |qS r   )_multiple_underscores_resplit.0nr   r   r	   
<listcomp>+   s     z*snakecase_to_camelcase.<locals>.<listcomp> c                 s   s   | ]}|d kr|  V  qdS )r   N)
capitalizer   r   r   r	   	<genexpr>,   s      z)snakecase_to_camelcase.<locals>.<genexpr>)_single_underscore_rer   join	itertoolschainfrom_iterabler   r   r   r	   snakecase_to_camelcase(   s    
r   c                 C   s&   t j| | krtd|  t| S )N&Should be a dataset name, not a path: )ospathbasename
ValueErrorr
   r   r   r   r	   filename_prefix_for_name/   s    r   c                 C   sR   t j| | krtd|  tt|s@tdt d| dt|  d| S )Nr   zSplit name should match 'z'' but got 'z'.-)r   r   r   r   rematch	_split_rer   )r   r   r   r   r	   filename_prefix_for_split5   s
    r$   c                 C   s4   t | |}|r|d| 7 }tj||}| dS )N.*)r$   r   r   r   )dataset_namer   data_dirfiletype_suffixprefixfilepathr   r   r	   filepattern_for_dataset_split=   s
    
r,   c                    sv   t ||tj| |rVt|fddtD } rR fdd|D }|S } rl|d  7 }|gS d S )Nc                    s$   g | ]} d |dd dqS )r    Z05dz-of-r   )r   Zshard_id)
num_shardsr*   r   r	   r   K   s     z/filenames_for_dataset_split.<locals>.<listcomp>c                    s   g | ]}|d    qS )r%   r   )r   filename)r)   r   r	   r   M   s     r%   )r$   r   r   r   lenrange)r   r'   r   r)   Zshard_lengths	filenamesr.   r   )r)   r-   r*   r	   filenames_for_dataset_splitE   s    
r2   )N)NN)__doc__r   r   r!   compiler   r   r   r   r#   Z"INVALID_WINDOWS_CHARACTERS_IN_PATHr
   r   r   r$   r,   r2   r   r   r   r	   <module>   s   




