ó
ÐH/\c           @@  sw  d  Z  d d l m Z d d l m Z d d l m Z d d l m Z d d l	 m
 Z
 e e e ƒ  d e j e j d f  ƒe j Z e j Z e j Z g  e j D] Z e e j k r¼ e ^ q¡ Z e j Z y e j Z e j Z WnG e k
 r*e Z d	 d
 d d d d d d d d d d d d f Z n- Xe e d ƒ sAt ‚ d e f d „  ƒ  YZ d „  Z d e f d „  ƒ  YZ e ƒ  Z d d l m Z d e f d „  ƒ  YZ  e  Z! e e" d  ƒ ráe# e" d! e" j$ ƒ e" j% d d" „ Z& n d  e k rýe j' d  ƒ n  e e" d# ƒ rd d$ „ Z( n d# e k r7e j' d# ƒ n  e e d% ƒ ree) e) d& „ Z* e j+ d% ƒ n  e e e Z, d' S((   s   
Python 2 socket module.
i    (   t   absolute_import(   t   _socketcommon(   t   copy_globals(   t   PYPY(   t   Timeoutt   names_to_ignoret   dunder_names_to_keept   bindt   connectt
   connect_ext   filenot   listent   getpeernamet   getsocknamet
   getsockoptt
   setsockoptt   sendallt   setblockingt
   settimeoutt
   gettimeoutt   shutdownt	   __enter__t   _fileobjectc           B@  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C@  s   |  S(   N(    (   t   self(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   :   s    c         G@  s   |  j  s |  j ƒ  n  d  S(   N(   t   closedt   close(   R   t   args(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   __exit__=   s    	c         C@  s6   |  j  d  k	 r |  j  j ƒ  n  t t |  ƒ j ƒ  d  S(   N(   t   _sockt   Nonet   _drop_eventst   superR   R   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   A   s    (   t   __name__t
   __module__R   R   R   (    (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   8   s   		c         C@  sF   y' t  |  ƒ } | j r | S| j ƒ  SWn t k
 rA t |  ƒ SXd  S(   N(   t
   memoryviewt   shapet   tobytest	   TypeErrort   buffer(   t   datat   mv(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   _get_memoryG   s    	t   _closedsocketc           B@  sR   e  Z g  Z d  „  Z e Z Z Z Z Z Z	 e
 rJ d „  Z d „  Z n  e Z RS(   c          O@  s   t  t d ƒ ‚ d  S(   Ns   Bad file descriptor(   t   errort   EBADF(   R   t   kwargs(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   _dummyY   s    c         C@  s   d  S(   N(    (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   _drop`   s    c         C@  s   d  S(   N(    (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   _reusec   s    (   R    R!   t	   __slots__R.   t   sendt   recvt	   recv_intot   sendtot   recvfromt   recvfrom_intoR   R/   R0   t   __getattr__(    (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR*   V   s   		(   t   wait_on_sockett   socketc           B@  sÖ  e  Z d  Z e e d d$ d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z e e
 e ƒ Z e Z d „  Z e d	 „ Z e d
 „ Z e d „  ƒ Z d „  Z d „  Z d „  Z d d d „ Z d „  Z d „  Z d „  Z d „  Z d e d „ Z d d „ Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% e d „  ƒ Z& e d „  ƒ Z' e d „  ƒ Z( d  „  Z) d! „  Z* d" „  Z+ d# Z, d$ Z- x3 e. e/ ƒ e. e0 ƒ  ƒ D] Z- e, e- e- f d$ Uq—W[- [, e1 rÔd% „  Z2 d& „  Z3 n  RS('   s{  
    gevent `socket.socket <https://docs.python.org/2/library/socket.html#socket-objects>`_
    for Python 2.

    This object should have the same API as the standard library socket linked to above. Not all
    methods are specifically documented here; when they are they may point out a difference
    to be aware of or may document a method the standard library does not.
    i    c         C@  s  | d  k r3 t | | | ƒ |  _ t j ƒ  |  _ n‚ t | d ƒ r‡ | j |  _ t | d t ƒ |  _ |  j t k rŸ t j ƒ  |  _ qŸ n | |  _ t j ƒ  |  _ t	 rµ |  j j
 ƒ  n  |  j j d ƒ |  j j ƒ  } t ƒ  |  _ |  j j j } | | d ƒ |  _ | | d ƒ |  _ d  S(   NR   t   timeouti    i   i   (   R   t   _realsocketR   t   _sockett   getdefaulttimeoutR;   t   hasattrt   getattrt   FalseR   R0   R   R
   t   get_hubt   hubt   loopt   iot   _read_eventt   _write_event(   R   t   familyt   typet   protoR   R
   RE   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   __init__y   s$    	c         C@  s,   d t  |  ƒ j t t |  ƒ ƒ |  j ƒ  f S(   Ns   <%s at %s %s>(   RI   R    t   hext   idt   _formatinfo(   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   __repr__‘   s    c         C@  s   d t  |  ƒ j |  j ƒ  f S(   Ns   <%s %s>(   RI   R    RN   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   __str__”   s    c         C@  s   y |  j  ƒ  } Wn t k
 r1 } t | ƒ } n Xy |  j ƒ  } d | } Wn t k
 re d  } n Xy |  j ƒ  } d | } Wn t k
 r™ d  } n Xd | } | d  k	 rÇ | d t | ƒ 7} n  | d  k	 rê | d t | ƒ 7} n  t |  d d  ƒ d  k	 r| d t |  j ƒ 7} n  | S(   Ns   %s:%ss	   fileno=%ss    sock=s    peer=R;   s	    timeout=(   R
   t	   Exceptiont   strR   R   R   R@   R;   (   R   R
   t   ext   socknamet   peernamet   result(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyRN   —   s,    


c         C@  s   |  j  j p |  j j S(   N(   RF   t   refRG   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   _get_ref°   s    c         C@  s   | |  j  _ | |  j _ d  S(   N(   RF   RW   RG   (   R   t   value(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   _set_ref³   s    c         C@  s¥   xv y |  j  j ƒ  \ } } PWnE t k
 rd } | j d t k sQ |  j d k rW ‚  n  t j ƒ  n X|  j |  j	 ƒ q Wt
 d | ƒ } t r› | j ƒ  n  | | f S(   Ni    g        R   (   R   t   acceptR+   R   t   EWOULDBLOCKR;   t   syst	   exc_cleart   _waitRF   R:   R   R/   (   R   t   client_sockett   addressRS   t   sockobj(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR[   »   s    "c         C@  sl   |  j  d  k	 r4 |  j j |  j  | t ƒ d  |  _  n  |  j d  k	 rh |  j j |  j | t ƒ d  |  _ n  d  S(   N(   RF   R   RC   t   cancel_waitt   TrueRG   (   R   t   cancel_wait_ex(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   Ê   s    c         C@  s6   |  j  ƒ  |  j } | ƒ  |  _ t r2 | j ƒ  n  d  S(   N(   R   R   R   R/   (   R   R*   t   s(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   Ó   s
    
	c         C@  s   t  |  j t ƒ S(   N(   t
   isinstanceR   R*   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   å   s    c         C@  s  |  j  d k r |  j j | ƒ St j |  j | ƒ } t j |  j  t  d ƒ ƒ } z¶ x¯ |  j j t t	 ƒ } | rˆ t
 | t | ƒ ƒ ‚ n  |  j j | ƒ } | s­ | t k r± PqU | t t t f k sØ | t k rë t rë |  j |  j ƒ qU t
 | t | ƒ ƒ ‚ qU WWd  | j ƒ  Xd  S(   Ng        s	   timed out(   R;   R   R   R   t   _resolve_addrR   t   _start_new_or_dummyR   t
   SOL_SOCKETt   SO_ERRORR+   t   strerrorR	   t   EISCONNR\   t   EINPROGRESSt   EALREADYt   EINVALt
   is_windowsR_   RG   R   (   R   Ra   t   timert   errRV   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   é   s     'c         C@  sb   y |  j  | ƒ p d SWnD t k
 r+ t St k
 r] } t | ƒ t k rW | j d S‚  n Xd  S(   Ni    (   R   R;   t   EAGAINR+   RI   R   (   R   Ra   RS   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR	   ÿ   s    c         C@  s   t  d |  j ƒ S(   s¡   dup() -> socket object

        Return a new socket object connected to the same system resource.
        Note, that the new socket does not inherit the timeout.R   (   R:   R   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   dup	  s    t   riÿÿÿÿc         C@  s;   t  t |  ƒ d |  ƒ | | ƒ } t r7 |  j j ƒ  n  | S(   NR   (   R   RI   R   R   R/   (   R   t   modet   bufsizet   fobj(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   makefile  s    !c         G@  sw   xp y |  j  j | Œ  SWnE t k
 r^ } | j d t k sK |  j d k rQ ‚  n  t j ƒ  n X|  j |  j	 ƒ q Wd  S(   Ni    g        (
   R   R3   R+   R   R\   R;   R]   R^   R_   RF   (   R   R   RS   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR3   #  s    "c         G@  sw   xp y |  j  j | Œ  SWnE t k
 r^ } | j d t k sK |  j d k rQ ‚  n  t j ƒ  n X|  j |  j	 ƒ q Wd  S(   Ni    g        (
   R   R6   R+   R   R\   R;   R]   R^   R_   RF   (   R   R   RS   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR6   .  s    "c         G@  sw   xp y |  j  j | Œ  SWnE t k
 r^ } | j d t k sK |  j d k rQ ‚  n  t j ƒ  n X|  j |  j	 ƒ q Wd  S(   Ni    g        (
   R   R7   R+   R   R\   R;   R]   R^   R_   RF   (   R   R   RS   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR7   8  s    "c         G@  sw   xp y |  j  j | Œ  SWnE t k
 r^ } | j d t k sK |  j d k rQ ‚  n  t j ƒ  n X|  j |  j	 ƒ q Wd  S(   Ni    g        (
   R   R4   R+   R   R\   R;   R]   R^   R_   RF   (   R   R   RS   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR4   B  s    "c         C@  sÒ   | t  k r |  j } n  y |  j j | | ƒ SWnœ t k
 rÍ } | j d t j k sc | d k ri ‚  n  t j	 ƒ  |  j
 |  j ƒ y |  j j | | ƒ SWqÎ t k
 rÉ } | j d t k rÃ d S‚  qÎ Xn Xd  S(   Ni    g        (   t   timeout_defaultR;   R   R2   R+   R   R   t
   GSENDAGAINR]   R^   R_   RG   R\   (   R   R'   t   flagsR;   RS   t   ex2(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR2   L  s    "
c         C@  s=   t  | t ƒ r | j ƒ  } n  t | ƒ } t j |  | | ƒ S(   N(   Rg   t   unicodet   encodeR)   R   t   _sendall(   R   R'   R}   t   data_memory(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   ]  s    c         G@  s´   y |  j  j | Œ  SWn™ t k
 r¯ } | j d t k sH |  j d k rN ‚  n  t j ƒ  |  j |  j	 ƒ y |  j  j | Œ  SWq° t k
 r« } | j d t k r¥ d S‚  q° Xn Xd  S(   Ni    g        (
   R   R5   R+   R   R\   R;   R]   R^   R_   RG   (   R   R   RS   R~   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR5   e  s    "
c         C@  s   | r d  |  _ n	 d |  _ d  S(   Ng        (   R   R;   (   R   t   flag(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   t  s    c         C@  sq   | d  k	 r` y | j } Wn t k
 r8 t d ƒ ‚ n X| ƒ  } | d k  r` t d ƒ ‚ q` n  | |  j d <d  S(   Ns   a float is requiredg        s   Timeout value out of rangeR;   (   R   t	   __float__t   AttributeErrorR%   t
   ValueErrort   __dict__(   R   t   howlongt   f(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   z  s    	c         C@  s   |  j  d S(   NR;   (   R‡   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   …  s    c         C@  sŠ   | d k r% |  j  j |  j t ƒ nQ | d k rJ |  j  j |  j t ƒ n, |  j  j |  j t ƒ |  j  j |  j t ƒ |  j j | ƒ d  S(   Ni    i   (   RC   Rc   RF   Re   RG   R   R   (   R   t   how(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   ˆ  s    c         C@  s
   |  j  j S(   N(   R   RH   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   <lambda>’  s    c         C@  s
   |  j  j S(   N(   R   RI   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR‹   “  s    c         C@  s
   |  j  j S(   N(   R   RJ   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR‹   ”  s    c         C@  s   |  j  j ƒ  S(   N(   R   R
   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR
   –  s    c         C@  s   |  j  j ƒ  S(   N(   R   R   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   ™  s    c         C@  s   |  j  j ƒ  S(   N(   R   R   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR   œ  s    s2   def %s(self, *args): return self._sock.%s(*args)

Nc         C@  s   |  j  j ƒ  d  S(   N(   R   R0   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR0   ©  s    c         C@  s   |  j  j ƒ  d  S(   N(   R   R/   (   R   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR/   ¬  s    (4   R    R!   t   __doc__t   AF_INETt   SOCK_STREAMR   RK   RO   RP   RN   RX   RZ   t   propertyRW   t   _wait_on_socketR_   R[   Re   R   R*   R   R   R   R	   Ru   Rz   R3   R6   R7   R4   R{   R2   R   R5   R   R   R   R   RH   RI   RJ   R
   R   R   t   _st   _mt   sett   _socketmethodst   localsR   R0   R/   (    (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR:   m   sT   									
			
	
	
					
			 	t
   socketpairt   AF_UNIXc         C@  sZ   t  j |  | | ƒ \ } } t d | ƒ t d | ƒ f } t rV | j ƒ  | j ƒ  n  | S(   NR   (   R=   R–   R:   R   R/   (   RH   RI   RJ   t   onet   twoRV   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyR–   ´  s    
t   fromfdc         C@  s>   t  j |  | | | ƒ } t d | ƒ } t r: | j ƒ  n  | S(   NR   (   R=   Rš   R:   R   R/   (   t   fdRH   RI   RJ   Rf   RV   (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyRš   Á  s
    t   sslc         C@  sA   d d l  m } t | d d  ƒ p. t | d ƒ } | |  | | ƒ S(   Ni    (   Rœ   t   wrap_sockett   sslwrap_simple(   t   geventRœ   R@   R   (   t   sockt   keyfilet   certfilet   _sslmodt   wrap(    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyRœ   Í  s    !N(-   RŒ   t
   __future__R    RŸ   R   t   gevent._utilR   t   gevent._compatR   t   gevent.timeoutR   t   globalst   __py3_imports__t   __extensions__t
   __socket__t   _implementst   __implements__t   __imports__t   it   __dns__R   R”   R…   t   objectR?   t   AssertionErrorR)   R*   R{   t   gevent._hub_primitivesR9   R   R:   t
   SocketTypeR=   R@   R   RŽ   R–   t   removeRš   R   Rœ   t   appendt   __all__(    (    (    s.   lib/python2.7/site-packages/gevent/_socket2.pyt   <module>   s\   			+						ÿ D
