
    =OgL                        	 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dS  ed          reZdS  ed           reZdS  ed          reZdS eZdS )'    )ABCMetaabstractmethod)
namedtuple)MappingN      c                 J   	 t          | t                    r| }na	 t          |                                           }n># t          t          t
          f$ r$ t          d                    |                     d w xY w|dk     r"t          d                    |                    |S )NzInvalid file object: {!r}r   zInvalid file descriptor: {})
isinstanceintfilenoAttributeError	TypeError
ValueErrorformat)fileobjfds     "/usr/lib64/python3.11/selectors.py_fileobj_to_fdr      s    
 '3 ?	?W^^%%&&BB	:6 	? 	? 	? $$*F7OO5 5:>?	? 
Avv6==bAABBBIs	   != ;A8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dS )_SelectorMappingc                     || _         d S N)	_selector)selfselectors     r   __init__z_SelectorMapping.__init__?   s    !    c                 4    t          | j        j                  S r   )lenr   
_fd_to_keyr   s    r   __len__z_SelectorMapping.__len__B   s    4>,---r    c                     	 | j                             |          }| j         j        |         S # t          $ r$ t          d                    |                    d w xY wN{!r} is not registered)r   _fileobj_lookupr#   KeyErrorr   )r   r   r   s      r   __getitem__z_SelectorMapping.__getitem__E   sk    	O//88B>,R00 	O 	O 	O3::7CCDD$N	Os	   +. .Ac                 4    t          | j        j                  S r   )iterr   r#   r$   s    r   __iter__z_SelectorMapping.__iter__L   s    DN-...r    N)__name__
__module____qualname__r   r%   r+   r.    r    r   r   r   <   sV        3" " ". . .O O O/ / / / /r    r   c                       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dS )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                 \    	 |                      |           |                     |||          S r   )r;   r9   r8   s       r   modifyzBaseSelector.modify   s1    	 	   }}Wfd333r    c                     	 t           r   r6   )r   timeouts     r   selectzBaseSelector.select   r<   r    c                     	 d S r   r2   r$   s    r   closezBaseSelector.close   s    	 	r    c                     	 |                                  }|t          d          	 ||         S # t          $ r$ t          d                    |                    d w xY w)NzSelector is closedr(   )get_mapRuntimeErrorr*   r   )r   r   mappings      r   get_keyzBaseSelector.get_key   sy    	
 ,,..?3444	O7## 	O 	O 	O3::7CCDD$N	Os	   0 .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                 .    |                                   d S 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   s         " " " ^", " " ^"$4 4 4 4" " " " ^"$  O O O " " ^"      r    r4   )	metaclassc                   D    e Zd Z	 d Zd Zd
dZd Zd
dZd Zd Z	d	 Z
dS )_BaseSelectorImplc                 <    i | _         t          |           | _        d S r   )r#   r   _mapr$   s    r   r   z_BaseSelectorImpl.__init__   s    $T**			r    c                     	 	 t          |          S # t          $ r2 | j                                        D ]}|j        |u r|j        c cY S  w xY wr   )r   r   r#   valuesr   r   r   r   keys      r   r)   z!_BaseSelectorImpl._fileobj_lookup   sx    		!'*** 	 	 	--// " ";'))6MMMMM * 	s    7AANc                 H   |r|t           t          z   z  r"t          d                    |                    t	          ||                     |          ||          }|j        | j        v r(t          d                    ||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     	DFzK'?%@@ 	D3::6BBCCC'4#7#7#@#@&$OO6T_$$?"F7CF335 5 5 #&
r    c                     	 | j                             |                     |                    }n1# t          $ r$ t          d                    |                    d w xY w|S r'   )r#   popr)   r*   r   rV   s      r   r;   z_BaseSelectorImpl.unregister   sp    	O/%%d&:&:7&C&CDDCC 	O 	O 	O3::7CCDD$N	O
s	   -0 .Ac                 |   	 | j         |                     |                   }n1# t          $ r$ t          d                    |                    d w xY w||j        k    r-|                     |           |                     |||          }n0||j        k    r%|                    |          }|| j         |j	        <   |S )Nr(   )r   )
r#   r)   r*   r   r   r;   r9   r   _replacer   r[   s        r   r>   z_BaseSelectorImpl.modify   s    	O/$"6"6w"?"?@CC 	O 	O 	O3::7CCDD$N	OSZOOG$$$--66CCSX,,D,))C&)DOCF#
s	    # .Ac                 F    | j                                          d | _        d S 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
    yr    c                 B    	 	 | j         |         S # t          $ r Y d S w xY wr   )r#   r*   )r   r   s     r   _key_from_fdz_BaseSelectorImpl._key_from_fd  s;    		?2&& 	 	 	44	s    
