Ë
    $Æ%h  ã                  ó¬  — U d dl m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mZmZ ddlmZmZ dd	lmZ dd
lmZ ddlmZ ej2                  dk\  r	d dlmZmZ nd dlmZmZ dZded<   d Zded<   dZ ded<   dZ!ded<   dZ" ed«      Z# ed«      Z$ eed      d«      Z% ee   d«      Z& G d„ d«      Z'd d„Z(ddœ	 	 	 	 	 	 	 d!d„Z)d"d„Z*y)#é    )ÚannotationsN)Údeque)ÚCallable)Údedent)ÚAnyÚFinalÚTypeVaré   )Úcurrent_timeÚ	to_thread)ÚBrokenWorkerIntepreter)ÚCapacityLimiter)ÚRunVar)é   é   )ÚTypeVarTupleÚUnpacké   r   ÚUNBOUNDÚFMT_UNPICKLEDÚFMT_PICKLEDé   ÚDEFAULT_CPU_COUNTé   ÚT_RetvalÚPosArgsTÚWorkerÚ_available_workersÚ_default_interpreter_limiterc                  óš   — e Zd ZU  e ed«      dd«      ZdZded<   dZded	<   d
ed<   d
ed<   dd„Z	dd„Z
	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zy)r   a±  
        import _interpqueues as queues
        import _interpreters as interpreters
        from pickle import loads, dumps, HIGHEST_PROTOCOL

        item = queues.get(queue_id)[0]
        try:
            func, args = loads(item)
            retval = func(*args)
        except BaseException as exc:
            is_exception = True
            retval = exc
        else:
            is_exception = False

        try:
            queues.put(queue_id, (retval, is_exception), FMT_UNPICKLED, UNBOUND)
        except interpreters.NotShareableError:
            retval = dumps(retval, HIGHEST_PROTOCOL)
            queues.put(queue_id, (retval, is_exception), FMT_PICKLED, UNBOUND)
        z<string>Úexecr   ÚfloatÚ	last_usedFÚboolÚ_initializedÚintÚ_interpreter_idÚ	_queue_idc                óú   — dd l }dd l}|j                  «       | _        |j                  dt        t
        «      | _        d| _        |j                  | j                  | j                  t        t        t
        dœ«       y )Nr   r   T)Úqueue_idr   r   r   )
Ú_interpqueuesÚ_interpretersÚcreater'   r   r   r(   r%   Úset___main___attrsr   ©ÚselfÚqueuesÚinterpreterss      úR/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/anyio/to_interpreter.pyÚ
initializezWorker.initializeF   sa   € Û&Û,à+×2Ñ2Ó4ˆÔØŸ™ q¬-¼ÓAˆŒØ ˆÔØ×'Ñ'Ø× Ñ à ŸN™NÜ*Ü!.Ü"ñ	õ	
ó    c                óš   — dd l }dd l}| j                  r7|j                  | j                  «       |j                  | j
                  «       y y )Nr   )r+   r,   r%   Údestroyr'   r(   r/   s      r3   r7   zWorker.destroyW   s:   € Û&Û,à×ÒØ× Ñ  ×!5Ñ!5Ô6Ø�N‰N˜4Ÿ>™>Õ*ð r5   c                óÔ  — dd l }dd l}| j                  s| j                  «        t	        j
                  ||ft        j                  «      }|j                  | j                  |t        t        «       |j                  | j                  | j                  «      x}rt        |«      ‚|j                  | j                  «      d d \  \  }}}	|	t        k(  rt	        j                   |«      }||fS )Nr   r   )r+   r,   r%   r4   ÚpickleÚdumpsÚHIGHEST_PROTOCOLÚputr(   r   r   r!   r'   Ú	_run_funcr   ÚgetÚloads)
r0   ÚfuncÚargsr1   r2   ÚpayloadÚexc_infoÚresÚis_exceptionÚfmts
             r3   Ú_callzWorker._call_   sÀ   € ó
 	'Û,à× Ò Ø�O‰OÔä—,‘,  d˜|¬V×-DÑ-DÓEˆØ�
‰
�4—>‘> 7¬K¼ÔAð $×(Ñ(¨×)=Ñ)=¸t¿~¹~ÓNÐNˆ8ÐNÜ(¨Ó2Ð2à#)§:¡:¨d¯n©nÓ#=¸b¸qÐ#AÑ Ñˆˆl˜SØ”+ÒÜ—,‘,˜sÓ#ˆCà�LÐ Ð r5   c              ƒ  óv   K  — t        j                  | j                  |||¬«      ƒ d {  –—† \  }}|r|‚|S 7 Œ­w)N©Úlimiter)r   Úrun_syncrG   )r0   r@   rA   rJ   ÚresultrE   s         r3   ÚcallzWorker.callx   sF   è ø€ ô &/×%7Ñ%7Ø�J‰JØØØô	&
÷  
Ñˆ�ñ ØˆLàˆð 
ús   ‚'9©7ª9N)ÚreturnÚNone)r@   úCallable[..., T_Retval]rA   ú
tuple[Any]rN   ztuple[Any, bool])r@   rP   rA   rQ   rJ   r   rN   r   )Ú__name__Ú
__module__Ú__qualname__Úcompiler   r=   r#   Ú__annotations__r%   r4   r7   rG   rM   © r5   r3   r   r   %   s˜   … ÙÙð ó 	ð* 	Øó/€Ið4 €IˆuÓà€L�$ÓØÓØƒNó
ó"+ð!à%ð!ð ð!ð 
ó	!ð2à%ðð ðð !ð	ð
 
