
    V|h<                       S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrSSK	J
r
JrJr  SSKJrJrJr  SSKJrJr  \c  \" S5      e\c  \" S5      e\" S	 \R,                  R/                  S
5       5       5      r\S:  a  \R,                   S3\l        \" S5      e\R4                  S:  a  \R,                   S3\l        \" S5      eS SKrS SKrS SKrS SKrS SKrSSK J!r!J"r"J#r#J$r$J%r%J&r&  SSK'J(r(J)r)J*r*J+r+J,r,  SSK-J.r.J/r/J0r0J1r1J2r2J3r3J4r4  SSK5J1r6  SS/r7\
b  \7Rq                  S5          " S S5      r9S SK:r\;" \Rx                  Rz                  S5      (       a@  \9" \Rx                  Rz                  R|                  5      \Rx                  Rz                  l>        O\R~                  " S\" 5       -   5        \\R                  l         " S S\*5      rA " S S\R                  R                  5      rC " S  S!\R                  R                  5      rF " S" S#\R                  5      rH " S$ S%\R                  5      rJ\, " S& S'\)\!5      5       rK\+" \K5      S( 5       rL " S) S*\R                  R                  5      rO " S+ S,\O\R                  R                  5      rQ " S- S.\R                  5      rS " S/ S0\R                  5      rU " S1 S2\R                  5      rW\W\R                  lX        g)3    )annotationsN   )brotlirequestsurllib3)bug_reports_messageint_or_nonevariadic)normalize_urlselect_proxyz requests module is not installedzurllib3 module is not installedc              #  6   #    U  H  n[        US S9v   M     g7f)r   )defaultN)r	   ).0xs     U/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/networking/_requests.py	<genexpr>r      s     Z;YaAq1;Ys   .)r   r   r   z (unsupported)z"Only urllib3 >= 2.0.2 is supportedi2 z$Only requests >= 2.32.2 is supported   )InstanceStoreMixinadd_accept_encoding_headercreate_connectioncreate_socks_proxy_socketget_redirect_methodmake_socks_proxy_opts)FeaturesRequestHandlerResponseregister_preferenceregister_rh)CertificateVerifyError	HTTPErrorIncompleteRead
ProxyErrorRequestErrorSSLErrorTransportError)r#   gzipdeflatebrc                  *    \ rS rSrSS jrS rS rSrg)Urllib3PercentREOverrideW   c                    Xl         g Nre)selfrs     r   __init__!Urllib3PercentREOverride.__init__X   s        c                8    U R                   R                  U5      $ r.   )r0   __getattribute__)r1   items     r   __getattr__$Urllib3PercentREOverride.__getattr__\   s    ww''--r5   c                J    X R                   R                  " X/UQ70 UD6S   4$ )Nr   )r0   subn)r1   replstringargskwargss        r   r<   Urllib3PercentREOverride.subn_   s'    ww||DB4B6B1EEEr5   r/   N)r2   z
re.Pattern)__name__
__module____qualname____firstlineno__r3   r9   r<   __static_attributes__ r5   r   r+   r+   W   s    .Fr5   r+   _PERCENT_REzBFailed to patch _PERCENT_RE in urllib3 (does the attribute exist?)c                  :   ^  \ rS rSrSU 4S jjrSSS jjrSrU =r$ )RequestsResponseAdapters   c                   > [         TU ]  UR                  UR                  UR                  UR
                  UR                  S9  Xl        g )N)fpheadersurlstatusreason)superr3   rawrN   rO   status_coderQ   _requests_response)r1   res	__class__s     r   r3    RequestsResponseAdapter.__init__t   s=    ww??3:: 	 	7 #&r5   c                     UcE  [         R                  " U R                  R                  SSS9nSR	                  [        US5      5      $ U R                  R                  USS9$ ! [        R                  R                   a  n[        US9UeS nAf[        R                  R                   a  n[        S UR                  UR                  /[        UR                  5      Q7 5       S 5      nUbT  [        UR                  [         5      (       a  UR                  O[#        UR                  5      n[%        XTR&                  S9Ue[)        US9UeS nAf[        R                  R*                   a  n[)        US9UeS nAff = f)Ni   T)decode_contentr5   causec              3  |   #    U  H2  n[        U[        R                  R                  5      (       d  M.  Uv   M4     g 7fr.   )
isinstancehttpclientr"   )r   errs     r   r   /RequestsResponseAdapter.read.<locals>.<genexpr>   s.      A OsDKK$>$>?  Os   -<	<)partialexpected)	functoolsrc   rM   readjoiniterr   
exceptionsr%   ProtocolErrornext__context__	__cause__r
   r?   r^   intlenr"   rd   r&   r!   )r1   amt
