a
���f2� � @ s� d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm Z
ddlmZm
Z
mZmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! ddl"m#Z# dd l$m%Z% dd
l&m'Z' ddl(m)Z) ddl*m+Z+ dd
l,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z=m>Z> ddl<m?Z@ ddl<mAZAmBZB e#jCjDZDe�EeF�ZGeH� ZIG dd� deH�ZJejKejLhZMG dd� deJe+�ZNG dd� deN�ZOdd� ZPd d!� Z?dS )"� )�absolute_importN)�error��timeout� )�BaseSSLError�BrokenPipeError�DummyConnection�HTTPConnection�
HTTPException�HTTPSConnection�VerifiedHTTPSConnection�port_by_scheme)
�ClosedPoolError�EmptyPoolError�HeaderParsingError�HostChangedError�InsecureRequestWarning�LocationValueError�
MaxRetryError�NewConnectionError�
ProtocolError�
ProxyError�ReadTimeoutError�SSLError�TimeoutError)�six)�queue)�CertificateError)�HTTPHeaderDict)�RequestMethods)�HTTPResponse)�is_connection_dropped)�connection_requires_http_tunnel)� LifoQueue)�set_file_position)�assert_header_parsing)�Retry)�Timeout)�Url�_encode_target)�_normalize_host)�get_host� parse_urlc @ sB e Zd ZdZdZeZd
dd�Zdd� Zdd� Z d d
� Z
dd� ZdS )�ConnectionPoola;
Base class for all connection pools, such as
:class:`.HTTPConnectionPool` and :class:`.HTTPSConnectionPool`.
.. note::
ConnectionPool.urlopen() does not normalize or percent-encode target URIs
which is useful if your target server doesn't support percent-encoded
target URIs.
Nc C s0 |st d��t|| jd�| _|�� | _|| _d S )NzNo host specified.��scheme)r r+ r0 �host�lower�_proxy_host�port)�selfr1 r4 � r6 �:/usr/lib/python3.9/site-packages/urllib3/connectionpool.py�__init__K s
zConnectionPool.__init__c C s dt | �j| j| jf S )Nz%s(host=%r, port=%r))�type�__name__r1 r4 �r5 r6 r6 r7 �__str__S s zConnectionPool.__str__c C s | S �Nr6 r; r6 r6 r7 � __enter__V s zConnectionPool.__enter__c C s | � � dS )NF)�close)r5 �exc_typeZexc_valZexc_tbr6 r6 r7 �__exit__Y s zConnectionPool.__exit__c C s dS )�D
Close all pooled connections and disable the pool.
Nr6 r; r6 r6 r7 r? ^ s zConnectionPool.close)N)r: �
__module__�__qualname__�__doc__r0 r$ �QueueClsr8 r<