Ë
    ÷Q(h6  ã                   óè  — 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 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j2                  e j4                  dœZe j8                  dk(  reed<   dZ G d„ de«      Z
 e
«       Zej>                  Zej@                  Z ejB                  Z!ejD                  Z"ejF                  Z#dd„Z$d„ Z%y)é    N)Ú
sem_unlink)Úutil)ÚResourceTrackeré   )ÚspawnÚwin32)Ú	duplicate)Úensure_runningÚregisterÚ
unregisterÚpthread_sigmask)ÚfolderÚfileÚposixÚsemlockFc                   ó.   ‡ — e Zd ZdZd„ Zd„ Zˆ fd„Zˆ xZS )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                 óJ   — | j                  «        | j                  d||«       y)z@Decrement the refcount of a resource, and delete it if it hits 0ÚMAYBE_UNLINKN)r
   Ú_send)ÚselfÚnameÚrtypes      úl/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/joblib/externals/loky/backend/resource_tracker.pyÚmaybe_unlinkzResourceTracker.maybe_unlinkY   s   € à×ÑÔØ�
‰
�> 4¨Õ/ó    c                 ót  — | j                   5  | j                  ��| j                  «       r
	 ddd«       yt        j                  | j                  «       t        j
                  dk(  r!	 t        j                  | j                  d«       d| _        d| _        t        j                  d«       g }	 |j                  t        j                  j                  «       «       t        j                   «       \  }}t        j"                  dk(  r7t%        t'        j(                  |«      d¬«      }t        j                  |«       |}dt*        j,                  › d	|› d
t.        › d�}	 |j                  |«       t1        j2                  «       }|gt5        j6                  «       ¢d‘|‘}t5        j8                  d|› �«       	 t:        r(t=        j>                  t<        j@                  tB        «       tE        |||«      }t:        r)t=        j>                  t<        jF                  tB        «       	 || _        || _        	 t        j"                  dk(  rtK        jL                  |«       nt        j                  |«       	 ddd«       y# t        $ r Y �Œùw xY w# t        $ r Y �Œ¶w xY w# t:        r)t=        j>                  t<        jF                  tB        «       w w xY w# tH        $ r t        j                  |«       ‚ w xY w# t        j"                  dk(  rtK        jL                  |«       w t        j                  |«       w xY w# 1 sw Y   yxY w)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: )'Ú_lockÚ_fdÚ_check_aliveÚosÚcloser   ÚwaitpidÚ_pidÚ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_running^   s¡  € ð
 �Z‰Zñ I	 Ø�x‰xÐ#à×$Ñ$Ô&à÷I	 ð I	 ô —‘˜Ÿ™Ô"Ü—7‘7˜gÒ%ðô Ÿ
™
 4§9¡9¨aÔ0ð
  �”Ø �”	ä—‘ðôð ˆKðØ×"Ñ"¤3§:¡:×#4Ñ#4Ó#6Ô7ô —7‘7“9‰DˆAˆqÜ�|‰|˜wÒ&Üœv×3Ñ3°AÓ6ÀDÔI�Ü—‘˜”Ø�àœ$Ÿ/™/Ð*Ð*=¸a¸SÀÄ7À)È1ÐMˆCð! Ø×"Ñ" 1Ô%ä×*Ñ*Ó,�ØÐMœd×?Ñ?ÓAÐMÀ4ÐMÈÐM�Ü—
‘
Ð9¸$¸Ð@ÔAð
Ý$Ü×.Ñ.Ü"×,Ñ,Ô.>ôô )¨¨d°KÓ@�Cå$Ü×.Ñ.Ü"×.Ñ.Ô0@õð �”Ø�•	ä—<‘< 7Ò*Ü×'Ñ'¨Õ*ä—H‘H˜Q•K÷SI	 ð I	 øô #ò ò ðûô  ò Úðûõ: %Ü×.Ñ.Ü"×.Ñ.Ô0@õð %ûô !ò Ü—‘˜”Øðûô —<‘< 7Ò*Ü×'Ñ'¨Õ*ä—H‘H˜Q•Kú÷SI	 ð I	 ús�   �L.´2L.Á' I4Â%L.Â--JÃA?L.ÅAKÆ3;JÇ./KÈK+È,?L.É4	JÉ=L.Ê JÊL.Ê	JÊL.ÊJÊL.Ê1KËKË K(Ë(K+Ë+A L+Ì+L.Ì.L7c                 ód   •— t        t        d«      sy 	 t        ‰| �  «        y # t        $ r Y y w xY w)NÚ__del__)Úhasattrr   ÚsuperrJ   ÚChildProcessError)r   Ú	__class__s    €r   rJ   zResourceTracker.__del__®   s3   ø€ ô ”¨	Ô2Øð	Ü‰G‰OÕøÜ ò 	Ùð	ús   ”# £	/®/)Ú__name__r3   Ú__qualname__Ú__doc__r   r
   rJ   Ú__classcell__)rN   s   @r   r   r   J   s   ø„ ñò0ò