read_chunkeir_errrc   s         r   rf   RequestsResponseAdapter.read{   sD   	1 {&..tww||WUYZ
xxZ 56677<<D<99 !!** 	+#*!!// 	1 A Ohqvv>N O ABFHF ! -7v~~s,K,K&..QTU[UcUcQd$WOUVV q)q0!!++ 	1 q)q0	1s7   AA$ 
A$ $E=
B!E=-B E!E=.
E88E=)rU   )rV   zrequests.models.Responser.   )rp   z
int | None)rB   rC   rD   rE   r3   rf   rF   __classcell__rW   s   @r   rJ   rJ   s   s    &1 1r5   rJ   c                  T   ^  \ rS rSrSU 4S jjrU 4S jrU 4S jrS rS	S jrSr	U =r
$ )
RequestsHTTPAdapter   c                   > 0 U l         U(       a  XR                   S'   U(       a  US4U R                   S'   U=(       d    UU l        [        TU ]  " S0 UD6  g )Nssl_contextr   source_addressrG   )_pm_args_proxy_ssl_contextrR   r3   )r1   r{   proxy_ssl_contextr|   r@   rW   s        r   r3   RequestsHTTPAdapter.__init__   sM    +6MM-(/=q.ADMM*+"3"B{"6"r5   c                <   > [         TU ]  " U0 UDU R                  D6$ r.   )rR   init_poolmanagerr}   )r1   r?   r@   rW   s      r   r   $RequestsHTTPAdapter.init_poolmanager   s!    w'II4==IIr5   c                   > 0 nUR                  5       R                  S5      (       d   U R                  (       a  U R                  US'   [        TU ]  " U40 UDU R
                  DUD6$ )Nsocksr   )lower
