§
    €zIf¢8  ã                   óŒ  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 ddl
mZ ej        dk    rd dlZd dlZd dlmZ g d¢Z eed	¦  «        Zej        ej        fZej        e j        d
œZe j        dk    reed<   dZ G d„ d¦  «        Z e¦   «         Zej        Zej        Zej         Z ej!        Z!ej"        Z"dd„Z#d„ Z$dS )é    N)Ú
sem_unlink)Úutilé   )ÚspawnÚwin32)Ú	duplicate)Úensure_runningÚregisterÚ
unregisterÚpthread_sigmask)ÚfolderÚfileÚposixÚsemlockFc                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚResourceTrackerc                 óR   — t          j        ¦   «         | _        d | _        d | _        d S ©N)Ú	threadingÚLockÚ_lockÚ_fdÚ_pid©Úselfs    úb/var/www/piapp/venv/lib/python3.11/site-packages/joblib/externals/loky/backend/resource_tracker.pyÚ__init__zResourceTracker.__init__N   s#   € Ý”^Ñ%Ô%ˆŒ
ØˆŒØˆŒ	ˆ	ˆ	ó    c                 ó8   — |                       ¦   «          | j        S r   )r	   r   r   s    r   ÚgetfdzResourceTracker.getfdS   s   € Ø×ÒÑÔÐØŒxˆr   c                 óB  — | j         5  | j        �™|                      ¦   «         r	 ddd¦  «         dS t          j        | j        ¦  «         t          j        dk    r,	 t          j        | j        d¦  «         n# t          $ r Y nw xY wd| _        d| _        t          j
        d¦  «         g }	 |                     t          j                             ¦   «         ¦  «         n# t          $ r Y nw xY wt          j        ¦   «         \  }}t          j        dk    r9t%          t'          j        |¦  «        d¬¦  «        }t          j        |¦  «         |}dt*          j        › d	|› d
t.          › d�}	 |                     |¦  «         t1          j        ¦   «         }|gt5          j        ¦   «         ¢d‘|‘}t5          j        d|› �¦  «         	 t:          r$t=          j        t<          j         tB          ¦  «         tE          |||¦  «        }t:          r$t=          j        t<          j#        tB          ¦  «         n1# t:          r%t=          j        t<          j#        tB          ¦  «         w w xY w|| _        || _        n## tH          $ r t          j        |¦  «         ‚ w xY w	 t          j        dk    rtK          j&        |¦  «         nSt          j        |¦  «         n># t          j        dk    rtK          j&        |¦  «         w t          j        |¦  «         w xY wddd¦  «         dS # 1 swxY w Y   dS )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.Nr   r   z^resource_tracker: process died unexpectedly, relaunching.  Some folders/sempahores might leak.r   T)Úinheritablezfrom z import main; main(z, ú)z-czlaunching resource tracker: )'r   r   Ú_check_aliveÚosÚcloseÚnameÚwaitpidr   ÚOSErrorÚwarningsÚwarnÚappendÚsysÚstderrÚfilenoÚ	ExceptionÚpipeÚplatformr   ÚmsvcrtÚget_osfhandleÚmainÚ
__module__ÚVERBOSEr   Úget_executabler   Ú_args_from_interpreter_flagsÚdebugÚ_HAVE_SIGMASKÚsignalr   Ú	SIG_BLOCKÚ_IGNORED_SIGNALSÚspawnv_passfdsÚSIG_UNBLOCKÚBaseExceptionÚ_winapiÚCloseHandle)	r   Úfds_to_passÚrÚwÚ_rÚcmdÚexeÚargsÚpids	            r   r	   zResourceTracker.ensure_runningW   sÃ  € ð
 ŒZð I	 ð I	 ØŒxÐ#à×$Ò$Ñ&Ô&ð àðI	 ð I	 ð I	 ñ I	 ô I	 ð I	 ð I	 ð I	 õ ”˜œÑ"Ô"Ð"Ý”7˜gÒ%Ð%ðõ œ
 4¤9¨aÑ0Ô0Ð0Ð0øÝ"ð ð ð ð ˜ðøøøð  �”Ø �”	å”ðñô ð ð ˆKðØ×"Ò"¥3¤:×#4Ò#4Ñ#6Ô#6Ñ7Ô7Ð7Ð7øÝð ð ð Ø�ðøøøõ ”7‘9”9‰DˆAˆqÝŒ|˜wÒ&Ð&Ý�vÔ3°AÑ6Ô6ÀDÐIÑIÔI�Ý”˜‘”�Ø�àM�$œ/ÐMÐM¸aÐMÐMÅ7ÐMÐMÐMˆCð! Ø×"Ò" 1Ñ%Ô%Ð%åÔ*Ñ,Ô,�ØÐM�dÔ?ÑAÔAÐMÀ4ÐMÈÐM�Ý”
