
    dafL                     r   	 d dl mZmZ d dlmZ d dlmZ d dlZd dlZd dl	Z	dZ
dZd Z edg d	      Zd
e_        dej                  _        dej                   _        dej"                  _        dej$                  _         G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z eed      r G d de      Z eed      r G d de      Z eed       r G d! d"e      Z eed#      r G d$ d%e      Zd& Z ed#      reZy ed      reZy ed       reZy ed      reZyeZy)'    )ABCMetaabstractmethod)
namedtuple)MappingN      c                    	 t        | t              r| }n	 t        | j                               }|dk  rt        dj                  |            |S # t        t        t
        f$ r t        dj                  |             d w xY w)NzInvalid file object: {!r}r   zInvalid file descriptor: {})
isinstanceintfilenoAttributeError	TypeError
ValueErrorformat)fileobjfds     $/root/Python-3.12.4/Lib/selectors.py_fileobj_to_fdr      s    
 '3	?W^^%&B 
Av6==bABBI 	:6 	? $$*F7O5:>?	?s   A 0B SelectorKey)r   r   eventsdatazSelectorKey(fileobj, fd, events, data)

    Object used to associate a file object to its backing
    file descriptor, selected event mask, and attached data.
zFile object registered.zUnderlying file descriptor.z3Events that must be waited for on this file object.zvOptional opaque data associated to this file object.
For example, this could be used to store a per-client session ID.c                   &    e Zd Z	 d Zd Zd Zd Zy)_SelectorMappingc                     || _         y N)	_selector)selfselectors     r   __init__z_SelectorMapping.__init__?   s	    !    c                 @    t        | j                  j                        S r   )lenr   
_fd_to_keyr   s    r   __len__z_SelectorMapping.__len__B   s    4>>,,--r    c                     	 | j                   j                  |      }| j                   j                  |   S # t        $ r t        dj	                  |            d w xY wN{!r} is not registered)r   _fileobj_lookupr#   KeyErrorr   )r   r   r   s      r   __getitem__z_SelectorMapping.__getitem__E   s[    	O//8B>>,,R00 	O3::7CD$N	Os	   36 %Ac                 @    t        | j                  j                        S r   )iterr   r#   r$   s    r   __iter__z_SelectorMapping.__iter__L   s    DNN--..r    N)__name__
__module____qualname__r   r%   r+   r.    r    r   r   r   <   s    3".O/r    r   c                   r    e Zd Z	 edd       Zed        ZddZedd       Zd Zd Z	ed        Z
d	 Zd
 Zy)BaseSelectorNc                     	 t         r   NotImplementedErrorr   r   r   r   s       r   registerzBaseSelector.register_   s    	& "!r    c                     	 t         r   r6   )r   r   s     r   
unregisterzBaseSelector.unregisterv       	 "!r    c                 L    	 | j                  |       | j                  |||      S r   )r;   r9   r8   s       r   modifyzBaseSelector.modify   s(    	 	 }}Wfd33r    c                     	 t         r   r6   )r   timeouts     r   selectzBaseSelector.select   r<   r    c                      	 y r   r2   r$   s    r   closezBaseSelector.close   s    	 	r    c                     	 | j                         }|t        d      	 ||   S # t        $ r t        dj                  |            d w xY w)NzSelector is closedr(   )get_mapRuntimeErrorr*   r   )r   r   mappings      r   get_keyzBaseSelector.get_key   s`    	
 ,,.?344	O7## 	O3::7CD$N	Os	   % %A
c                     	 t         r   r6   r$   s    r   rE   zBaseSelector.get_map   s    @!!r    c                     | S r   r2   r$   s    r   	__enter__zBaseSelector.__enter__   s    r    c                 $    | j                          y r   )rC   )r   argss     r   __exit__zBaseSelector.__exit__   s    

