+
    QV-j,€  ã                   óÈ  € ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIHtHt ^ RI	H
t
HtHt ^ RIt^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^R
IHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt  ^RI!H"t"H#t#H$t$H%t%H&t& ^RI'H(t( ]])]*]*3,          ])]*,          ])R@,          3,          t+]*! ]PX                  4      t-]P\                  ! ]/4      t0 ! R R]*4      t1 ! R R]24      t3Rt4]PX                  RR.]Pj                  . RAO]Pl                  . RBO/t7Rt8]Pr                  ]Pt                  ! R4      8  d
   RR.t;. RCOt<M2]Pr                  ]Pt                  ! R4      8  d
   RR.t;. RDOt<MRR .t;. REOt<]PX                  ]Pj                  ]Pl                  .t=]= U UUu/ uF9  p T ]7V ,           UUu. uF  p]; F  pVP}                  V]8R!7      NK  	  K!  	  uppbK;  	  uppp t?]= U UUu/ uF9  p T ]7V ,           UUu. uF  p]< F  pVP}                  V]8R!7      NK  	  K!  	  uppbK;  	  uppp t@]PX                  R"./tAR#R$./tB]4.tC]B]@]?]A.tDR%tE. RFOtFR& R' ltGR( R) ltHR* R+ ltIR, R- ltJR. R/ ltKRGR0 R1 lltLRHR2 R3 lltMRHR4 R5 lltNRGR6 R7 lltO ! R8 R9]P]*,          4      tQ ! R: R;]R]*]Q3,          4      tS ! R< R=]P]*,          4      tT ! R> R?]R]*]T3,          4      tUR# u uppi u uppp i u uppi u uppp i )Ié    N)Úpartial)Ú	has_magic)ÚPathÚPurePath)ÚCallableÚOptionalÚUnion)Ú	url_to_fs)ÚHfFileSystem)Úversion)Ú
thread_map)Úconfig)ÚDownloadConfig)Ú	_split_re)ÚSplit)Úlogging)Útqdm)Ú!_prepare_path_and_storage_optionsÚis_local_pathÚis_relative_pathÚ	xbasenameÚxjoin)Ústring_to_dictc                   ó   € ] tR t^!tRtR# )ÚUrl© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Úd/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/datasets/data_files.pyr   r   !   ó   † Ûr#   r   c                   ó   € ] tR t^%tRtR# )ÚEmptyDatasetErrorr   Nr   r   r#   r$   r'   r'   %   r%   r#   r'   zFdata/{split}-[0-9][0-9][0-9][0-9][0-9]-of-[0-9][0-9][0-9][0-9][0-9]*.*ÚtrainÚtrainingz-._ 0-9z2023.9.0z**[{sep}/]{keyword}[{sep}]*z{keyword}[{sep}]*z	2023.12.0z**/*[{sep}/]{keyword}[{sep}]*z**/{keyword}[{sep}]*z**/*[{sep}]{keyword}[{sep}]*)ÚkeywordÚsepz**Úlogsz	**/*.evalz*[]c                ó0   € V ^8„  d   QhR\         R\        /# )é   ÚpatternÚreturn©ÚstrÚbool)Úformats   "r$   Ú__annotate__r5   u   s   € ÷ \ñ \¤ð \¬ñ \r#   c                 óˆ   a € \         ;QJ d#    V 3R  l\         4       F  '       g   K   R# 	  R# ! V 3R  l\         4       4      # )c              3   ó,   <"  € T F	  qS9   x € K  	  R # 5i©Nr   )Ú.0Úwildcard_characterr/   s   & €r$   Ú	<genexpr>Ú%contains_wildcards.<locals>.<genexpr>v   s   øé € Ð[ÑGZÐ1C WÖ,ÓGZùs   ƒTF)ÚanyÚWILDCARD_CHARACTERS)r/   s   fr$   Úcontains_wildcardsr?   u   s.   ø€ ß‹3Ô[ÕGZÓ[�3Œ3Ð[Š3Ð[ˆ3Ô[ÕGZÓ[Ó[Ð[r#   c                ó®   € V ^8„  d   QhR\         \        \        \        3,          R\        \        \         \        \        ,          R3,          3,          /# )r.   Úpatternsr0   ÚDataFilesList)r	   ÚdictÚlistr2   )r4   s   "r$   r5   r5   y   s?   € ÷ &1ñ &1¤¤d¬D´# oÕ 6ð &1¼4ÄÄUÌ4ÔPSÍ9ÐVeÐKeÕEfÐ@fÕ;gñ &1r#   c           	     ó  € \        V \        4      '       dH   V P                  4        UUu/ uF*  w  r\        V4      \        V\        4      '       d   TMV.bK,  	  upp# \        V \        4      '       d
   \
        V ./# \        V \        4      '       EdK   \        ;QJ d    R V  4       F  '       g   K   RM	  RM! R V  4       4      '       Ed   V  Fi  p\        V\        4      '       dE   \        V4      ^8X  d5   RV9   d.   \        VP                  R4      \        \        34      '       d   K]  \        RV 24      h	  V  Uu. uF  q3R,          NK  	  pp\        \        V4      4      \        V4      8w  d   \        RV 24      hV  Uu/ uFD  p\        VR,          4      \        VR,          \        4      '       d
   VR,          M	VR,          .bKF  	  up# \
        V /# \        \	        V 4      4      # u uppi u upi u upi )a  
Take the data_files patterns from the user, and format them into a dictionary.
Each key is the name of the split, and each value is a list of data files patterns (paths or urls).
The default split is "train".

Returns:
    patterns: dictionary of split_name -> list of patterns
