§
    #ˆtj¼  ã                  ó‚  — U d dl mZ d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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j        dk    r	d dl
mZmZ nd dlmZmZ ej        dk    rd dlmZmZ d9d„Z G d„ d¦  «        Znbej        dk    rJd dl Z d dl!Z!dZ"de#d<   d Z$de#d<   dZ%de#d<   e%e"fZ&de#d<   e$e"fZ'de#d <    e(d!d"d#¦  «        Z) G d$„ d¦  «        Zn G d%„ d¦  «        Zd&Z*de#d'<   d(Z+ ed)¦  «        Z, ed*¦  «        Z- eee                  d+¦  «        Z. ee         d,¦  «        Z/d:d0„Z0dd1œd;d6„Z1d<d8„Z2dS )=é    )Úannotations)Úrun_syncÚ#current_default_interpreter_limiterN)Údeque)ÚCallable)ÚAnyÚFinalÚTypeVaré   )Úcurrent_timeÚ	to_thread)ÚBrokenWorkerInterpreter)ÚCapacityLimiter)ÚRunVar)é   é   )ÚTypeVarTupleÚUnpack)r   é   )ÚExecutionFailedÚcreateÚfuncúCallable[..., Any]Úargsútuple[Any, ...]Úreturnútuple[Any, bool]c                óL   — 	  | |Ž }|dfS # t           $ r}|dfcY d }~S d }~ww xY w)NFT)ÚBaseException)r   r   ÚretvalÚexcs       úR/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/anyio/to_interpreter.pyÚ_interp_callr#      sX   € ð	!Ø�T˜4�[ˆFð ˜5�=Ð øõ ð 	ð 	ð 	Ø˜�9ÐÐÐÐÐÐøøøøð	øøøs   ‚ ‹
#•˜#ž#c                  ó6   — e Zd ZU dZded<   dd„Zdd„Zdd„ZdS )Ú_Workerr   ÚfloatÚ	last_usedr   ÚNonec                ó,   — t          ¦   «         | _        d S ©N)r   Ú_interpreter©Úselfs    r"   Ú__init__z_Worker.__init__)   s   € Ý &¡¤ˆDÔÐÐó    c                ó8   — | j                              ¦   «          d S r*   )r+   Úcloser,   s    r"   Údestroyz_Worker.destroy,   s   € ØÔ×#Ò#Ñ%Ô%Ð%Ð%Ð%r/   r   úCallable[..., T_Retval]r   r   ÚT_Retvalc                ó¨   — 	 | j                              t          ||¦  «        \  }}n'# t          $ r}t	          |j        ¦  «        |‚d }~ww xY w|r|‚|S r*   )r+   Úcallr#   r   r   Úexcinfo)r-   r   r   ÚresÚis_exceptionr!   s         r"   r6   z_Worker.call/   sr   € ð
DØ$(Ô$5×$:Ò$:½<ÈÈtÑ$TÔ$TÑ!��\�\øÝ"ð Dð Dð DÝ-¨c¬kÑ:Ô:ÀÐCøøøøðDøøøð ð Ø�	àˆJs   ‚$' §
A±AÁAN©r   r(   ©r   r3   r   r   r   r4   ©Ú__name__Ú
__module__Ú__qualname__r'   Ú__annotations__r.   r2   r6   © r/   r"   r%   r%   &   sc   € € € € € € Øˆ	ÐÐÐÑð	)ð 	)ð 	)ð 	)ð	&ð 	&ð 	&ð 	&ð	ð 	ð 	ð 	ð 	ð 	r/   r%   )r   é   é   r	   ÚUNBOUNDÚFMT_UNPICKLEDÚFMT_PICKLEDÚQUEUE_PICKLE_ARGSÚQUEUE_UNPICKLE_ARGSa_  
import _interpqueues
from _interpreters import NotShareableError
from pickle import loads, dumps, HIGHEST_PROTOCOL

QUEUE_PICKLE_ARGS = (1, 2)
QUEUE_UNPICKLE_ARGS = (0, 2)

item = _interpqueues.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:
    _interpqueues.put(queue_id, (retval, is_exception), *QUEUE_UNPICKLE_ARGS)
except NotShareableError:
    retval = dumps(retval, HIGHEST_PROTOCOL)
    _interpqueues.put(queue_id, (retval, is_exception), *QUEUE_PICKLE_ARGS)
    z<string>Úexecc                  ó6   — e Zd ZU dZded<   dd„Zdd„Zdd„ZdS )r%   r   r&   r'   r   r(   c                ó°   — t          j        ¦   «         | _        t          j        dgt          ¢R Ž | _        t          j        | j        d| j        i¦  «         d S )Nr   Úqueue_id)Ú_interpretersr   Ú_interpreter_idÚ_interpqueuesrH   Ú	_queue_idÚset___main___attrsr,   s    r"   r.   z_Worker.__init__g   s\   € Ý#0Ô#7Ñ#9Ô#9ˆDÔ Ý*Ô1°!ÐJÕ6IÐJÐJÐJˆDŒNÝÔ,ØÔ$ z°4´>Ð&Bñô ð ð ð r/   c                ój   — t          j        | j        ¦  «         t          j        | j        ¦  «         d S r*   )rO   r2   rP   rM   rN   r,   s    r"   r2   z_Worker.destroyn   s/   € ÝÔ! $¤.Ñ1Ô1Ð1ÝÔ! $Ô"6Ñ7Ô7Ð7Ð7Ð7r/   r   r3   r   r   r4   c                ó|  — dd l }|                     ||f|j        ¦  «        }t          j        | j        |gt          ¢R Ž  t          j        | j	        t          ¦  «        }|rt          |¦  «        ‚t          j        | j        ¦  «        }|d d…         \  \  }}}|t          k    r|                     |¦  «        }|r|‚|S )Nr   rC   )ÚpickleÚdumpsÚHIGHEST_PROTOCOLrO   ÚputrP   rG   rM   rI   rN   Ú	_run_funcr   ÚgetrF   Úloads)	r-   r   r   rT   ÚitemÚexc_infor8   r9   Úfmts	            r"   r6   z_Worker.callr   sÇ   € ð
 ˆMˆMˆMà—<’<  t ¨fÔ.EÑFÔFˆDÝÔ˜dœn¨dÐGÕ5FÐGÐGÐGÐGÝ$Ô)¨$Ô*>Å	ÑJÔJˆHØð 8Ý-¨hÑ7Ô7Ð7åÔ# D¤NÑ3Ô3ˆCØ'*¨2¨A¨2¤wÑ$ÑˆS�, Ø•kÒ!Ð!Ø—l’l 3Ñ'Ô'�àð Ø�	àˆJr/   Nr:   r;   r<   rA   r/   r"   r%   r%   d   sc   € € € € € € Øˆ	ÐÐÐÑð	ð 	ð 	ð 	ð	8ð 	8ð 	8ð 	8ð	ð 	ð 	ð 	ð 	ð 	r/   c                  ó6   — e Zd ZU dZded<   dd„Zdd„Zdd„ZdS )r%   r   r&   r'   r   r(   c                ó    — t          d¦  «        ‚)Nz,subinterpreters require at least Python 3.13)ÚRuntimeErrorr,   s    r"   r.   z_Worker.__init__�   s   € ÝÐMÑNÔNÐNr/   r   r3   r   r   r4   c                ó   — t           ‚r*   )ÚNotImplementedError)r-   r   r   s      r"   r6   z_Worker.call�   s
   € õ
 &Ð%r/   c                ó   — d S r*   rA   r,   s    r"   r2   z_Worker.destroy—   s   € ØˆDr/   Nr:   r;   )r=   r>   r?   r'   r@   r.   r6   r2   rA   r/   r"   r%   r%   Š   sg   € € € € € € Øˆ	ÐÐÐÑð	Oð 	Oð 	Oð 	Oð	&ð 	&ð 	&ð 	&ð	ð 	ð 	ð 	ð 	ð 	r/   é   ÚDEFAULT_CPU_COUNTé   r4   ÚPosArgsTÚ_available_workersÚ_default_interpreter_limiterÚworkersúdeque[_Worker]r(   c                ó`   — | D ]}|                      ¦   «          Œ|                      ¦   «          d S r*   )r2   Úclear)rj   Úworkers     r"   Ú_stop_workersro   §   s5   € Øð ð ˆØ�ŠÑÔÐÐà‡M‚M�O„O€O€O€Or/   ©Úlimiterú&Callable[[Unpack[PosArgsT]], T_Retval]úUnpack[PosArgsT]rq   úCapacityLimiter | Nonec             ‡  ó0  K  — |€t          ¦   «         }	 t                               ¦   «         }nR# t          $ rE t	          ¦   «         }t                               |¦  «         t          j        t          |¦  «         Y nw xY w|4 ƒd{V —† 	 | 	                    ¦   «         }n# t          $ r t          ¦   «         }Y nw xY wddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   	 t          j        |j        | ||¬¦  «        ƒ d{V —†	 t          ¦   «         }|rO||d         j        z
  t"          k    rn5t          j        |                     ¦   «         j        |¬¦  «        ƒ d{V —† |°Ot          ¦   «         |_        |                     |¦  «         S # t          ¦   «         }|rO||d         j        z
  t"          k    rn5t          j        |                     ¦   «         j        |¬¦  «        ƒ d{V —† |°Ot          ¦   «         |_        |                     |¦  «         w xY w)aç  
    Call the given function with the given arguments in a subinterpreter.

    .. warning:: On Python 3.13, the :mod:`concurrent.interpreters` module was not yet
        available, so the code path for that Python version relies on an undocumented,
        private API. As such, it is recommended to not rely on this function for anything
        mission-critical on Python 3.13.

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

    Nrp   r   )r   Ú_idle_workersrY   ÚLookupErrorr   ÚsetÚatexitÚregisterro   ÚpopÚ
IndexErrorr%   r   r   r6   r   r'   ÚMAX_WORKER_IDLE_TIMEÚpopleftr2   Úappend)r   rq   r   Úidle_workersrn   Únows         r"   r   r   ®   sò  è è € ð* €Ý5Ñ7Ô7ˆð5Ý$×(Ò(Ñ*Ô*ˆˆøÝð 5ð 5ð 5Ý‘w”wˆÝ×Ò˜,Ñ'Ô'Ð'ÝŒ� |Ñ4Ô4Ð4Ð4Ð4ð5øøøð
 ð ð ð ð ð ð ð ð ð	Ø!×%Ò%Ñ'Ô'ˆFˆFøÝð 	ð 	ð 	Ý‘Y”YˆFˆFˆFð	øøøðð ð ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð øøøð ð ð ð ð$ÝÔ'ØŒKØØØð	
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
õ ‰nŒnˆØð 	VØ�\ !”_Ô.Ñ.Õ2FÒFÐFØåÔ$ \×%9Ò%9Ñ%;Ô%;Ô%CÈWÐUÑUÔUÐUÐUÐUÐUÐUÐUÐUð	 ð 	Võ (™>œ>ˆÔØ×Ò˜FÑ#Ô#Ð#Ð#øõ ‰nŒnˆØð 	VØ�\ !”_Ô.Ñ.Õ2FÒFÐFØåÔ$ \×%9Ò%9Ñ%;Ô%;Ô%CÈWÐUÑUÔUÐUÐUÐUÐUÐUÐUÐUð	 ð 	Võ (™>œ>ˆÔØ×Ò˜FÑ#Ô#Ð#Ð#øøøsS   ”. ®AA=Á<A=ÂCÂ
BÂCÂB:Â7CÂ9B:Â:CÃ
CÃCÃ!"F ÆB	Hr   c                 óÜ   — 	 t                                ¦   «         S # t          $ rF t          t	          j        ¦   «         pt          ¦  «        } t                                | ¦  «         | cY S w xY w)zÉ
    Return the capacity limiter used by default to limit the number of concurrently
    running subinterpreters.

    Defaults to the number of CPU cores.

    :return: a capacity limiter object

    )ri   rY   rw   r   ÚosÚ	cpu_countre   rx   rp   s    r"   r   r   ç   sj   € ðÝ+×/Ò/Ñ1Ô1Ð1øÝð ð ð Ý!¥"¤,¡.¤.Ð"EÕ4EÑFÔFˆÝ$×(Ò(¨Ñ1Ô1Ð1Øˆˆˆðøøøs   ‚ ›AA+Á*A+)r   r   r   r   r   r   )rj   rk   r   r(   )r   rr   r   rs   rq   rt   r   r4   )r   r   )3Ú
__future__r   Ú__all__ry   rƒ   ÚsysÚcollectionsr   Úcollections.abcr   Útypingr   r	   r
   Ú r   r   Ú_core._exceptionsr   Ú_core._synchronizationr   Úlowlevelr   Úversion_infor   r   Útyping_extensionsÚconcurrent.interpretersr   r   r#   r%   rO   rM   rD   r@   rE   rF   rG   rH   ÚcompilerX   re   r}   r4   rg   rv   ri   ro   r   r   rA   r/   r"   ú<module>r“      s4  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "ð€ð
 €€€Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð àÔ�wÒÐØ+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+à6Ð6Ð6Ð6Ð6Ð6Ð6Ð6àÔ�wÒÐØ?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ð!ð !ð !ð !ðð ð ð ð ñ ô ð ð ð. 	Ô˜Ò Ð ØÐÐÐØÐÐÐà€GÐÐÐÑØ€MÐÐÐÑØ€KÐÐÐÑØ +¨WÐ5ÐÐ5Ð5Ð5Ñ5Ø"/°Ð!9ÐÐ9Ð9Ð9Ñ9à�ð	ð0 	Øñ5ô €Ið:#ð #ð #ð #ð #ñ #ô #ð #ð #ðLð ð ð ð ñ ô ð ð" Ð Ð Ð Ð Ñ àð ð ˆ7�:ÑÔ€Øˆ<˜
Ñ#Ô#€à&��u˜W”~Ô&Ð';Ñ<Ô<€Ø6˜v oÔ6Ð7UÑVÔVÐ ðð ð ð ð '+ð6$ð 6$ð 6$ð 6$ð 6$ð 6$ðrð ð ð ð ð r/   