
    ukiN=                       d dl mZ d dlZd dlZd dlZd dlZd dlZddlm	Z	m
Z
mZ ddlmZmZmZ ddlmZmZ e
 ed      e ed       ed	 ej*                  j-                  d
      D              Zedk  rej*                   de_         ed      e
j2                  dk  re
j*                   de
_         ed      d dlZ
d dlZ
d dlZd dlZd dlZddlm Z m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m0Z5 ddgZ6e	e6jo                  d       	  G d d      Z8d dl9Z e:ejv                  jx                  d      r@ e8ejv                  jx                  jz                        ejv                  jx                  _=        n ej|                  d e       z          ee
j~                  _         G d de)      Z@ G d de
j~                  j                        ZB G d  d!e
j                  j                        ZE G d" d#ej                        ZG G d$ d%ej                        ZIe+ G d& d'e(e              ZJ e*eJ      d(        ZK G d) d*ej                  j                        ZN G d+ d,eNej                  j                        ZP G d- d.ej                        ZR G d/ d0ej                        ZT G d1 d2ej                        ZVeVe
j~                  _W        y)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   K   | ]  }t        |d         yw)r   )defaultN)r	   ).0xs     V/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/yt_dlp/networking/_requests.py	<genexpr>r      s     ZaAq11Zs   .)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                       e Zd ZddZd Zd Zy)Urllib3PercentREOverridec                    || _         y N)re)selfrs     r   __init__z!Urllib3PercentREOverride.__init__W   s	        c                8    | j                   j                  |      S r-   )r.   __getattribute__)r/   items     r   __getattr__z$Urllib3PercentREOverride.__getattr__[   s    ww''--r2   c                N    | | j                   j                  ||g|i |d   fS )Nr   )r.   subn)r/   replstringargskwargss        r   r8   zUrllib3PercentREOverride.subn^   s-    |tww||D&B4B6B1EEEr2   N)r0   z
re.Pattern)__name__
__module____qualname__r1   r6   r8    r2   r   r+   r+   V   s    .Fr2   r+   _PERCENT_REzBFailed to patch _PERCENT_RE in urllib3 (does the attribute exist?)c                  4     e Zd Zd fdZdddZdddZ xZS )RequestsResponseAdapterc                    t         |   |j                  |j                  |j                  |j
                  |j                         || _        y )N)fpheadersurlstatusreason)superr1   rawrF   rG   status_coderI   _requests_response)r/   res	__class__s     r   r1   z RequestsResponseAdapter.__init__s   s?    ww??3:: 	 	7 #&r2   c                    |Gt        j                  | j                  j                  dd      }dj	                  t        |d            S | j                  j                  |d      S )Ni   T)decode_contentr2   )	functoolspartialrE   readjoiniter)r/   amt
read_chunks      r   
_real_readz"RequestsResponseAdapter._real_readz   sS     ;"**477<<QUVJ88DS122ww||C|55r2   c                   	 | j                  |      }| j                  j                  r| j                          |S # t        j
                  j                  $ r}t        |      |d }~wt        j
                  j                  $ r}t        d |j                  |j                  gt        |j                        D        d       }|St        |j                  t              r|j                  nt!        |j                        }t#        ||j$                        |t'        |      |d }~wt        j
                  j(                  $ r}t'        |      |d }~ww xY w)Ncausec              3  h   K   | ]*  }t        |t        j                  j                        r| , y wr-   )
isinstancehttpclientr"   )r   errs     r   r   z/RequestsResponseAdapter.read.<locals>.<genexpr>   s-      AsDKK$>$>?  As   02)rS   expected)rY   rE   closedcloser   
exceptionsr%   ProtocolErrornext__context__	__cause__r
   r;   r^   rS   intlenr"   rb   r&   r!   )r/   rW   dataeir_errrS   s         r   rT   zRequestsResponseAdapter.read   s   	1??3'Dww~~