r   )r/   r0   r1   r   r)   r9   r;   r>   rC   rE   rd   r2   r    r   rQ   rQ      s        '+ + +  &                r    rQ   c                   l     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                      | _        d S r   )superr   set_readers_writersr   	__class__s    r   r   zSelectSelector.__init__%  s3    r    Nc                     t                                          |||          }|t          z  r| j                            |j                   |t          z  r| j                            |j                   |S r   )rh   r9   rY   rj   addr   rZ   rk   )r   r   r   r   rW   rm   s        r   r9   zSelectSelector.register*  sm    ggw55J 	&Mcf%%%K 	&Mcf%%%
r    c                     t                                          |          }| j                            |j                   | j                            |j                   |S r   )rh   r;   rj   discardr   rk   r   r   rW   rm   s      r   r;   zSelectSelector.unregister2  sO    gg  ))cf%%%cf%%%
r    win32c                 H    t          j         ||||          \  }}}|||z   g fS r   )rA   )r   rw_r@   xs         r   _selectzSelectSelector._select9  s-    mAq!W55GAq!a!eR<r    c                    |d nt          |d          }g }	 |                     | j        | j        g |          \  }}}n# t          $ r |cY S w xY wt          |          }t          |          }||z  D ]V}d}||v r
|t          z  }||v r
|t          z  }|                     |          }|r|	                    |||j
        z  f           W|S 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MMGAq!! 	 	 	LLL	FFFFa% 		9 		9BFQww*$Qww+%##B''C 9c6CJ#67888s   &? AAr   )r/   r0   r1   r   r9   r;   sysplatformry   rA   __classcell__rm   s   @r   rf   rf   "  s             
          |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                 z    t                                                       |                                 | _        d S r   )rh   r   _selector_clsr   rl   s    r   r   z_PollLikeSelector.__init__[  s0    ++--r    c                 4   t                                          |||          }d}|t          z  r
|| j        z  }|t          z  r
|| j        z  }	 | j                            |j        |           n'#  t                                          |            xY w|S r{   )	rh   r9   rY   _EVENT_READrZ   _EVENT_WRITEr   r   r;   )r   r   r   r   rW   poller_eventsrm   s         r   r9   z_PollLikeSelector.register_  s    ggw55J 	.T--MK 	/T..M	N##CFM::::	GGw'''
s    A1 1$Bc                     t                                          |          }	 | j                            |j                   n# t          $ r Y nw xY w|S r   )rh   r;   r   r   OSErrorrr   s      r   r;   z_PollLikeSelector.unregisterm  sc    gg  ))	N%%cf---- 	 	 	 D	 
s   A 
AAc                    	 | j         |                     |                   }n!# t          $ r t          |d          d w xY wd}||j        k    rud}|t          z  r
|| j        z  }|t          z  r
|| j        z  }	 | j        	                    |j
        |           n'#  t                                          |            xY wd}||j        k    rd}|r&|                    ||          }|| j         |j
        <   |S )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  s7   	G/$"6"6w"?"?@CC 	G 	G 	Gg;;;<<$F	G SZO
" 44#33# 54#44%%cfo>>>>""7+++G38G 	*,,f4,88C&)DOCF#
s    $ A= B $Cc                    |d }n |dk    rd}nt          j        |dz            }g }	 | j                            |          }n# t          $ r |cY S w xY w|D ]g\  }}d}|| j         z  r
|t          z  }|| j         z  r
|t          z  }| 	                    |          }|r|
                    |||j        z  f           h|S )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    ?GG\\GG i#..G	 N//88MM 	 	 	LLL	& 		9 		9IBF((( &+%))) %*$##B''C 9c6CJ#67888s   A AA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                   :    e Zd Z	 ej        Zej        Zej        Z	dS )PollSelectorN)
