File: //lib/python3/dist-packages/sphinx/util/__pycache__/requests.cpython-310.pyc
o
$�a9 � @ sz d Z ddlZddlZddlmZ ddlmZmZmZ ddl m
Z
ddlZddlZddl
mZ ddlmZ zddlmZ W n eyK ddlmZ Y nw zdd lmZ W n eyq zdd lmZ W n eyn dZY nw Y nw d
gZdedefd
d�Zededed fdd��Zdededeeef fdd�Zdedefdd�Zdededejfdd�Zdededejfdd�Z dS )z�
sphinx.util.requests
~~~~~~~~~~~~~~~~~~~~
Simple requests package loader
:copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
� N)�contextmanager)�Any� Generator�Union)�urlsplit)�Config)�RemovedInSphinx50Warning)�SSLError)�InsecureRequestWarning)�
User-AgentzDMozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0�exc�returnc C s@ t �dt� t| t�r
dS t| dg �}|rt|d t�rdS dS )zCheck an exception is SSLError.z`is_ssl_error() is outdated and likely returns incorrect results for modern versions of Requests.T�argsr F)�warnings�warnr �
isinstancer �getattr)r r � r �6/usr/lib/python3/dist-packages/sphinx/util/requests.py�is_ssl_error- s �
r �kwargs)NNNc k sR � t �� � | �d�strt jdtd� d V W d � d S 1 s"w Y d S )N�verify�ignore)�category)r �catch_warnings�getr
�filterwarnings)r r r r �ignore_insecure_warning= s �
"�r �url�configc C s^ |j sdS t|dd�}|sdS t|ttf�r|S t| �d }d|v r)|�d�d }|�|d�S )z�Get additional CA cert for a specific URL.
This also returns ``False`` if verification is disabled.
And returns ``True`` if additional CA cert not found.
F�tls_cacertsNT� �@)�
tls_verifyr r �str�tupler �splitr )r r �certs�hostnamer r r �_get_tls_cacertF s r) c C sB | j r| j S d�dtj dtj dd�tttjd d� �� g�S )N� z Sphinx/%szrequests/%sz python/%s�.� ) �
user_agent�join�sphinx�__version__�requests�mapr$ �sys�version_info)r r r r �_get_user_agent\ s �r5 c K � |� di �}|�dd�}|r |� dt| |�� |� dt|�� n
|� dtd d � tdi |��� tj| fi |��W d � S 1 sEw Y dS ) zpSends a GET request like requests.get().
This sets up User-Agent header and TLS verification automatically.�headersr Nr r r r! r )�
setdefault�popr) r5 �useragent_headerr r1 r �r r r7 r r r r r g � $�r c K r6 ) zrSends a HEAD request like requests.head().
This sets up User-Agent header and TLS verification automatically.r7 r Nr r r r! r )r8 r9 r) r5 r: r r1 �headr; r r r r= w r<