ôr5   c                óR   — | D ]  }|j                  «        Œ | j                  «        y )N)r7   Úclear)ÚworkersÚworkers     r3   Ú_stop_workersr\   Š   s&   € Øò ˆØ�‰Õðð ‡M�M…Or5   rI   c             ‡  ó,  K  — t         j                  dk  rt        d«      ‚|€
t        «       }	 t        j                  «       }|4 ƒd{  –—†  	 |j                  «       }ddd«      ƒd{  –—†  	 j                  | ||«      ƒ d{  –—† t!        «       }|rT||d   j"                  z
  t$        k  rn:t'        j(                  |j+                  «       j,                  |¬«      ƒ d{  –—†  |rŒTt!        «       |_        |j/                  |«       S # t        $ r= t        «       }t        j                  |«       t        j                  t        |«       Y �Œw xY w7 �Œ# t        $ r t        «       }Y �Œw xY w7 �Œ# 1 ƒd{  –—†7  sw Y   �ŒxY w7 �Œ7 Œª# t!        «       }|rU||d   j"                  z
  t$        k  rn;t'        j(                  |j+                  «       j,                  |¬«      ƒ d{  –—†7   |rŒUt!        «       _        |j/                  |«       w xY w­w)aF  
    Call the given function with the given arguments in a subinterpreter.

    If the ``cancellable`` option is enabled and the task waiting for its completion is
    cancelled, the call will still run its course but its return value (or any raised
    exception) will be ignored.

    .. warning:: This feature is **experimental**. The upstream interpreter API has not
        yet been finalized or thoroughly tested, so don't rely on this for anything
        mission critical.

    :param func: a callable
    :param args: positional arguments for the callable
    :param limiter: capacity limiter to use to limit the total amount of subinterpreters
        running (if omitted, the default limiter is used)
    :return: the result of the call
    :raises BrokenWorkerIntepreter: if there's an internal error in a subinterpreter

    )r   é   z,subinterpreters require at least Python 3.13Nr   rI   )ÚsysÚversion_infoÚRuntimeErrorÚ#current_default_interpreter_limiterÚ_idle_workersr>   ÚLookupErrorr   ÚsetÚatexitÚregisterr\   ÚpopÚ
IndexErrorr   rM   r   r#   ÚMAX_WORKER_IDLE_TIMEr   rK   Úpopleftr7   Úappend)r@   rJ   rA   Úidle_workersr[   Únows         r3   rK   rK   ‘   sÐ  è ø€ ô0 ×Ñ˜7Ò"ÜÐIÓJÐJà€Ü5Ó7ˆð5Ü$×(Ñ(Ó*ˆð ÷ ñ ð	Ø!×%Ñ%Ó'ˆF÷÷ ð$Ø—[‘[  t¨WÓ5×5ô ‹nˆÙØ�\ !‘_×.Ñ.Ñ.Ô2FÒFØä×$Ñ$ \×%9Ñ%9Ó%;×%CÑ%CÈWÔU×UÐUò	 ô (›>ˆÔØ×Ñ˜FÕ#øô/ ò 5Ü“wˆÜ×Ñ˜,Ô'Ü�‰œ |×4ð5úð
úô ò 	Ü“X‹Fð	úðù÷ ÷ ò úð 6ùð Vùô ‹nˆÙØ�\ !‘_×.Ñ.Ñ.Ô2FÒFØä×$Ñ$ \×%9Ñ%9Ó%;×%CÑ%CÈWÔU×UÑUò	 ô (›>ˆÔØ×Ñ˜FÕ#üsß   ‚+H®D
 ÁHÁEÁ	HÁE3ÁEÁHÁ)E0Á*HÁ/F ÂF	ÂF Â	AHÃ!FÃ"HÃ)!HÄ
AEÅHÅEÅHÅE-Å)E3Å,E-Å-E3Å0HÅ3FÅ9E<Å:FÆHÆ	F ÆHÆAHÇ'G*Ç(HÇ0!HÈHc                 óÂ   — 	 t         j                  «       S # t        $ r? t        t	        j
                  «       xs t        «      } t         j                  | «       | cY S w xY w)zÑ
    Return the capacity limiter that is used by default to limit the number of
    concurrently running subinterpreters.

    Defaults to the number of CPU cores.

    :return: a capacity limiter object

    )r   r>   rd   r   ÚosÚ	cpu_countr   re   rI   s    r3   rb   rb   Ë   sN   € ðÜ+×/Ñ/Ó1Ð1øÜò Ü!¤"§,¡,£.Ò"EÔ4EÓFˆÜ$×(Ñ(¨Ô1ØŠðús   ‚ –AAÁA)rZ   zdeque[Worker]rN   rO   )r@   z&Callable[[Unpack[PosArgsT]], T_Retval]rA   zUnpack[PosArgsT]rJ   zCapacityLimiter | NonerN   r   )rN   r   )+Ú
__future__r   rf   rp   r9   r_   Úcollectionsr   Úcollections.abcr   Útextwrapr   Útypingr   r   r	   Ú r   r   Ú_core._exceptionsr   Ú_core._synchronizationr   Úlowlevelr   r`   r   r   Útyping_extensionsr   rV   r   r   r   rj   r   r   rc   r   r   r\   rK   rb   rW   r5   r3   ú<module>r|      sü   ðÞ "ã Û 	Û Û 
Ý Ý $Ý ß &Ñ &ç %Ý 5Ý 3Ý à×Ñ�wÒß+Ð+ç6à€ˆÓ Ø€ˆuÓ Ø€ˆUÓ ØÐ �5Ó àð ñ �:Ó€Ù˜
Ó#€à'��u˜X‘Ñ'Ð(<Ó=€Ø6˜v oÑ6Ð7UÓVÐ ÷bñ bóJð '+ñ7$Ø
0ð7$àð7$ð $ð7$ð ó	7$ôtr5   