
    h                         S r SSKrSSKrSSKr\R                  " S5      r\R                  " S5      r\R                  " S5      r\R                  " S5      rSr	Sr
S	 rS
 rS rS rSS jrSS jrg)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    [         R                  SU 5      n [        R                  SU 5      n U R                  5       $ )z(Convert camel-case string to snake-case.z\1_\2)_uppercase_uppercase_resub_lowercase_uppercase_relowernames    I/home/james-whalen/.local/lib/python3.13/site-packages/datasets/naming.pycamelcase_to_snakecaser   "   s2    "&&x6D"&&x6D::<    c                     [         R                  U 5      n U  Vs/ s H  n[        R                  U5      PM     n nSR                  S [        R
                  R                  U 5       5       5      $ s  snf )z/Convert snake-case string to camel-case string. c              3   P   #    U  H  oS :w  d  M
  UR                  5       v   M     g7f)r   N)
capitalize).0ns     r
   	<genexpr>)snakecase_to_camelcase.<locals>.<genexpr>-   s"     Z+NaWYRY>1<<>>+Ns   	&&)_single_underscore_resplit_multiple_underscores_rejoin	itertoolschainfrom_iterable)r	   r   s     r
   snakecase_to_camelcaser   )   s[     &&t,D7;<t!$**1-tD<77Z9??+H+H+NZZZ =s   A0c                 z    [         R                  R                  U 5      U :w  a  [        SU  35      e[	        U 5      $ )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                     [         R                  R                  U 5      U :w  a  [        SU  35      e[        R
                  " [        U5      (       d  [        S[         SU S35      e[        U 5       SU 3$ )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   sp    	ww%A$HII88Iu%%4YK|E7RTUVV&t,-Qug66r   c                 ~    [        X5      nU(       a  USU 3-  n[        R                  R                  X$5      nU S3$ )N.*)r)   r   r    r   )dataset_namer   data_dirfiletype_suffixprefixfilepaths         r
   filepattern_for_dataset_splitr2   >   s?    &|;FAo&''ww||H-HZq>r   c           	      >   [        X5      n[        R                  R                  X5      nU(       aO  [	        U5      n[        U5       Vs/ s H  ou SUS SUS 3PM     nnU(       a  U V	s/ s H
  oSU 3-   PM     nn	U$ Un	U(       a  U	SU 3-  n	U	/$ s  snf s  sn	f )Nr%   05dz-of-r+   )r)   r   r    r   lenrange)
r    r-   r   r/   shard_lengthsr0   
num_shardsshard_id	filenamesfilenames
             r
   filenames_for_dataset_splitr<   F   s    &|;FWW\\$'F'
TYZdTefTexq#d:c2BCTe	fJST)ha'8$99)I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)   r2   r<    r   r
   <module>rA      s}        	 	 **%<= **%89 

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