
    EjQ&                       U d dl mZ d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 d dlmZmZ dd	lmZmZmZ dd
lmZ ddlmZ ddlmZ ddlmZmZ ddlmZm Z m!Z! ddl"m#Z#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) dZ+ ed          Z, e(d          Z- e#d          Z.de/d<    e#d          Z0de/d<    e#d          Z1de/d<   dddd-d'Z2d.d)Z3d/d+Z4e5d,k    r e4             dS dS )0    )annotations)current_default_process_limiterprocess_workerrun_syncN)deque)Callable)
ModuleType)TypeVarcast   )current_timeget_async_backendget_cancelled_exc_class)BrokenWorkerProcess)open_process)CapacityLimiter)CancelScope
fail_after)ByteReceiveStreamByteSendStreamProcess)RunVarcheckpoint_if_cancelled)BufferedByteReceiveStream)      )TypeVarTupleUnpacki,  T_RetvalPosArgsT_process_pool_workerszRunVar[set[Process]]_process_pool_idle_workersz$RunVar[deque[tuple[Process, float]]]_default_process_limiterzRunVar[CapacityLimiter]F)cancellablelimiterfunc&Callable[[Unpack[PosArgsT]], T_Retval]argsUnpack[PosArgsT]r$   boolr%   CapacityLimiter | Nonereturnc          	     	  K   dfd}t                       d{V  t          j        d| |ft          j                  }	 t                                          t                                          }n# t          $ rt t                      t                      }t                                         t                              |           t                                                     Y nw xY w|pt                      4 d{V  |rF|                                \  }j        t          t           j                  t%          t          t&          j                            t+                      }g }	|rr||d	         d
         z
  t,          k     rnW|                                \  }
}|
                                                     |
           |	                    |
           |rt7          d          5  |	D ]}|                                 d{V  	 ddd           n# 1 swxY w Y   n                               |Ft:          j        ddt>          g}tA          |tB          j"        tB          j"                   d{V 	 t          t           j                  t%          t          t&          j                            tG          d          5  $                    d           d{V }ddd           n# 1 swxY w Y   |dk    rtK          d|          tM          t:          j'        d         dd          }t          j        dt:          j(        |ft          j                  } ||           d{V  nN# tJ          tS                      f$ r  tT          $ r)}                                 tK          d          |d}~ww xY w+                               t7          |           5  	 t          tX           ||           d{V           v r#|                    t+                      f           cddd           cddd          d{V  S # v r$|                    t+                      f           w w xY w# 1 swxY w Y   	 ddd          d{V  dS # 1 d{V swxY w Y   dS )a'  
    Call the given function with the given arguments in a worker process.

    If the ``cancellable`` option is enabled and the task waiting for its completion is
    cancelled, the worker process running it will be abruptly terminated using SIGKILL
    (or ``terminateProcess()`` on Windows).

    :param func: a callable
    :param args: positional arguments for the callable
    :param cancellable: ``True`` to allow cancellation of the operation while it's
        running
    :param limiter: capacity limiter to use to limit the total amount of processes
        running (if omitted, the default limiter is used)
    :raises NoEventLoopError: if no supported asynchronous event loop is running in the
        current thread
    :return: an awaitable that yields the return value of the function.

    pickled_cmdbytesr,   objectc                  K   	 	                     |            d {V                      dd           d {V }|                    d          \  }}|dvrt          d|                              t          |                     d {V }n# t          $ r}
                               	                                  t          d          5  
                                 d {V  d d d            n# 1 swxY w Y   n# t          $ r Y nw xY wt          |t                                r t          |d }~ww xY wt          j        |          }|dk    rt          |t                    sJ ||S )	N   
2       )   RETURN	   EXCEPTION-Worker process returned unexpected response: Tshieldr6   )sendreceive_untilsplitRuntimeErrorreceive_exactlyintBaseExceptiondiscardkillr   acloseProcessLookupError
isinstancer   r   pickleloads)r.   responsestatuslengthpickled_responseexcretvalbufferedprocessstdinworkerss          J/wd/license_services/venv/lib/python3.11/site-packages/anyio/to_process.pysend_raw_commandz"run_sync.<locals>.send_raw_commandF   s     	3**[)))))))))%33E2>>>>>>>>H%^^D11NFF666"PHPP   &.%=%=c&kk%J%JJJJJJJ 	3 	3 	3OOG$$$ --- + +!..*********+ + + + + + + + + + + + + + +%    #68899 3)s2	3 .//\!!fm44444LMs`   BB 
ED?3$D
C>2D
>D	D
D	D
	D?

