
    z%i                         	 d dl Z d dlZd dlZd dlmZmZ d dl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y)    N)is_shareableRunFailedError)ChannelErrorChannelNotFoundErrorChannelEmptyError)Interpreterget_currentget_maincreatelist_allSendChannelRecvChannelcreate_channellist_all_channelsr   r   r   r   Tisolatedc                 J    	 t        j                  |       }t        ||       S )Nr   )_interpretersr   r   )r   ids     M/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/support/interpreters.pyr   r      s"    1			x	0BrH--    c                  d    	 t        j                         D  cg c]  } t        |        c} S c c} w N)r   r   r   r   s    r   r   r      s&    +&3&<&<&>?KO???s   -c                  B    	 t        j                         } t        |       S r   )r   r	   r   r   s    r   r	   r	   "   s    3		"	"	$Br?r   c                  B    	 t        j                         } t        |       S r   )r   r
   r   r   s    r   r
   r
   (   s    &				!Br?r   c                   d    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y)r   Nr   c                |    t        |t        t        j                  f      st	        d|      || _        || _        y Nzid must be an int, got )
isinstanceintr   InterpreterID	TypeError_id	_isolated)selfr   r   s      r   __init__zInterpreter.__init__1   s8    "sM$?$?@A5bV<==!r   c                     t        t        | j                        | j                        }d |j	                         D        }t        |       j                   ddj                  |       dS )N)r   r   c              3   0   K   | ]  \  }}| d |  yw)=N ).0kvs      r   	<genexpr>z'Interpreter.__repr__.<locals>.<genexpr>9   s     841aQCq,8s   (z, ))dictr!   r$   r%   itemstype__name__join)r&   datakwargss      r   __repr__zInterpreter.__repr__7   sR    s488}t~~>84::<8t*%%&a		&(9':!<<r   c                 ,    t        | j                        S r   hashr$   r&   s    r   __hash__zInterpreter.__hash__<       DHH~r   c                 `    t        |t              st        S |j                  | j                  k(  S r   )r    r   NotImplementedr$   r&   others     r   __eq__zInterpreter.__eq__?   s%    %-!!99((r   c                     | j                   S r   r$   r=   s    r   r   zInterpreter.idE       xxr   c                 z    | j                   $t        j                  | j                        | _         | j                   S r   )r%   r   is_isolatedr$   r=   s    r   r   zInterpreter.isolatedI   s.    >>! +66txx@DN~~r   c                 B    	 t        j                  | j                        S r   )r   
is_runningr$   r=   s    r   rK   zInterpreter.is_runningQ   s    J''11r   c                 B    	 t        j                  | j                        S r   )r   destroyr$   r=   s    r   closezInterpreter.closeU   s    	
 $$TXX..r   )channelsc               H    	 t        j                  | j                  ||       y r   )r   
run_stringr$   )r&   src_strrO   s      r   runzInterpreter.run]   s    	 	  7H=r   )r5   
__module____qualname__r'   r9   r>   rD   propertyr   r   rK   rN   rS   r+   r   r   r   r   .   sX    &'+ "=
)    2/ +/ >r   r   c                  `    	 t        j                         } t        |       t        |       }}||fS r   )	_channelsr   r   r   )cidrecvsends      r   r   r   e   s4     


CS!;s#3$D:r   c                  z    	 t        j                         D  cg c]  } t        |       t        |       f c} S c c} w r   )rX   r   r   r   )rY   s    r   r   r   o   s=    > ))+- {3/0 - - -s   8c                   6    e Zd Z	 d Zd Zd Zd Zed        Zy)_ChannelEndc                 n    t        |t        t        j                  f      st	        d|      || _        y r   )r    r!   rX   	ChannelIDr#   r$   )r&   r   s     r   r'   z_ChannelEnd.__init__x   s1    "sI$7$7895bV<==r   c                 ^    t        |       j                   dt        | j                         dS )Nz(id=r1   )r4   r5   r!   r$   r=   s    r   r9   z_ChannelEnd.__repr__}   s(    t*%%&d3txx=/;;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 t        |t              st        S |j                  | j                  k(  S r   )r    r   rA   r   r$   rB   s     r   rD   z_ChannelEnd.__eq__   s?    dK(e[1%%E;/!!yyDHH$$r   c                     | j                   S r   rF   r=   s    r   r   z_ChannelEnd.id   rG   r   N)	r5   rT   rU   r'   r9   r>   rD   rV   r   r+   r   r   r^   r^   u   s-    9
<%  r   r^   c                   0    e Zd Z	  e       dddZefdZy)r   g{Gz?)	_sentinel_delayc                    	 t        j                  | j                  |      }||u r:t        j                  |       t        j                  | j                  |      }||u r:|S r   )rX   rZ   r$   timesleep)r&   rf   rg   objs       r   rZ   zRecvChannel.recv   sV    	
 nnTXXy1YJJv..95C Y 
r   c                     	 |t         u rt        j                  | j                        S t        j                  | j                  |      S r   )_NOT_SETrX   rZ   r$   )r&   defaults     r   recv_nowaitzRecvChannel.recv_nowait   s9    	 h>>$((++>>$((G44r   N)r5   rT   rU   objectrZ   rm   ro   r+   r   r   r   r      s    ; & 
 #+ 
5r   r   c                       e Zd Z	 d Zd Zy)r   c                 p    	 t        j                  | j                  |       t        j                  d       y )N   )rX   r[   r$   ri   rj   r&   rk   s     r   r[   zSendChannel.send   s(    	 	txx% 	

1r   c                 D    	 t        j                  | j                  |      S r   )rX   r[   r$   rt   s     r   send_nowaitzSendChannel.send_nowait   s    	 ~~dhh,,r   N)r5   rT   rU   r[   rv   r+   r   r   r   r      s    9		-r   r   )ri   _xxsubinterpretersr   _xxinterpchannelsrX   r   r   r   r   r   __all__r   r   r	   r
   r   r   r   r^   rp   rm   r   r   r+   r   r   <module>rz      s    (  * % < 
  .@
4> 4>n- 6 85+ 58-+ -r   