r/   r0   r1   rA   r   r   POLLINr   POLLOUTr   r2   r    r   r   r     s&        "m~r    r   epollc                   X     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                 4    | j                                         S r   r   r   r$   s    r   r   zEpollSelector.fileno      >((***r    Nc                    |d}n#|dk    rd}nt          j        |dz            dz  }t          t          | j                  d          }g }	 | j                            ||          }n# t          $ r |cY S w xY w|D ]q\  }}d}|t          j	         z  r
|t          z  }|t          j         z  r
|t          z  }|                     |          }|r|                    |||j        z  f           r|S )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22T9
 T_--q11FE $ 3 3GV D D#   * 	= 	=	EFN?* *k)FFO++ )j(F''++ =LL#v
':!;<<<Ls   A* *A98A9c                 z    | j                                          t                                                       d S r   r   rC   rh   rl   s    r   rC   zEpollSelector.close  ,    N  """GGMMOOOOOr    r   )r/   r0   r1   rA   r   r   r   r   r   r   r   rC   r   r   s   @r   r   r     st        #n	+ 	+ 	+	 	 	 	@	 	 	 	 	 	 	 	 	r    r   devpollc                   P     e Zd Z	 ej        Zej        Zej        Z	d Z
 fdZ xZS )DevpollSelectorc                 4    | j                                         S r   r   r$   s    r   r   zDevpollSelector.fileno  r   r    c                 z    | j                                          t                                                       d S 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     s_        )m~	+ 	+ 	+	 	 	 	 	 	 	 	 	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                     t                                                       t          j                    | _        d| _        d S r{   )rh   r   rA   r   r   _max_eventsrl   s    r   r   zKqueueSelector.__init__  s4    GG#]__DN Dr    c                 4    | j                                         S r   r   r$   s    r   r   zKqueueSelector.fileno  r   r    Nc                 8   t                                          |||          }	 |t          z  r\t          j        |j        t          j        t          j                  }| j        	                    |gdd           | xj
        dz  c_
        |t          z  r\t          j        |j        t          j        t          j                  }| j        	                    |gdd           | xj
        dz  c_
        n'#  t                                          |            xY w|S 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99CJ& * -0E(.(8: :CN**C5!Q777$$)$$K' * -0F(.(8: :CN**C5!Q777$$)$$""7+++Js   CC3 3$Dc                 >   t                                          |          }|j        t          z  rnt	          j        |j        t          j        t          j                  }| xj	        dz  c_	        	 | j
                            |gdd           n# t          $ r Y nw xY w|j        t          z  rnt	          j        |j        t          j        t          j                  }| xj	        dz  c_	        	 | j
                            |gdd           n# t          $ r Y nw xY w|S )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  s3   ''$$W--CzJ& 	mCFF,A$*$79 9  A%  N**C5!Q7777    D zK' mCFF,B$*$79 9  A%  N**C5!Q7777   D Js$   2B 
BB/D 
DDc                    |d nt          |d          }| j        pd}g }	 | j                            d ||          }n# t          $ r |cY S w xY w|D ]|}|j        }|j        }d}|t          j        k    r
|t          z  }|t          j
        k    r
|t          z  }|                     |          }	|	r|                    |	||	j        z  f           }|S 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    %odd3w??G %*FE>11$HH#    = =Yz6000j(F6111k)F''++ =LL#v
':!;<<<Ls   > AAc                 z    | j                                          t                                                       d S 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           }|dS 	  |            }| dk    r|                    d           n|                                 dS # t          $ r Y dS w xY w)NFr   r   T)getattrrA   r   rC   r   )methodr   selector_objs      r   _can_user   L  s     vvt,,Hu
xzzVa        t   uus   :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      s]   ( ' ' ' ' ' ' ' " " " " " " # # # # # #   



 
  2 j(K(K(KLL 
 8  6 R  E  / / / / /w / / /({ { { { {W { { { {|Q Q Q Q Q Q Q Qh0 0 0 0 0& 0 0 0fW W W W W) W W Wt 766 && & & & &( & & & 767 -+ + + + +) + + +\ 769     +    768 QO O O O O* O O Od  4 8H 	%$OOOXg %#OOOXi %%OOOXf %"OOO$OOOr    