ó
    Ð]j+<  ã                   ó>  • S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJr	  SSK
Jr  \R                  S:X  a  S SKrS SKrS SKJr  / SQr\" \S	5      r\R(                  \R*                  4rS
 r\\R0                  \ R2                  S.r\ R6                  S:X  a/  S SKr\" \S5      (       a  \R;                  S\R<                  05        Sr " S S\	5      r\" 5       r \ RB                  r!\ RD                  r"\ RF                  r#\ RH                  r$\ RJ                  r%SS jr&S r'g)é    N)Úutil)ÚResourceTrackeré   )ÚspawnÚwin32)Ú	duplicate)Úensure_runningÚregisterÚ
unregisterÚpthread_sigmaskc                 ó   • [        S5      e)Nz-noop should never be registered or cleaned up)ÚRuntimeError)Únames    Úk/home/mande/repo/quber/.venv/lib/python3.13/site-packages/joblib/externals/loky/backend/resource_tracker.pyÚcleanup_noopr   A   s   € Ü
ÐFÓ
GÐGó    )ÚnoopÚfolderÚfileÚposixÚ
sem_unlinkÚsemlockFc                   óT   ^ • \ rS rSrSrS rS rS rS rSS jr	S r
U 4S	 jrS
rU =r$ )r   é^   añ  Resource tracker with refcounting scheme.

This class is an extension of the multiprocessing ResourceTracker class
which implements a reference counting scheme to avoid unlinking shared
resources still in use in other processes.

This feature is notably used by `joblib.Parallel` to share temporary
folders and memory mapped files between the main process and the worker
processes.

The actual implementation of the refcounting scheme is in the main
function, which is run in a dedicated process.
c                 ó(   • U R                  SX5        g)z@Decrement the refcount of a resource, and delete it if it hits 0ÚMAYBE_UNLINKN)Ú_send)Úselfr   Úrtypes      r   Úmaybe_unlinkÚResourceTracker.maybe_unlinkm   s   € à�
‰
�> 4Õ/r   c                 ó"   • U R                  5       $ )zøMake sure that resource tracker process is running.

This can be run from any process.  Usually a child process will use
the resource created by its parent.

