
    <OOf                     ^   d Z ddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
ZddlZddlZddlZddlmZmZ ddlmZ ddlmZ ddlmZ ddlZej0                  rdd	lmZmZmZmZ  G d
 de      ZddZ eej@                  d      r'ej@                  jC                  e      dedefd       Z"yy)z1Bridges between the Twisted package and Tornado.
    N)Deferred)failure)Futurefuture_set_exc_info)utf8)gen)Resolver)	GeneratorAnyListTuplec            
       R    e Zd ZdZd
dZej                  	 ddedededdfd	       Z	y)TwistedResolvera  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                    t         j                  j                  j                         | _        t         j
                  j                  j                  d      }t         j
                  j                  j                  | j                        }t         j
                  j                  j                  d| j                        }t         j
                  j                  j                  |||g      | _        y )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       Y/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/tornado/platform/twisted.py
initializezTwistedResolver.initialize=   s     ''66MMO++44\B ,,::4<<:P,,55 6 
  --;;NM:
    hostportfamilyz*Generator[Any, Any, List[Tuple[int, Any]]]c              #     K   t         j                  j                  j                  |      r|}t        j
                  }n9t         j                  j                  j                  |      r|}t        j                  }n| j                  j                  t        |            }t               }|j                  |j                         |}t        |t        j                         r	 |j#                          nt         j                  j                  j                  |      rt        j
                  }nJt         j                  j                  j                  |      rt        j                  }nt        j,                  }|t        j,                  k7  r|k7  rt/        d||fz        t1        j2                  t4              ||ffg}	|	S # t         j$                  j&                  j(                  $ r}t+        |      d }~ww xY ww)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   zTwistedResolver.resolveK   s     $$006H$nnO&&44T:H$ooO}}224:>H(CS^^, yH(GOO4%++- !!**66x@"(..!!**88B"(//"("2"2V%%%&O*C76?:SS  ;;sO4x6FGH }}**66 %!!*$%s+   C!G<$G 4CG<'G9)G44G99G<r   N)r   )
__name__
__module____qualname____doc__r$   r   	coroutinestrr=   r    r%   r#   r   r   '   sG    *
 	]]23  " ,/ 	5   r%   r   r   c                      ddl m}   |         y)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.asyncioreactorrN   rM   s    r#   rN   rN   o   s    & 8Ir%   registerdc                     t               dt        j                  dd ffd}| j                  j                  |       S )Nr   r   c                     	  | j                           t        d      #  t        t        j                                Y y xY w)Nzerrback called without error)r5   r:   r   sysexc_info)r   fs    r#   errbackz_.<locals>.errback   s9    7&&&( >??7#As||~6s	     A)r   r   r4   addCallbacksr2   )rQ   rW   rV   s     @r#   _rY      s:    H	7W__ 	7 	7 	
q||W-r%   rD   )#rH   r,   rT   twisted.internet.abstractr   rO   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   rN   hasattrconvert_yieldedrP   rY   rK   r%   r#   <module>rh      s     
   & + "     ;   $ 	22Eh EP0 3
+!!(+X &  , ,r%   