
    bi                         d Z ddlZddlZddlZ ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      ZdZ	dZ
d	 Zd
 Zd Zd ZddZddZy)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                 z    t         j                  d|       } t        j                  d|       } | j                         S )z(Convert camel-case string to snake-case.z\1_\2)_uppercase_uppercase_resub_lowercase_uppercase_relowernames    J/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/datasets/naming.pycamelcase_to_snakecaser   "   s2    "&&x6D"&&x6D::<    c                     t         j                  |       } | D cg c]  }t        j                  |       } }dj                  d t        j
                  j                  |       D              S c c}w )z/Convert snake-case string to camel-case string. c              3   H   K   | ]  }|d k7  s	|j                           yw)r   N)
capitalize).0ns     r
   	<genexpr>z)snakecase_to_camelcase.<locals>.<genexpr>-   s     ZaRSWYRY1<<>Zs   
"")_single_underscore_resplit_multiple_underscores_rejoin	itertoolschainfrom_iterable)r	   r   s     r
   snakecase_to_camelcaser   )   sZ     &&t,D7;<!$**1-<D<77Z9??+H+H+NZZZ =s   A-c                 x    t         j                  j                  |       | k7  rt        d|        t	        |       S )N&Should be a dataset name, not a path: )ospathbasename
ValueErrorr   r   s    r
   filename_prefix_for_namer"   0   s7    	ww%A$HII!$''r   c                     t         j                  j                  |       | k7  rt        d|        t	        j
                  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   s     r
   filename_prefix_for_splitr(   6   sm    	ww%A$HII88Iu%4YK|E7RTUVV&t,-Qug66r   c                 x    t        | |      }|r|d| z  }t        j                  j                  ||      }| dS )N.*)r(   r   r   r   )dataset_namer   data_dirfiletype_suffixprefixfilepaths         r
   filepattern_for_dataset_splitr1   >   sC    &|U;FAo&''ww||Hf-HZq>r   c           	         t        ||      }t        j                  j                  | |      }|rFt	        |      }t        |      D cg c]  }| d|dd|d }}|r|D 	cg c]
  }	|	d| z    }}	|S |}	|r|	d| z  }	|	gS c c}w c c}	w )Nr$   05dz-of-r*   )r(   r   r   r   lenrange)
r   r,   r   r.   shard_lengthsr/   
num_shardsshard_id	filenamesfilenames
             r
   filenames_for_dataset_splitr;   F   s    &|U;FWW\\$'F'
TYZdTefxq#d:c2BCf	fJSTha'8$99TIT!O,--Hz gTs   B"B	)N)NN)__doc__r   r   r%   compiler   r   r   r   r'   "INVALID_WINDOWS_CHARACTERS_IN_PATHr   r   r"   r(   r1   r;    r   r
   <module>r@      s        	 	 %"**%<= $"**%89 "

?3 %2::j1 	%0 "[(7r   