
    <e                         	 d dl Z d dlZd dlmZmZmZmZ g dZdddZd Z	d Z
d	 Z G d
 d          Zd Zd Z G d d          Z e            Z G d de          Z G d de          ZdS )    N)ChannelErrorChannelNotFoundErrorChannelEmptyErroris_shareable)Interpreterget_currentget_maincreatelist_allSendChannelRecvChannelcreate_channellist_all_channelsr   r   r   r   Tisolatedc                 P    	 t          j        |           }t          ||           S )Nr   )_interpretersr
   r   )r   ids     0/usr/lib/python3.11/test/support/interpreters.pyr
   r
      s+    1		x	0	0	0BrH----    c                  >    	 d t          j                    D             S )Nc                 ,    g | ]}t          |          S  )r   ).0r   s     r   
<listcomp>zlist_all.<locals>.<listcomp>   s    ???KOO???r   )r   r   r   r   r   r   r      s"    +??m&<&>&>????r   c                  H    	 t          j                    } t          |           S N)r   r   r   r   s    r   r   r   !   s    3		"	$	$Br??r   c                  H    	 t          j                    } t          |           S r   )r   r	   r   r   s    r   r	   r	   '   s    &			!	!Br??r   c                   r    e Zd Z	 dddZd Zd Zd Zed             Zed             Z	d	 Z
d
 ZdddZdS )r   Nr   c                    t          |t          t          j        f          st	          d|          || _        || _        d S Nzid must be an int, got )
isinstanceintr   InterpreterID	TypeError_id	_isolated)selfr   r   s      r   __init__zInterpreter.__init__0   sE    "sM$?@AA 	><b<<===!r   c                     t          t          | j                  | j                  }d |                                D             }t          |           j         dd                    |           dS )N)r   r   c              3   *   K   | ]\  }}| d |V  dS )=Nr   )r   kvs      r   	<genexpr>z'Interpreter.__repr__.<locals>.<genexpr>8   s0      8841aQ,,,,888888r   (z, ))dictr$   r'   r(   itemstype__name__join)r)   datakwargss      r   __repr__zInterpreter.__repr__6   se    s48}}t~>>>884::<<888t**%<<		&(9(9<<<<r   c                 *    t          | j                  S r   hashr'   r)   s    r   __hash__zInterpreter.__hash__;       DH~~r   c                 Z    t          |t                    st          S |j        | j        k    S r   )r#   r   NotImplementedr'   r)   others     r   __eq__zInterpreter.__eq__>   s)    %-- 	)!!9((r   c                     | j         S r   r'   r>   s    r   r   zInterpreter.idD   	    xr   c                 Z    | j         t          j        | j                  | _         | j         S r   )r(   r   is_isolatedr'   r>   s    r   r   zInterpreter.isolatedH   s(    >! +6tx@@DN~r   c                 6    	 t          j        | j                  S r   )r   
is_runningr'   r>   s    r   rL   zInterpreter.is_runningP   s    J'111r   c                 6    	 t          j        | j                  S r   )r   destroyr'   r>   s    r   closezInterpreter.closeT   s    	
 $TX...r   )channelsc               >    	 t          j        | j        ||           d S r   )r   
run_stringr'   )r)   src_strrP   s      r   runzInterpreter.run\   s&    	 	 7H=====r   )r6   
__module____qualname__r*   r:   r?   rE   propertyr   r   rL   rO   rT   r   r   r   r   r   -   s        &'+ " " " " "= = =
  ) ) )   X   X2 2 2/ / / +/ > > > > > > >r   r   c                  n    	 t          j                    } t          |           t          |           }}||fS r   )r   channel_creater   r   )cidrecvsends      r   r   r   d   s:     
&
(
(CS!!;s#3#3$D:r   c                  >    	 d t          j                    D             S )Nc                 J    g | ] }t          |          t          |          f!S r   )r   r   )r   rZ   s     r   r   z%list_all_channels.<locals>.<listcomp>p   s=     9 9 9 {3//0 9 9 9r   )r   channel_list_allr   r   r   r   r   n   s/    >9 9$5779 9 9 9r   c                   >    e Zd Z	 d Zd Zd Zd Zed             ZdS )_ChannelEndc                 z    t          |t          t          j        f          st	          d|          || _        d S r"   )r#   r$   r   	ChannelIDr&   r'   )r)   r   s     r   r*   z_ChannelEnd.__init__w   s>    "sM$;<== 	><b<<===r   c                 Z    t          |           j         dt          | j                   dS )Nz(id=r2   )r5   r6   r$   r'   r>   s    r   r:   z_ChannelEnd.__repr__|   s*    t**%;;3tx==;;;;r   c                 *    t          | j                  S r   r<   r>   s    r   r?   z_ChannelEnd.__hash__   r@   r   c                     t          | t                    rt          |t                    st          S nt          |t                    st          S |j        | j        k    S r   )r#   r   rB   r   r'   rC   s     r   rE   z_ChannelEnd.__eq__   sX    dK(( 	"e[11 &%%&E;// 	"!!yDH$$r   c                     | j         S r   rG   r>   s    r   r   z_ChannelEnd.id   rH   r   N)	r6   rU   rV   r*   r:   r?   rE   rW   r   r   r   r   ra   ra   t   sn        9  
< < <  % % %   X  r   ra   c                   8    e Zd Z	  e            dddZefdZdS )r   g{Gz?)	_sentinel_delayc                    	 t          j        | j        |          }||u r2t          j        |           t          j        | j        |          }||u 2|S r   )r   channel_recvr'   timesleep)r)   ri   rj   objs       r   r[   zRecvChannel.recv   s`    	
 (9==YJv,TXyAAC Y 
r   c                 |    	 |t           u rt          j        | j                  S t          j        | j        |          S r   )_NOT_SETr   rl   r'   )r)   defaults     r   recv_nowaitzRecvChannel.recv_nowait   s<    	 h -dh777 -dh@@@r   N)r6   rU   rV   objectr[   rq   rs   r   r   r   r   r      sZ        ; & 
 
 
 
 
 #+ 
A 
A 
A 
A 
A 
Ar   r   c                       e Zd Z	 d Zd ZdS )r   c                 d    	 t          j        | j        |           t          j        d           d S )N   )r   channel_sendr'   rm   rn   r)   ro   s     r   r\   zSendChannel.send   s1    	 	"48S111 	
1r   c                 8    	 t          j        | j        |          S r   )r   rx   r'   ry   s     r   send_nowaitzSendChannel.send_nowait   s    	 )$(C888r   N)r6   rU   rV   r\   r{   r   r   r   r   r      s5        9	 	 		9 	9 	9 	9 	9r   r   )rm   _xxsubinterpretersr   r   r   r   r   __all__r
   r   r   r	   r   r   r   ra   rt   rq   r   r   r   r   r   <module>r~      s   (  * * * *               . . . . .@ @ @
    4> 4> 4> 4> 4> 4> 4> 4>n  9 9 9       6 688A A A A A+ A A A89 9 9 9 9+ 9 9 9 9 9r   