c              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5ir8   )Ú
isinstancerC   )r9   r/   s   & r$   r;   Ú$sanitize_patterns.<locals>.<genexpr>‡   s   é € ÐA¹¨WŒz˜'¤4×(Ð(»ùs   ‚TFÚsplitÚpathz›Invalid format for data_files entry. Each item must be a dictionary with the structure {'split': <split_name>, 'path': <path_or_list_of_paths>}.
Received: z*Some splits are duplicated in data_files: )rG   rC   Úitemsr2   rD   ÚSANITIZED_DEFAULT_SPLITr=   ÚlenÚgetÚ
ValueErrorÚsetÚsanitize_patterns)rA   ÚkeyÚvaluer/   Úsplitss   &    r$   rQ   rQ   y   sº  € ô �(œD×!Ò!ØZb×ZhÑZhÔZjÔkÑZjÉJÈC”�C“¤:¨e´T×#:Ò#:™%ÀÀÒGÑZjÒkÐkÜ	�Hœc×	"Ò	"Ü'¨(¨Ð4Ð4Ü	�Hœd×	#Ó	#ß‹3ÑA¹ÓA�3�3Š3ÑA¹ÓA×AÓAÛ#�ä˜w¬×-Ò-Ü˜G›¨Ô)Ø 7Ô*Ü" 7§;¡;¨vÓ#6¼¼d¸×DÔDä$ð%ð &- Ið/óð ñ $ñ 7?Ó?±h¨7˜g×&Ð&±hˆFÐ?Ü”3�v“;Ó¤3 v£;Ô.Ü Ð#MÈfÈXÐ!VÓWÐWñ  (óá'�Gô �G˜GÕ$Ó%¼*ÀWÈVÅ_ÔVZ×:[Ò:[ w¨v¦ÐbiÐjpÕbqÐarÒrÙ'ñð ô
 ,¨XÐ6Ð6ä ¤ h£Ó0Ð0ùó9 lùò$ @ùòs   ª0G2ÅG8Æ	A
G=c                ó<   € V ^8„  d   QhR\         R\         R\        /# ©r.   Úmatched_rel_pathr/   r0   r1   )r4   s   "r$   r5   r5   ¢   s&   € ÷ Sñ S¼ð SÄsð SÌtñ Sr#   c                ó\  € \        V 4      P                  P                   Uu. uF  q"P                  R4      '       g   K  VNK  	  pp\        V4      P                  P                   Uu. uF  q"P                  R4      '       g   K  VNK  	  pp\	        V4      \	        V4      8g  # u upi u upi )u®  
When a path matches a pattern, we additionally check if it's inside a special directory
we ignore by default (if it starts with a double underscore).

Users can still explicitly request a filepath inside such a directory if "__pycache__" is
mentioned explicitly in the requested pattern.

Some examples:

base directory:

    ./
    â””â”€â”€ __pycache__
        â””â”€â”€ b.txt

>>> _is_inside_unrequested_special_dir("__pycache__/b.txt", "**")
True
>>> _is_inside_unrequested_special_dir("__pycache__/b.txt", "*/b.txt")
True
>>> _is_inside_unrequested_special_dir("__pycache__/b.txt", "__pycache__/*")
False
>>> _is_inside_unrequested_special_dir("__pycache__/b.txt", "__*/*")
False
Ú__)r   ÚparentÚpartsÚ
startswithrM   )rW   r/   ÚpartÚdata_dirs_to_ignore_in_pathÚdata_dirs_to_ignore_in_patterns   &&   r$   Ú"_is_inside_unrequested_special_dirr`   ¢   s‘   € ô8 5=Ð=MÓ4N×4UÑ4U×4[Ò4[Ó"uÑ4[¨D×_nÑ_nÐos×_t§4 4Ñ4[ÐÐ"uÜ7?ÀÓ7H×7OÑ7O×7UÒ7UÓ%oÑ7U¨t×YhÑYhÐim×Yn§d dÑ7UÐ"Ð%oÜÐ*Ó+¬sÐ3QÓ/RÑRÐRùò #vùÚ%os   ¢B$¿B$Á(B)ÂB)c                ó<   € V ^8„  d   QhR\         R\         R\        /# rV   r1   )r4   s   "r$   r5   r5   Ã   s)   € ÷ ;Qñ ;QÔVYð ;QÔdgð ;QÔlpñ ;Qr#   c                ó€  € \        V 4      P                   Uu. uF0  q"P                  R4      '       g   K  \        V4      R08X  d   K.  VNK2  	  pp\        V4      P                   Uu. uF0  q"P                  R4      '       g   K  \        V4      R08X  d   K.  VNK2  	  pp\	        V4      \	        V4      8g  # u upi u upi )u¥  
When a path matches a pattern, we additionally check if it's a hidden file or if it's inside
a hidden directory we ignore by default, i.e. if the file name or a parent directory name starts with a dot.

Users can still explicitly request a filepath that is hidden or is inside a hidden directory
if the hidden part is mentioned explicitly in the requested pattern.

Some examples:

base directory:

    ./
    â””â”€â”€ .hidden_file.txt

>>> _is_unrequested_hidden_file_or_is_inside_unrequested_hidden_dir(".hidden_file.txt", "**")
True
>>> _is_unrequested_hidden_file_or_is_inside_unrequested_hidden_dir(".hidden_file.txt", ".*")
False

base directory:

    ./
    â””â”€â”€ .hidden_dir
        â””â”€â”€ a.txt

>>> _is_unrequested_hidden_file_or_is_inside_unrequested_hidden_dir(".hidden_dir/a.txt", "**")
True
>>> _is_unrequested_hidden_file_or_is_inside_unrequested_hidden_dir(".hidden_dir/a.txt", ".*/*")
False
>>> _is_unrequested_hidden_file_or_is_inside_unrequested_hidden_dir(".hidden_dir/a.txt", ".hidden_dir/*")
False

base directory:

    ./
    â””â”€â”€ .hidden_dir
        â””â”€â”€ .hidden_file.txt

>>> _is_unrequested_hidden_file_or_is_inside_unrequested_hidden_dir(".hidden_dir/.hidden_file.txt", "**")
True
>>> _is_unrequested_hidden_file_or_is_inside_unrequested_hidden_dir(".hidden_dir/.hidden_file.txt", ".*/*")
True
>>> _is_unrequested_hidden_file_or_is_inside_unrequested_hidden_dir(".hidden_dir/.hidden_file.txt", ".*/.*")
False
>>> _is_unrequested_hidden_file_or_is_inside_unrequested_hidden_dir(".hidden_dir/.hidden_file.txt", ".hidden_dir/*")
True
>>> _is_unrequested_hidden_file_or_is_inside_unrequested_hidden_dir(".hidden_dir/.hidden_file.txt", ".hidden_dir/.*")
False
Ú.)r   r[   r\   rP   rM   )rW   r/   r]   Úhidden_directories_in_pathÚhidden_directories_in_patterns   &&   r$   Ú?_is_unrequested_hidden_file_or_is_inside_unrequested_hidden_dirrf   Ã   s¹   € ôl "Ð"2Ó3×9Ò9ó"Ù9�¿_¹_ÈS×=QŒÔZ]Ð^bÓZcÐhkÐglÑZl�ˆÑ9ð ð "ô " 'Ó*×0Ò0ó%Ù0�·O±OÀC×4HŒÔQTÐUYÓQZÐ_bÐ^cÑQc�ˆÑ0ð "ð %ô Ð)Ó*¬cÐ2OÓ.PÑPÐPùò"ùò%s"   ˜B6µB6ÁB6Á'B;ÂB;ÂB;c                ó¢   € V ^8„  d   QhR\         \        .\        \        ,          3,          R\        \        \        \        ,          3,          /# )r.   Úpattern_resolverr0   )r   r2   rD   rC   )r4   s   "r$   r5   r5     s@   € ÷ )dñ )d¬x¼¸¼tÄC½yÐ8HÕ/Ið )dÌdÔSVÔX\Ô]`ÕXaÐSaÕNbñ )dr#   c                óF  € \          EFM  pVP                  RR4      p V ! V4      p\        T4      ^ 8”  g   K1  \	        4       pT F?  p\        \        T4      \        T4      4      pTf   Q hTP                  TR,          4       KA  	  \        ;QJ d    R T 4       F  '       g   K   RM	  RM! R T 4       4      '       d   \        R\         RT R	24      h\         Uu. uF  qwT9   g   K  \        T4      NK  	  up\        T\         Uu0 uF  p\        T4      kK  	  up,
          4      ,           pT Uu/ uF  qwTP                  TR