r    r   )r/   r0   r1   r   r9   r;   r>   rA   rC   rH   rE   rK   rN   r2   r    r   r4   r4   P   sq     " ", " "$4" " "$O " "r    r4   )	metaclassc                   B    e Zd Z	 d Zd Zd
dZd Zd
dZd Zd Z	d	 Z
y)_BaseSelectorImplc                 2    i | _         t        |       | _        y r   )r#   r   _mapr$   s    r   r   z_BaseSelectorImpl.__init__   s    $T*	r    c                     	 	 t        |      S # t        $ r? | j                  j                         D ]   }|j                  |u s|j
                  c cY S   w xY wr   )r   r   r#   valuesr   r   r   r   keys      r   r)   z!_BaseSelectorImpl._fileobj_lookup   s\    		!'** 	--/ ";;')66M" 	s   
 4AAANc                 F   |r|t         t        z   z  rt        dj                  |            t	        || j                  |      ||      }|j                  | j                  v r%t        dj                  ||j                              || j                  |j                  <   |S )NzInvalid events: {!r}z"{!r} (FD {}) is already registered)	
EVENT_READEVENT_WRITEr   r   r   r)   r   r#   r*   r   r   r   r   rW   s        r   r9   z_BaseSelectorImpl.register   s    FzK'?%@@3::6BCC'4#7#7#@&$O66T__$?"F7CFF35 5 #&
r    c                     	 | j                   j                  | j                  |            }|S # t        $ r t        dj	                  |            d w xY wr'   )r#   popr)   r*   r   rV   s      r   r;   z_BaseSelectorImpl.unregister   sZ    	O//%%d&:&:7&CDC 
  	O3::7CD$N	Os	   *. %Ac                 r   	 | j                   | j                  |         }||j                  k7  r&| j                  |       | j                  |||      }|S ||j                  k7  r+|j                  |      }|| j                   |j                  <   |S # t        $ r t        dj                  |            d w xY w)Nr(   )r   )
r#   r)   r*   r   r   r;   r9   r   _replacer   r[   s        r   r>   z_BaseSelectorImpl.modify   s    	O//$"6"6w"?@C SZZOOG$--6C
 
	 SXX,,D,)C&)DOOCFF#
  	O3::7CD$N	Os   B %B6c                 F    | j                   j                          d | _        y r   )r#   clearrS   r$   s    r   rC   z_BaseSelectorImpl.close  s    	r    c                     | j                   S r   )rS   r$   s    r   rE   z_BaseSelectorImpl.get_map  s    yyr    c                 B    	 	 | j                   |   S # t        $ r Y y w xY wr   )r#   r*   )r   r   s     r   _key_from_fdz_BaseSelectorImpl._key_from_fd  s-    		??2&& 		s    	r   )r/   r0   r1   r   r)   r9   r;   r>   rC   rE   rd   r2   r    r   rQ   rQ      s-    '+&r    rQ   c                   ~     e Zd Z	  fdZd fd	Z fdZej                  dk(  rddZne	j                  ZddZ	 xZ
S )SelectSelectorc                 ^    t         |           t               | _        t               | _        y r   )superr   set_readers_writersr   	__class__s    r   r   zSelectSelector.__init__%  s     r    c                     t         |   |||      }|t        z  r%| j                  j	                  |j
                         |t        z  r%| j                  j	                  |j
                         |S r   )rh   r9   rY   rj   addr   rZ   rk   )r   r   r   r   rW   rm   s        r   r9   zSelectSelector.register*  sW    gw5JMMcff%KMMcff%
r    c                     t         |   |      }| j                  j                  |j                         | j
                  j                  |j                         |S r   )rh   r;   rj   discardr   rk   r   r   rW   rm   s      r   r;   zSelectSelector.unregister2  sC    g )cff%cff%