DD?D(D??ENrun)protocolr   r   Tr8   z-uz-m)rP   stdout         READY
r7   __main____file__initz*Error during worker process initialization)r.   r/   r,   r0   )-r   rF   dumpsHIGHEST_PROTOCOLr!   getr"   LookupErrorsetr   r   #setup_process_pool_exit_at_shutdownr   pop
returncoder   r   rP   r   r   rV   r   WORKER_MAX_IDLE_TIMEpopleftrB   removeappendr   rC   sys
executable__name__r   
subprocessPIPEr   receiver   getattrmodulespathr   r@   addr   )r&   r$   r%   r(   rS   requestidle_workers
idle_sincenowkilled_processesprocess_to_killkilled_processcommandmessagemain_module_pathpickledrL   rN   rO   rP   rQ   s                    @@@@rR   r   r   -   sq     2        B "
#
########lE4.9PQQQGI'++--15577 I I I%%ww!!'***"&&|444??HHHHHI ;9;; GC GC GC GC GC GC GC GC  <	!"."2"2"4"4GZ!)^W];;4*GN;;  #nn24 " =\!_Q//2FFF2>2F2F2H2H/OZ#((***NN?333$++O<<< # = !--- 6 6*: 6 6,33555555555566 6 6 6 6 6 6 6 6 6 6 6 6 6 6 NN7###7  <	!: ~tT8<G(zz        G^W];;4*GN;;   ^^ 8 8$,$4$4Q$7$7777777G8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 j((-SSS   $+3;z+BJPT#U#U  ,SX'78#4   '&w//////////')@)B)BC       )@  KK   K000 	C 	CCH,<,<W,E,E&E&E&E&E&E&EFFg%% '',..(ABBB	C 	C 	C 	C 	C 	C 	CEGC GC GC GC GC GC GC GC GC GC GC GC GC GCL g%% '',..(ABBBB &		C 	C 	C 	C 	C 	C 	C 	C 	CEGC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GC GCs   2A; ;A;C98C9C8S
 H7+S7H;	;S>H;	?ASAN.L
NL	NL	A:NS"O$;$OO$$)SR%#Q82'R%S8*R""R%%R)	)S,R)	-S
SSr   c                     	 t                                           S # t          $ rA t          t	          j                    pd          } t                               |            | cY S w xY w)z
    Return the capacity limiter that is used by default to limit the number of worker
    processes.

    :return: a capacity limiter object

       )r#   r_   r`   r   os	cpu_countra   )r%   s    rR   r   r      si    '++---   !",.."5A66 $$W---s    AA&%A&Nonec                    t           j        } t           j        }t          t          j                  t           _        t          t          j        d          t           _        |j                            d           	 d x}}	 t          j	        | j                  ^}}|dk    r%|\  }}	  || }n# t          $ r}|}Y d }~nd }~ww xY w|dk    r|\  t           _        }t           j        d= |rt          j                            |          rx	 t          d          }	t          j        |d          }
|	j                            |
           |	xt           j        d<   t           j        d<   n?# t          $ r}|}Y d }~n.d }~ww xY wn%# t&          $ r Y d S t          $ r}|}Y d }~nd }~ww xY w	 |"d	}t          j        |t          j                  }n!d
}t          j        |t          j                  }n:# t          $ r-}|}d	}t          j        |t          j                  }Y d }~nd }~ww xY w|j                            d|t-          |          fz             |j                            |           t/          |t0                    r|)NwrY   TrT   r\   rZ   __mp_main__)run_namer6   r5   s   %s %d
)ri   rP   rV   openr   devnullbufferwriterF   loadr@   rq   rp   isfiler	   runpyrun_path__dict__updateEOFErrorr]   r^   lenrE   
SystemExit)rP   rV   rM   	exceptionrz   r(   r&   rL   r|   mainmain_contentrI   r}   s                rR   r   r      s    IEZFRZ  CIbj#&&CJ
M
###0!!	(#[66NGd %!
d$!T4[FF$ $ $ $ #IIIIII$F""-1**K
+# (7G(H(H (()-88',~,}( ( ( ,,\:::OSSJ/#+m2L2L( ( ( ($'						(3  	 	 	FF 	 	 	IIIIII	2
	A$% ,y&2IJJ" ,vv/FGG 	A 	A 	AI!Fl3(?@@GGGGGG	A
 	J&#g,,)??@@@G$$$ i,, 	Oa0sh    F 'B- -
C7B>>C
AE( (
E>2E99E>
F$	F$FF$(AG. .
H%8#H  H%rZ   )
r&   r'   r(   r)   r$   r*   r%   r+   r,   r   )r,   r   )r,   r   )6
__future__r   __all__r   rF   r   rl   ri   collectionsr   collections.abcr   typesr	   typingr
   r   _core._eventloopr   r   r   _core._exceptionsr   _core._subprocessesr   _core._synchronizationr   _core._tasksr   r   abcr   r   r   lowlevelr   r   streams.bufferedr   version_infor   r   typing_extensionsre   r   r    r!   __annotations__r"   r#   r   r   r   rk        rR   <module>r      s   " " " " " " " 
			       



       $ $ $ $ $ $                       V V V V V V V V V V 2 2 2 2 2 2 - - - - - - 3 3 3 3 3 3 1 1 1 1 1 1 1 1 ; ; ; ; ; ; ; ; ; ; 5 5 5 5 5 5 5 5 7 7 7 7 7 7w+++++++++66666666 7:<
##.4f5L.M.M  M M M MCI6 D D      5;F;U4V4V  V V V V &*	OC OC OC OC OC OCd    9 9 9 9x zN r   