+
    QV-j‚  ã                   óÂ   € ^ RI t ^ RIHtHt ^ RIHt ^RIHtHt ]P                  ! ]
4      t ! R R4      t]R 4       tR tR	 t]] P                   R
 R l4       4       tR# )é    N)ÚPoolÚRLock)Útqdm)ÚexperimentalÚloggingc                   ó   € ] tR t^tRtRtR# )ÚParallelBackendConfigN© )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úbackend_nameÚ__static_attributes__r
   ó    Úk/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/datasets/parallel/parallel.pyr	   r	      s   † Ø„Lr   r	   c	                ób   € \         P                  f   \        WW#WEWgV4	      # \        WW#WEWgV4	      # )a²  
**Experimental.** Apply a function to iterable elements in parallel, where the implementation uses either
multiprocessing.Pool or joblib for parallelization.

Args:
    function (`Callable[[Any], Any]`): Function to be applied to `iterable`.
    iterable (`list`, `tuple` or `np.ndarray`): Iterable elements to apply function to.
    num_proc (`int`): Number of processes (if no backend specified) or jobs (using joblib).
    types (`tuple`): Additional types (besides `dict` values) to apply `function` recursively to their elements.
    disable_tqdm (`bool`): Whether to disable the tqdm progressbar.
    desc (`str`): Prefix for the tqdm progressbar.
    single_map_nested_func (`Callable`): Map function that applies `function` to an element from `iterable`.
        Takes a tuple of function, data_struct, types, rank, disable_tqdm, desc as input, where data_struct is an
        element of `iterable`, and `rank` is used for progress bar.
)r	   r   Ú_map_with_multiprocessing_poolÚ_map_with_joblib)	ÚfunctionÚiterableÚnum_procÚbatchedÚ
batch_sizeÚtypesÚdisable_tqdmÚdescÚsingle_map_nested_funcs	   &&&&&&&&&r   Úparallel_mapr      sD   € ô" ×)Ñ)Ò1Ü-Ø °:ÀlÐZpó
ð 	
ô Ø˜H¨zÀ,ÐVlóð r   c	                 óö  € V\        V4      8:  d   TM
\        V4      p. p	\        V4       Fm  p
\        V4      V,          p\        V4      V,          pWº,          \        W¬4      ,           pWÛ,           W¬8  d   ^M^ ,           pV	P                  WWÞ W4WZWg34       Ko  	  \        V4      \	        R V	 4       4      8w  d+   \        R\        V4       R\	        R V	 4       4       24      h\        P                  RT R\        V4       RV	 Uu. uF  p\        V^,          4      NK  	  up 24       RRppV'       g   \        4       3\        P                  pp\        VVVR	7      ;_uu_ 4       pVP                  W‰4      pRRR4       \        P                  R
V R24       X UUu. uF  pV F  pVNK  	  K  	  ppp\        P                  R\        V4       R24       V# u upi   + '       g   i     Ln; iu uppi )é   c              3   óF   "  € T F  p\        V^,          4      x € K  	  R# 5i©r!   N©Úlen©Ú.0Úis   & r   Ú	<genexpr>Ú1_map_with_multiprocessing_pool.<locals>.<genexpr>7   s   é € Ð:©z¨!œC  !¥ŸI˜I«zùó   ‚!zHError dividing inputs iterable among processes. Total number of objects z
, length: c              3   óF   "  € T F  p\        V^,          4      x € K  	  R# 5ir#   r$   r&   s   & r   r)   r*   ;   s   é € Ð9©j¨œ3˜q �tŸ9˜9«jùr+   z	Spawning z processes for z objects in slices of N)ÚinitargsÚinitializerz	Finished z
 processesz	Unpacked z objects)r%   ÚrangeÚminÚappendÚsumÚ
