o
    ÑtPf·	  ã                   @   s2   d Z ddlZddlmZ dgZG dd„ deƒZdS )z(
Native thread-based hostname resolver.
é    N)Úget_hubÚResolverc                   @   sR   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )r   a¹  
    Implementation of the resolver API using native threads and native resolution
    functions.

    Using the native resolution mechanisms ensures the highest
    compatibility with what a non-gevent program would return
    including good support for platform specific configuration
    mechanisms. The use of native (non-greenlet) threads ensures that
    a caller doesn't block other greenlets.

    This implementation also has the benefit of being very simple in comparison to
    :class:`gevent.resolver_ares.Resolver`.

    .. tip::

        Most users find this resolver to be quite reliable in a
        properly monkey-patched environment. However, there have been
        some reports of long delays, slow performance or even hangs,
        particularly in long-lived programs that make many, many DNS
        requests. If you suspect that may be happening to you, try the
        dnspython or ares resolver (and submit a bug report).
    Nc                 C   s@   |d u rt ƒ }|j| _tj|jvr| jtjtjf7  _d S d S ©N)r   Ú
threadpoolÚpoolÚ_socketÚgaierrorÚ	NOT_ERRORÚherror)ÚselfÚhub© r   úW/var/www/html/humari/django-venv/lib/python3.10/site-packages/gevent/resolver/thread.pyÚ__init__$   s   ýzResolver.__init__c                 C   s"   dt | ƒjt | ƒjt| ƒ| jf S )Nz<%s.%s at 0x%x pool=%r>)ÚtypeÚ
__module__Ú__name__Úidr   ©r   r   r   r   Ú__repr__-   s   

þzResolver.__repr__c                 C   s   d S r   r   r   r   r   r   Úclose2   s   zResolver.closec                 G   ó   | j  tj|¡S r   )r   Úapplyr   Úgethostbyname©r   Úargsr   r   r   r   8   ó   zResolver.gethostbynamec                 G   r   r   )r   r   r   Úgethostbyname_exr   r   r   r   r   ;   r   zResolver.gethostbyname_exc                 O   ó   | j  tj||¡S r   )r   r   r   Úgetaddrinfo©r   r   Úkwargsr   r   r   r   >   ó   zResolver.getaddrinfoc                 O   r   r   )r   r   r   Úgethostbyaddrr    r   r   r   r#   A   r"   zResolver.gethostbyaddrc                 O   r   r   )r   r   r   Úgetnameinfor    r   r   r   r$   D   r"   zResolver.getnameinfor   )r   r   Ú__qualname__Ú__doc__r   r   r   r   r   r   r#   r$   r   r   r   r   r      s    
	)r&   r   Ú
gevent.hubr   Ú__all__Úobjectr   r   r   r   r   Ú<module>   s
   