This function is necessary for backward compatibility with python
versions before 3.13.7.
)Ú_ensure_running_and_write©r   s    r   r	   ÚResourceTracker.ensure_runningq   s   € ð ×-Ñ-Ó/Ð/r   c                 ó2  • [         R                  " U R                  5        [         R                  S:X  a/   U R                  b!  [         R
                  " U R                  S5        S U l        S U l        [        R                  " S5        g ! [         a     N1f = f)Nr   r   z]resource_tracker: process died unexpectedly, relaunching. Some folders/semaphores might leak.)	ÚosÚcloseÚ_fdr   Ú_pidÚwaitpidÚOSErrorÚwarningsÚwarnr$   s    r   Ú_teardown_dead_processÚ&ResourceTracker._teardown_dead_process|   sz   € ô 	�Š�—‘Ôô �7‰7�gÓðð —9‘9Ñ(Ü—J’J˜tŸy™y¨!Ô,ð ˆŒØˆŒ	ä�Šð2õ	
øô ó áðús   ¶.B	 Â	
BÂBc                 ó  • / n UR                  [        R                  R                  5       5        [
        R                  " 5       u  p#[        R                  S:X  a6  [        [        R                  " U5      SS9n[
        R                  " U5        UnS[        R                   SU S[         S3n UR                  U5        [        R                   " 5       nU/["        R$                  " 5       QSPUPn["        R&                  " S	U 35         [(        (       a)  [*        R,                  " [*        R.                  [0        5        [3        XgU5      n[(        (       a)  [*        R,                  " [*        R4                  [0        5        X0l        X€l         [        R                  S:X  a  [<        R>                  " U5        g [
        R                  " U5        g ! [         a     GN¬f = f! [(        (       a*  [*        R,                  " [*        R4                  [0        5        f f = f! [:         a    [
        R                  " U5        e f = f! [        R                  S:X  a  [<        R>                  " U5        f [
        R                  " U5        f = f)
Nr   T)Úinheritablezfrom z import main; main(z, Ú)z-czlaunching resource tracker: ) ÚappendÚsysÚstderrÚfilenoÚ	Exceptionr'   ÚpipeÚplatformr   ÚmsvcrtÚget_osfhandler(   ÚmainÚ
__module__ÚVERBOSEr   Úget_executabler   Ú_args_from_interpreter_flagsÚdebugÚ_HAVE_SIGMASKÚsignalr   Ú	SIG_BLOCKÚ_IGNORED_SIGNALSÚspawnv_passfdsÚSIG_UNBLOCKr)   r*   ÚBaseExceptionÚ_winapiÚCloseHandle)	r   Úfds_to_passÚrÚwÚ_rÚcmdÚexeÚargsÚpids	            r   Ú_launchÚResourceTracker._launch—   sß  € ð
 ˆð	Ø×ÑœsŸz™z×0Ñ0Ó2Ô3ô
 �wŠw‹y‰ˆÜ�<‰<˜7Ó"Üœ6×/Ò/°Ó2ÀÑEˆBÜ�HŠH�QŒKØˆAà”d—o‘oÐ&Ð&9¸!¸¸B¼w¸iÀqÐIˆð	Ø×Ñ˜qÔ!ä×&Ò&Ó(ˆCØÐIœ$×;Ò;Ó=ÐI¸tÐIÀSÐIˆDÜ�JŠJÐ5°d°VÐ<Ô=ðß ’=Ü×*Ò*¬6×+;Ñ+;Ô=MÔNÜ$ S°Ó<�ç ’=Ü×*Ò*Ü×*Ñ*Ô,<ôð ŒHØ�Iä�|‰|˜wÓ&Ü×#Ò# AÕ&ä—’˜•øôU ó 	Úð	û÷8 !’=Ü×*Ò*Ü×*Ñ*Ô,<õð !ûô ó 	Ü�HŠH�QŒKØð	ûô �|‰|˜wÓ&Ü×#Ò# AÕ&ä—’˜•úsJ   „-G Â1AH ÄA G! Å4H ÆI  Ç
GÇGÇ!7HÈH È"H=È=I  É AJc                 óN  • U R                      U R                  b  Uc  SnOUn U R                  U5        SnOU R                  5         SSS5        Ub  U R                  U5        gg! [         a#    U R	                  5         U R                  5          N]f = f! , (       d  f       NT= f)zëMake sure that resource tracker process is running.

This can be run from any process.  Usually a child process will use
the resource created by its parent.


This function is added for compatibility with python version before 3.13.7.
Ns   PROBE:0:noop
)Ú_lockr)   Ú_writer,   r/   rT   )r   ÚmsgÚto_sends      r   r#   Ú)ResourceTracker._ensure_running_and_writeË   s�   € ð �Z‹Zà—‘Ñ$à‘;Ø/‘Gà!�Gð#Ø—K‘K Ô(ð
 ‘à—‘”÷! ð$ ‰?Ø�K‰K˜Õð øô ó #Ø×/Ñ/Ô1Ø—L‘L–Nð#ú÷ �Zús-   �B¤A&µBÁ&*BÂBÂBÂBÂ
B$c                 ó”   • [         R                  " U R                  U5      nU[        U5      :X  d   SU< S[        U5      < 35       eg )Nznbytes=z != len(msg)=)r'   Úwriter)   Úlen)r   rY   Únbytess      r   rX   ÚResourceTracker._writeé   s>   € Ü—’˜$Ÿ(™( CÓ(ˆØœ˜S›Ó!Ð> g f¡Y¨n´3°s³8±+Ð#>Ó>Ñ!r   c                 óp   >• [        [        S5      (       d  g  [        TU ]  5         g ! [         a     g f = f)NÚ__del__)ÚhasattrÚ_ResourceTrackerÚsuperrb   ÚChildProcessError)r   Ú	__class__s    €r   rb   ÚResourceTracker.__del__í   s7   ø€ ô Ô'¨×3Ñ3Øð	Ü‰G‰OÕøÜ ó 	Ùð	ús   ™( ¨
5´5)r)   r*   )N)Ú__name__r>   Ú__qualname__Ú__firstlineno__Ú__doc__r    r	   r/   rT   r#   rX   rb   Ú__static_attributes__Ú__classcell__)rg   s   @r   r   r   ^   s1   ø† ñò0ò	0ò
ò62ôhò<?÷	ó 	r   r   c                 ó@	  ^• T(       a"  [         R                  " [         R                  S9  [        R                  " [        R                  [        R
                  5        [        R                  " [        R                  [        R
                  5        [        (       a)  [        R                  " [        R                  [        5        [        R                  [        R                  4 H  n UR                  5         M     T(       a  [         R                   " S5        ["        R%                  5        Vs0 s H  o30 _M     nn [        R&                  S:X  a%  [(        R*                  " U [,        R.                  5      n [1        U S5       nU GHº  n UR3                  5       R5                  S5      R7                  S5      nUS   SR9                  USS	 5      US	   p8nU["        ;  a/  [;        S
U SU S[=        ["        R%                  5       5       35      eUS:X  a  M‘  US:X  aO  X„U   ;  a  SXC   U'   OXC   U==   S-  ss'   T(       a'  [         R                   " SU SU SXC   U    S35        Mä  Mæ  US:X  a;  XC   U	 T(       a,  [         R                   " SU SU S[?        U5       S35        GM$  GM'  US:X  a�  XC   U==   S-  ss'   T(       a%  [         R                   " SU SU SXC   U    S35        XC   U   S:X  a8  XC   U	  T(       a  [         R                   " SU 35        ["        U   " U5        GM«  GM®  [E        SU< 35      e   SSS5        U4S jn
URM                  5        H  u  p;US:X  a  M  U
" X³5        M     SU;   a  U
" US   S5        T(       a  [         R                   " S5        gg! [         a     GM×  f = fs  snf ! [         a)  n	[@        RB                  " SU SU	< 35         Sn	A	GMl  Sn	A	ff = f! [F         a?     [        RH                  " [        RJ                  " 5       6    GM©  ! [F         a      GM¸  f = ff = f! , (       d  f       GN= f! U4S jn
URM                  5        H  u  p;US:X  a  M  U
" X³5        M     SU;   a  U
" US   S5        f f = f) zRun resource tracker.)Úlevelz Main resource tracker is runningr   ÚrbÚasciiÚ:r   r   éÿÿÿÿzCannot register z/ for automatic cleanup: unknown resource type (z1). Resource type should be one of the following: ÚPROBEÚREGISTERz*[ResourceTracker] incremented refcount of Ú z
 (current r3   Ú
UNREGISTERz[ResourceTracker] unregister z: registry(r   z*[ResourceTracker] decremented refcount of ú[ResourceTracker] unlink úresource_tracker: ú: Nzunrecognized command c                 ób  >• U (       a'   [         R                  " S[        U 5       SU S35        U  H5  n [        U   " U5        T(       a  [
        R                  " SU 35        M5  M7     g ! [         a     NHf = f! [         a(  n[         R                  " SU SU< 35         S nAMw  S nAff = f)Nz%resource_tracker: There appear to be z leaked z  objects to clean up at shutdownry   rz   r{   )r-   r.   r^   r8   Ú_CLEANUP_FUNCSr   rB   )Úrtype_registryr   r   ÚeÚverboses       €r   Ú_unlink_resourcesÚmain.<locals>._unlink_resourcesd  s´   ø€ ÞðÜ—M’MØ?Ü˜~Ó.Ð/¨x¸°wð ?/ð/ôó '�ðFÜ" 5Ò)¨$Ô/ÞÜŸ
š
Ð%>¸t¸fÐ#EÖFñ ò 'øô !ó Ùðûô !ó FÜ—M’MÐ$6°t°f¸B¸q¹eÐ"D×EÒEûðFús(   Š&A, ¶/A<Á,
A9Á8A9Á<
B.ÂB)Â)B.r   zresource tracker shut down)'r   Úlog_to_stderrÚDEBUGrD   ÚSIGINTÚSIG_IGNÚSIGTERMrC   r   rH   rF   r5   ÚstdinÚstdoutr(   r8   rB   r}   Úkeysr:   r;   Úopen_osfhandler'   ÚO_RDONLYÚopenÚstripÚdecodeÚsplitÚjoinÚ
ValueErrorÚlistr^   r-   r.   r   rI   Ú
excepthookÚexc_infoÚitems)Úfdr€   Úfr   ÚregistryÚlineÚsplittedrP   r   r   r�   r~   s    `          r   r=   r=     sG  ø€ æÜ×Ò¤§¡Ò,ô ‡M‚M”&—-‘-¤§¡Ô0Ü
‡M‚M”&—.‘.¤&§.¡.Ô1ç‚}Ü×Òœv×1Ñ1Ô3CÔDä�i‰iœŸ™Ó$ˆð	Ø�G‰GŽIñ %ö Ü�
Š
Ð5Ô6ä'5×':Ñ':Ô'<Ó=Ò'<˜e�r’	Ñ'<€HÐ=ðn<Ü�<‰<˜7Ó"Ü×&Ò& r¬2¯;©;Ó7ˆBä�"�dŒ^˜qÜ�ðCØ#Ÿz™z›|×2Ñ2°7Ó;×AÑAÀ#ÓF�Hð ! ™ØŸ™ ¨!¨B Ó0Ø  ™ð  %�Cð ¤NÓ2Ü(Ø.¨t¨fð 56Ø6;°Wð =?ä#¤N×$7Ñ$7Ó$9Ó:Ð;ð=óð ð ˜g“~ÙØ 
Ó*Ø°¡Ó6Ø45˜H™O¨DÒ1à$™O¨DÓ1°QÑ6Ó1æ"Ü ŸJšJØ LØ#( '¨¨4¨&ð 1,Ø,4©O¸DÑ,AÐ+BÀ!ð!Eöñ #ð  Ó,Ø$™O¨DÐ1Þ"Ü ŸJšJØ"?À¸vÀQÀuÀgð N,Ü,/°«M¨?¸!ð!=÷ò #ð
  Ó.Ø ™¨Ó-°Ñ2Ó-Þ"Ü ŸJšJØ LØ#( '¨¨4¨&ð 1,Ø,4©O¸DÑ,AÐ+BÀ!ð!Eôð $™?¨4Ñ0°AÓ5Ø (¡°Ð 5ð	"Þ#*Ü$(§J¢JØ*CÀDÀ6Ð(Jô%&ô !/¨uÒ 5°d× ;ò 6ô +Ð-BÀ3Á'Ð+JÓKÐKñ ÷ õP	Fð* &.§^¡^Ö%5Ñ!ˆEØ˜Ó Ùá! .Ö8ñ	 &6ð �xÓÙ˜h xÑ0°(Ô;æÜ�
Š
Ð/Õ0ð øôq ó 	Ûð	üò >øô@ $-ó "Ü (§¢Ø&8¸¸¸bÀÁÐ$F÷!"ó !"ûð"ûô %ó ðÜŸš¬¯ª«Õ7øÜ(ó Üðúðú÷C Ž^ûõP	Fð* &.§^¡^Ö%5Ñ!ˆEØ˜Ó Ùá! .Ö8ñ	 &6ð �xÓÙ˜h xÑ0°(Õ;ð  úsÝ   Ã)N.Ä0O Ä?AQ ÆQÆB
O;ÈQÈAO;É)QÉ-;O;Ê(QÊ.AO;Ì /OÌ/QÌ5O;ÍQÍQ Î.
N=Î<N=Ï
O8ÏO3Ï,O;Ï0QÏ3O8Ï8O;Ï;
QÐ&P0Ð,QÐ0
Q 	Ð:QÐ;QÐ?Q 	Ñ QÑQÑ
QÑQ ÑARc                 óž  • [         R                  S:w  aH  U Vs/ s H  o3R                  S5      PM     nnU R                  S5      n [        R                  " XU5      $ [        U5      nSR                  S U 5       5      n [        R                  " XS S SSS S S 5	      u  pVpu[        R                  " U5        U$ s  snf ! [         a     W$ f = f)Nr   zutf-8rw   c              3   ó.   #   • U  H  nS U S 3v •  M     g7f)Ú"N© )Ú.0Úxs     r   Ú	<genexpr>Ú!spawnv_passfds.<locals>.<genexpr>“  s   é € Ð.ª A˜˜1˜#˜Q•xªùs   ‚Tr   )r5   r:   Úencoder   rG   Úsortedr‘   rJ   ÚCreateProcessrK   rI   )ÚpathrR   ÚpassfdsÚargrP   Ú_ÚhtrS   s           r   rG   rG   Œ  sÆ   € Ü
‡|�|�wÓÙ/3Ó4ªt¨—
‘
˜7Ö#©tˆÐ4Ø�{‰{˜7Ó#ˆÜ×"Ò" 4¨wÓ7Ð7ä˜“/ˆØ�h‰hÑ.©Ó.Ó.ˆð	Ü#×1Ò1Ø˜4  t¨Q°°d¸Dó‰MˆA�3ô ×Ò Ô#ð ˆ
ùò 5øô ó 	ØØˆ
ð	ús   ™B9Â6B> Â>
CÃC)r   )(r'   Úshutilr5   rD   r-   Úmultiprocessingr   Ú multiprocessing.resource_trackerr   rd   Ú r   r:   rJ   r;   Úmultiprocessing.reductionr   Ú__all__rc   rC   r…   r‡   rF   r   ÚrmtreeÚunlinkr}   r   Ú_multiprocessingÚupdater   r?   Ú_resource_trackerr	   r
   r    r   Úgetfdr=   rG   rŸ   r   r   Ú<module>r¸      s%  ðóR 
Û Û 
Û Û Ý  õõ à‡<�<�7ÓÛÛÝ3ò 7€á˜Ð 1Ó2€Ø—M‘M 6§>¡>Ð2Ð òHð
 Ø�m‰mØ�I‰Iñ€ð ‡7�7ˆgÓÛñ Ð ×.Ñ.Ø×ÑàÐ+×6Ñ6ðô	
ð €ôXÐ&ô Xñv $Ó%Ð Ø"×1Ñ1€Ø×%Ñ%€Ø ×-Ñ-€Ø×)Ñ)€
Ø×Ñ€ôH1óVr   