7      .bK  	  upu # 	  \         Fv  p	. p
V	P!                  4        F;  w  r{V F0  p V ! V4      p\        T4      ^ 8”  g   K  T
P#                  T4        K9  	  K=  	  V
'       g   K^  V
 Uu/ uF  qwW—,          bK  	  upu # 	  \        RX RV  24      h  \         d     EKò  i ; iu upi u upi u upi   \         d     KŸ  i ; iu upi )a  
Get the default pattern from a directory or repository by testing all the supported patterns.
The first patterns to return a non-empty list of data files is returned.

In order, it first tests if SPLIT_PATTERN_SHARDED works, otherwise it tests the patterns in ALL_DEFAULT_PATTERNS.
z{split}Ú*rI   c              3   ób   "  € T F%  p\         P                  ! \        V4      '       * x € K'  	  R # 5ir8   )ÚreÚmatchr   )r9   rI   s   & r$   r;   Ú+_get_data_files_patterns.<locals>.<genexpr>  s!   é € ÐF¹v°e”r—x’x¤	¨5Ó1×1Ñ1»vùs   ‚-/TFzSplit name should match 'z'' but got 'z'.)rI   zCouldn't resolve pattern z with resolver )ÚALL_SPLIT_PATTERNSÚreplaceÚFileNotFoundErrorrM   rP   r   r   Úaddr=   rO   r   ÚDEFAULT_SPLITSr2   Úsortedr4   ÚALL_DEFAULT_PATTERNSrK   Úappend)rh   Úsplit_patternr/   Ú
data_filesrT   ÚpÚp_partsrI   Úsorted_splitsÚpatterns_dictÚnon_empty_splitsrA   s   &           r$   Ú_get_data_files_patternsr~     s  € ÷ ,Ð+ˆØ×'Ñ'¨	°3Ó7ˆð	Ù)¨'Ó2ˆJô ˆz‹?˜QÖÜ"›uˆFÛ�Ü(¬°1«´yÀÓ7OÓP�ØÒ*Ð*Ð*Ø—
‘
˜7 7Õ+Ö,ñ  ÷
 ‹sÑF¹vÓF�s�sŠsÑF¹vÓF×FÒFÜ Ð#<¼Y¸KÀ|ÐTZÐS[Ð[]Ð!^Ó_Ð_Ý5CÓW±^¨EÐPVÁœZœS žZ±^ÑWÔZ`Øµ.ÓA±.¨œ#˜ež*±.ÑAÕAó[õ ˆMñ MZÓZÉMÀ5˜M×0Ñ0°uÐ0Ó=Ð>Ò>ÉMÑZÒZñ% ,÷( .ˆØÐØ,×2Ñ2Ö4‰OˆEÛ#�ðÙ!1°'Ó!:�Jô �z“? QÖ&Ø$×+Ñ+¨EÔ2Úó $ñ  5÷ ÑÙ=MÓNÑ=M°E˜=Õ/Ò/Ñ=MÑNÒNñ .ô Ð7¸°yÀÐP`ÐOaÐbÓ
cÐcøô; !ô 	Ûð	üò XùÚAùâZøô )ô Úðüò OsA   žG*ÃG=Ã,G=ÄHÄ6HÅ?HÇHÇ*G:Ç9G:ÈH	ÈH	c                ó¬   € V ^8„  d   QhR\         R\         R\        \        \         ,          ,          R\        \        ,          R\        \         ,          /# )r.   r/   Ú	base_pathÚallowed_extensionsÚdownload_configr0   )r2   r   rD   r   )r4   s   "r$   r5   r5   -  sS   € ÷ gñ gÜðgäðgô !¤¤c¥Õ+ðgô œnÕ-ð	gô
 
Œ#…Yñgr#   c           	     óæ  a€ \        V 4      '       d   \        W4      p MO\        V 4      '       d=   \        P                  P                  V 4      ^ ,          \        P                  ,           pMRp\        WR7      w  r\        V 3/ VB w  rV\        \        4      \        V 4      0,
          pRV 9   d   V P                  R4      ^ ,          M>\        VP                  \        4      '       d   VP                  MVP                  ^ ,          pVR8w  d
   VR,           MRp	/ p
VR8X  d   RV
R&   V P                  R4      vr¼. pVP                   ! V3R	R
/V
B P#                  4        Fç  w  rïVR,          R8X  gZ   VP%                  R4      '       dS   \        P                  P'                  \        P                  P)                  V4      4      '       d   \        V4      V9   d   K~  \+        Wæ4      '       d   K‘  \-        Wæ4      '       d   K¤  RV9   d   TMWž,           pV'       d   RP/                  V.V,           4      pVP1                  V4       Ké  	  Seë   V Uu. uF…  p\2        ;QJ d>    V3R l\        V4      P                  R4      R,           4       F  '       g   K   R
M3	  RM/! V3R l\        V4      P                  R4      R,           4       4      '       g   Kƒ  VNK‡  	  pp\5        V4      \5        V4      8  d@   \7        \        V4      \        V4      ,
          4      p\8        P;                  RV  RV 24       MTpV'       g+   RV  R2pSe   VR\7        S4       2,          p\=        V4      hV# u upi )aY  
Resolve the paths and URLs of the data files from the pattern passed by the user.

You can use patterns to resolve multiple local files. Here are a few examples:
- *.csv to match all the CSV files at the first level
- **.csv to match all the CSV files at any level
- data/* to match all the files inside "data"
- data/** to match all the files inside "data" and its subdirectories

The patterns are resolved using the fsspec glob. In fsspec>=2023.12.0 this is equivalent to
Python's glob.glob, Path.glob, Path.match and fnmatch where ** is unsupported with a prefix/suffix
other than a forward slash /.

More generally:
- '*' matches any character except a forward-slash (to match just the file or directory name)
- '**' matches any character including a forward-slash /

Hidden files and directories (i.e. whose names start with a dot) are ignored, unless they are explicitly requested.
The same applies to special directories that start with a double underscore like "__pycache__".
You can still include one if the pattern explicitly mentions it:
- to include a hidden file: "*/.hidden.txt" or "*/.*"
- to include a hidden directory: ".hidden/*" or ".*/*"
- to include a special directory: "__special__/*" or "__*/*"