ValueErrorÚloggerÚinfor   r   Úset_lockr   Úmap)r   r   r   r   r   r   r   r   r   Ú
split_kwdsÚindexÚdivÚmodÚstartÚendr(   r-   r.   ÚpoolÚmappedÚproc_resÚobjs   &&&&&&&&&             r   r   r   +   sÊ  € ð $¤s¨8£}Ô4‰x¼#¸h»-€HØ€JÜ�x–ˆÜ�(‹m˜xÕ'ˆÜ�(‹m˜hÕ&ˆØ•œc %›oÕ-ˆØ�k %¤+™Q°1Õ5ˆØ×Ñ˜8¨eÐ%8¸'ÈuÐ]iÐpÖqñ !ô ˆ8ƒ}œÑ:©zÓ:Ó:Ô:Üð'Ü'*¨8£} oð 6ÜÑ9©jÓ9Ó9Ð:ð<ó
ð 	
ô ‡K�KØ
�H�:˜_¬S°«]¨OÐ;QÑfpÓRqÑfpÐabÔSVÐWXÐYZÕW[ÖS\ÑfpÑRqÐQrÐsôð ! $ˆk€HßÜ!&£ 
¬D¯M©M�+ˆÜ	ˆh °{×	CÕ	CÀtØ—‘Ð0Ó=ˆ÷ 
Dä
‡K�K�)˜H˜: ZÐ0Ô1Ù"(Ô=¡&�h³H¨S‹c±H‰c¡&€FÑ=Ü
‡K�K�)œC ›K˜=¨Ð1Ô2à€Mùò Sr÷
 
D×	Cüó >s   Ä	GÅ*G"Æ"G5Ç"G2	c	           
      óð   a aaaaa	€ ^ RI o	S	P                  \        P                  VR7      ;_uu_ 4        S	P	                  4       ! VVV V	VV3R lV 4       4      uuRRR4       #   + '       g   i     R# ; i)r   N)Ún_jobsc              3   ób   <"  € T F$  pSP                  S4      ! SVSSSR RR 34      x € K&  	  R # 5i)NT)Údelayed)r'   rA   r   r   r   Újoblibr   r   s   & €€€€€€r   r)   Ú#_map_with_joblib.<locals>.<genexpr>U   s?   øé € ð !
á�ð �N‰NÐ1Ô2°H¸cÀ7ÈJÐX]Ð_cÐeiÐkoÐ3p×qÐqÛùs   ƒ,/)rF   Úparallel_backendr	   r   ÚParallel)
r   r   r   r   r   r   r   r   r   rF   s
   f&&fff&&f@r   r   r   M   sV   ý€ ó
 à	×	 Ñ	 Ô!6×!CÑ!CÈHÐ	 ×	UÕ	UØ�‰Ô ÷ !
ñ !
áó!
ó 
÷ 
V×	U×	UÓ	Uús   ´%A$Á$A5	c                ó$   € V ^8„  d   QhR\         /# )é   r   )Ústr)Úformats   "r   Ú__annotate__rN   ]   s   € ÷ 2ñ 2¤3ñ 2r   c              #  óŒ   "  € V \         n        V R8X  d   ^ RIHp V! 4         Rx € R\         n        R#   R\         n        i ; i5i)ag  
**Experimental.**  Configures the parallel backend for parallelized dataset loading, which uses the parallelization
implemented by joblib.

Args:
    backend_name (str): Name of backend for parallelization implementation, has to be supported by joblib.

 Example usage:
 ```py
 with parallel_backend('spark'):
   dataset = load_dataset(..., num_proc=2)
 ```
Úspark)Úregister_sparkN)r	   r   ÚjoblibsparkrQ   )r   rQ   s   & r   rH   rH   [   s;   é € ð  *6ÔÔ&à�wÔÝ.áÔð
2Ûà-1ÔÖ*ø¨TÔÕ*üs   ‚ A£4 §A´AÁA)Ú
contextlibÚmultiprocessingr   r   Ú	tqdm.autor   Úutilsr   r   Ú
get_loggerr   r4   r	   r   r   r   ÚcontextmanagerrH   r
   r   r   Ú<module>rY      sn   ðÛ ß 'å ç )ð 
×	Ò	˜HÓ	%€÷ñ ð ñó ðò4òD
ð Ø×Ñô2ó ó ò2r   