Ð@¸$Ð@Ð@ÑAÔAÐAð
Ý$ð ÝÔ.Ý"Ô,Õ.>ñô ð õ )¨¨d°KÑ@Ô@�Cå$ð ÝÔ.Ý"Ô.Õ0@ñô ð øøõ %ð ÝÔ.Ý"Ô.Õ0@ñô ð ð ðøøøð �”Ø�”	�	øõ !ð ð ð Ý”˜‘”�Øðøøøð
 å”< 7Ò*Ð*ÝÔ'¨Ñ*Ô*Ð*Ð*å”H˜Q‘K”K�K�Køõ ”< 7Ò*Ð*ÝÔ'¨Ñ*Ô*Ð*Ð*å”H˜Q‘K”K�K�KøøøðSI	 ð I	 ð I	 ñ I	 ô I	 ð I	 ð I	 ð I	 ð I	 ð I	 ð I	 ð I	 øøøð I	 ð I	 ð I	 ð I	 ð I	 ð I	 s¢   ˆL²)LÁA7Á6LÁ7
BÂLÂBÂ'LÂ,1CÃLÃ
C+Ã(LÃ*C+Ã+A=LÅ)AI+Ç<H+Ç?,I+È+.IÉI+ÉK	É+ JÊK	Ê:LË	;LÌLÌLÌLc                 óX   — 	 |                       ddd¦  «         dS # t          $ r Y dS w xY w)z8Check for the existence of the resource tracker process.ÚPROBEÚ TF)Ú_sendÚBrokenPipeErrorr   s    r   r$   zResourceTracker._check_alive§   sH   € ð	Ø�JŠJ�w  BÑ'Ô'Ð'ð �4øõ ð 	ð 	ð 	Ø�5�5ð	øøøs   ‚ ›
)¨)c                 ó\   — |                       ¦   «          |                      d||¦  «         dS )z6Register a named resource, and increment its refcount.ÚREGISTERN©r	   rO   ©r   r'   Úrtypes      r   r
   zResourceTracker.register°   s0   € à×ÒÑÔÐØ�
