ó
±xYc           @@ sô   d  Z  d d l m Z m Z d d l Z d d l Z d d l Z d d l Z d d l Z d Z	 d	 „  Z
 d
 e j e j e ƒ f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d „ Z d S(   u%   
Selectors for the Posix event loop.
i    (   t   unicode_literalst   absolute_importNu   AutoSelectoru   PollSelectoru   SelectSelectoru   Selectoru	   fd_to_intc         C@ sE   t  |  t ƒ s$ t |  d ƒ s$ t ‚ t  |  t ƒ r7 |  S|  j ƒ  Sd  S(   Nu   fileno(   t
   isinstancet   intt   hasattrt   AssertionErrort   fileno(   t   fd(    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyt	   fd_to_int   s    $t   Selectorc           B@ sP   e  Z e j d  „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z e j d „  ƒ Z RS(   c         C@ s   t  | t ƒ s t ‚ d  S(   N(   R   R   R   (   t   selfR   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyt   register   s    c         C@ s   t  | t ƒ s t ‚ d  S(   N(   R   R   R   (   R
   R   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyt
   unregister!   s    c         C@ s   d  S(   N(    (   R
   t   timeout(    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyt   select%   s    c         C@ s   d  S(   N(    (   R
   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyt   close)   s    (   t   __name__t
   __module__t   abct   abstractmethodR   R   R   R   (    (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR	      s   t   AutoSelectorc           B@ s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@ sœ   g  |  _  t ƒ  |  _ |  j g |  _ t t d ƒ rU t ƒ  |  _ |  j j |  j ƒ n	 d  |  _ t
 j d k r t ƒ  |  _ |  j j |  j ƒ n	 d  |  _ d  S(   Nu   polli   i   (   i   i   (   t   _fdst   SelectSelectort   _select_selectort
   _selectorsR   R   t   PollSelectort   _poll_selectort   appendt   Nonet   syst   version_infot   Python3Selectort   _py3_selector(   R
   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyt   __init__/   s    		c         C@ sJ   t  | t ƒ s t ‚ |  j j | ƒ x |  j D] } | j | ƒ q/ Wd  S(   N(   R   R   R   R   R   R   R   (   R
   R   t   sel(    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   E   s    c         C@ sJ   t  | t ƒ s t ‚ |  j j | ƒ x |  j D] } | j | ƒ q/ Wd  S(   N(   R   R   R   R   t   removeR   R   (   R
   R   R"   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   M   s    c         C@ s‚   |  j  r4 y |  j  j | ƒ SWq4 t k
 r0 q4 Xn  y |  j j | ƒ SWn3 t k
 r} |  j d  k	 rw |  j j | ƒ S‚  n Xd  S(   N(   R    R   t   PermissionErrorR   t
   ValueErrorR   R   (   R
   R   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   U   s    	c         C@ s"   x |  j  D] } | j ƒ  q
 Wd  S(   N(   R   R   (   R
   R"   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   n   s    (   R   R   R!   R   R   R   R   (    (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   .   s
   				R   c           B@ s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   u\   
    Use of the Python3 'selectors' module.

    NOTE: Only use on Python 3.5 or newer!
    c         C@ s4   t  j d k s t ‚ d d  l } | j ƒ  |  _ d  S(   Ni   i   i    (   i   i   (   R   R   R   t	   selectorst   DefaultSelectort   _sel(   R
   R&   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR!   y   s    c         C@ s>   t  | t ƒ s t ‚ d d  l } |  j j | | j d  ƒ d  S(   Ni    (   R   R   R   R&   R(   R   t
   EVENT_READR   (   R
   R   R&   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR      s    c         C@ s)   t  | t ƒ s t ‚ |  j j | ƒ d  S(   N(   R   R   R   R(   R   (   R
   R   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   „   s    c         C@ s5   |  j  j d | ƒ } g  | D] \ } } | j ^ q S(   NR   (   R(   R   t   fileobj(   R
   R   t   eventst   keyt   mask(    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   ˆ   s    c         C@ s   |  j  j ƒ  d  S(   N(   R(   R   (   R
   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   Œ   s    (   R   R   t   __doc__R!   R   R   R   R   (    (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   s   s   				R   c           B@ s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@ s   t  j ƒ  |  _ d  S(   N(   R   t   pollt   _poll(   R
   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR!   ‘   s    c         C@ s/   t  | t ƒ s t ‚ |  j j | t j ƒ d  S(   N(   R   R   R   R0   R   R   t   POLLIN(   R
   R   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   ”   s    c         C@ s   t  | t ƒ s t ‚ d  S(   N(   R   R   R   (   R
   R   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   ˜   s    c         C@ s-   |  j  j | ƒ } g  | D] } | d ^ q S(   Ni    (   R0   R/   (   R
   R   t   tuplest   t(    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   ›   s    c         C@ s   d  S(   N(    (   R
   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   Ÿ   s    (   R   R   R!   R   R   R   R   (    (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR      s
   				R   c           B@ s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   uµ   
    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         C@ s   g  |  _  d  S(   N(   R   (   R
   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR!   ª   s    c         C@ s   |  j  j | ƒ d  S(   N(   R   R   (   R
   R   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   ­   s    c         C@ s   |  j  j | ƒ d  S(   N(   R   R#   (   R
   R   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   °   s    c         C@ ss   xl t  rn y! t j |  j g  g  | ƒ d SWq t j k
 rj } | j rd | j d t j k rd q qk ‚  q Xq Wd  S(   Ni    (   t   TrueR   R   t   errort   argst   errnot   EINTR(   R
   R   t   e(    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   ³   s    	!c         C@ s   d  S(   N(    (   R
   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   ¾   s    (   R   R   R.   R!   R   R   R   R   (    (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyR   £   s   				c         C@ s   t  d „  |  Dƒ ƒ } | ƒ  } z^ x |  D] } | j | ƒ q) W| j | ƒ } | d k	 r| g  | D] } | t | ƒ ^ qb SWd | j ƒ  Xd S(   u¨   
    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         s@ s!   |  ] } t  | ƒ | f Vq d  S(   N(   R   (   t   .0R   (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pys	   <genexpr>Ë   s    N(   t   dictR   R   R   R   R   (   t   read_fdsR   t   selectort   fd_mapR"   R   t   result(    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyt
   select_fdsÂ   s    		%(   u   AutoSelectoru   PollSelectoru   SelectSelectoru   Selectoru	   fd_to_int(   R.   t
   __future__R    R   R   R   R7   R   t   sixt   __all__R   t   with_metaclasst   ABCMetat   objectR	   R   R   R   R   R@   (    (    (    s>   lib/python2.7/site-packages/prompt_toolkit/eventloop/select.pyt   <module>   s$       		%E