r    win32c                 J    t        j                   ||||      \  }}}|||z   g fS r   )rA   )r   rw_r@   xs         r   _selectzSelectSelector._select9  s,    mmAq!W5GAq!a!eR<r    c                    |d nt        |d      }g }	 | j                  | j                  | j                  g |      \  }}}t        |      }t        |      }||z  D ]R  }d}||v r	|t        z  }||v r	|t        z  }| j                  |      }|s3|j                  |||j                  z  f       T |S # t        $ r |cY S w xY wNr   )maxry   rj   rk   InterruptedErrorri   rY   rZ   rd   appendr   )	r   r@   readyru   rv   rw   r   r   rW   s	            r   rA   zSelectSelector.select?  s    !/$s7A	ll4==$--WMGAq! FFa% 		9BFQw*$Qw+%##B'Cc6CJJ#678		9    	L	s   ,B2 2C ?C r   )r/   r0   r1   r   r9   r;   sysplatformry   rA   __classcell__rm   s   @r   rf   rf   "  s8     
 ||w	  --r    rf   c                   V     e Zd Z	 dZdZdZ fdZd fd	Z fdZd fd	Z	ddZ
 xZS )_PollLikeSelectorNc                 L    t         |           | j                         | _        y r   )rh   r   _selector_clsr   rl   s    r   r   z_PollLikeSelector.__init__[  s    ++-r    c                    t         |   |||      }d}|t        z  r|| j                  z  }|t        z  r|| j
                  z  }	 | j                  j                  |j                  |       |S #  t         | !  |        xY wr{   )	rh   r9   rY   _EVENT_READrZ   _EVENT_WRITEr   r   r;   )r   r   r   r   rW   poller_eventsrm   s         r   r9   z_PollLikeSelector.register_  s    gw5JT---MKT...M	NN##CFFM: 
	Gw's   &A. .B c                     t         |   |      }	 | j                  j                  |j                         |S # t        $ r Y |S w xY wr   )rh   r;   r   r   OSErrorrr   s      r   r;   z_PollLikeSelector.unregisterm  sO    g )	NN%%cff-
 
	  	 
		s   %9 	AAc                    	 | j                   | j                  |         }d}||j                  k7  r[d}|t        z  r|| j
                  z  }|t        z  r|| j                  z  }	 | j                  j                  |j                  |       d}||j                  k7  rd}|r,|j                  ||      }|| j                   |j                  <   |S # t        $ r t        |d      d w xY w#  t        | 1  |        xY w)Nz is not registeredFr   T)r   r   )r#   r)   r*   r   rY   r   rZ   r   r   r>   r   rh   r;   r   r_   )r   r   r   r   rW   changedselector_eventsrm   s          r   r>   z_PollLikeSelector.modifyw  s	   	G//$"6"6w"?@C SZZO
"4#3#33#4#4#44%%cffo> G388G,,f4,8C&)DOOCFF#
-  	Gg[(:;<$F	G"7+s   C %&C* C'*C<c                    |d }n |dk  rd}nt        j                  |dz        }g }	 | j                  j                  |      }|D ]m  \  }}d}|| j
                   z  r	|t        z  }|| j                   z  r	|t        z  }| j                  |      }|sN|j                  |||j                  z  f       o |S # t        $ r |cY S w xY w)Nr        @@)mathceilr   pollr}   r   rZ   r   rY   rd   r~   r   )r   r@   r   fd_event_listr   eventr   rW   s           r   rA   z_PollLikeSelector.select  s     ?G\G ii#.G	 NN//8M ' 		9IBF((((+%))))*$##B'Cc6CJJ#678		9    	L	s   B8 8CCr   )r/   r0   r1   r   r   r   r   r9   r;   r>   rA   r   r   s   @r   r   r   U  s.    FMKL.6r    r   r   c                   V    e Zd Z	 ej                  Zej                  Zej                  Z	y)PollSelectorN)
