
    F2j&                        d dl mZ d dlZd dlZej        r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mZ d%dZeddej        fd&dZd'dZd(d!Z G d" d#ej                  Zd)d$Z e            ZdS )*    )annotationsN   )_TYPE_SOCKET_OPTIONS_TYPE_TIMEOUT_INTERNAL)HTTPConnection)AsyncHTTPConnection)AsyncSocket   )_DEFAULT_TIMEOUTconn$HTTPConnection | AsyncHTTPConnectionreturnboolc                    | j          S )z
    Returns True if the connection is dropped and should be closed.
    :param conn: :class:`urllib3.connection.HTTPConnection` object.
    )is_connected)r   s    _/home/thesage/.hermes/hermes-agent/venv/lib/python3.11/site-packages/urllib3/util/connection.pyis_connection_droppedr      s            addresstuple[str, int]timeoutr   source_addresstuple[str, int] | Nonesocket_options_TYPE_SOCKET_OPTIONS | Nonesocket_kindsocket.SocketKindsocket.socketc                    ddl m} |                    d                                                              | ||||          S )ak  Connect to *address* and return the socket object.

    Convenience function.  Connect to *address* (a 2-tuple ``(host,
    port)``) and return the socket object.  Passing the optional
    *timeout* parameter will set the timeout on the socket instance
    before attempting to connect.  If no *timeout* is supplied, the
    global default timeout setting returned by :func:`socket.getdefaulttimeout`
    is used.  If *source_address* is set it must be a tuple of (host, port)
    for the socket to bind as a source address before making the connection.
    An host of '' or port 0 tells the OS to use the default.
    r   )ResolverDescriptionz	system://)r   r   r   r   )contrib.resolverr    from_urlnewcreate_connection)r   r   r   r   r   r    s         r   r$   r$      s[    $ 766666 	$$[11			))# 
 

 


r   socksocket.socket | AsyncSocketoptionsNonec                   |d S |D ]}t          |          dk    r | j        t          j        k    r | j        |  5t          |          dk    ru|d                                         }|dk    r(| j        t          j        k    r | j        |d d           |dk    r'| j        t          j        k    r | j        |d d           d S )N      tcpudp)lentypesocketSOCK_STREAM
setsockoptlower
SOCK_DGRAM)r%   r'   optprotocols       r   _set_socket_optionsr7   ;   s      * *s88q==TY&*<<<DOS!!!XX]]FLLNNH5  TY&2D%D%DRaR)))U""tyF4E'E'ERaR))* *r   socket.AddressFamilyc                 D    t           j        } t          rt           j        } | S )zThis function is designed to work in the context of
    getaddrinfo, where family=socket.AF_UNSPEC is the default and
    will perform a DNS search for both IPv6 and IPv4 records.)r0   AF_INETHAS_IPV6	AF_UNSPEC)familys    r   allowed_gai_familyr>   L   s     
 ^F "!Mr   c                  $     e Zd ZdZd fdZ xZS )_with_attr_sockz<socket.socket subclass that carries extra protocol metadata.r   r(   c                H    d | _          t                      j        |i | d S )N)_ech_configsuper__init__)selfargskwargs	__class__s      r   rD   z_with_attr_sock.__init__Z   s-    )-$)&)))))r   )r   r(   )__name__
__module____qualname____doc__rD   __classcell__)rH   s   @r   r@   r@   W   sC        FF* * * * * * * * * *r   r@   c                     d} d}t           j        rB	 t          t           j                  } |                     d           d}n# t
          $ r Y nw xY w| r|                                  |S )z4Returns True if the system can bind an IPv6 address.NF)z::1r   T)r0   has_ipv6r@   AF_INET6bind	Exceptionclose)r%   rO   s     r   	_has_ipv6rT   _   s    DH 	"6?33DIIj!!!HH 	 	 	D	  

Os   0A 
AA)r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r%   r&   r'   r   r   r(   )r   r8   )r   r   )
__future__r   r0   typingTYPE_CHECKING_typingr   r   
connectionr   _async.connectionr   contrib.ssar	   r   r   r   r1   r$   r7   r>   r@   rT   r;    r   r   <module>r]      sL   " " " " " "  	 *FFFFFFFF++++++777777)))))) % % % % % %! ! ! ! '7-126%+%7    B* * * *"   * * * * *fm * * *   . 9;;r   