
    *                         S r SSKJrJr  SSKrSSKrSSKrSSKrSSKrSr	S r
 " S S\R                  " \R                  \5      5      r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r\4S jrg)z%
Selectors for the Posix event loop.
    )unicode_literalsabsolute_importN)AutoSelectorPollSelectorSelectSelectorSelector	fd_to_intc                     [        U [        5      (       d  [        U S5      (       d   e[        U [        5      (       a  U $ U R                  5       $ )Nfileno)
isinstanceinthasattrr   )fds    2lib/third_party/prompt_toolkit/eventloop/select.pyr	   r	      s?    b#'"h"7"777"c	yy{    c                       \ rS rSr\R
                  S 5       r\R
                  S 5       r\R
                  S 5       r\R
                  S 5       r	Sr
g)r      c                 2    [        U[        5      (       d   eg Nr   r   selfr   s     r   registerSelector.register       "c""""r   c                 2    [        U[        5      (       d   eg r   r   r   s     r   
unregisterSelector.unregister!   r   r   c                     g r    r   timeouts     r   selectSelector.select%       r   c                     g r   r    r   s    r   closeSelector.close)   r%   r   r    N)__name__
__module____qualname____firstlineno__abcabstractmethodr   r   r#   r(   __static_attributes__r    r   r   r   r      sh    # # 	# # 	  	 r   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	r   .   c                    / U l         [        5       U l        U R                  /U l        [	        [
        S5      (       a5  [        5       U l        U R                  R                  U R                  5        OS U l        [        R                  S:  a5  [        5       U l        U R                  R                  U R                  5        g S U l        g )Npoll      )_fdsr   _select_selector
_selectorsr   r#   r   _poll_selectorappendsysversion_infoPython3Selector_py3_selectorr'   s    r   __init__AutoSelector.__init__/   s    	 . 0001 66"""..DOO""4#6#67"&D
 v%!0!2DOO""4#5#56!%Dr   c                     [        U[        5      (       d   eU R                  R                  U5        U R                   H  nUR                  U5        M     g r   )r   r   r8   r<   r:   r   r   r   sels      r   r   AutoSelector.registerE   sA    "c""""		??CLL #r   c                     [        U[        5      (       d   eU R                  R                  U5        U R                   H  nUR                  U5        M     g r   )r   r   r8   remover:   r   rD   s      r   r   AutoSelector.unregisterM   sA    "c""""		??CNN2 #r   c                 &   U R                   (       a   U R                   R                  U5      $  U R                  R                  U5      $ ! [         a     N(f = f! [         a,    U R
                  b  U R
                  R                  U5      s $ e f = fr   )r@   r#   PermissionErrorr9   
ValueErrorr;   r!   s     r   r#   AutoSelector.selectU   s    ))0099	 ((//88 # 
   	 "".**11'::	s"   A
 A 

AA2BBc                 J    U R                    H  nUR                  5         M     g r   )r:   r(   )r   rE   s     r   r(   AutoSelector.closen   s    ??CIIK #r   )r8   r;   r@   r9   r:   N
r*   r+   r,   r-   rA   r   r   r#   r(   r0   r    r   r   r   r   .   s    &,2r   r   c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
r?   s   zP
Use of the Python3 'selectors' module.

NOTE: Only use on Python 3.5 or newer!
c                 b    [         R                  S:  d   eSS KnUR                  5       U l        g )Nr5   r   )r=   r>   	selectorsDefaultSelector_sel)r   rT   s     r   rA   Python3Selector.__init__y   s)    6)))--/	r   c                     [        U[        5      (       d   eSS KnU R                  R	                  XR
                  S 5        g Nr   )r   r   rT   rV   r   
EVENT_READ)r   r   rT   s      r   r   Python3Selector.register   s2    "c""""		233T:r   c                 h    [        U[        5      (       d   eU R                  R                  U5        g r   )r   r   rV   r   r   s     r   r   Python3Selector.unregister   s'    "c""""		R r   c                     U R                   R                  US9nU VVs/ s H  u  p4UR                  PM     snn$ s  snnf )N)r"   )rV   r#   fileobj)r   r"   eventskeymasks        r   r#   Python3Selector.select   s7    !!'!2-34V	V444s   ;c                 8    U R                   R                  5         g r   )rV   r(   r'   s    r   r(   Python3Selector.close   s    		r   )rV   Nr*   r+   r,   r-   __doc__rA   r   r   r#   r(   r0   r    r   r   r?   r?   s   s     
0;
!5r   r?   c                   2    \ rS rSrS rS rS rS rS rSr	g)	r      c                 8    [         R                  " 5       U l        g r   )r#   r4   _pollr'   s    r   rA   PollSelector.__init__   s    [[]
r   c                     [        U[        5      (       d   eU R                  R                  U[        R
                  5        g r   )r   r   rk   r   r#   POLLINr   s     r   r   PollSelector.register   s-    "c""""

B.r   c                 2    [        U[        5      (       d   eg r   r   r   s     r   r   PollSelector.unregister   s    "c""""r   c                 l    U R                   R                  U5      nU Vs/ s H  o3S   PM	     sn$ s  snf rY   )rk   r4   )r   r"   tuplests       r   r#   PollSelector.select   s.    )$%f!f%%%s   1c                     g r   r    r'   s    r   r(   PollSelector.close       r   )rk   NrP   r    r   r   r   r      s    #/#&r   r   c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
r      z
Wrapper around select.select.

When the SIGWINCH signal is handled, other system calls, like select
are aborted in Python. This wrapper will retry the system call.
c                     / U l         g r   r8   r'   s    r   rA   SelectSelector.__init__   s	    	r   c                 :    U R                   R                  U5        g r   )r8   r<   r   s     r   r   SelectSelector.register       		r   c                 :    U R                   R                  U5        g r   )r8   rH   r   s     r   r   SelectSelector.unregister   r   r   c                       [         R                   " U R                  / / U5      S   $ ! [         R                   a>  nUR                  (       a'  UR                  S   [        R
                  :X  a   S nAMt  e S nAff = frY   )r#   r8   errorargserrnoEINTR)r   r"   es      r   r#   SelectSelector.select   s\    }}TYYB@CC<< 66affQi5;;6s   %) A;2A65A66A;c                     g r   r    r'   s    r   r(   SelectSelector.close   rx   r   r|   Nrf   r    r   r   r   r      s     	r   r   c                 F   [        S U  5       5      nU" 5       n U  H  nUR                  U5        M     UR                  U5      nUb.  U Vs/ s H  oS[        U5         PM     snUR	                  5         $  UR	                  5         gs  snf ! UR	                  5         f = f)z
Wait for a list of file descriptors (`read_fds`) to become ready for
reading. This chooses the most appropriate select-tool for use in
prompt-toolkit.
c              3   <   #    U  H  n[        U5      U4v   M     g 7fr   )r	   ).0r   s     r   	<genexpr>select_fds.<locals>.<genexpr>   s     9"9R="%s   N)dictr   r#   r	   r(   )read_fdsr"   selectorfd_maprE   r   results          r   
select_fdsr      s     999F *C	BLL  G$4:;Fb9R=)F;		  			 <		s   2B B	$B 	B B )rg   
__future__r   r   r=   r.   r   r#   six__all__r	   with_metaclassABCMetaobjectr   r   r?   r   r   r   r    r   r   <module>r      s    9 
 
   
s!!#++v6 $B8 BJh :8 &X > ,8 r   