r/   r0   r1   rA   r   r   POLLINr   POLLOUTr   r2   r    r   r   r     s     "mm~~r    r   epollc                   v     e Zd Z	 ej                  Zej                  Zej                  Z	d Z
ddZ fdZ xZS )EpollSelectorc                 6    | j                   j                         S r   r   r   r$   s    r   r   zEpollSelector.fileno      >>((**r    c                    |d}n#|dk  rd}nt        j                  |dz        dz  }t        t        | j                        d      }g }	 | j
                  j                  ||      }|D ]u  \  }}d}|t        j                   z  r	|t        z  }|t        j                   z  r	|t        z  }| j                  |      }|sV|j                  |||j                  z  f       w |S # t        $ r |cY S w xY w)Nr   r   gMbP?r   )r   r   r|   r"   r#   r   r   r}   rA   EPOLLINrZ   EPOLLOUTrY   rd   r~   r   )	r   r@   max_evr   r   r   r   r   rW   s	            r   rA   zEpollSelector.select  s    A ))GcM2T9
 T__-q1FE $ 3 3GV D + 	=	EFNN?*k)FFOO++j(F''+LL#v

':!;<	= L $ s   C# #C10C1c                 V    | j                   j                          t        |           y r   r   rC   rh   rl   s    r   rC   zEpollSelector.close      NN  "GMOr    r   )r/   r0   r1   rA   r   r   r   r   r   r   r   rC   r   r   s   @r   r   r     s6    #nn	+	@	 	r    r   devpollc                   n     e Zd Z	 ej                  Zej                  Zej                  Z	d Z
 fdZ xZS )DevpollSelectorc                 6    | j                   j                         S r   r   r$   s    r   r   zDevpollSelector.fileno  r   r    c                 V    | j                   j                          t        |           y r   r   rl   s    r   rC   zDevpollSelector.close  r   r    )r/   r0   r1   rA   r   r   r   r   r   r   r   rC   r   r   s   @r   r   r     s0    )mm~~	+	 	r    r   kqueuec                   N     e Zd Z	  fdZd Zd fd	Z fdZddZ fdZ xZ	S )KqueueSelectorc                 b    t         |           t        j                         | _        d| _        y r{   )rh   r   rA   r   r   _max_eventsrl   s    r   r   zKqueueSelector.__init__  s#    G#]]_DN Dr    c                 6    | j                   j                         S r   r   r$   s    r   r   zKqueueSelector.fileno  r   r    c                 :   t         |   |||      }	 |t        z  rpt        j                  |j
                  t        j                  t        j                        }| j                  j                  |gdd       | xj                  dz  c_
        |t        z  rpt        j                  |j
                  t        j                  t        j                        }| j                  j                  |gdd       | xj                  dz  c_
        |S #  t         | 5  |        xY wNr   r   )rh   r9   rY   rA   keventr   KQ_FILTER_READ	KQ_EV_ADDr   controlr   rZ   KQ_FILTER_WRITEr;   )r   r   r   r   rW   kevrm   s         r   r9   zKqueueSelector.register  s    '"7FD9CJ& --0E0E(.(8(8:CNN**C5!Q7$$)$K' --0F0F(.(8(8:CNN**C5!Q7$$)$ J"7+s   C2D Dc                 x   t         |   |      }|j                  t        z  rqt	        j
                  |j                  t        j                  t        j                        }| xj                  dz  c_	        	 | j                  j                  |gdd       |j                  t        z  rst	        j
                  |j                  t        j                  t        j                        }| xj                  dz  c_	        	 | j                  j                  |gdd       |S |S # t        $ r Y w xY w# t        $ r Y |S w xY w)Nr   r   )rh   r;   r   rY   rA   r   r   r   KQ_EV_DELETEr   r   r   r   rZ   r   )r   r   rW   r   rm   s       r   r;   zKqueueSelector.unregister  s   '$W-CzzJ&mmCFFF,A,A$*$7$79  A% NN**C5!Q7
 zzK'mmCFFF,B,B$*$7$79  A% NN**C5!Q7 J3J     Js$   7D ;D, 	D)(D),	D98D9c                    |d nt        |d      }| j                  xs d}g }	 | j                  j                  d ||      }|D ]  }|j
                  }|j                  }d}|t        j                  k(  r	|t        z  }|t        j                  k(  r	|t        z  }| j                  |      }	|	si|j                  |	||	j                  z  f        |S # t        $ r |cY S w xY wr   )r|   r   r   r   r}   identfilterrA   r   rY   r   rZ   rd   r~   r   )
r   r@   r   r   kev_listr   r   flagr   rW   s
             r   rA   zKqueueSelector.select.  s    %od3w?G %%*FE>>11$H   =YYzz6000j(F6111k)F''+LL#v

':!;<= L $ s   C CCc                 V    | j                   j                          t        |           y r   r   rl   s    r   rC   zKqueueSelector.closeG  r   r    r   )
r/   r0   r1   r   r   r9   r;   rA   rC   r   r   s   @r   r   r     s)    $	!
	+	$	.	2	 	r    r   c                     	 t        t        | d       }|y	  |       }| dk(  r|j                  d       y|j                          y# t        $ r Y yw xY w)NFr   r   T)getattrrA   r   rC   r   )methodr   selector_objs      r   _can_user   L  sj     vvt,H
zVa     s   A A 	AA)abcr   r   collectionsr   collections.abcr   r   rA   r   rY   rZ   r   r   __doc__r   r   r   r   r   r4   rQ   rf   r   hasattrr   r   r   r   r   DefaultSelectorr2   r    r   <module>r      ss   ( " #   
 
2 (KL 
 8   6 R   E   /w /({W {|Q Qh0& 0fW) Wt 66&( & 67+) +\ 69+  68O* Od4 H$Og#Oi%Of"O$Or    