K!!** 	+#*!!// 	1 A Ohqvv>N O ABFHF ! -7v~~s,K&..QTU[UcUcQd$WvOUVV q)q0!!++ 	1 q)q0	1s.   8; EA%% EB!D&& EEE)rN   zrequests.models.Responser-   )rW   
int | Nonereturnbytes)rW   ro   )r=   r>   r?   r1   rY   rT   __classcell__rO   s   @r   rC   rC   r   s    &61 1r2   rC   c                  B     e Zd Zd fd	Z fdZ fdZd ZddZ xZS )RequestsHTTPAdapterc                    i | _         |r|| j                   d<   |r|df| j                   d<   |xs || _        t        |   di | y )Nssl_contextr   source_addressr@   )_pm_args_proxy_ssl_contextrJ   r1   )r/   rw   proxy_ssl_contextrx   r<   rO   s        r   r1   zRequestsHTTPAdapter.__init__   sO    +6DMM-(/=q.ADMM*+"3"B{"6"r2   c                :    t        |   |i || j                  S r-   )rJ   init_poolmanagerry   )r/   r;   r<   rO   s      r   r}   z$RequestsHTTPAdapter.init_poolmanager   s!    w'II4==IIr2   c                    i }|j                         j                  d      s| j                  r| j                  |d<   t        |   |fi || j
                  |S )Nsocksr{   )lower
startswithrz   rJ   proxy_manager_forry   )r/   proxyproxy_kwargsextra_kwargsrO   s       r   r   z%RequestsHTTPAdapter.proxy_manager_for   sY    {{}''0T5L5L040G0GL,-w(`,`$--`S_``r2   c                      y r-   r@   )r;   r<   s     r   cert_verifyzRequestsHTTPAdapter.cert_verify   s    r2   c                    t         j                  j                  |j                        j                  }| j                  }t        ||      x}r| j                  |      }|j                  |      S r-   )r   util	parse_urlrG   poolmanagerr   r   connection_from_url)r/   requestverifyproxiescertrG   managerr   s           r   get_connection_with_tls_contextz3RequestsHTTPAdapter.get_connection_with_tls_context   s^    ll$$W[[155"" g..5.,,U3G**3//r2   )NNN)NN)	r=   r>   r?   r1   r}   r   r   r   rr   rs   s   @r   ru   ru      s    #Ja0r2   ru   c                  (     e Zd ZdZd Z fdZ xZS )RequestsSessionzS
    Ensure unified redirect method handling with our urllib redirect handler.
    c                    t        |j                  |j                        }||j                  k(  r|j                  |_        d|_        ||_        t	        |j
                        |_        y )Ni4  )r   methodrL   _real_status_coder   rG   )r/   prepared_requestresponse
new_methods       r   rebuild_methodzRequestsSession.rebuild_method   sb    ()9)@)@(BVBVW
 )000)1)=)=H&#&H ",  --=-A-ABr2   c                b    t        |d      r|j                  |_        |`t        |   ||      S )Nr   )hasattrr   rL   rJ   rebuild_auth)r/   r   r   rO   s      r   r   zRequestsSession.rebuild_auth   s7     801#+#=#=H *w#$4h??r2   )r=   r>   r?   __doc__r   r   rr   rs   s   @r   r   r      s    C@ @r2   r   c                      e Zd Zd Zy)Urllib3LoggingFilterc                     |j                   dk7  S )Nz%s://%s:%s "%s %s %s" %s %s)msg)r/   records     r   filterzUrllib3LoggingFilter.filter   s    zz:::r2   N)r=   r>   r?   r   r@   r2   r   r   r      s    ;r2   r   c                  (     e Zd ZdZ fdZd Z xZS )Urllib3LoggingHandlerz#Redirect urllib3 logs to our loggerc                2    t        |   |i | || _        y r-   )rJ   r1   _logger)r/   loggerr;   r<   rO   s       r   r1   zUrllib3LoggingHandler.__init__   s    $)&)r2   c                   	 | j                  |      }|j                  t        j                  k\  r| j                  j                  |       y | j                  j                  |       y # t        $ r | j                  |       Y y w xY wr-   )	formatlevelnologgingERRORr   errorstdout	ExceptionhandleError)r/   r   r   s      r   emitzUrllib3LoggingHandler.emit   sf    	%++f%C~~.""3'##C( 	%V$	%s   A	A( A( (BB)r=   r>   r?   r   r1   r   rr   rs   s   @r   r   r      s    -	%r2   r   c                       e Zd ZdZdZ ee      ZdZe	j                  e	j                  fZdZ fdZd Z fdZddZd	 Zd
 Z xZS )
