ó
ÐH/\c           @   s  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 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
 d  d l  m Z d  d l m Z d  d l m Z g  Z d „  Z e e e e e f ƒ ƒ Z d „  Z d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   gaierror(   t   error(   t   getservbyname(   t   getaddrinfo(   t   SOCK_STREAM(   t
   SOCK_DGRAM(   t   SOL_TCP(   t   AI_CANONNAME(   t   EAI_SERVICE(   t   AF_INET(   t
   AI_PASSIVE(   t   string_types(   t   integer_typesc         C   s  g  } t  |  t ƒ r˜y t |  ƒ }  Wq×t k
 r”yñ | d k rÚ |  } y  t |  d ƒ }  | j t ƒ Wn- t k
 r™ t |  d ƒ }  | j t ƒ q%Xy) |  t | d ƒ k rÂ | j t ƒ n  Wq%t k
 rÖ q%XnK | t k rø t |  d ƒ }  n- | t k rt |  d ƒ }  n t	 t
 d ƒ ‚ Wq•t k
 rq} d t | ƒ k r\t	 t
 d ƒ ‚ q‘t	 t | ƒ ƒ ‚ q•t k
 rt d |  ƒ ‚ q•Xq×Xn? |  d  k r­d }  n* t  |  t ƒ r¿n t d |  t |  ƒ ƒ ‚ t |  d ƒ }  | r| r| j | ƒ n  |  | f S(   Ni    t   tcpt   udps&   Servname not supported for ai_socktypes	   not founds   Int or String expectedi   (   t
   isinstanceR   t   intt
   ValueErrorR   t   appendR   R   R   R    R   t   strt   UnicodeEncodeErrort   NoneR   t   type(   t   portt   socktypet	   socktypest   origportt   ex(    (    s7   lib/python2.7/site-packages/gevent/resolver/__init__.pyt   _lookup_port   sN    	c         C   s‡   t  |  t ƒ s+ t d t |  ƒ f ƒ ‚ n  |  d k rƒ t d  d | t d t ƒ } t | ƒ d k rs t	 d ƒ ‚ n  | d d d S|  S(   Ns2   argument 1 must be str, bytes or bytearray, not %st    i    i   s%   wildcard resolved to multiple addressi   (
   R   t   hostname_typest	   TypeErrorR   R   R   R   R
   t   lenR   (   t   hostnamet   familyt   result(    (    s7   lib/python2.7/site-packages/gevent/resolver/__init__.pyt   _resolve_specialF   s    t   AbstractResolverc           B   s>   e  Z e d  „ Z e d „ Z d d d d d „ Z d „  Z RS(   c         C   s'   t  | | ƒ } |  j | | ƒ d d S(   Niÿÿÿÿi    (   R$   t   gethostbyname_ex(   t   selfR!   R"   (    (    s7   lib/python2.7/site-packages/gevent/resolver/__init__.pyt   gethostbynameT   s    c         C   sw   |  j  | | ƒ } g  } |  j | d | t t t ƒ } | d d } x# | D] } | j | d d ƒ qK W| | | f S(   Ni    i   i   (   t   _getaliasesR   R   R   R   R   (   R'   R!   R"   t   aliasest	   addressest   tuplest	   canonicalt   item(    (    s7   lib/python2.7/site-packages/gevent/resolver/__init__.pyR&   X   s    i    c         C   s   t  ƒ  ‚ d  S(   N(   t   NotImplementedError(   R'   t   hostR   R"   R   t   protot   flags(    (    s7   lib/python2.7/site-packages/gevent/resolver/__init__.pyR   d   s    c         C   s   g  S(   N(    (   R'   R!   R"   (    (    s7   lib/python2.7/site-packages/gevent/resolver/__init__.pyR)   g   s    (   t   __name__t
   __module__R	   R(   R&   R   R)   (    (    (    s7   lib/python2.7/site-packages/gevent/resolver/__init__.pyR%   R   s   N(   t   _socketR    R   R   R   R   R   R   R   R   R	   R
   t   gevent._compatR   R   t   __all__R   t   tuplet   sett	   bytearrayt   bytesR   R$   t   objectR%   (    (    (    s7   lib/python2.7/site-packages/gevent/resolver/__init__.pyt   <module>   s"   	.	