Example::

    >>> from datasets.data_files import resolve_pattern
    >>> base_path = "."
    >>> resolve_pattern("docs/**/*.py", base_path)
    [/Users/mariosasko/Desktop/projects/datasets/docs/source/_config.py']

Args:
    pattern (str): Unix pattern or paths or URLs of the data files to resolve.
        The paths can be absolute or relative to base_path.
        Remote filesystems using fsspec are supported, e.g. with the hf:// protocol.
    base_path (str): Base path to use when resolving relative paths.
    allowed_extensions (Optional[list], optional): White-list of file extensions to use. Defaults to None (all extensions).
        For example: allowed_extensions=[".csv", ".json", ".txt", ".parquet"]
    download_config ([`DownloadConfig`], *optional*): Specific download configuration parameters.
Returns:
    List[str]: List of paths or URLs to the local or remote files that match the patterns.
Ú ©r‚   z://ÚfileÚhfFÚexpand_infoz::ÚdetailTÚtypeÚislinkc              3   ó<   <"  € T F  pR V,           S9   x € K  	  R# 5i)rc   Nr   )r9   Úsuffixr�   s   & €r$   r;   Ú"resolve_pattern.<locals>.<genexpr>†  s   øé € ÐgÑDf¸&�3˜•<Ð#5Ö5ÓDfùs   ƒrc   :é   NNz Some files matched the pattern 'z-' but don't have valid data file extensions: zUnable to find 'Ú'z with any supported extension )r   r   r   ÚosrJ   Ú
splitdriver+   r   r
   rP   ÚFILES_TO_IGNOREr   rI   rG   Úprotocolr2   ÚglobrK   rN   ÚisfileÚrealpathr`   rf   Újoinrv   r=   rM   rD   ÚloggerÚinforq   )r/   r€   r�   r‚   Ústorage_optionsÚfsÚ
fs_patternÚfiles_to_ignorer”   Úprotocol_prefixÚglob_kwargsÚ_Ú	rest_hopsÚmatched_pathsÚfilepathrš   ÚoutÚinvalid_matched_filesÚ	error_msgs   &&f&               r$   Úresolve_patternr¨   -  sæ  ø€ ô` ˜× Ò Ü˜	Ó+‰Ü	�w×	Ò	Ü—G‘G×&Ñ& wÓ/°Õ2´R·V±VÕ;‰	àˆ	Ü@ÀÔjÑ€GÜ˜wÑ:¨/Ñ:�N€BÜœ/Ó*¬i¸Ó.@Ð-AÕA€Oð �GÔð 	�‰�eÓ˜QÖä'¨¯©´S×9Ò9ˆb�kŠk¸r¿{¹{È1½~ð ð
 +3°fÔ*<�h Ö&À"€OØ€KØ�4Ôà%*ˆ�MÑ"ð —M‘M $Ó'€M€AØ€MØŸ'š' *ÑI°TÐI¸[ÑI×OÑOÖQ‰ˆØ�V• Ô&¨4¯8©8°H×+=Ò+=Ä"Ç'Á'Ç.Á.ÔQS×QXÑQX×QaÑQaÐbjÓQk×BlÒBlÜ�hÓ ?Ô2áÜ-¨h×CÒCÙÜJÈ8×`Ò`ÙØ$¨Ô0‘8°oÕ6PˆßØ—y‘y ( ¨iÕ!7Ó8ˆHØ×Ñ˜XÖ&ñ Rð Ò%ñ *ó
á)�ß‹sÔgÄIÈhÓDW×D]ÑD]Ð^aÓDbÐceÖDfÓg�s�sŠsÔgÄIÈhÓDW×D]ÑD]Ð^aÓDbÐceÖDfÓg×g÷ ˆHÙ)ð 	ð 
ô
 ˆs‹8”c˜-Ó(Ô(Ü$(¬¨]Ó);¼cÀ#»hÕ)FÓ$GÐ!Ü�K‰KØ2°7°)Ð;hÐi~Ðhð  Aôøð ˆßØ& w i¨qÐ1ˆ	ØÒ)ØÐ9¼$Ð?QÓ:RÐ9SÐTÕTˆIÜ 	Ó*Ð*Ø€Jùò#
s   ÉM.É"3M.Ê:M.ËM.c          	      óŠ   € V ^8„  d   QhR\         R\        \        ,          R\        \         \        \         ,          3,          /# )r.   r€   r‚   r0   )r2   r   r   rC   rD   )r4   s   "r$   r5   r5   —  sC   € ÷ Xjñ Xj¤ð Xj´xÄÕ7Oð XjÔ[_Ô`cÔeiÔjmÕenÐ`nÕ[oñ Xjr#   c                óz   € \        \        WR7      p \        V4      #   \         d    \	        RT  R24      Rhi ; i)uI	  
Get the default pattern from a directory testing all the supported patterns.
The first patterns to return a non-empty list of data files is returned.

Some examples of supported patterns:

Input:

    my_dataset_repository/
    â”œâ”€â”€ README.md
    â””â”€â”€ dataset.csv

Output:

    {'train': ['**']}

Input:

    my_dataset_repository/
    â”œâ”€â”€ README.md
    â”œâ”€â”€ train.csv
    â””â”€â”€ test.csv

    my_dataset_repository/
    â”œâ”€â”€ README.md
    â””â”€â”€ data/
        â”œâ”€â”€ train.csv
        â””â”€â”€ test.csv

    my_dataset_repository/
    â”œâ”€â”€ README.md
    â”œâ”€â”€ train_0.csv
    â”œâ”€â”€ train_1.csv
    â”œâ”€â”€ train_2.csv
    â”œâ”€â”€ train_3.csv
    â”œâ”€â”€ test_0.csv
    â””â”€â”€ test_1.csv

Output:

    {'train': ['**/train[-._ 0-9]*', '**/*[-._ 0-9]train[-._ 0-9]*', '**/training[-._ 0-9]*', '**/*[-._ 0-9]training[-._ 0-9]*'],
     'test': ['**/test[-._ 0-9]*', '**/*[-._ 0-9]test[-._ 0-9]*', '**/testing[-._ 0-9]*', '**/*[-._ 0-9]testing[-._ 0-9]*', ...]}

Input:

    my_dataset_repository/
    â”œâ”€â”€ README.md
    â””â”€â”€ data/
        â”œâ”€â”€ train/
        â”‚   â”œâ”€â”€ shard_0.csv
        â”‚   â”œâ”€â”€ shard_1.csv
        â”‚   â”œâ”€â”€ shard_2.csv
        â”‚   â””â”€â”€ shard_3.csv
        â””â”€â”€ test/
            â”œâ”€â”€ shard_0.csv
            â””â”€â”€ shard_1.csv

Output:

    {'train': ['**/train/**', '**/train[-._ 0-9]*/**', '**/*[-._ 0-9]train/**', '**/*[-._ 0-9]train[-._ 0-9]*/**', ...],
     'test': ['**/test/**', '**/test[-._ 0-9]*/**', '**/*[-._ 0-9]test/**', '**/*[-._ 0-9]test[-._ 0-9]*/**', ...]}

Input:

    my_dataset_repository/
    â”œâ”€â”€ README.md
    â””â”€â”€ data/
        â”œâ”€â”€ train-00000-of-00003.csv
        â”œâ”€â”€ train-00001-of-00003.csv
        â”œâ”€â”€ train-00002-of-00003.csv
        â”œâ”€â”€ test-00000-of-00001.csv
        â”œâ”€â”€ random-00000-of-00003.csv
        â”œâ”€â”€ random-00001-of-00003.csv
        â””â”€â”€ random-00002-of-00003.csv

Output:

    {'train': ['data/train-[0-9][0-9][0-9][0-9][0-9]-of-[0-9][0-9][0-9][0-9][0-9]*.*'],
     'test': ['data/test-[0-9][0-9][0-9][0-9][0-9]-of-[0-9][0-9][0-9][0-9][0-9]*.*'],
     'random': ['data/random-[0-9][0-9][0-9][0-9][0-9]-of-[0-9][0-9][0-9][0-9][0-9]*.*']}

In order, it first tests if SPLIT_PATTERN_SHARDED works, otherwise it tests the patterns in ALL_DEFAULT_PATTERNS.
)r€   r‚   zThe directory at z doesn't contain any data filesN)r   r¨   r~   rq   r'   )r€   r‚   Úresolvers   && r$   Úget_data_patternsr¬   —  sL   € ôh ”°)Ô]€HðjÜ'¨Ó1Ð1øÜô jÜÐ"3°I°;Ð>]Ð ^Ó_ÐeiÐiðjús   “
 ž:c                óR   € V ^8„  d   QhR\         R\        \        ,          R\        /# )r.   Ú	data_filer‚   r0   )r2   r   r   ÚSingleOriginMetadata)r4   s   "r$   r5   r5   ò  s+   € ÷ ñ ÜðäœnÕ-ðô ñr#   c                 óŽ  € V P                  \        P                  4      '       d   \        \        P                  VP                  R 7      pRV \        \        P                  4      ^,           R ,           p T P                  RV P                  R4      '       d   RMR^4      p T pM\        WR7      w  r\        V 3/ VB w  r#\        V\        4      '       d<   VP                  V4      p\        VR4      '       d   VP                  VP                  3# VP                  V4      pR	 F  pWv9   g   K  \        Wg,          4      3u # 	  R
