
    Lg%                         d dl mZ d dlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZ d	 Zej        ddfd
Zd Zd Zd Z ed          ZdS )    )absolute_importN   )_appengine_environ)LocationParseError)six   )NoWayToWaitForSocketErrorwait_for_readc                 ~    t          | dd          }|du rdS |dS 	 t          |d          S # t          $ r Y dS w xY w)a$  
    Returns True if the connection is dropped and should be closed.

    :param conn:
        :class:`http.client.HTTPConnection` object.

    Note: For platforms like AppEngine, this will always return ``False`` to
    let the platform handle connection recycling transparently for us.
    sockFNTg        )timeout)getattrr
   r	   )connr   s     _/var/www/html/4nations/venv/lib/python3.11/site-packages/pip/_vendor/urllib3/util/connection.pyis_connection_droppedr      sg     4''Du}}u|tT3////$   uus   . 
<<c                    | \  }}|                     d          r|                    d          }d}t                      }	 |                    d           n5# t          $ r( t          j        t          d|z            d          cY S w xY wt          j	        |||t          j
                  D ]}|\  }	}
}}}d}	 t          j        |	|
|          }t          ||           |t          j        ur|                    |           |r|                    |           |                    |           |c S # t          j        $ r$}|}||                                 d}Y d}~d}~ww xY w||t          j        d          )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.
    [z[]Nidnaz'%s', label empty or too longz!getaddrinfo returns an empty list)
startswithstripallowed_gai_familyencodeUnicodeErrorr   
raise_fromr   socketgetaddrinfoSOCK_STREAM_set_socket_options_GLOBAL_DEFAULT_TIMEOUT
settimeoutbindconnecterrorclose)addressr   source_addresssocket_optionshostporterrfamilyresafsocktypeproto	canonnamesar   es                   r   create_connectionr3   %   s   $ JD$s  zz$
C
  !!F
F 
 
 
~?$FGG
 
 	
 	
 	


 !$ff6HII  -0*HeY	=Xu55D  n555f<<<((( *		.)))LLKKK| 	 	 	C

		 	
,:
;
;;s+   A /B	B	:A6D33E&E!!E&c                 ,    |d S |D ]} | j         |  d S )N)
setsockopt)r   optionsopts      r   r   r   d   s7           c                  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.)r   AF_INETHAS_IPV6	AF_UNSPEC)r+   s    r   r   r   l   s     
 ^F "!Mr8   c                    d}d}t          j                    rdS t          j        rI	 t          j        t          j                  }|                    | df           d}n# t          $ r Y nw xY w|r|                                 |S )z4Returns True if the system can bind an IPv6 address.NFr   T)r   is_appengine_sandboxr   has_ipv6AF_INET6r!   	Exceptionr$   )r(   r   r?   s      r   	_has_ipv6rB   w   s    DH .00 u 	=11DIItQi   HH 	 	 	D	  

Os   7A 
A,+A,z::1)
__future__r   r   contribr   
exceptionsr   packagesr   waitr	   r
   r   r   r3   r   r   rB   r;    r8   r   <module>rI      s    & & & & & &  ( ( ( ( ( ( + + + + + +       : : : : : : : :  8 *	<< << << <<~      < 9Ur8   