o $a9 @szdZddlZddlZddlmZddlmZmZmZddl m Z ddl Z ddl Z ddl mZddlmZzddlmZWneyKddlmZYnwzdd lmZWneyqzdd lmZWn eyndZYnwYnwd gZd ed efd dZeded edfddZdeded eeeffddZded efddZdeded e jfddZdeded e jfddZ 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 GeneratorUnion)urlsplit)Config)RemovedInSphinx50Warning)SSLError)InsecureRequestWarning) User-AgentzDMozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0excreturncCs@tdtt|tr dSt|dg}|rt|dtrdSdS)zCheck an exception is SSLError.z`is_ssl_error() is outdated and likely returns incorrect results for modern versions of Requests.TargsrF)warningswarnr isinstancer getattr)r rr6/usr/lib/python3/dist-packages/sphinx/util/requests.py is_ssl_error-s  rkwargs)NNNcksRt|dstrtjdtddVWddS1s"wYdS)Nverifyignore)category)rcatch_warningsgetr filterwarnings)rrrrignore_insecure_warning=s  "rurlconfigcCs^|jsdSt|dd}|sdSt|ttfr|St|d}d|vr)|dd}||dS)zGet 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_verifyrrstrtuplersplitr)rrcertshostnamerrr_get_tls_cacertFs   r)c CsB|jr|jSddtjdtjddtttjddgS)N z Sphinx/%sz requests/%sz python/%s.) user_agentjoinsphinx __version__requestsmapr$sys version_info)rrrr_get_user_agent\sr5cK|di}|dd}|r |dt|||dt|n |dtddtdi|tj|fi|WdS1sEwYdS) zpSends a GET request like requests.get(). This sets up User-Agent header and TLS verification automatically.headersrNrr rr!r) setdefaultpopr)r5useragent_headerrr1rrrr7rrrrrg  $rcKr6) zrSends a HEAD request like requests.head(). This sets up User-Agent header and TLS verification automatically.r7rNrr rr!r)r8r9r)r5r:rr1headr;rrrr=wr<r=)!__doc__r3r contextlibrtypingrrr urllib.parserr1r/ sphinx.configrsphinx.deprecationr$requests.packages.urllib3.exceptionsr ImportErrorurllib3.exceptionsr r: Exceptionboolrrr$r)r5Responserr=rrrrsB