File: //usr/lib/python3/dist-packages/urllib3/__pycache__/connection.cpython-310.pyc
o
    ��YhI  �                	   @   s  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ	 d dlm
Z d dlZd dl
mZ d dl
mZ ddlmZ z	d dlZejZW n eefy^   dZG d	d
� d
e�ZY nw zeZW n eyt   G dd� de�ZY nw zeZW n ey�   G d
d� de�ZY nw ddlmZ ddlm Z  ddl!m"Z"m#Z#m$Z$m%Z% ddl&m'Z'm(Z( ddl)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2 e�3e4�Z5ddd�Z6e�7ddd�Z8e�9d�Z:G dd� dee;�ZG dd� de�Z<dd � Z=d!d"� Z>G d#d$� d$e;�Z?es�e?Z<e<Z@dS )%�    )�absolute_importN)�error)�timeout)�HTTPConnection)�
HTTPException�   )�create_proxy_ssl_contextc                   @   �   e Zd ZdS )�BaseSSLErrorN��__name__�
__module__�__qualname__� r   r   �4/usr/lib/python3/dist-packages/urllib3/connection.pyr
      �    r
   c                   @   r	   )�ConnectionErrorNr   r   r   r   r   r   !   r   r   c                   @   r	   )�BrokenPipeErrorNr   r   r   r   r   r   *   r   r   )�HTTPHeaderDict��__version__)�ConnectTimeoutError�NewConnectionError�SubjectAltNameWarning�SystemTimeWarning)�CertificateError�match_hostname)�SKIP_HEADER�SKIPPABLE_HEADERS�
connection)�assert_fingerprint�create_urllib3_context�resolve_cert_reqs�resolve_ssl_version�ssl_wrap_socket�P   i�  )�http�httpsi�  �   z[^-!#$%&'*+.^_`|~0-9a-zA-Z]c                       s�   e Zd ZdZed ZejejdfgZ	dZ
dd� Zedd� �Z
e
jd	d� �Z
d
d� Zdd
� Zdd� Zdd� Zdd� Zdd� Zd� fdd�	Zddd�Z�  ZS )r   a5  
    Based on :class:`http.client.HTTPConnection` but provides an extra constructor
    backwards-compatibility layer between older and newer Pythons.
    Additional keyword parameters are used to configure attributes of the connection.
    Accepted parameters include:
    - ``strict``: See the documentation on :class:`urllib3.connectionpool.HTTPConnectionPool`
    - ``source_address``: Set the source address for the current connection.
    - ``socket_options``: Set specific options on the underlying socket. If not specified, then
      defaults are loaded from ``HTTPConnection.default_socket_options`` which includes disabling
      Nagle's algorithm (sets TCP_NODELAY to 1) unless the connection is behind a proxy.
      For example, if you wish to enable TCP Keep Alive in addition to the defaults,
      you might pass:
      .. code-block:: python
         HTTPConnection.default_socket_options + [
             (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
         ]
      Or you may want to disable the defaults by passing an empty list (e.g., ``[]``).
    r&