RequestsRHz@Requests RequestHandler
    https://github.com/psf/requests
    r_   https)r_   r   socks4socks4asocks5socks5hr   c                   t        |   |i | t        j                  d      }t	        | j
                        | _        | j                  j                  t        j                  d             | j                  j                  t                      |j                  | j                         |j                  t        j                         | j                  r>dt        j                   j"                  _        |j                  t        j&                         t        j(                  t        j*                  j,                         y )Nr   )r   zrequests: %(message)sr   )rJ   r1   r   	getLoggerr   r   _RequestsRH__logging_handlersetFormatter	Formatter	addFilterr   
addHandlersetLevelr   verboser   
connectionHTTPConnection
debuglevelDEBUGdisable_warningsre   InsecureRequestWarning)r/   r;   r<   r   rO   s       r   r1   zRequestsRH.__init__  s    $)&) ""9-!6dll!K++G,=,=>U,VW(()=)?@$001&<< <=G--8OOGMM*  !3!3!J!JKr2   c                    | j                          t        j                  d      j                  | j                         y )Nr   )_clear_instancesr   r   removeHandlerr   )r/   s    r   rd   zRequestsRH.close  s/     	)$2243I3IJr2   c                    t         |   |       |j                  dd        |j                  dd        |j                  dd        |j                  dd        y )N	cookiejartimeout
legacy_sslkeep_header_casing)rJ   _check_extensionspop)r/   
extensionsrO   s     r   r   zRequestsRH._check_extensions  sI    !*-{D)y$'|T*+T2r2   c                   t               }t        | j                  |      | j                  t        j
                  j                  j                  d            }|j                  j                          t        j                  j                         |_        |j                  d|       |j                  d|       ||_        d|_        |S )N)legacy_ssl_supportF)rw   rx   max_retrieszhttps://zhttp://)r   ru   _make_sslcontextrx   r   r   retryRetryadaptersclearr   modelsCaseInsensitiveDictrF   mountcookies	trust_env)r/   r   r   sessionhttp_adapters        r   _create_instancezRequestsRH._create_instance&  s    !#*--AS-T..**007

 	 "//==?j,/i.#!r2   c                H    t        |t               |j                  dd       y )N
Connectionz
keep-alive)r   SUPPORTED_ENCODINGS
setdefault)r/   _rF   s      r   _prepare_headerszRequestsRH._prepare_headers5  s    "7,?@<6r2   c           
     F   | j                  |      }d}| j                  | j                  |      |j                  j	                  d            }	 |j                  |j                  |j                  |j                  || j                  |      | j                  |      dd      }t5        |      }d|j6                  cxk  rd	k  sn t/        ||
      |S # t        j                  j                  $ r}d}|j                  }Y d }~ad }~wt        j                  j                  $ r,}dt!        |      v rt#        |      |t        |      |d }~wt        j                  j$                  $ r}t%        |      |d }~wt        j                  j&                  t        j                  j(                  f$ r}t+        |      |d }~wt,        j                  j.                  $ r}t+        |      |d }~wt        j                  j0                  $ r}t3        |      |d }~ww xY w)NFr   )r   r   T)r   rG   rl   rF   r   r   allow_redirectsstreamCERTIFICATE_VERIFY_FAILEDr[      i,  )redirect_loop)_get_headers_get_instance_get_cookiejarr   getr   r   rG   rl   _calculate_timeout_get_proxiesr   re   TooManyRedirectsr   r%   strr    r#   ConnectionErrorTimeoutr&   r   r!   RequestExceptionr$   rC   rH   )r/   r   rF   max_redirects_exceededr   requests_resrm   rN   s           r   _sendzRequestsRH._send9  s   ##G,!&$$))'2&1155lC % 

