
    R?g                     v   S r SSKrSSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
rSSKrSSKrSSKrSSKJrJr  SSKJr  SSKJr  SSKJr  SSKr\R0                  (       a  SS	KJrJrJrJr   " S
 S\5      rSS jr\" \R@                  S5      (       a(  \R@                  RC                  \5      S\S\4S j5       r"gg)z1Bridges between the Twisted package and Tornado.
    N)Deferred)failure)Futurefuture_set_exc_info)utf8)gen)Resolver)	GeneratorAnyListTuplec            
       `    \ rS rSrSrSS jr\R                   SS\S\	S\	SS	4S
 jj5       r
Srg)TwistedResolver'   a  Twisted-based asynchronous resolver.

This is a non-blocking and non-threaded resolver.  It is
recommended only when threads cannot be used, since it has
limitations compared to the standard ``getaddrinfo``-based
`~tornado.netutil.Resolver` and
`~tornado.netutil.DefaultExecutorResolver`.  Specifically, it returns at
most one result, and arguments other than ``host`` and ``family``
are ignored.  It may fail to resolve when ``family`` is not
``socket.AF_UNSPEC``.

Requires Twisted 12.1 or newer.

.. versionchanged:: 5.0
   The ``io_loop`` argument (deprecated since version 4.1) has been removed.

.. deprecated:: 6.2
   This class is deprecated and will be removed in Tornado 7.0. Use the default
   thread-based resolver instead.
returnNc                    [         R                  R                  R                  5       U l        [         R
                  R                  R                  S5      n[         R
                  R                  R                  U R                  S9n[         R
                  R                  R                  SU R                  S9n[         R
                  R                  R                  XU/5      U l        g )Nz
/etc/hosts)reactorz/etc/resolv.conf)twistedinternetasyncioreactorAsyncioSelectorReactorr   nameshostsr	   cacheCacheResolverclientresolveResolverChainresolver)selfhost_resolvercache_resolverreal_resolvers       :/usr/lib/python3/dist-packages/tornado/platform/twisted.py
initializeTwistedResolver.initialize=   s     ''66MMO++44\B ,,::4<<:P,,55 6 
  --;;M:
    hostportfamilyz*Generator[Any, Any, List[Tuple[int, Any]]]c              #   4  #    [         R                  R                  R                  U5      (       a  Un[        R
                  nGON[         R                  R                  R                  U5      (       a  Un[        R                  nGOU R                  R                  [        U5      5      n[        5       nUR                  UR                  5        Uv n[        U[        R                   5      (       a   UR#                  5         O[         R                  R                  R                  U5      (       a  [        R
                  nOO[         R                  R                  R                  U5      (       a  [        R                  nO[        R,                  nU[        R,                  :w  a  UW:w  a  [/        SX54-  5      e[0        R2                  " [4        W5      XB44/n	U	$ ! [         R$                  R&                  R(                   a  n[+        U5      eS nAff = f7f)Nz%Requested socket family %d but got %d)r   r   abstractisIPAddresssocketAF_INETisIPv6AddressAF_INET6r   getHostByNamer   r   addBoth
set_result
isinstancer   FailureraiseExceptionr   errorDomainErrorIOError	AF_UNSPEC	Exceptiontypingcastint)
r    r(   r)   r*   resolvedresolved_familydeferredfuteresults
             r$   r   TwistedResolver.resolveK   s     $$0066H$nnO&&44T::H$ooO}}224:>H(CS^^, yH(GOO44%++- !!**66x@@"(..!!**88BB"(//"("2"2V%%%&O*C76:SS  ;;sO4x6FGH }}**66 %!!*$%s+   C1H4G CH(HHHH)r   r   r   N)r   )__name__
__module____qualname____firstlineno____doc__r%   r   	coroutinestrr?   r   __static_attributes__ r'   r$   r   r   '   sG    *
 	]]23  " ,/ 	5   r'   r   r   c                      SSK Jn   U " 5         g)a[  Install ``AsyncioSelectorReactor`` as the default Twisted reactor.

.. deprecated:: 5.1

   This function is provided for backwards compatibility; code
   that does not require compatibility with older versions of
   Tornado should use
   ``twisted.internet.asyncioreactor.install()`` directly.

.. versionchanged:: 6.0.3

   In Tornado 5.x and before, this function installed a reactor
   based on the Tornado ``IOLoop``. When that reactor
   implementation was removed in Tornado 6.0.0, this function was
   removed as well. It was restored in Tornado 6.0.3 using the
   ``asyncio`` reactor instead.

r   installN)twisted.internet.asyncioreactorrS   rR   s    r$   rS   rS   o   s    & 8Ir'   registerdc                    ^ [        5       mS[        R                  SS 4U4S jjnU R                  TR                  U5        T$ )Nr   r   c                    >  U R                   " 5         [        S5      e!   [        T[        R                  " 5       5         g = f)Nzerrback called without error)r7   r<   r   sysexc_info)r   fs    r$   errback_.<locals>.errback   s7    7&&( >??7#As||~6s	    !A)r   r   r6   addCallbacksr4   )rV   r\   r[   s     @r$   _r_      s:    H	7W__ 	7 	7 	
q||W-r'   rG   )#rL   r.   rY   twisted.internet.abstractr   rT   twisted.internet.deferr   twisted.pythonr   twisted.names.cachetwisted.names.clienttwisted.names.hoststwisted.names.resolvetornado.concurrentr   r   tornado.escaper   tornador   tornado.netutilr	   r=   TYPE_CHECKINGr
   r   r   r   r   rS   hasattrconvert_yieldedrU   r_   rP   r'   r$   <module>rn      s     
   & + "     ;   $ 	22Eh EP0 3
++!!(+X &  , ,r'   