Š
�:˜t UÑ+Ô+Ð+Ð+Ð+r   c                 ó\   — |                       ¦   «          |                      d||¦  «         dS )z2Unregister a named resource with resource tracker.Ú
UNREGISTERNrS   rT   s      r   r   zResourceTracker.unregisterµ   s0   € à×ÒÑÔÐØ�
Š
�<  uÑ-Ô-Ð-Ð-Ð-r   c                 ó\   — |                       ¦   «          |                      d||¦  «         dS )z@Decrement the refcount of a resource, and delete it if it hits 0ÚMAYBE_UNLINKNrS   rT   s      r   Úmaybe_unlinkzResourceTracker.maybe_unlinkº   s0   € à×ÒÑÔÐØ�
Š
�> 4¨Ñ/Ô/Ð/Ð/Ð/r   c                 óä   — t          |¦  «        dk    rt          d¦  «        ‚|› d|› d|› d�                     d¦  «        }t          j        | j        |¦  «        }|t          |¦  «        k    sJ ‚d S )Ni   zname too longú:ú
Úascii)ÚlenÚ
ValueErrorÚencoder%   Úwriter   )r   rH   r'   rU   ÚmsgÚnbytess         r   rO   zResourceTracker._send¿   s}   € Ýˆt‰9Œ9�sŠ?ˆ?õ ˜_Ñ-Ô-Ð-ØÐ'Ð'�tÐ'Ð'˜eÐ'Ð'Ð'×.Ò.¨wÑ7Ô7ˆÝ”˜$œ( CÑ(Ô(ˆØ�˜S™œÒ!Ð!Ð!Ð!Ð!Ð!r   N)Ú__name__r6   Ú__qualname__r   r    r	   r$   r
   r   rZ   rO   © r   r   r   r   M   s�   € € € € € ðð ð ð
ð ð ðN ð N ð N ð`ð ð ð,ð ,ð ,ð
.ð .ð .ð
0ð 0ð 0ð
"ð "ð "ð "ð "r   r   c                 óX	  ‡— ‰rt          j        t           j        ¬¦  «         t          j        t          j        t          j        ¦  «         t          j        t          j        t          j        ¦  «         t          r$t          j        t          j	        t          ¦  «         t          j        t          j        fD ]'}	 |                     ¦   «          Œ# t          $ r Y Œ$w xY w‰rt          j        d¦  «         d„ t"                               ¦   «         D ¦   «         }	 t          j        dk    rt)          j        | t,          j        ¦  «        } t1          | d¦  «        5 }	 |                     ¦   «         }|dk    r�nl	 |                     ¦   «                              d¦  «                             d	¦  «        }|d
         d	                     |dd…         ¦  «        |d         }}}|dk    rŒŒ|t"          vr<t=          d|› d|› dt?          t"                               ¦   «         ¦  «        › �¦  «        ‚|dk    rZ|||         vrd||         |<   n||         |xx         dz  cc<   ‰r*t          j        d|› d|› d||         |         › d�¦  «         �n|dk    r7||         |= ‰r+t          j        d|› d|› dtA          |¦  «        › d�¦  «         n×|dk    r¿||         |xx         dz  cc<   ‰r*t          j        d|› d|› d||         |         › d�¦  «         ||         |         d
k    rj||         |= 	 ‰rt          j        d|› �¦  «         t#          |         |¦  «         nD# t          $ r$}	tC          j"        d|› d|	›�¦  «         Y d}	~	nd}	~	ww xY wntG          d|›�¦  «        ‚nA# tH          $ r4 	 t          j%        t          j&        ¦   «         Ž  n# tH          $ r Y nw xY wY nw xY w�Œˆ	 ddd¦  «         n# 1 swxY w Y   ˆfd „}
| '                    ¦   «         D ]\  }}|d!k    rŒ |
||¦  «         Œd!|v r |
|d!         d!¦  «         nN# ˆfd „}
| '                    ¦   «         D ]\  }}|d!k    rŒ |
||¦  «         Œd!|v r |
|d!         d!¦  «         w w xY w‰rt          j        d"¦  «         dS dS )#zRun resource tracker.)Úlevelz Main resource tracker is runningc                 ó   — i | ]}|i “ŒS rg   rg   )Ú.0rU   s     r   ú
<dictcomp>zmain.<locals>.<dictcomp>æ   s   € Ð=Ð=Ð=˜e��rÐ=Ð=Ð=r   r   ÚrbTr   r^   r\   r   r   éÿÿÿÿrM   zCannot register z/ for automatic cleanup: unknown resource type (z1). Resource type should be one of the following: rR   z*[ResourceTracker] incremented refcount of ú z
 (current r#   rW   z[ResourceTracker] unregister z: registry(rY   z*[ResourceTracker] decremented refcount of ú[ResourceTracker] unlink úresource_tracker: ú: Nzunrecognized command c                 óJ  •— | r:	 t          j        dt          | ¦  «        › d|› d�¦  «         n# t          $ r Y nw xY w| D ]b}	 t	          |         |¦  «         ‰rt          j        d|› �¦  «         Œ2# t          $ r$}t          j        d|› d|›�¦  «         Y d }~Œ[d }~ww xY wd S )Nz%resource_tracker: There appear to be z leaked z  objects to clean up at shutdownrp   rq   rr   )r*   r+   r_   r0   Ú_CLEANUP_FUNCSr   r:   )Úrtype_registryrU   r'   ÚeÚverboses       €r   Ú_unlink_resourceszmain.<locals>._unlink_resources7  s#  ø€ Øð ðÝ”Mð/Ý˜~Ñ.Ô.ð/ð /Ø8=ð/ð /ð /ñô ð ð øõ
 !ð ð ð Ø�Dðøøøà&ð 	Fð 	F�ðFÝ" 5Ô)¨$Ñ/Ô/Ð/Øð GÝœ
Ð#E¸tÐ#EÐ#EÑFÔFÐFøøÝ ð Fð Fð FÝ”MÐ"D°tÐ"DÐ"D¸qÐ"DÐ"DÑEÔEÐEÐEÐEÐEÐEÐEøøøøðFøøøð	Fð 	Fs$   …(. ®
;º;Á.A2Á2
B Á<BÂB r   zresource tracker shut down)(r   Úlog_to_stderrÚDEBUGr<   ÚSIGINTÚSIG_IGNÚSIGTERMr;   r   r@   r>   r-   ÚstdinÚstdoutr&   r0   r:   rt   Úkeysr2   r3   Úopen_osfhandler%   ÚO_RDONLYÚopenÚreadlineÚstripÚdecodeÚsplitÚjoinr`   Úlistr_   r*   r+   ÚRuntimeErrorrA   Ú
excepthookÚexc_infoÚitems)Úfdrw   ÚfÚregistryÚlineÚsplittedrH   r'   rU   rv   rx   ru   s    `          r   r5   r5   Ñ   s¨  ø€ ð ð -ÝÔ¥¤Ð,Ñ,Ô,Ð,å
„M•&”-¥¤Ñ0Ô0Ð0Ý
„M•&”.¥&¤.Ñ1Ô1Ð1åð EÝÔ�vÔ1Õ3CÑDÔDÐDåŒi�œÐ$ð ð ˆð	Ø�GŠG‰IŒIˆIˆIøÝð 	ð 	ð 	ØˆDð	øøøð ð 7ÝŒ
Ð5Ñ6Ô6Ð6à=Ð=¥~×':Ò':Ñ'<Ô'<Ð=Ñ=Ô=€Hðr<åŒ<˜7Ò"Ð"ÝÔ& r­2¬;Ñ7Ô7ˆBÝ�"�d‰^Œ^ð I	˜qðHØ—z’z‘|”|�Ø˜3’;�;ÙðDØ#Ÿzšz™|œ|×2Ò2°7Ñ;Ô;×AÒAÀ#ÑFÔF�Hð ! œØŸš ¨!¨B¨$¤Ñ0Ô0Ø  œð  %˜�Cð ˜g’~�~Ø à¥NÐ2Ð2Ý(ð=¨tð =ð =Ø6;ð=ð =õ  $¥N×$7Ò$7Ñ$9Ô$9Ñ:Ô:ð=ð =ñô ð ð ˜jÒ(Ð(Ø x°¤Ð6Ð6Ø45˜H UœO¨DÑ1Ð1à$ UœO¨DÐ1Ð1Ô1°QÑ6Ð1Ð1Ñ1à"ð Ý œJð!EØ#(ð!Eð !EØ+/ð!Eð !Eà,4°U¬O¸DÔ,Að!Eð !Eð !Eñô ð ùð
  Ò,Ð,Ø$ UœO¨DÐ1Ø"ð Ý œJð!=Àð !=ð !=Àuð !=ð !=Ý,/°©M¬Mð!=ð !=ð !=ñô ð øð  Ò.Ð.Ø  œ¨Ð-Ð-Ô-°Ñ2Ð-Ð-Ñ-Ø"ð Ý œJð!EØ#(ð!Eð !EØ+/ð!Eð !Eà,4°U¬O¸DÔ,Að!Eð !Eð !Eñô ð ð $ Eœ?¨4Ô0°AÒ5Ð5Ø (¨¤°Ð 5ð	"Ø#*ð !&Ý$(¤JØ(JÀDÐ(JÐ(Jñ%&ô %&ð %&õ !/¨uÔ 5°dÑ ;Ô ;Ð ;Ð ;øÝ#,ð "ð "ð "Ý (¤Ø$F¸Ð$FÐ$FÀÐ$FÐ$Fñ!"ô !"ð !"ð !"ð !"ð !"ð !"ð !"øøøøð"øøøð 6õ +Ð+JÀ3Ð+JÐ+JÑKÔKÐKøøÝ$ð ð ð ðÝœ­¬©¬Ð7Ð7Ð7øÝ(ð ð ð Ø˜ðøøøøøðøøøñIHð ð	I	ð I	ð I	ñ I	ô I	ð I	ð I	ð I	ð I	ð I	ð I	øøøð I	ð I	ð I	ð I	ðX	Fð 	Fð 	Fð 	Fð 	Fð* &.§^¢^Ñ%5Ô%5ð 	9ð 	9Ñ!ˆE�>Ø˜Ò Ð Øà!Ð! .°%Ñ8Ô8Ð8Ð8ð �xÐÐØÐ˜h xÔ0°(Ñ;Ô;Ð;øøðE	Fð 	Fð 	Fð 	Fð 	Fð* &.§^¢^Ñ%5Ô%5ð 	9ð 	9Ñ!ˆE�>Ø˜Ò Ð Øà!Ð! .°%Ñ8Ô8Ð8Ð8ð �xÐÐØÐ˜h xÔ0°(Ñ;Ô;Ð;Ð;ð  øøøð ð 1ÝŒ
Ð/Ñ0Ô0Ð0Ð0Ð0ð1ð 1sÃ   Â;CÃ
CÃCÄ?Q ÅO0Å8A-N Ç%O0Ç&EN Ì,.MÍN Í
N	Í%NÍ?N ÎN	Î	N ÎO0Î 
OÎ+OÏ
OÏ
OÏOÏOÏOÏO0ÏOÏO0Ï$Q Ï0O4Ï4Q Ï7O4Ï8Q ÑARc                 ó6  ‡— t          |¦  «        }t          j        dk    r’t          j        ¦   «         \  }}	 ddlmŠ ddlm} ˆfd„|D ¦   «         } |||¦  «        t          j        |¦  «         t          j        |¦  «         S # t          j        |¦  «         t          j        |¦  «         w xY wd 	                    d„ |D ¦   «         ¦  «        }	 t          j        | |d d dd	d d d ¦	  «	        \  }}	}
}t          j        |	¦  «         n# t          $ r Y nw xY w|
S )
Nr   r   )Ú_mk_inheritable)Ú	fork_execc                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rg   rg   )rk   rŽ   r”   s     €r   ú
<listcomp>z"spawnv_passfds.<locals>.<listcomp>l  s#   ø€ Ð;Ð;Ð;¨R�_�_ RÑ(Ô(Ð;Ð;Ð;r   ro   c              3   ó"   K  — | ]
}d |› d �V — ŒdS )ú"Nrg   )rk   Úxs     r   ú	<genexpr>z!spawnv_passfds.<locals>.<genexpr>r  s*   è è € Ð.Ð. A�x˜1�x�x�xÐ.Ð.Ð.Ð.Ð.Ð.r   Tr   )Úsortedr-   r2   r%   r1   Ú	reductionr”   r•   r&   rˆ   rB   ÚCreateProcessrC   rA   )ÚpathrJ   ÚpassfdsÚerrpipe_readÚerrpipe_writer•   Ú_passrH   Ú_ÚhtrK   r”   s              @r   r?   r?   d  sU  ø€ Ý�W‰oŒo€GÝ
„|�wÒÐÝ&(¤g¡i¤iÑ#ˆ�mð	$Ø2Ð2Ð2Ð2Ð2Ð2Ø,Ð,Ð,Ð,Ð,Ð,à;Ð;Ð;Ð;°7Ð;Ñ;Ô;ˆEØ�9˜T 5Ñ)Ô)åŒH�\Ñ"Ô"Ð"ÝŒH�]Ñ#Ô#Ð#Ð#øõ ŒH�\Ñ"Ô"Ð"ÝŒH�]Ñ#Ô#Ð#Ð#øøøà�hŠhÐ.Ð.¨Ð.Ñ.Ô.Ñ.Ô.ˆð	Ý#Ô1Ø�c˜4  t¨Q°°d¸Dñô ‰MˆAˆr�3˜õ Ô Ñ#Ô#Ð#Ð#øÝð 	ð 	ð 	ØˆDð	øøøàˆ
s   ¸%B Â*B0Ã5D	 Ä	
DÄD)r   )%r%   Úshutilr-   r<   r*   r   Ú_multiprocessingr   Úmultiprocessingr   rN   r   r2   rB   r3   Úmultiprocessing.reductionr   Ú__all__Úhasattrr;   r{   r}   r>   ÚrmtreeÚunlinkrt   r'   r7   r   Ú_resource_trackerr	   r
   rZ   r   r    r5   r?   rg   r   r   ú<module>r¯      s   ðð\ 
€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð à„<�7ÒÐØ€N€N€NØ€M€M€MØ3Ð3Ð3Ð3Ð3Ð3ð 7Ð
6Ð
6€à�˜Ð 1Ñ2Ô2€Ø”M 6¤>Ð2Ð à"œM°2´9Ð=Ð=€à„7ˆgÒÐØ *€N�9Ñð €ðy"ð y"ð y"ð y"ð y"ñ y"ô y"ð y"ðx $�OÑ%Ô%Ð Ø"Ô1€ØÔ%€Ø Ô-€ØÔ)€
ØÔ€ðK1ð K1ð K1ð K1ðfð ð ð ð r   