# ))ÚendpointÚtokenúhf://Nz	/resolve/zhf://buckets/Ú/Ú@r…   Úrevision)ÚETagÚetagÚmtimer   )r\   r   ÚHF_ENDPOINTr   r²   rM   rp   r   r
   rG   Úresolve_pathÚhasattrÚrepo_idr¶   rš   r2   )r®   r‚   rœ   Úfs_pathr›   Úresolved_pathrš   rR   s   &&      r$   Ú_get_single_origin_metadatarÀ   ò  s  € ð ×ÑœF×.Ñ.×/Ò/Ü¤6×#5Ñ#5¸_×=RÑ=RÔSˆØ˜i¬¬F×,>Ñ,>Ó(?À!Õ(CÐ(EÐFÕFˆ	Ø×%Ñ% k¸)×:NÑ:NÈ×:_Ò:_±3ÐehÐjkÓlˆ	Ø‰ä%FÀyÔ%rÑ"ˆ	Ü 	Ñ=¨_Ñ=‰ˆÜ�"”l×#Ò#ØŸ™¨Ó0ˆÜ�= *×-Ò-Ø ×(Ñ(¨-×*@Ñ*@Ð@Ð@Ø�7‰7�7Ó€Dã(ˆØŽ;Ü˜�	“NÐ$Ò$ñ )ð €Ir#   c          	      ó    € V ^8„  d   QhR\         \        ,          R\        \        ,          R\        \        ,          R\         \
        ,          /# )r.   rx   r‚   Úmax_workersr0   )rD   r2   r   r   Úintr¯   )r4   s   "r$   r5   r5   
  sC   € ÷ ñ Ü”S•	ðäœnÕ-ðô œ#•ðô 
Ô
Õñ	r#   c           
      óœ  € Ve   TM\         P                  p\        ;QJ d    R V  4       F  '       d   K   RM	  RM! R V  4       4      '       d?   \        T R\	        V 4      ^8*  ;'       g    R R7       Uu. uF  p\        W1R7      NK  	  up# \        \        \
        VR7      T T\        R\	        V 4      ^8*  ;'       g    R R7      # u upi )Nc              3   ó,   "  € T F
  pR V9   x € K  	  R# 5i)r³   Nr   )r9   r®   s   & r$   r;   Ú'_get_origin_metadata.<locals>.<genexpr>  s   é € Ð
<± Iˆ7�iÖ³ùs   ‚FTzResolving data files)ÚdescÚdisabler…   )rÂ   Ú
tqdm_classrÇ   rÈ   )r   Ú&HF_DATASETS_MULTITHREADING_MAX_WORKERSÚallÚhf_tqdmrM   rÀ   r   r   )rx   r‚   rÂ   r®   s   &&& r$   Ú_get_origin_metadatarÍ   
  sÀ   € ð
 "-Ò!8‘+¼f×>kÑ>k€Kß
ƒsÑ
<±Ó
<‡s‡s‚sÑ
<±Ó
<×<Ò<ô
 %ØØ+ä˜J›¨2Ñ-×5Ð5°õ	ó
ñ�	ô (¨	×Sññ
ð 	
ô ÜÔ+¸_ÔMØØÜØ#ä�J“ 2Ñ%×-Ð-¨ôð ùò
s   Á7C	c                   óÒ   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR lt]RV3R lR	 ll4       t]RV3R
 lR ll4       t	]RV3R lR ll4       t
RRRR/V3R lR lltRtVtV ;t# )rB   i'  a—  
List of data files (absolute local paths or URLs).
It has two construction methods given the user's data files patterns:
- ``from_hf_repo``: resolve patterns inside a dataset repository
- ``from_local_or_remote``: resolve patterns from a local path

Moreover, DataFilesList has an additional attribute ``origin_metadata``.
It can store:
- the last modified time of local files
- ETag of remote files
- commit sha of a dataset repository