startswithr~   rR   proxy_manager_forr}   )r1   proxyproxy_kwargsextra_kwargsrW   s       r   r   %RequestsHTTPAdapter.proxy_manager_for   s\    {{}''00T5L5L040G0GL,-w(`,`$--`S_``r5   c                     g r.   rG   )r?   r@   s     r   cert_verifyRequestsHTTPAdapter.cert_verify   s    r5   c                    [         R                  R                  UR                  5      R                  nU R                  n[        XS5      =n(       a  U R                  U5      nUR                  U5      $ r.   )r   util	parse_urlrO   poolmanagerr   r   connection_from_url)r1   requestverifyproxiescertrO   managerr   s           r   get_connection_with_tls_context3RequestsHTTPAdapter.get_connection_with_tls_context   s\    ll$$W[[155"" ..5.,,U3G**3//r5   )r}   r~   )NNN)NN)rB   rC   rD   rE   r3   r   r   r   r   rF   ru   rv   s   @r   rx   rx      s#    #Ja0 0r5   rx   c                  2   ^  \ rS rSrSrS rU 4S jrSrU =r$ )RequestsSession   zK
Ensure unified redirect method handling with our urllib redirect handler.
c                    [        UR                  UR                  5      nX1R                  :X  a  UR                  Ul        SUl        X1l        [	        UR
                  5      Ul        g )Ni4  )r   methodrT   _real_status_coder   rO   )r1   prepared_requestresponse
new_methods       r   rebuild_methodRequestsSession.rebuild_method   s\    ()9)@)@(BVBVW
 000)1)=)=H&#&H ",  --=-A-ABr5   c                j   > [        US5      (       a  UR                  Ul        U?[        TU ]  X5      $ )Nr   )hasattrr   rT   rR   rebuild_auth)r1   r   r   rW   s      r   r   RequestsSession.rebuild_auth   s8     8011#+#=#=H *w#$4??r5   rG   )	rB   rC   rD   rE   __doc__r   r   rF   ru   rv   s   @r   r   r      s    C@ @r5   r   c                      \ rS rSrS rSrg)Urllib3LoggingFilter   c                     UR                   S:g  $ )Nz%s://%s:%s "%s %s %s" %s %s)msg)r1   records     r   filterUrllib3LoggingFilter.filter   s    zz:::r5   rG   N)rB   rC   rD   rE   r   rF   rG   r5   r   r   r      s    ;r5   r   c                  2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )Urllib3LoggingHandler   z#Redirect urllib3 logs to our loggerc                2   > [         TU ]  " U0 UD6  Xl        g r.   )rR   r3   _logger)r1   loggerr?   r@   rW   s       r   r3   Urllib3LoggingHandler.__init__   s    $)&)r5   c                    U R                  U5      nUR                  [        R                  :  a  U R                  R                  U5        g U R                  R                  U5        g ! [         a    U R                  U5         g f = fr.   )	formatlevelnologgingERRORr   errorstdout	ExceptionhandleError)r1   r   r   s      r   emitUrllib3LoggingHandler.emit   sf    	%++f%C~~.""3'##C( 	%V$	%s   A
A) A) )BB)r   )	rB   rC   rD   rE   r   r3   r   rF   ru   rv   s   @r   r   r      s    -	% 	%r5   r   c                     ^  \ rS rSrSrSr\" \5      rSr	\
R                  \
R                  4rSrU 4S jrS rU 4S jrSS	 jrS
 rS rSrU =r$ )
RequestsRH   z8Requests RequestHandler
https://github.com/psf/requests
r_   https)r_   r   socks4socks4asocks5socks5hr   c                  > [         TU ]  " U0 UD6  [        R                  " S5      n[	        U R
                  S9U l        U R                  R                  [        R                  " S5      5        U R                  R                  [        5       5        UR                  U R                  5        UR                  [        R                  5        U R                  (       a>  S[        R                   R"                  l        UR                  [        R&                  5        [        R(                  " [        R*                  R,                  5        g )Nr   )r   zrequests: %(message)sr   )rR   r3   r   	getLoggerr   r   _RequestsRH__logging_handlersetFormatter	Formatter	addFilterr   
addHandlersetLevelr   verboser   
connectionHTTPConnection
debuglevelDEBUGdisable_warningsri   InsecureRequestWarning)r1   r?   r@   r   rW   s       r   r3   RequestsRH.__init__   s    $)&) ""9-!6dll!K++G,=,=>U,VW(()=)?@$001&<< <=G--8OOGMM*  !3!3!J!JKr5   c                    U R                  5         [        R                  " S5      R                  U R                  5        g )Nr   )_clear_instancesr   r   removeHandlerr   )r1   s    r   closeRequestsRH.close  s/     	)$2243I3IJr5   c                   > [         TU ]  U5        UR                  SS 5        UR                  SS 5        UR                  SS 5        UR                  SS 5        g )N	cookiejartimeout
legacy_sslkeep_header_casing)rR   _check_extensionspop)r1   
extensionsrW   s     r   r   RequestsRH._check_extensions  sI    !*-{D)y$'|T*+T2r5   c                   [        5       n[        U R                  US9U R                  [        R
                  R                  R                  S5      S9nUR                  R                  5         [        R                  R                  5       Ul        UR                  SU5        UR                  SU5        Xl        SUl        U$ )N)legacy_ssl_supportF)r{   r|   max_retrieszhttps://zhttp://)r   rx   _make_sslcontextr|   r   r   retryRetryadaptersclearr   modelsCaseInsensitiveDictrN   mountcookies	trust_env)r1   r   r   sessionhttp_adapters        r   _create_instanceRequestsRH._create_instance"  s    !#*--AS-T..**007

 	 "//==?j,/i.#!r5   c                H    [        U[        5        UR                  SS5        g )N
Connectionz
keep-alive)r   SUPPORTED_ENCODINGS
setdefault)r1   _rN   s      r   _prepare_headersRequestsRH._prepare_headers1  s    "7,?@<6r5   c                "   U R                  U5      nSnU R                  U R                  U5      UR                  R	                  S5      S9n UR                  UR                  UR                  UR                  UU R                  U5      U R                  U5      SSS9n[5        U5      nSUR6                  s=::  a  S	:  d  O  [/        XsS
9eU$ ! [        R                  R                   a  nSnUR                  n S nAN`S nAf[        R                  R                   a(  nS[!        U5      ;   a
  [#        US9Ue[        US9UeS nAf[        R                  R$                   a  n[%        US9UeS nAf[        R                  R&                  [        R                  R(                  4 a  n[+        US9UeS nAf[,        R                  R.                   a  n[+        US9UeS nAf[        R                  R0                   a  n[3        US9UeS nAff = f)NFr   )r   r   T)r   rO   datarN   r   r   allow_redirectsstreamCERTIFICATE_VERIFY_FAILEDr[      i,  )redirect_loop)_get_headers_get_instance_get_cookiejarr   getr   r   rO   r  _calculate_timeout_get_proxiesr   ri   TooManyRedirectsr   r%   strr    r#   ConnectionErrorTimeoutr&   r   r!   RequestExceptionr$   rJ   rP   )r1   r   rN   max_redirects_exceededr   requests_resrr   rV   s           r   _sendRequestsRH._send5  s   ##G,!&$$))'2&1155lC % 

!	/"??~~KK\\//8))'2 $ + 	LD &l3cjj&3&CFF
9 ""33 	&%)"::L""++ 	+*c!f4,151<#*""-- 	-1%1,##33X5H5H5P5PQ 	1 q)q0!!++ 	1 q)q0""33 	/Q'Q.	/sU   AC H,C??!H #E!H$
E..;H)
F33!H
G!H?
H		H)__logging_handlerr.   )rB   rC   rD   rE   r   _SUPPORTED_URL_SCHEMEStupler   _SUPPORTED_ENCODINGS_SUPPORTED_PROXY_SCHEMESr   NO_PROXY	ALL_PROXY_SUPPORTED_FEATURESRH_NAMEr3   r   r   r   r  r  rF   ru   rv   s   @r   r   r      sc     / !45Z#,,h.@.@AGL*K372 2r5   r   c                    g)Nd   rG   )rhr   s     r   requests_preferencer'  j  s    r5   c                  .   ^  \ rS rSrU 4S jrS rSrU =r$ )SocksHTTPConnectionip  c                2   > Xl         [        TU ]  " U0 UD6  g r.   )_proxy_argsrR   r3   )r1   _socks_optionsr?   r@   rW   s       r   r3   SocksHTTPConnection.__init__q  s    )$)&)r5   c           
     |    [        U R                  S   U R                  S   4U R                  U R                  [        R
                  " [        U R                  U R                  4U R                  5      S9$ ! [        R                  [        4 aA  n[        R                  R                  U SU R                   SU R                   S35      UeS nAf[         a/  n[        R                  R                  [!        U5      U5      UeS nAf["         a)  n[        R                  R%                  U SU 35      UeS nAff = f)Naddrport)addressr   r|   _create_socket_funczConnection to z timed out. (connect timeout=)z&Failed to establish a new connection: )r   r+  r   r|   re   rc   r   hostr0  socketTimeoutErrorr   ri   ConnectTimeoutErrorSocksProxyErrorr#   r  OSErrorNewConnectionError)r1   rr   s     r   	_new_connSocksHTTPConnection._new_connu  s%   	K$))&143C3CF3KL#22$-$5$5-		499/EtGWGW%Y	Z Z - 	g$$88tyyk1Nt||n\]^`efg 	B$$//A:A 	K$$77>qcBDIJK	Ks0   A5A8 8D;<CD;*DD;$D66D;)r+  )rB   rC   rD   rE   r3   r;  rF   ru   rv   s   @r   r)  r)  p  s    *K Kr5   r)  c                      \ rS rSrSrg)SocksHTTPSConnectioni  rG   N)rB   rC   rD   rE   rF   rG   r5   r   r>  r>    s    r5   r>  c                      \ rS rSr\rSrg)SocksHTTPConnectionPooli  rG   N)rB   rC   rD   rE   r)  ConnectionClsrF   rG   r5   r   r@  r@    s    'Mr5   r@  c                      \ rS rSr\rSrg)SocksHTTPSConnectionPooli  rG   N)rB   rC   rD   rE   r>  rA  rF   rG   r5   r   rC  rC    s    (Mr5   rC  c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )SocksProxyManageri  c                h   > [        U5      US'   [        TU ]  " XE40 UD6  [        [        S.U l        g )Nr,  r   )r   rR   r3   r@  rC  pool_classes_by_scheme)r1   socks_proxyusernamepassword	num_poolsrN   connection_pool_kwrW   s          r   r3   SocksProxyManager.__init__  s7    /D[/Q+,B/AB+-'
#r5   )rG  )NN
   N)rB   rC   rD   rE   r3   rF   ru   rv   s   @r   rE  rE    s    
 
