o ai8 @ s d dl mZ d dlZd dlmZ ddlmZ ddlmZ ddl m Z mZ d d Zej ddfddZd d Zdd Zdd ZedZdS ) )absolute_importN)LocationParseError )_appengine_environ)six )NoWayToWaitForSocketError wait_for_readc C sH t | dd}|du rdS |du rdS zt|ddW S ty# Y dS 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 r /builddir/build/BUILDROOT/alt-python310-pip-21.3.1-5.el8.x86_64/opt/alt/python310/lib/python3.10/site-packages/pip/_vendor/urllib3/util/connection.pyis_connection_dropped s r c C s( | \}}| dr|d}d}t }z|d W n ty- ttd| d Y S w t |||tj D ]Q}|\} } }}} d}z't| | |}t|| |tjurY| | |r`|| || |W S tjy } z|}|dur~| d}W Y d}~q7d}~ww |dur|td)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[]Nidnaz'%s', label empty or too longz!getaddrinfo returns an empty list) startswithstripallowed_gai_familyencodeUnicodeErrorr raise_fromr socketgetaddrinfoSOCK_STREAM_set_socket_options_GLOBAL_DEFAULT_TIMEOUT settimeoutbindconnecterrorclose)addressr source_addresssocket_optionshostporterrfamilyresafsocktypeproto canonnamesar er r r create_connection&