!	/"??~~KK\\//8))'2 $ + 	LD &l3cjj&3&C/E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 3D H &'E H -E:::H 4G H !G.. H HH r-   )r=   r>   r?   r   _SUPPORTED_URL_SCHEMEStupler   _SUPPORTED_ENCODINGS_SUPPORTED_PROXY_SCHEMESr   NO_PROXY	ALL_PROXY_SUPPORTED_FEATURESRH_NAMEr1   rd   r   r   r   r   rr   rs   s   @r   r   r      s^     / !45Z#,,h.@.@AGL*K372r2   r   c                     y)Nd   r@   )rhr   s     r   requests_preferencer  n  s    r2   c                  $     e Zd Z fdZd Z xZS )SocksHTTPConnectionc                2    || _         t        |   |i | y r-   )_proxy_argsrJ   r1   )r/   _socks_optionsr;   r<   rO   s       r   r1   zSocksHTTPConnection.__init__u  s    )$)&)r2   c           
     Z   	 t        | j                  d   | j                  d   f| j                  | j                  t	        j
                  t        | j                  | j                  f| j                              S # t        $ rA}t        j                  j                  | d| j                   d| j                   d      |d }~wt        $ r/}t        j                  j                  t        |      |      |d }~wt         $ r)}t        j                  j#                  | d|       |d }~ww xY w)Naddrport)addressr   rx   _create_socket_funczConnection to z timed out. (connect timeout=)z&Failed to establish a new connection: )r   r  r   rx   rR   rS   r   hostr  TimeoutErrorr   re   ConnectTimeoutErrorSocksProxyErrorr#   r   OSErrorNewConnectionError)r/   rm   s     r   	_new_connzSocksHTTPConnection._new_conny  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   A7A: :	D*<B??D**C55D*$D%%D*)r=   r>   r?   r1   r  rr   rs   s   @r   r  r  t  s    *Kr2   r  c                      e Zd Zy)SocksHTTPSConnectionN)r=   r>   r?   r@   r2   r   r   r     s    r2   r   c                      e Zd ZeZy)SocksHTTPConnectionPoolN)r=   r>   r?   r  ConnectionClsr@   r2   r   r"  r"    s    'Mr2   r"  c                      e Zd ZeZy)SocksHTTPSConnectionPoolN)r=   r>   r?   r   r#  r@   r2   r   r%  r%    s    (Mr2   r%  c                        e Zd Zd fd	Z xZS )SocksProxyManagerc                h    t        |      |d<   t        |   ||fi | t        t        d| _        y )Nr  r   )r   rJ   r1   r"  r%  pool_classes_by_scheme)r/   socks_proxyusernamepassword	num_poolsrF   connection_pool_kwrO   s          r   r1   zSocksProxyManager.__init__  s9    /D[/Q+,GB/AB+-'
#r2   )NN
   N)r=   r>   r?   r1   rr   rs   s   @r   r'  r'    s    
 
r2   r'  )X
__future__r   rR   http.clientr_   r   r.   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   re   r    r!   r"   r#   r$   r%   r&   r   r  r   appendr+   urllib3.util.urlr   r   rG   rA   warnr   rC   HTTPAdapterru   sessionsSessionr   Filterr   Handlerr   r   r  r   r   r  HTTPSConnectionr   HTTPConnectionPoolr"  HTTPSConnectionPoolr%  PoolManagerr'  SOCKSProxyManagerr@   r2   r   <module>rP     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 HMMVYlYnno ".   +1h +1\0(++77 0D@h''// @8;7>> ;%GOO %& r!3 r rj Z  !
K',,;; K.	.0B0B0R0R 	(g88 ()w:: )
++ 
 '8   #r2   