N ÷`	ð 	r   r   c                 ó¢  ‡— ‰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 ]  }	 |j                  «        Œ ‰rt        j                   d«       t"        j%                  «       D �ci c]  }|i “Œ }}	 t        j&                  dk(  r$t)        j*                  | t,        j.                  «      } t1        | d«      5 }	 |j3                  «       }|dk(  r�n”	 |j5                  «       j7                  d«      j9                  d«      }|d   dj;                  |d	d
 «      |d
   }}}|dk(  rŒk|t"        vr/t=        d|› d|› dt?        t"        j%                  «       «      › �«      ‚|dk(  rH|||   vr	d	||   |<   n||   |xx   d	z  cc<   ‰rát        j                   d|› d|› d||   |   › d�«       n»|dk(  r1||   |= ‰r®t        j                   d|› d|› dtA        |«      › d�«       n…|dk(  rr||   |xx   d	z  cc<   ‰r%t        j                   d|› d|› d||   |   › d�«       ||   |   dk(  r>||   |= 	 ‰rt        j                   d|› �«       t#        |   |«       ntG        d|›�«      ‚�Œ«	 ddd«       ˆfd„}
|jO                  «       D ]  \  }}|dk(  rŒ |
||«       Œ d|v r |
|d   d«       	 ‰rt        j                   d «       yy# t        $ r Y �Œ«w xY wc c}w # t        $ r%}	tC        jD                  d|› d|	›�«       Y d}	~	ŒŸd}	~	ww xY w# tH        $ r8 	 t        jJ                  t        jL                  «       Ž  n# tH        $ r Y nw xY wY Œçw xY w# 1 sw Y   ŒéxY w# ˆfd„}
|jO                  «       D ]  \  }}|dk(  rŒ |
||«       Œ d|v r |
|d   d«       w w xY w)!zRun resource tracker.)Úlevelz Main resource tracker is runningr   Úrbr   Úasciiú:r   r   éÿÿÿÿÚPROBEzCannot register z/ for automatic cleanup: unknown resource type (z1). Resource type should be one of the following: ÚREGISTERz*[ResourceTracker] incremented refcount of ú z
 (current r   Ú
UNREGISTERz[ResourceTracker] unregister z: registry(r   z*[ResourceTracker] decremented refcount of ú[ResourceTracker] unlink úresource_tracker: ú: Nzunrecognized command c                 ó6  •— | r&	 t        j                  dt        | «      › d|› d�«       | D ]+  }	 t	        |   |«       ‰rt        j                  d|› �«       Œ- y # t        $ r Y Œ<w xY w# t        $ r%}t        j                  d|› d|›�«       Y d }~Œgd }~ww xY w)Nz%resource_tracker: There appear to be z leaked z  objects to clean up at shutdownr]   r^   r_   )r'   r(   Úlenr-   Ú_CLEANUP_FUNCSr   r7   )Úrtype_registryr   r   ÚeÚverboses       €r   Ú_unlink_resourceszmain.<locals>._unlink_resources(  s·   ø€ ÙðÜ—M‘MØ?Ü˜~Ó.Ð/¨x¸°wð ?/ð/ôð 'ò 	F�ðFÜ" 5Ñ)¨$Ô/ÙÜŸ
™
Ð%>¸t¸fÐ#EÔFøñ	Føô !ò Ùðûô !ò FÜ—M‘MÐ$6°t°f¸B¸q¸eÐ"D×EÑEûðFús(   …%A °(A*Á	A'Á&A'Á*	BÁ3BÂBr   zresource tracker shut down)(r   Úlog_to_stderrÚDEBUGr9   ÚSIGINTÚSIG_IGNÚSIGTERMr8   r   r=   r;   r*   ÚstdinÚstdoutr#   r-   r7   rb   Úkeysr/   r0   Úopen_osfhandler"   ÚO_RDONLYÚopenÚreadlineÚstripÚdecodeÚsplitÚjoinÚ
ValueErrorÚlistra   r'   r(   ÚRuntimeErrorr>   Ú
excepthookÚexc_infoÚitems)Úfdre   Úfr   ÚregistryÚlineÚsplittedrE   r   rd   rf   rc   s    `          r   r2   r2   Â   s„  ø€ ñ Ü×Ñ¤§¡Õ,ä
‡M�M”&—-‘-¤§¡Ô0Ü
‡M�M”&—.‘.¤&§.¡.Ô1åÜ×Ñœv×1Ñ1Ô3CÔDä�i‰iœŸ™Ð$ò ˆð	Ø�G‰G�Iðñ Ü�
‰
Ð5Ô6ä'5×':Ñ':Ó'<Ö=˜e��r‘	Ð=€HÐ=ðr<ä�<‰<˜7Ò"Ü×&Ñ& r¬2¯;©;Ó7ˆBÜ�"�d‹^ð I	˜qØØ—z‘z“|�Ø˜3’;ÙðDØ#Ÿz™z›|×2Ñ2°7Ó;×AÑAÀ#ÓF�Hð ! ™ØŸ™ ¨!¨B Ó0Ø  ™ð  %˜�Cð ˜g’~Ø à¤NÑ2Ü(Ø.¨t¨fð 56Ø6;°Wð =?ä#¤N×$7Ñ$7Ó$9Ó:Ð;ð=óð ð ˜jÒ(Ø x°¡Ñ6Ø45˜H U™O¨DÒ1à$ U™O¨DÓ1°QÑ6Ó1á"Ü ŸJ™JØ LØ#( '¨¨4¨&ð 1,Ø,4°U©O¸DÑ,AÐ+BÀ!ð!Eõð
  Ò,Ø$ U™O¨DÐ1Ù"Ü ŸJ™JØ"?À¸vÀQÀuÀgð N,Ü,/°«M¨?¸!ð!=õð  Ò.Ø  ™¨Ó-°Ñ2Ó-Ù"Ü ŸJ™JØ LØ#( '¨¨4¨&ð 1,Ø,4°U©O¸DÑ,AÐ+BÀ!ð!Eôð $ E™?¨4Ñ0°AÒ5Ø (¨¡°Ð 5ð	"Ù#*Ü$(§J¡JØ*CÀDÀ6Ð(Jô%&ô !/¨uÑ 5°dÕ ;ô +Ð-BÀ3À'Ð+JÓKÐKñG ð ÷	I	ôX	Fð* &.§^¡^Ó%5ò 	9Ñ!ˆE�>Ø˜Ò Øá! .°%Õ8ð		9ð �xÑÙ˜h xÑ0°(Õ;áÜ�
‰
Ð/Õ0ð øôw ò 	Úð	üò >øôF $-ò "Ü (§¡Ø&8¸¸¸bÀÀÐ$F÷!"ñ !"ûð"ûô %ò ðÜŸ™¬¯©«Ò7øÜ(ò Ùðüðú÷KI	ð I	ûôX	Fð* &.§^¡^Ó%5ò 	9Ñ!ˆE�>Ø˜Ò Øá! .°%Õ8ð		9ð �xÑÙ˜h xÑ0°(Õ;ð  ús½   ÃM9Ä
N	Ä*AP Å-PÆAN?ÇPÇDN?Ë!(NÌ	N?ÌPÌP Í9	NÎNÎ	N<ÎN7Î2N?Î7N<Î<N?Î?	P Ï	$O.Ï-P Ï.	O:Ï7P Ï9O:Ï:P Ï=PÏ?P Ð PÐPÐP Ð?Qc                 ó˜  — t         j                  dk7  rF|D �cg c]  }|j                  d«      ‘Œ }}| j                  d«      } t        j                  | ||«      S t        |«      }dj                  d„ |D «       «      }	 t        j                  | |d d ddd d d «	      \  }}}}t        j                  |«       |S c c}w # t        $ r Y S w xY w)Nr   zutf-8r[   c              3   ó(   K  — | ]
  }d |› d �–— Œ y­w)ú"N© )Ú.0Úxs     r   ú	<genexpr>z!spawnv_passfds.<locals>.<genexpr>W  s   è ø€ Ò. A˜˜1˜#˜Q”xÑ.ùs   ‚Tr   )r*   r/   Úencoder   r<   Úsortedrv   r?   ÚCreateProcessr@   r>   )ÚpathrG   ÚpassfdsÚargrE   Ú_ÚhtrH   s           r   r<   r<   P  sÏ   € Ü
‡|�|�wÒØ/3Ö4¨�—
‘
˜7Õ#Ð4ˆÐ4Ø�{‰{˜7Ó#ˆÜ×"Ñ" 4¨¨wÓ7Ð7ä˜“/ˆØ�h‰hÑ.¨Ô.Ó.ˆð	Ü#×1Ñ1Ø�c˜4  t¨Q°°d¸Dó‰MˆAˆr�3˜ô ×Ñ Ô#ð ˆ
ùò 5øô ò 	ØØˆ
ð	ús   ˜B7Á>7B< Â<	C	ÃC	)r   )&r"   Úshutilr*   r9   r'   Ú_multiprocessingr   Úmultiprocessingr   Ú multiprocessing.resource_trackerr   Ú_ResourceTrackerÚ r   r/   r?   r0   Úmultiprocessing.reductionr	   Ú__all__rK   r8   ri   rk   r;   ÚrmtreeÚunlinkrb   r   r4   Ú_resource_trackerr
   r   r   r   Úgetfdr2   r<   r…   r   r   ú<module>r�      sð   ðóR 
Û Û 
Û Û Ý 'Ý  õõ à‡<�<�7ÒÛÛÝ3ò 7€á˜Ð 1Ó2€Ø—M‘M 6§>¡>Ð2Ð à"ŸM™M°2·9±9Ñ=€à‡7�7ˆgÒØ *€N�9Ñð €ômÐ&ô mñ` $Ó%Ð Ø"×1Ñ1€Ø×%Ñ%€Ø ×-Ñ-€Ø×)Ñ)€
Ø×Ñ€óK1ó\r   