Thanks to this additional attribute, it is possible to hash the list
and get a different hash if and only if at least one file changed.
This is useful for caching Dataset objects that are obtained from a list of data files.
c                óJ   <€ V ^8„  d   QhRS[ S[,          RS[ S[,          RR/# )r.   rx   Úorigin_metadatar0   N)rD   r2   r¯   )r4   Ú__classdict__s   "€r$   r5   ÚDataFilesList.__annotate__9  s-   ø€ ÷ /ñ /¡4©¥9ð /¹tÑDXÕ?Yð /Ð^bñ /r#   c                ó2   <€ \         SV `  V4       W n        R # r8   )ÚsuperÚ__init__rÐ   )Úselfrx   rÐ   Ú	__class__s   &&&€r$   rÕ   ÚDataFilesList.__init__9  s   ø€ Ü‰Ñ˜Ô$Ø.Ör#   c                ó"   <€ V ^8„  d   QhRRRR/# )r.   ÚotherrB   r0   r   )r4   rÑ   s   "€r$   r5   rÒ   =  s   ø€ ÷ \ñ \˜_ð \°ñ \r#   c                óX   € \        . V OVOV P                  VP                  ,           4      # r8   )rB   rÐ   ©rÖ   rÚ   s   &&r$   Ú__add__ÚDataFilesList.__add__=  s(   € Ü˜_˜t˜_ e˜_¨d×.BÑ.BÀU×EZÑEZÕ.ZÓ[Ð[r#   Nc                ó´   <€ V ^8„  d   QhRS[ S[,          RS[P                  P                  RS[S[,          RS[S[ S[,          ,          RS[S[,          RR/# )r.   rA   Údataset_infor€   r�   r‚   r0   rB   )rD   r2   Úhuggingface_hubÚhf_apiÚDatasetInfor   r   )r4   rÑ   s   "€r$   r5   rÒ   A  si   ø€ ÷ 
ñ 
á‘s•)ð
ñ &×,Ñ,×8Ñ8ð
ñ ™C•=ð	
ñ
 %¡T©#¥YÕ/ð
ñ "¡.Õ1ð
ð 
ñ
r#   c                ó˜   € R VP                    RVP                   RT;'       g    R 2P                  R4      pV P                  WWER7      # )zhf://datasets/rµ   r´   r„   ©r€   r�   r‚   )ÚidÚshaÚrstripÚfrom_patterns)ÚclsrA   rà   r€   r�   r‚   s   &&&&&&r$   Úfrom_hf_repoÚDataFilesList.from_hf_repo@  sZ   € ð % \§_¡_Ð$5°Q°|×7GÑ7GÐ6HÈÈ)Ï/È/ÐWYÐIZÐ[×bÑbÐcfÓgˆ	Ø× Ñ ØÐ>Pð !ó 
ð 	
r#   c          
      ó†   <€ V ^8„  d   QhRS[ S[,          RS[S[,          RS[S[ S[,          ,          RS[S[,          RR/# ©r.   rA   r€   r�   r‚   r0   rB   ©rD   r2   r   r   )r4   rÑ   s   "€r$   r5   rÒ   O  sS   ø€ ÷ 

ñ 

á‘s•)ð

ñ ™C•=ð

ñ %¡T©#¥YÕ/ð	

ñ
 "¡.Õ1ð

ð 
ñ

r#   c                ó€   € Ve   TM%\        4       P                  4       P                  4       pV P                  WW4R7      # )Nrå   )r   ÚresolveÚas_posixré   )rê   rA   r€   r�   r‚   s   &&&&&r$   Úfrom_local_or_remoteÚ"DataFilesList.from_local_or_remoteN  s@   € ð "+Ò!6‘I¼D»F¿N¹NÓ<L×<UÑ<UÓ<Wˆ	Ø× Ñ ØÐ>Pð !ó 
ð 	
r#   c          
      ó†   <€ V ^8„  d   QhRS[ S[,          RS[S[,          RS[S[ S[,          ,          RS[S[,          RR/# rî   rï   )r4   rÑ   s   "€r$   r5   rÒ   \  sS   ø€ ÷ 0ñ 0á‘s•)ð0ñ ™C•=ð0ñ %¡T©#¥YÕ/ð	0ñ
 "¡.Õ1ð0ð 
ñ0r#   c           
     ó  € Ve   TM%\        4       P                  4       P                  4       p. pV F"  p VP                  \	        VVVVR7      4       K$  	  \        WTR7      pV ! WW4      #   \
         d    \        T4      '       g   h  KZ  i ; i©Nrå   r…   )r   rñ   rò   Úextendr¨   rq   r   rÍ   )rê   rA   r€   r�   r‚   rx   r/   rÐ   s   &&&&&   r$   ré   ÚDataFilesList.from_patterns[  s“   € ð "+Ò!6‘I¼D»F¿N¹NÓ<L×<UÑ<UÓ<Wˆ	Øˆ
ÛˆGðØ×!Ñ!Ü#ØØ"+Ø+=Ø(7ô	öñ  ô /¨zÔ[ˆÙ�:Ó/Ð/øô	 %ô Ü  ×)Ò)Øò *ðús   µA+Á+BÂBÚ
extensionsÚ
file_namesc                ój   <€ V ^8„  d   QhRS[ S[S[,          ,          RS[ S[S[,          ,          RR/# )r.   rú   rû   r0   rB   ©r   rD   r2   )r4   rÑ   s   "€r$   r5   rÒ   u  s=   ø€ ÷ Sñ SÙ%¡d©3¥iÕ0ðSÙEMÉdÑSVÍiÕEXðSà	ñSr#   c          	     óZ  a€ . pV'       dB   R P                  R V 4       4      pVP                  \        P                  ! RV R24      4       V'       dB   R P                  R V 4       4      pVP                  \        P                  ! RV R24      4       V'       dk   \	        V  Uau. uFG  o\
        ;QJ d    V3R lV 4       F  '       g   K   RM	  R	M! V3R lV 4       4      '       g   KE  SNKI  	  upV P                  R
7      # \	        \        V 4      V P                  R
7      # u upi )Ú|c              3   óN   "  € T F  p\         P                  ! V4      x € K  	  R # 5ir8   ©rl   Úescape)r9   Úexts   & r$   r;   Ú'DataFilesList.filter.<locals>.<genexpr>z  s   é € Ð"H¹Z°c¤2§9¢9¨S§> >»Zùó   ‚#%z.*(z	)(\..+)?$c              3   óN   "  € T F  p\         P                  ! V4      x € K  	  R # 5ir8   r  )r9   Úfns   & r$   r;   r  }  s   é € Ð!E¹*°B¤"§)¢)¨B§- -»*ùr  z.*[\/]?(z)$c              3   óD   <"  € T F  qP                  S4      x € K  	  R # 5ir8   )rm   )r9   r/   r®   s   & €r$   r;   r  �  s   øé € Ð7iÑ`hÐU\¿¹Ài×8PÐ8PÓ`hùs   ƒ TF©rÐ   )r˜   rv   rl   ÚcompilerB   r=   rÐ   rD   )rÖ   rú   rû   rA   Úext_patternÚ
fn_patternr®   s   &$$   `r$   ÚfilterÚDataFilesList.filteru  sß   ø€ ð ˆßØŸ(™(Ñ"H¹ZÓ"HÓHˆKØ�O‰OœBŸJšJ¨¨[¨M¸Ð'DÓEÔFßØŸ™Ñ!E¹*Ó!EÓEˆJØ�O‰OœBŸJšJ¨(°:°,¸bÐ'AÓBÔCßÜ Ù,0Ôj©D˜y·C³CÔ7iÑ`hÓ7i·C·C²CÔ7iÑ`hÓ7i×4i—�©DÑjØ $× 4Ñ 4ôð ô
 !¤ d£¸T×=QÑ=QÔRÐRùò	 ks   Â(D(Â8D(ÃD(Ã/D(r	  ©NNN)r   r   r    r!   Ú__doc__rÕ   rÝ   Úclassmethodrë   ró   ré   r  r"   Ú__classdictcell__Ú__classcell__©r×   rÑ   s   @@r$   rB   rB   '  s�   ù‡ € ñ÷"/ó /÷\ð \ð ÷
ñ 
ó ð
ð ÷

ñ 

ó ð

ð ÷0ñ 0ó ð0ð2SØ37ðSØ[_÷S÷ Sò Sr#   rB   c                   ó¢   a € ] tR tRt o Rt]RV 3R lR ll4       t]RV 3R lR ll4       t]RV 3R lR	 ll4       tR
RRR/V 3R lR llt	Rt
V tR# )ÚDataFilesDictiˆ  as  
Dict of split_name -> list of data files (absolute local paths or URLs).
It has two construction methods given the user's data files patterns :
- ``from_hf_repo``: resolve patterns inside a dataset repository
- ``from_local_or_remote``: resolve patterns from a local path

Moreover, each list is a DataFilesList. It is possible to hash the dictionary
and get a different hash if and only if at least one file changed.
For more info, see [`DataFilesList`].

This is useful for caching Dataset objects that are obtained from a list of data files.

Changing the order of the keys of this dictionary also doesn't change its hash.
Nc          
      ó²   <€ V ^8„  d   QhRS[ S[S[S[S[,          S[3,          3,          RS[S[,          RS[S[S[,          ,          RS[S[,          RR/# ©r.   rA   r€   r�   r‚   r0   r  ©rC   r2   r	   rD   rB   r   r   )r4   rÑ   s   "€r$   r5   ÚDataFilesDict.__annotate__™  óg   ø€ ÷ ñ á‘s™E¡$¡s¥)©]Ð":Õ;Ð;Õ<ðñ ™C•=ðñ %¡T©#¥YÕ/ð	ñ
 "¡.Õ1ðð 
ñr#   c                ó¬   € V ! 4       pVP                  4        F8  w  rg\        V\        4      '       d   TM\        P                  VVVVR 7      WV&   K:  	  V# ©rå   )rK   rG   rB   ró   ©rê   rA   r€   r�   r‚   r¥   rR   Úpatterns_for_keys   &&&&&   r$   ró   Ú"DataFilesDict.from_local_or_remote˜  sa   € ñ ‹eˆØ%-§^¡^Ö%5Ñ!ˆCô Ð.´×>Ò>ñ !ä"×7Ñ7Ø$Ø'Ø'9Ø$3ð	 8ó ð ‹Hñ &6ð ˆ
r#   c                óà   <€ V ^8„  d   QhRS[ S[S[S[S[,          S[3,          3,          RS[P                  P                  RS[S[,          RS[S[S[,          ,          RS[S[	,          RR/# )r.   rA   rà   r€   r�   r‚   r0   r  )
rC   r2   r	   rD   rB   rá   râ   rã   r   r   )r4   rÑ   s   "€r$   r5   r  ¯  s}   ø€ ÷ ñ á‘s™E¡$¡s¥)©]Ð":Õ;Ð;Õ<ðñ &×,Ñ,×8Ñ8ðñ ™C•=ð	ñ
 %¡T©#¥YÕ/ðñ "¡.Õ1ðð 
ñr#   c           	     ó®   € V ! 4       pVP                  4        F9  w  rx\        V\        4      '       d   TM\        P                  VVVVVR 7      Wg&   K;  	  V# ))rà   r€   r�   r‚   )rK   rG   rB   rë   )	rê   rA   rà   r€   r�   r‚   r¥   rR   r  s	   &&&&&&   r$   rë   ÚDataFilesDict.from_hf_repo®  sd   € ñ ‹eˆØ%-§^¡^Ö%5Ñ!ˆCô Ð.´×>Ò>ñ !ä"×/Ñ/Ø$Ø!-Ø'Ø'9Ø$3ð 0ó ð ‹Hñ &6ð ˆ
r#   c          
      ó²   <€ V ^8„  d   QhRS[ S[S[S[S[,          S[3,          3,          RS[S[,          RS[S[S[,          ,          RS[S[,          RR/# r  r  )r4   rÑ   s   "€r$   r5   r  Ç  r  r#   c                ó¬   € V ! 4       pVP                  4        F8  w  rg\        V\        4      '       d   TM\        P                  VVVVR 7      WV&   K:  	  V# r  )rK   rG   rB   ré   r  s   &&&&&   r$   ré   ÚDataFilesDict.from_patternsÆ  sa   € ñ ‹eˆØ%-§^¡^Ö%5Ñ!ˆCô Ð.´×>Ò>ñ !ä"×0Ñ0Ø$Ø'Ø'9Ø$3ð	 1ó ð ‹Hñ &6ð ˆ
r#   rú   rû   c                ój   <€ V ^8„  d   QhRS[ S[S[,          ,          RS[ S[S[,          ,          RR/# )r.   rú   rû   r0   r  rý   )r4   rÑ   s   "€r$   r5   r  Ü  s8   ø€ ÷ ñ Ù%¡d©3¥iÕ0ðÙEMÉdÑSVÍiÕEXðà	ñr#   c               ó€   € \        V 4      ! 4       pV P                  4        F  w  rEVP                  WR 7      W4&   K  	  V# ))rú   rû   )rŠ   rK   r  )rÖ   rú   rû   r¥   rR   Údata_files_lists   &$$   r$   r  ÚDataFilesDict.filterÜ  s<   € ô �4Œj‹lˆØ$(§J¡J¦LÑ ˆCØ&×-Ñ-¸Ð-Ó[ˆC‹Hñ %1àˆ
r#   r   r  )r   r   r    r!   r  r  ró   rë   ré   r  r"   r  ©rÑ   s   @r$   r  r  ˆ  st   ø‡ € ñð ÷ñ ó ðð* ÷ñ ó ðð. ÷ñ ó ðð*Ø37ðØ[_÷÷ ð r#   r  c                   ó�   a a€ ] tR tRt oRtV3R lV 3R lltR t]RV3R lR ll4       tRV3R lR	 llt	V3R
 lR lt
RtVtV ;t# )ÚDataFilesPatternsListiå  zº
List of data files patterns (absolute local paths or URLs).
For each pattern there should also be a list of allowed extensions
to keep, or a None ot keep all the files for the pattern.
c                óf   <€ V ^8„  d   QhRS[ S[,          RS[ S[S[ S[,          ,          ,          /# )r.   rA   r�   ©rD   r2   r   )r4   rÑ   s   "€r$   r5   Ú"DataFilesPatternsList.__annotate__ì  s1   ø€ ÷ 5ñ 5á‘s•)ð5ñ !¡©$©s­)Õ!4Õ5ñ5r#   c                ó2   <€ \         SV `  V4       W n        R # r8   )rÔ   rÕ   r�   )rÖ   rA   r�   r×   s   &&&€r$   rÕ   ÚDataFilesPatternsList.__init__ì  s   ø€ ô
 	‰Ñ˜Ô"Ø"4Ör#   c                óX   € \        . V OVOV P                  VP                  ,           4      # r8   )rB   r�   rÜ   s   &&r$   rÝ   ÚDataFilesPatternsList.__add__ô  s(   € Ü˜_˜t˜_ e˜_¨d×.EÑ.EÈ×H`ÑH`Õ.`ÓaÐar#   c                óZ   <€ V ^8„  d   QhRS[ S[,          RS[S[ S[,          ,          RR/# )r.   rA   r�   r0   r-  r/  )r4   rÑ   s   "€r$   r5   r0  ø  s7   ø€ ÷ Cñ CÙ™C•yðCÙ6>¹tÁC½yÕ6IðCà	 ñCr#   c                ó4   € V ! W.\        V4      ,          4      # r8   )rM   )rê   rA   r�   s   &&&r$   ré   Ú#DataFilesPatternsList.from_patterns÷  s   € ñ �8Ð1´C¸³MÕAÓBÐBr#   c                ó:   <€ V ^8„  d   QhRS[ RS[S[,          RR/# )r.   r€   r‚   r0   rB   ©r2   r   r   )r4   rÑ   s   "€r$   r5   r0  ý  s.   ø€ ÷ :ñ :áð:ñ "¡.Õ1ð:ð 
ñ	:r#   c           
     óN  € Ve   TM%\        4       P                  4       P                  4       p. p\        W P                  4       F$  w  rE VP                  \        VVVVR7      4       K&  	  \        W2R7      p\        W64      #   \         d    \        T4      '       g   h  K_  i ; ir÷   )r   rñ   rò   Úzipr�   rø   r¨   rq   r   rÍ   rB   )rÖ   r€   r‚   rx   r/   r�   rÐ   s   &&&    r$   rñ   ÚDataFilesPatternsList.resolveý  s¢   € ð
 "+Ò!6‘I¼D»F¿N¹NÓ<L×<UÑ<UÓ<Wˆ	Øˆ
Ü+.¨t×5LÑ5LÖ+MÑ'ˆGðØ×!Ñ!Ü#ØØ"+Ø+=Ø(7ô	öñ ,Nô /¨zÔ[ˆÜ˜ZÓ9Ð9øô	 %ô Ü  ×)Ò)Øò *ðús   Á
BÂB$Â#B$c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r.   rú   r0   r-  ©rD   r2   )r4   rÑ   s   "€r$   r5   r0    s    ø€ ÷ 
ñ 
©D±­Ið 
Ð:Qñ 
r#   c                ób   € \        Y P                   Uu. uF  q"V,           NK  	  up4      # u upi r8   )r-  r�   )rÖ   rú   r�   s   && r$   Úfilter_extensionsÚ'DataFilesPatternsList.filter_extensions  s3   € Ü$Ø×MdÒMdÓeÑMdÐ7I¨
×2Ð2ÑMdÑeó
ð 	
ùÚes   ”,
©r�   r8   )r   r   r    r!   r  rÕ   rÝ   r  ré   rñ   r@  r"   r  r  r  s   @@r$   r-  r-  å  sO   ù‡ € ñ÷5ó 5òbð ÷Cñ Có ðC÷
:ò :÷.
÷ 
ð 
r#   r-  c                   ól   a € ] tR tRt o Rt]RV 3R lR ll4       tRV 3R lR lltV 3R lR	 ltR
t	V t
R# )ÚDataFilesPatternsDicti  zS
Dict of split_name -> list of data files patterns (absolute local paths or URLs).
Nc                óp   <€ V ^8„  d   QhRS[ S[S[S[,          3,          RS[S[S[,          ,          RR/# )r.   rA   r�   r0   rD  )rC   r2   rD   r   )r4   rÑ   s   "€r$   r5   Ú"DataFilesPatternsDict.__annotate__   s;   ø€ ÷ ñ Ù™C¡¡c¥˜NÕ+ðÙAIÉ$ÉsÍ)ÕATðà	 ñr#   c                ó¨   € V ! 4       pVP                  4        F6  w  rE\        V\        4      '       d   TM\        P                  VVR 7      W4&   K8  	  V# )rB  )rK   rG   r-  ré   )rê   rA   r�   r¥   rR   r  s   &&&   r$   ré   Ú#DataFilesPatternsDict.from_patterns  s\   € ñ ‹eˆØ%-§^¡^Ö%5Ñ!ˆCô Ð.Ô0E×FÒFñ !ä*×8Ñ8Ø$Ø'9ð 9ó ð ‹Hñ &6ð ˆ
r#   c                ó:   <€ V ^8„  d   QhRS[ RS[S[,          RR/# )r.   r€   r‚   r0   r  r9  )r4   rÑ   s   "€r$   r5   rF  /  s.   ø€ ÷ ñ áðñ "¡.Õ1ðð 
ñ	r#   c                ór   € \        4       pV P                  4        F  w  rEVP                  W4      W4&   K  	  V# r8   )r  rK   rñ   )rÖ   r€   r‚   r¥   rR   Údata_files_patterns_lists   &&&   r$   rñ   ÚDataFilesPatternsDict.resolve/  s5   € ô
 ‹oˆØ-1¯Z©Z®\Ñ)ˆCØ/×7Ñ7¸	ÓSˆC‹Hñ .:àˆ
r#   c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r.   rú   r0   rD  r>  )r4   rÑ   s   "€r$   r5   rF  9  s    ø€ ÷ ñ ©D±­Ið Ð:Qñ r#   c                ó~   € \        V 4      ! 4       pV P                  4        F  w  r4VP                  V4      W#&   K  	  V# r8   )rŠ   rK   r@  )rÖ   rú   r¥   rR   rK  s   &&   r$   r@  Ú'DataFilesPatternsDict.filter_extensions9  s7   € Ü�4Œj‹lˆØ-1¯Z©Z®\Ñ)ˆCØ/×AÑAÀ*ÓMˆC‹Hñ .:àˆ
r#   r   r8   )r   r   r    r!   r  r  ré   rñ   r@  r"   r  r+  s   @r$   rD  rD    s7   ø‡ € ñð ÷ñ ó ð÷ò ÷ö r#   rD  r   )Ú
validationÚvalidÚdevÚval)ÚtestÚtestingÚevalÚ
evaluation)z{keyword}/**z{keyword}[{sep}]*/**z**[{sep}/]{keyword}/**z**[{sep}/]{keyword}[{sep}]*/**)z{keyword}/**/*z{keyword}[{sep}]*/**/*z**/*[{sep}/]{keyword}/**/*z"**/*[{sep}/]{keyword}[{sep}]*/**/*)z**/{keyword}/**z**/{keyword}[{sep}]*/**z**/*[{sep}]{keyword}/**z**/*[{sep}]{keyword}[{sep}]*/**)z	README.mdzconfig.jsonzdataset_info.jsonzdataset_infos.jsonzdummy_data.zipzdataset_dict.json)NNr8   )Vr‘   rl   Ú	functoolsr   r•   r   Úpathlibr   r   Útypingr   r   r	   rá   Úfsspec.corer
   r   Ú	packagingr   Útqdm.contrib.concurrentr   r„   r   Údownloadr   Únamingr   rT   r   Úutilsr   r   rÌ   Úutils.file_utilsr   r   r   r   r   Úutils.py_utilsr   Útupler2   r¯   ÚTRAINrL   Ú
get_loggerr   r™   r   rq   r'   ÚSPLIT_PATTERN_SHARDEDÚ
VALIDATIONÚTESTÚSPLIT_KEYWORDSÚNON_WORDS_CHARSÚFSSPEC_VERSIONÚparseÚ"KEYWORDS_IN_FILENAME_BASE_PATTERNSÚ"KEYWORDS_IN_DIR_NAME_BASE_PATTERNSrs   r4   Ú"DEFAULT_PATTERNS_SPLIT_IN_FILENAMEÚ"DEFAULT_PATTERNS_SPLIT_IN_DIR_NAMEÚDEFAULT_PATTERNS_ALLÚDEFAULT_PATTERNS_LOGSro   ru   r>   r“   r?   rQ   r`   rf   r~   r¨   r¬   rÀ   rÍ   rD   rB   rC   r  r-  rD  )rI   r*   r/   s   000r$   Ú<module>rs     s'  ðÛ 	Û 	Ý Ý ß "ß ,Ñ ,ã Ý !Ý (Ý Ý .å Ý $Ý Ý Ý Ý "ß rÕ rÝ *ð ˜U 3¨ 8�_¨e°C­j¸%À½)ÐCÕDÐ ñ ˜eŸk™kÓ*Ð ð 
×	Ò	˜HÓ	%€ô	ˆ#ô 	ô	Ð)ô 	ð aÐ ð 
‡K�K�'˜:Ð&Ø	×ÑÒ;Ø	‡J�JÒ9ð€ð
 €Ø	×Ñ˜7Ÿ=š=¨Ó4Ô4Ø*GÐI\Ð)]Ð&ò*Ñ&ð ×Ñ˜WŸ]š]¨;Ó7Ô7Ø*IÐK^Ð)_Ð&ò*Ñ&ð +AÐB`Ð)aÐ&ò*Ð&ð —+‘+˜u×/Ñ/°·±Ð<€ñ  õ&ñ  ˆð 
à% eÖ,ôá,ˆGÛ9ˆGð 	�‰˜w¨OˆÖ<á9ñ 	=Ù,òò ñ
  ó&Ð "ñ  õ&ñ  ˆð 
à% eÖ,ôá,ˆGÛ9ˆGð 	�‰˜w¨OˆÖ<á9ñ 	=Ù,òò ñ
  ó&Ð "ð 
‡K�K�$�ðÐ ð   + Ð/Ð à+Ð,Ð àØ&Ø&Øð	Ð ð Ð ò€õ\õ&1õRSõB;Qõ|)d÷Xg÷TXj÷v÷0ô:^S�D˜•Iô ^SôBZ�D˜˜mÐ+Õ,ô Zôz2
˜D �Iô 2
ôj#˜D Ð&;Ð!;Õ<ö #ùó]ùô&ùóùô&s0   ÆKÆ%K
ÇKÇKÇ)%KÈKË
KËK