ó
    Ð]jm  ã                   óZ   • S r SSKJrJr  SSKJr  SqS r " S S\5      r " S S	\5      r	g)
zÿUtility function to construct a loky.ReusableExecutor with custom pickler.

This module provides efficient ways of working with data stored in
shared memory with numpy.memmap arrays without inducing any memory
copy between the parent and child processes.
é   )ÚTemporaryResourcesManagerÚget_memmapping_reducers)Ú_ReusablePoolExecutorNc                 ó0   • [         R                  " U 40 UD6$ ©N)ÚMemmappingExecutorÚget_memmapping_executor)Ún_jobsÚkwargss     ÚL/home/mande/repo/quber/.venv/lib/python3.13/site-packages/joblib/executor.pyr	   r	      s   € Ü×5Ò5°fÑGÀÑGÐGó    c                   ó\   ^ • \ rS rSr\      SU 4S jj5       rSS jr\S 5       rSr	U =r
$ )r   é   c                 óŽ  >• UR                  5       n	U	R                  U(       a  UO0 5        U	R                  [        X#US95        [        SL =(       d	    [        U	:H  n
U	q[	        U5      n[        SSUR                  S.UD6u  pÍ[        TU ]!  UUUU
UUUUS9u  pïU(       d  X¾l	        Ub  UR                  R                  U5        U$ )zOFactory for ReusableExecutor with automatic memmapping for large
numpy arrays.
)ÚtimeoutÚinitializerÚinitargsNT)Úunlink_on_gc_collectÚtemp_folder_resolver)Újob_reducersÚresult_reducersÚreuser   r   r   Úenv© )ÚcopyÚupdateÚdictÚ_executor_argsr   r   Úresolve_temp_folder_nameÚsuperÚget_reusable_executorÚ_temp_folder_managerÚregister_new_context)Úclsr
   r   r   r   r   Útemp_folderÚ
context_idÚbackend_argsÚexecutor_argsr   Úmanagerr   r   Ú	_executorÚexecutor_is_reusedÚ	__class__s                   €r   r	   Ú*MemmappingExecutor.get_memmapping_executor   sî   ø€ ð$ %×)Ñ)Ó+ˆØ×Ñ¦C™S¨RÔ0Ø×ÑÜ˜ÀHÑMô	
ô  $Ð&×I¬.¸MÑ*IˆØ&ˆä+¨KÓ8ˆô )@ð )
Ø!%Ø!(×!AÑ!Añ)
ð ñ)
Ñ%ˆô
 ).©Ñ(EØØ%Ø+ØØØ#ØØð )Fð 	)
Ñ%ˆ	ö "ð
 .5Ô*àÑ!ð ×*Ñ*×?Ñ?À
ÔKàÐr   c                 ó¢   • U R                  US9  U R                     U R                  R                  USS9  S S S 5        g ! , (       d  f       g = f)N)Úkill_workersT)ÚforceÚallow_non_empty)ÚshutdownÚ_submit_resize_lockr"   Ú_clean_temporary_resources)Úselfr/   s     r   Ú	terminateÚMemmappingExecutor.terminateU   sF   € Ø�‰ <ˆÑ0ð ×%Ó%Ø×%Ñ%×@Ñ@Ø"°Dð Añ ÷ &×%Ö%ús   œA Á 
Ac                 óŒ   • [        U SS 5      b  U R                  $ U R                  R                  5       U l        U R                  $ )NÚ_cached_temp_folder)Úgetattrr9   r"   r   )r5   s    r   Ú_temp_folderÚMemmappingExecutor._temp_folderf   sJ   € ô �4Ð.°Ó5ÑAØ×+Ñ+Ð+ð ×)Ñ)×BÑBÓDð Ô$ð ×+Ñ+Ð+r   )r9   )i,  Nr   NNN)F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úclassmethodr	   r6   Úpropertyr;   Ú__static_attributes__Ú__classcell__©r,   s   @r   r   r      sC   ø† Øð ØØØØØö<ó ð<ô|ð" ñ,ó ö,r   r   c                   ó2   ^ • \ rS rSrSrS rU 4S jrSrU =r$ )Ú_TestingMemmappingExecutorév   zwWrapper around ReusableExecutor to ease memmapping testing with Pool
and Executor. This is only for testing purposes.

c                 óN   • U R                   " U/UQ76 nUR                  Ul        U$ )zSchedule a func to be run)ÚsubmitÚresultÚget)r5   ÚfuncÚargsÚfutures       r   Úapply_asyncÚ&_TestingMemmappingExecutor.apply_async|   s%   € à—’˜TÐ) DÒ)ˆØ—]‘]ˆŒ
Øˆr   c                 ó8   >• [        [        TU ]  " U/UQ76 5      $ r   )Úlistr    Úmap)r5   ÚfrN   r,   s      €r   rT   Ú_TestingMemmappingExecutor.map‚   s   ø€ Ü”E‘G’K Ð) DÒ)Ó*Ð*r   r   )	r=   r>   r?   r@   Ú__doc__rP   rT   rC   rD   rE   s   @r   rG   rG   v   s   ø† ñò
÷+ó +r   rG   )
rW   Ú_memmapping_reducerr   r   Ú externals.loky.reusable_executorr   r   r	   r   rG   r   r   r   Ú<module>rZ      s;   ðñ÷ TÝ Cà€òHô^,Ð.ô ^,ôB+Ð!3õ +r   