r5   rE  )Y
__future__r   re   http.clientr_   r   r0   r5  warningsdependenciesr   r   r   utilsr   r	   r
   utils.networkingr   r   ImportErrorr  __version__spliturllib3_version_yt_dlp__version	__build__requests.adaptersrequests.utilsurllib3.connectionurllib3.exceptionsurllib3.util_helperr   r   r   r   r   r   commonr   r   r   r   r   ri   r    r!   r"   r#   r$   r%   r&   r   r8  r   appendr+   urllib3.util.urlr   r   rO   rH   warnr   rJ   HTTPAdapterrx   sessionsSessionr   Filterr   Handlerr   r   r'  r   r   r)  HTTPSConnectionr>  HTTPConnectionPoolr@  HTTPSConnectionPoolrC  PoolManagerrE  SOCKSProxyManagerrG   r5   r   <module>ro     s   "    	   4 4 > > :
8
99
?
7
88Z7;N;N;T;TUX;YZZY")"5"5!6nEG
:
;; #+#7#7"8 GH
<
==          2 I  
t$$	F 	F 
7<<]++#;GLL<L<L<X<X#YGLL MMVYlYnno ".   &1h &1R0(++77 0D@h''// @8;7>> ;%GOO %& r!3 r rj Z  !
K',,;; K.	.0B0B0R0R 	(g88 ()w:: )
++ 
 '8   #r5   