
    ɯeid                    t   U 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Zd dlm	Z	 d dl
mZmZmZ d dlZd dlmZ d dlmZ ddlmZ dd	lmZmZmZmZmZmZmZmZmZm Z 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,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA ddlBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR ddlSmTZTmUZUmVZVmWZW ddlXmYZYmZZZm[Z[ ddl\m]Z]m^Z^m_Z_ ddl`maZa ddlbmcZc ddldmeZemfZf ddlgmhZh ddlimjZjmkZkmlZlmmZm ddlnmoZo ddlpmqZq erddlrmsZs  ej                  eu      Zv	  ej                          dZxdZydZzdZ{dZ|dZ}d Z~d!Zd"Zd#Zd$Zd%Zd&Zd'Zd(Zd)Zd*Zd+Zd,Zd-Zd.Ze9Z9e8Z8e6Z6e7Z7e5Z5e4Z4e2Z2e3Z3e2 d/e9 d0e7 d1e5 d/e8 	Zd2ZeeJeeGeeQeeHeeDeeCeeKe eRiZd3ed4<   d5Zd6Zd7Zd8Zd9Zd:Zd;Zd<Zd=Zd>Zd?Zd@ZdSdAZdTdBZ	 	 	 	 	 	 dUdCZ	 	 	 	 	 	 	 	 	 	 dVdDZdWdEZdXdFZ G dG dHe      Z G dI dJe      Z G dK dLeh      Z G dM dNeh      Z G dO dPejP                        Z G dQ dR      Zy)Y    )annotationsN)Lock)TYPE_CHECKINGAny	Generator)SecretDetector)PreparedRequest   )ssl_wrap_socket)BAD_GATEWAYBAD_REQUEST	FORBIDDENGATEWAY_TIMEOUTINTERNAL_SERVER_ERRORMETHOD_NOT_ALLOWEDOKREQUEST_TIMEOUTSERVICE_UNAVAILABLETOO_MANY_REQUESTSUNAUTHORIZEDBadStatusLineIncompleteRead	urlencodeurlparseurlsplit)_CONNECTIVITY_ERR_MSG_SNOWFLAKE_HOST_SUFFIX_REGEXHTTP_HEADER_ACCEPTHTTP_HEADER_CONTENT_TYPEHTTP_HEADER_SERVICE_NAMEHTTP_HEADER_USER_AGENT4OCSP_ROOT_CERTS_DICT_LOCK_TIMEOUT_DEFAULT_NO_TIMEOUT)	CRLConfig)CLIENT_NAMECLIENT_VERSIONCOMPILERIMPLEMENTATIONOPERATING_SYSTEMPLATFORMPYTHON_VERSIONSNOWFLAKE_CONNECTOR_VERSION)ER_CONNECTION_IS_CLOSEDER_CONNECTION_TIMEOUTER_FAILED_TO_CONNECT_TO_DBER_FAILED_TO_RENEW_SESSIONER_FAILED_TO_REQUESTER_HTTP_GENERAL_ERRORER_RETRYABLE_CODE)BadGatewayError
BadRequestDatabaseErrorErrorForbiddenErrorGatewayTimeoutError	HttpErrorInternalServerErrorMethodNotAllowedOperationalErrorOtherHTTPRetryableErrorProgrammingErrorRefreshTokenErrorRevocationCheckErrorServiceUnavailableErrorTooManyRequests)ProxySupportAdapterFactorySessionManagerSessionManagerFactorySessionPool)SQLSTATE_CONNECTION_NOT_EXISTSSQLSTATE_CONNECTION_REJECTED'SQLSTATE_CONNECTION_WAS_NOT_ESTABLISHED)"DEFAULT_MASTER_VALIDITY_IN_SECONDSTimeoutBackoffCtxget_time_millis)probe_connection)requests)ResponseSession)AuthBase)ConnectionErrorConnectTimeoutReadTimeoutSSLError)ProtocolError)	parse_url)SnowflakeConnectionSnowSQL<   333333333334390110390112390113390114390115390195390400390318zapplication/jsonzapplication/snowflakeRENEWAuthorizationzSnowflake Token="{token}"zX-Snowflake-External-Session-ID	requestIdrequest_guidz.snowflakecomputing.com/z (z) zno-tokenzdict[int, type[Error]]STATUS_TO_EXCEPTION	SNOWFLAKEEXTERNALBROWSERSNOWFLAKE_JWTOAUTHOAUTH_AUTHORIZATION_CODEOAUTH_CLIENT_CREDENTIALSID_TOKENUSERNAME_PASSWORD_MFAPROGRAMMATIC_ACCESS_TOKENNO_AUTHWORKLOAD_IDENTITYPAT_WITH_EXTERNAL_SESSIONc                `    d| cxk  xr dk  nc xs | t         t        t        t        t        fv S )z/Decides whether code is a retryable HTTP issue.i  iX  )r   r   r   r   r   codes    ]/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/snowflake/connector/network.pyis_retryable_http_coder{      s4    $ ) !     c                H    t         j                  | t              } ||       S )N)errno)rj   getr=   )status_codeerror_classs     rz   get_http_retryable_errorr      s%    266, K [))r|   c           	         t        j                  | d t        d|j                   d|j                   t
        t        d       y )Nz&Failed to get authentication by OKTA: : msgr~   sqlstate)r6   errorhandler_wrapperr5   r   reasonr.   rH   )
connectionresponses     rz   raise_okta_unauthorized_errorr      sF     
;H<P<P;QQST\TcTcSde/4	
		r|   c                    t        j                  | d t        |j                   d|j                   d| dt        |      j                   t        |      j                   t        |j                  z   t        d       y )N r   r   )
r6   r   r9   r   r   r   netlocpathr1   rI   )r   urlmethodr   s       rz   raise_failed_request_errorr      su     
**+1X__,=RxqRUI]I]H^_ghk_l_q_q^rs*X-A-AA?	
		r|   c                0    dt        |       j                  v S )Nzlogin-request)rW   r   )r   s    rz   is_login_requestr      s    in1111r|   c                    dt        |       v S )N
ECONNRESET)repr)es    rz   is_econnreset_exceptionr      s    47""r|   c                      e Zd ZdZy)RetryRequestzSignal to retry request.N)__name__
__module____qualname____doc__ r|   rz   r   r      s    "r|   r   c                      e Zd ZdZddZy)ReauthenticationRequestzSignal to reauthenticate.c                    || _         y N)cause)selfr   s     rz   __init__z ReauthenticationRequest.__init__  s	    
r|   NreturnNone)r   r   r   r   r   r   r|   rz   r   r     s
    #r|   r   c                       e Zd ZdZddZddZy)SnowflakeAuthz1Attaches HTTP Authorization header for Snowflake.c                    || _         y r   token)r   r   s     rz   r   zSnowflakeAuth.__init__  s	    
r|   c                    t         |j                  v r|j                  t         = | j                  t        k7  r1t        j                  | j                        |j                  t         <   |S )!Modifies and returns the request.r   )HEADER_AUTHORIZATION_KEYheadersr   NO_TOKENHEADER_SNOWFLAKE_TOKENformatr   rs     rz   __call__zSnowflakeAuth.__call__  sU    #qyy0		23::!2H2O2Ojj 3P 3AII./ r|   Nr   r   r	   r   r	   r   r   r   r   r   r   r   r|   rz   r   r   	  s    ;r|   r   c                       e Zd ZdZddZddZy)PATWithExternalSessionAuthzBAttaches HTTP Authorization headers for PAT with External Session.c                     || _         || _        y r   )r   external_session_id)r   r   r   s      rz   r   z#PATWithExternalSessionAuth.__init__  s    
#6 r|   c                   t         |j                  v r|j                  t         = | j                  t        k7  r d| j                  z   |j                  t         <   | j                  r| j                  |j                  t
        <   |S )r   zBearer )r   r   r   r   r   HEADER_EXTERNAL_SESSION_KEYr   s     rz   r   z#PATWithExternalSessionAuth.__call__#  sb    #qyy0		23::!2;djj2HAII./##595M5MAII12r|   Nr   r   r   r   r|   rz   r   r     s    L7
r|   r   c                       e Zd Z fdZ xZS )SnowflakeRestfulJsonEncoderc                l    t        |t        j                        rt        |      S t        |   |      S r   )
isinstanceuuidUUIDstrsuperdefault)r   o	__class__s     rz   r   z#SnowflakeRestfulJsonEncoder.default0  s)    a#q6Mwq!!r|   )r   r   r   r   __classcell__r   s   @rz   r   r   /  s    " "r|   r   c                     e Zd ZdZ	 	 	 	 	 	 d$	 	 	 	 	 	 	 	 	 	 	 	 	 d%dZed&d       Zed&d       Zed&d       Zed'd       Z	e	j                  d(d       Z	ed	        Zej                  d(d
       Zed&d       Zej                  d)d       Zed*d       Zed+d       Zed,d       Zd(dZ	 	 	 	 	 	 	 d-	 	 	 	 	 	 	 	 	 	 	 d.dZ	 	 	 d/	 d(dZ	 	 d(dZd Zd Zd0dZd1d2dZ	 	 	 	 d3	 	 	 	 	 	 	 	 	 	 	 	 	 d4dZ	 	 	 	 	 	 	 d5	 	 	 	 	 	 	 	 	 	 	 d6dZ	 	 d7	 	 	 	 	 	 	 	 	 	 	 d8dZed9d       Zdedf	 d:dZ	 d;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d<dZd(dZ d(d Z!	 	 	 	 	 	 	 	 d=	 	 	 	 	 	 	 	 	 	 	 d>d!Z"d?d"Z#d?d#Z$y)@SnowflakeRestfulzSnowflake Restful class.Nc                   || _         || _        || _        || _        || _        |8|r|j
                  r|j
                  nt        j                  t                     }|| _        t               | _
        | j                  r| j                  j                         nt        j                  t        _        | j                  r| j                  j                  nd t        _        | j                  r| j                  j"                  nt$        t        _        | j                  rt)        j*                  | j                        nt        j,                  t        _        dj1                  d      j3                  d      }y )N)adapter_factorydummyidnautf-8)_host_port	_protocol_inject_client_pause_connection_session_managerrE   get_managerrC   r   _lock_token
_ocsp_moder   DEFAULT_OCSP_MODEFEATURE_OCSP_MODE_ocsp_response_cache_filename%FEATURE_OCSP_RESPONSE_CACHE_FILE_NAME"_ocsp_root_certs_dict_lock_timeoutr"   $FEATURE_ROOT_CERTS_DICT_LOCK_TIMEOUTr#   from_connectionDEFAULT_CRL_CONFIGFEATURE_CRL_CONFIGencodedecode)r   hostportprotocolinject_client_pauser   session_manager_s           rz   r   zSnowflakeRestful.__init__:  s=    

!$7!%" :#>#> ++*66$>$@  !06
  '') 22 	) ?C>N>ND::TX 	=  ??E 	<  %%d&6&67 33 	* NN6"))'2r|   c                6    t        | d      r| j                  S d S )N_token)hasattrr   r   s    rz   r   zSnowflakeRestful.tokenn  s    %dH5t{{?4?r|   c                6    t        | d      r| j                  S d S )N_external_session_id)r   r   r   s    rz   r   z$SnowflakeRestful.external_session_idr  s$     *17M)ND%%	
TX	
r|   c                6    t        | d      r| j                  S d S )N_master_token)r   r   r   s    rz   master_tokenzSnowflakeRestful.master_tokenx  s    %,T?%Ct!!MMr|   c                V    t        | d      r| j                  r| j                  S t        S )N_master_validity_in_seconds)r   r   rJ   r   s    rz   master_validity_in_secondsz+SnowflakeRestful.master_validity_in_seconds|  s2     t:;00 ,,	
 4		
r|   c                .    |r|| _        y t         | _        y r   )rJ   r   r   values     rz   r   z+SnowflakeRestful.master_validity_in_seconds  s     E 	( B 	(r|   c                    t        | dd       S )N	_id_tokengetattrr   s    rz   id_tokenzSnowflakeRestful.id_token  s    t[$//r|   c                    || _         y r   )r  r   s     rz   r  zSnowflakeRestful.id_token  s	    r|   c                    t        | dd       S )N
_mfa_tokenr  r   s    rz   	mfa_tokenzSnowflakeRestful.mfa_token  s    t\400r|   c                    || _         y r   )r  r   s     rz   r  zSnowflakeRestful.mfa_token  s	    r|   c                R    | j                    d| j                   d| j                   S )Nz://:)r   r   r   r   s    rz   
server_urlzSnowflakeRestful.server_url  s&    ..!TZZL$**>>r|   c                    | j                   S r   )r   r   s    rz   r   z SnowflakeRestful.session_manager  s    $$$r|   c                .    | j                   j                  S r   )r   sessions_mapr   s    rz   r  zSnowflakeRestful.sessions_map  s    ##000r|   c                    t        | d      r| `t        | d      r| `t        | d      r| `t        | d      r| `| j
                  j                          y )Nr   r   r  r  )r   r   r   r  r  r   closer   s    rz   r  zSnowflakeRestful.close  sQ    4"4)"4%4&""$r|   Fc	                   |i }| j                   >| j                  2t        j                  | j                  d t
        dt        t        d       |dk(  rt        }	nt        }	t        t        t        |	t        t        i}
	 ddlm}  |       j!                  |
       | j                  j(                  r| j                  j(                  |
t*        <   |d	k(  rG| j-                  ||
t/        j0                  |t2        
      | j                  | j4                  ||||	      S | j7                  ||
| j                  | j4                  |      S # t"        $ r t$        j'                  dd       Y w xY w)NConnection is closedr   sfsqlr   )TraceContextTextMapPropagatorz"Opentelemtry otel injection failedTexc_infopostcls)r   r   _no_resultstimeout_include_retry_paramsno_retry)r   r   r  )r   r   r6   r   r   r5   r,   rG   !ACCEPT_TYPE_APPLICATION_SNOWFLAKECONTENT_TYPE_APPLICATION_JSONr   r   r!   PYTHON_CONNECTOR_USER_AGENT,opentelemetry.trace.propagation.tracecontextr  inject	Exceptionloggerdebugservice_namer    _post_requestjsondumpsr   r   _get_request)r   r   bodyr   clientr  r  r  	_no_retryaccept_typer   r  s               rz   requestzSnowflakeRestful.request  sm    <D$);&&  14 >		 W;K7K %&C"$?

	 *+227; ((040@0@0M0MG,-V%%

4%@Ajj$($<$<'&;" & 
 
 $$jj$($<$< %  )  	LL4  	s   >E  E&%E&c                    | j                   5  || _        || _        || _        || _        || _        ddd       y# 1 sw Y   yxY wzFUpdates session and master tokens and optionally temporary credential.N)r   r   r   r  r  r   )r   session_tokenr   r   r  r  s         rz   update_tokenszSnowflakeRestful.update_tokens  sK      	J'DK!-D%DN'DO/ID,	J 	J 	Js	   $:Ac                p    | j                   5  || _        || _        || _        ddd       y# 1 sw Y   yxY wr2  )r   _personal_access_tokenr   r   )r   personal_access_tokenr   s      rz   set_pat_and_external_sessionz-SnowflakeRestful.set_pat_and_external_session  s9      	<*?D'/DK(;D%	< 	< 	<s   ,5c                ,    | j                  t              S )z!Renew a session and master token.)_token_requestREQUEST_TYPE_RENEWr   s    rz   _renew_sessionzSnowflakeRestful._renew_session  s    ""#566r|   c           	        t         j                  dj                  | j                  rdnd              t        t
        t        t
        t        t        i}| j                  j                  r| j                  j                  |t        <   t        t        j                               }t         j                  d|       dt        t         |i      z   }| j                  xs d}| j"                  |d}| j%                  ||t'        j(                  |t*              |      }|j-                  d	      r|j-                  d
i       j-                  d      rt         j                  dt/        j0                  t        |                   | j3                  |d
   d   |d
   j-                  d      |d
   j-                  d             t         j                  d       |S t         j                  dt/        j0                  t        |                   |j-                  d      }|)|j-                  d
      r||d
   j-                  dd      z  }|j-                  d      xs t4        }	|	t6        t8        t:        t<        t>        t@        fv r$tC        tE        |tG        |	      tH                    tK        jL                  | j                  d tD        |tG        |	      tH        d       y )Nz"updating session. master_token: {}z****request_id: %sz/session/token-request? )oldSessionTokenrequestTyper  r   successdatasessionTokenzsuccess: %smasterTokenmasterValidityInSeconds)r   zupdating session completedz
failed: %smessageerrorMessagery   r   )'r%  r&  r   r   r   r   r   r!   r!  r   r'  r    r   r   uuid4r   
REQUEST_IDr   r(  r)  r*  r   r   r   mask_secretsr4  r/   ID_TOKEN_EXPIRED_GS_CODESESSION_EXPIRED_GS_CODEMASTER_TOKEN_NOTFOUND_GS_CODEMASTER_TOKEN_EXPIRED_GS_CODEMASTER_TOKEN_INVALD_GS_CODEBAD_REQUEST_GS_CODEr   r>   intrI   r6   r   )
r   request_typer   
request_idr   header_tokenr,  reterrr~   s
             rz   r:  zSnowflakeRestful._token_request  sb   077++	
 %&C ="$?

 ((040@0@0M0MG,-&
%z2')Z4L*MM ((.B#zz'
   JJt!<=	 ! 
 779#''&""5"9"9."ILL(C(CCH(MNFN+F.+.v;??;T+U  
 LL56JLL~'B'B3s8'LM'')$C3776?s6{~r::GGFOA'AE('-,+#  .$!%j!H  &&    Z G		r|   c                   t         t        t        t        t        t        i}| j
                  j                  r| j
                  j                  |t        <   t        t        j                               }t        j                  d|       dt        t        |i      z   }| j                  ||d | j                         }|j#                  d      s&t        j%                  d|j#                  d      |       |S )Nr>  z/session/heartbeat?r   rB  z&Failed to heartbeat. code: %s, url: %sry   )r   r   r   r!   r!  r   r'  r    r   r   rI  r%  r&  r   rJ  r(  r   r   error)r   r   rT  r   rV  s        rz   
_heartbeatzSnowflakeRestful._heartbeata  s    $&C ="$?

 ((040@0@0M0MG,-&
%z2#iZ0H&II  **	 ! 
 wwy!LLA3776?TWX
r|   c           	     b   | j                   2t        j                  | j                  dt        dt
        t        d       dt        ddi      z   }t        t        t        t        t        t        i}| j                  j                  r| j                  j                  |t        <   i }|rdnd}d	}d
}|r||k  r	 d}| j                  ||t!        j"                  |t$              | j&                  dd
      }|s|rd
}n	 |dz  }y|j)                  d      r	 |dz  }y|j)                  d      }	|	)|j)                  d      r|	|d   j)                  dd      z  }	t*        j-                  d|	       |dz  }|r||k  ryyyy# t.        $ r }
t*        j-                  d|
       Y d}
~
5d}
~
ww xY w# |dz  }w xY w)zDeletes the session.Nr  r   z	/session?deletetrue   r
   r   TFr     )r   r  r  rB  rG  rC  rH  r?  z*error in deleting session. ignoring...: %s)r   r6   r   r   r5   r,   rG   r   r   r   r   r!   r!  r'  r    r(  r)  r*  r   r   r   r%  r&  r$  )r   retryr   r   r,  retry_limitnum_retriesshould_retryrV  rW  r   s              rz   delete_sessionzSnowflakeRestful.delete_sessionv  s   $&&  14 >		 Ix&899$&C ="$?

 ((040@0@0M0MG,- aak 9!$((JJt)DE**! )  '+ q  WWY' q  ggi(?swwv3v;??>2>>CI3O q 5 k 9l 9l.  NI1MMN q s8   6AE;  E; AE; ;	F$FF' F$$F' 'F.c           	     z   d|v r|d= d|v r|d= | j                    | }| j                  d||||||      }|j                  d      t        k(  r| j                  j
                  t        k7  rv	 | j                         }t        j                  dj                  |j                  dd                   |j                  d	      r| j                  ||| j                   |
      S |S # t        $ rM}	| j                  j
                  t        k7  r|	j                  | j                  j                         }Y d }	~	d }	~	ww xY w)NContent-EncodingzContent-Lengthr   )r  r   r   is_fetch_query_statusry   &ret[code] = {code} after renew_sessionN/Arx   rB  )r   rg  )r  fetchr   rM  r   _authenticatorrv   r<  r   EXTERNAL_BROWSER_AUTHENTICATORr   _reauthenticater%  r&  r   r+  r   )
r   r   r   r   r   r  rg  full_urlrV  exs
             rz   r+  zSnowflakeRestful._get_request  sM    (*+w&()oo&se,jj 3"7  
 GGFO66  //3LL9))+
 LL8??''&%0 @ 
 wwy!((***?	 )   
# + 9##226TT((N&&6689s   -C$ $	D:-AD55D:c                   | j                    | }| j                  j                  rddlm} t	        |      } ||       | j                  d|||||||	|
|
      }t        j                  dj                  |j                  dd                   |j                  d      t        k(  rd	| j                  _        n|j                  d      t        k(  r| j                  j                  t        k7  rw	 | j                         }t        j                  d
j                  |j                  dd                   |j                  d      r | j)                  |||| j*                  |      S t-        |j                  d      t.              r>|d   j                  d      r*t        j                  dj                  |d   d                |j                  d      t0        k(  r|r|S |j                  d      t2        t0        fv r| j4                  dkD  r?t        j                  d| j4                         t7        j8                  | j4                         |d   d   }t        j                  d       | j;                  ||| j*                  |t=        t?        j@                  d|                  }t        j                  d|j                  dd             t        j                  d       |j                  d      t2        t0        fv r|S # t         $ rN}| j                  j                  t"        k7  r|j$                  | j                  j'                         }Y d }~Sd }~ww xY w)Nr   )pprintr  )rC  r  r   r   r  r  socket_timeoutz&ret[code] = {code}, after post requestry   ri  rx   Trh  rB  )r   r  rC  queryIdzQuery id: {}zwaiting for %s...getResultUrlzping pong starting...z^/queries/.+/result$)r   r  rg  zret[code] = %szping pong done)!r  r   _probe_connectionrq  rM   rj  r%  r&  r   r   rO  expiredrM  rk  rv   r<  r   rl  r   rm  r(  r   r   dictQUERY_IN_PROGRESS_ASYNC_CODEQUERY_IN_PROGRESS_CODEr   timesleepr+  boolrematch)r   r   r   r,  r   r   r  rr  r  r  r  rn  rq  rV  ro  
result_urls                   rz   r(  zSnowflakeRestful._post_request  s    oo&se,--%"8,C3Kjj 3"7)  
 	4;;ggfe, < 	
 776?::'+D$GGFO66  //3LL9))+
 LL8??''&%0 @ 
 wwy!))$djj' *   cggfot,V1KLL..s6{9/EFG776?::{Jggfo"8:V!WW((1,0$2K2KL

4445V^4JLL01##jj&*HH4jA' $ C LL)37765+ABLL)*# ggfo"8:V!WW& 
O + 9##226TT((N&&6689s   0L 	M
AMMc           	         G d dt               }| j                  j                  }|j                  dd      }	| j	                  |      5 }
 ||	|||n| j                  j
                  | j                  j                        }|j                          	  | j                  |
|||||fi |}||cddd       S &# 1 sw Y   yxY w)z.Carry out API request with session management.c                  8     e Zd Z	 	 d	 	 	 	 	 d fdZddZ xZS )(SnowflakeRestful.fetch.<locals>.RetryCtxc                N    t        |   di | d| _        || _        || _        y )Nr   r   )r   r   retry_reasonr  _include_retry_reason)r   r  r  kwargsr   s       rz   r   z1SnowflakeRestful.fetch.<locals>.RetryCtx.__init__A  s-      *6*$%!-B*-B*r|   c                   | j                   r}| j                  dkD  rn| j                  | j                  d}| j                  r|j	                  d| j
                  i       t        |      }t        |      j                  rdnd}||z   |z   S |S )Nr   )clientStartTime
retryCountretryReason&?)	r  current_retry_count_start_time_millisr  updater  r   r   query)r   rn  retry_paramssuffixseps        rz   add_retry_paramsz9SnowflakeRestful.fetch.<locals>.RetryCtx.add_retry_paramsL  s    --$2J2JQ2N+/+B+B&*&>&>$L 11$++]D<M<M,NO&|4F!)(!3!9!9#sC#c>F22#Or|   )FF)r  r|  r  r|  r   r   rn  r   r   r   )r   r   r   r   r  r   r   s   @rz   RetryCtxr  @  s5     /4.3	C'+	C (,	C
 	C$r|   r  r  FN)r  r  r  backoff_generator)	rK   r   &_enable_retry_reason_in_query_responsepopuse_sessionnetwork_timeout_backoff_generatorset_start_time_request_exec_wrapper)r   r   rn  r   rC  r  r  r  include_retry_reasoninclude_retry_paramssession	retry_ctxrV  s                rz   rj  zSnowflakeRestful.fetch5  s    	$( 	$4  $//VV%zz*A5Ih' 	7 &:&:&2G8H8H8X8X"&"2"2"E"EI $$&0d00VXwiKQ ?!	 	 	 	s   	A%B98B99Cc                    t        |       }t        j                  t        |j                        s| S t        t        j                               }t        t        |i      }t        j                  d|        |j                  rdnd}| |z   |z   S )z5Adds request_guid parameter for HTTP request tracing.zRequest guid: r  r  )r   r}  searchr   hostnamer   r   rI  r   REQUEST_GUIDr%  r&  r  )rn  
parsed_urlrh   r  r  s        rz   add_request_guidz!SnowflakeRestful.add_request_guido  sx     h'
yy5z7J7JKO4::<(L,78~l^45%%c3#~&&r|   c
                4   | j                   }t        j                  d|j                  |j                  nd|j
                  dz          |j                  |      }t        j                  |      }|
j                  dd      }|
j                  dd      }	  | j                  d|||||||	|d|
}||S |r"d}t        j                  |       t        |      | j                  |||||       i S # t        $ r.}|j                  |j                   d | j                          |d }~wt        $ r}|j"                  d	   }|r3| j%                  ||||j                  |j
                  |d
       i cY d }~S |j&                  s1| j%                  ||||j                  |j
                  |       i cY d }~S t        j                  dt)        |      ||j
                  dz   |j*                         t-        j.                  t1        |j*                               |j3                          t5        |dd	      }|d	}n|t6        k\  r	|t6        z
  n|}||_        t;        |      rb	 t        j                  d       |j=                  |      j?                          n,# t@        $ r }t        j                  d|       Y d }~nd }~ww xY wY d }~y d }~wt@        $ rM}|r$tC        |tD        jF                  jH                        s|s|t        j                  dd       i cY d }~S d }~ww xY w)Nz/remaining request timeout: %s ms, retry cnt: %sri  r
   rg  Fraise_raw_http_failure)r  r   rn  r   rC  r   r   r  z{fetch query status failed and http request returned None, this is usually caused by transient network failures, retrying...r   )	timed_outz=retrying: errorclass=%s, error=%s, counter=%s, sleeping=%s(s)r~   z@shutting down requests session adapter due to connection abortedz<Ignored error caused by closing https connection failure: %szIgnored errorTr  r   )%r   r%  r&  r  remaining_time_millisr  r  r   r  r  _request_execinfor   _handle_unknown_errorr@   exception_telemetryr   args$log_and_handle_http_error_with_causerc  typecurrent_sleep_timerz  r{  float	incrementr  r1   r  r   get_adapterr  r$  r   rN   
exceptions	HTTPError)r   r  r   rn  r   rC  r  r  r   r   r  connrg  r  return_objecterr_msgrcer   r   r   close_adapter_excs                        rz   r  z&SnowflakeRestful._request_exec_wrapper|  s    =/8/@/@/LI++RW))A-	
 --h7#44X> &

+BE J "(,De!L]	.D.. 
!$7'=
 
M ($$$ XG$"7++&&vx$MI# 	##CGGT43C3CDI ?	FF1IE99%%11# :  	))99%%11 	LL! U--1,,	 JJuY99:;!UGQ/F~ !66 22 
 &,I"&q)
	LLZ ''1779  LLV) 
  	&:a9L9L9V9V+WLL4L8I	s   C. 3:C. .	L7)D  L->J>+L17J>(L.B)J>4JJ>	J6J1,J>1J66J>>L
ALLLc                    |j                   d   }t        j                  |d       t        |t              rt	        j
                  ||       y | j                  |||       y )Nr   Tr  )r  r%  rY  r   r6   errorhandler_wrapper_from_cause handle_invalid_certificate_error)	r   r   rn  r   retry_timeoutretry_countr  r  r   s	            rz   r  z5SnowflakeRestful.log_and_handle_http_error_with_cause  sM     q	UT*eU#11$>11$%Hr|   c                P    t        j                  |d t        d| t        d       y )NzFailed to execute request: r   r~   )r6   r   r<   r0   )r   r  rn  r   s       rz   r  z1SnowflakeRestful.handle_invalid_certificate_error  s+    ""4UG<-		
r|   c           
         |rt        j                  |      \  }}}||}t        j                  d| d| d| d|        t	        j
                  |dt        d| d| t        d       y)zHandles unknown errors.Nz-Failed to get the response. Hanging? method: z, url: z
, headers:z, data: r  )r   rK  r%  rY  r6   r   r<   r0   )	r   r   rn  r   rC  r  r   masked_dataerr_strs	            rz   r  z&SnowflakeRestful._handle_unknown_error  s    &4&A&A$&G#A{G"hghZz' CF	

 	""FvhgV^U_`-		
r|   c                   |H| j                   j                  ,t        j                  d       | j                   j                  }nt        }t        j                  d|       	 |s:|r8t        |      dkD  r*d|d<   t        j                  |j                  d            }n|}t               }||t        ||      n
t        |      }|j                  |||||d|
|      }t               }	 |j                  t        k(  rht        j                  d	       |	r|j                  }n2|
r |j!                  |j"                  ||z
        }n|j%                         }||j'                          S t)        |      r|j                  t*        k(  rt,        t/        |j                        r|t1        |j                        }|rt3        d
      t)        |      r+t        j                  d| d       t5        dt6              t        j                  | d       t9        |      |j                  t:        k(  r*|r(t=        | j                   |       	 |j'                          y |r|j?                          tA        | j                   |||       	 |j'                          y # |j'                          w xY w# tB        $ rw}tE        |      rt9        |      dtG        |       dtH         }t        j                  |       tK        jL                  | j                   d t4        |tN        d       Y d }~y d }~wtP        tR        tT        tV        tX        tZ        j\                  j^                  t`        tb        td        tf        th        f$ r`}t)        |      r+t        j                  d| d       t5        dtj              t        j                  d| d       t9        |      d }~wtl        $ r}|d }~ww xY w)Nz&socket_timeout specified in connectionzsocket timeout: %sr   gziprf  r   T)r   r   r   rC  r  verifystreamauthSUCCESSz+OKTA authentication requires token refresh.)r   zxReceived retryable response code while logging in. Will be handled by authenticator. Ignore the following. Error stack: r  z<Login request is retryable. Will be handled by authenticatorr  z. Retrying...zHit non-retryable SSL error, z.
zkHit a timeout error while logging in. Will be handled by authenticator. Ignore the following. Error stack: zIConnectionTimeout occurred during login. Will be handled by authenticatorzJHit retryable client error. Retrying... Ignore the following error stack: )7r   rr  r%  r&  DEFAULT_SOCKET_CONNECT_TIMEOUTlenr  compressr   rL   r   r   r0  r   r   textto_iteratorrawr)  r  r   r   r7   r{   r   r?   r<   r2   r   r   r   raise_for_statusr   rU   r   r   r   r6   r   r0   r   rR   rS   r   rV   OpenSSLSSLSysCallErrorKeyError
ValueErrorrT   RuntimeErrorAttributeErrorr-   r$  )r   r  r   rn  r   rC  r   r   catch_okta_unauthorized_erroris_raw_textis_raw_binarybinary_data_handlerrr  is_okta_authenticationr  
input_datadownload_start_timer  raw_retdownload_end_timerV  rW  ser   s                           rz   r  zSnowflakeRestful._request_exec,  s   " !..:EF!%!1!1!@!@!?)>:@	0Tc$i!m.4*+!]]4;;w+?@
!
"1"3 (38I +52EF"5) 
 oo&$ & 	G !0 14 &&",LL+"%ll&1==#KK):=P)P &llnR O $H-'2E2E2R((+G,?,?@273F3FGC-/ M  (1QQTPUW%) % 
 / ^"3 
 uM%:;*3// ''<75 2$2B2BGL  .002.(((FG   	&r*"2&&1#b'#>S=TUCLL &&   1	  KK$$
 	(  )IILO!  
 'c/ 
 $$'5*!  
 #3'' 	I	sf   "BJ' )A*J J' $C J J' *J J' J$$J' '	O#0A-L""AO#5AOO#OO#c                8    | j                   j                  |      S r   )r   r  r   r   s     rz   r  zSnowflakeRestful.use_session  s    ##//44r|   c                $    | j                  |      S r   )r  r  s     rz   use_requests_sessionz%SnowflakeRestful.use_requests_session  s    $$r|   )z	127.0.0.1i  httpr   NN)r   r   r   rR  r   r   r   rR  r   SnowflakeConnection | Noner   zSessionManager | Noner   r   )r   
str | None)r   rR  r   )r   r   r   r   )r   r   )r   rD   )r   zdict[str, SessionPool])Nr  r  NFFF)r   r   r-  r   r  
int | Noner  r|  r  r|  r.  r|  )NNN)r   zAny | dict[Any, Any] | None)F)r`  r|  r   r   )NNNF)r   r   r   zdict[str, str]r   r   r   r   r  r  rg  r|  r   dict[str, Any])NNNNFFF)r   r  r  r  rr  r  r  r|  r  r|  r  r|  )NN)r   r   rn  r   r   r  rC  zdict[str, Any] | Noner  r  r   zdict[Any, Any]r  )r  r|  )T)r   r$  rn  r   r   r   r  rR  r  rR  r  rX   r  r|  r   r   )NFFFNNFF)r  r|  r  r|  r  r|  rr  r  r  r|  r  r|  )r   zstr | bytesr   zGenerator[Session, Any, None])%r   r   r   r   r   propertyr   r   r   r   setterr  r  r  r   r  r  r0  r4  r8  r<  r:  rZ  rd  r+  r(  rj  staticmethodr  r   r  r  r  r  r  r  r  r   r|   rz   r   r   7  s   "  #$15152323 23 	23
 !23 /23 /23 
23h @ @ 
 

 N N 
 
  &&
 '

 0 0 __  1 1     ? ? % % 1 1
% "!&+F 	F
 F F F  $F FX $(J 
J 	< 
		<7EN*5!v #'"&+//  / 	/
 !/ /  $/ 
/l *."%)!&+U (U U #U U U  $Ux '+"88 8  	8
 $8 8 
8t 
' 
'(  | |L II I 	I
 I I "I I 
I"


: !.3!# %)',',Y (,Y Y Y #Y !%Y !%Yv5%r|   r   )ry   rR  r   r|  )r   rR  r   r6   )r   r  r   rO   r   r   )
r   r  r   r   r   r   r   rO   r   r   )r   r   r   r|  )r   r$  r   r|  )
__future__r   r  r)  loggingr}  rz  r   	threadingr   typingr   r   r   OpenSSL.SSLr  #snowflake.connector.secret_detectorr   ,snowflake.connector.vendored.requests.modelsr	   r?  r   compatr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	constantsr   r   r   r   r    r!   r"   crlr#   descriptionr$   r%   r&   r'   r(   r)   r*   r+   	errorcoder,   r-   r.   r/   r0   r1   r2   errorsr3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   r   rC   rD   rE   rF   r   rG   rH   rI   	time_utilrJ   rK   rL   tool.probe_connectionrM   vendoredrN   vendored.requestsrO   rP   vendored.requests.authrQ   vendored.requests.exceptionsrR   rS   rT   rU   vendored.urllib3.exceptionsrV   vendored.urllib3.util.urlrW   r   rX   	getLoggerr   r%  inject_into_urllib3APPLICATION_SNOWSQLr  ry  rx  rL  rM  rN  rO  rP  &ID_TOKEN_INVALID_LOGIN_REQUEST_GS_CODErQ  "OAUTH_ACCESS_TOKEN_EXPIRED_GS_CODEr   r  r;  r   r   r   rJ  r  SNOWFLAKE_HOST_SUFFIXr!  r   rj   __annotations__DEFAULT_AUTHENTICATORrl  KEY_PAIR_AUTHENTICATOROAUTH_AUTHENTICATORro   rp   ID_TOKEN_AUTHENTICATORUSR_PWD_MFA_AUTHENTICATORrs   NO_AUTH_AUTHENTICATORWORKLOAD_IDENTITY_AUTHENTICATORrv   r{   r   r   r   r   r   r$  r   r   r   r   JSONEncoderr   r   r   r|   rz   <module>r     s   "    	    0 0  > H     $   	 	 	      $  
 
 4  0 ,  7 0/			8	$ $ # # %    "(  " ' # "  ( ' & )1 & %- " !3 $; ! * 4 ? 
1 9 # !,Q/J.K2hZWYZhYiijkyjz{  .~0((	/ + 	 $ !2 (  5 5 # 3 7 ! "5 7 **6>	*	  	
 
$2#	9 	i H $ ("$"2"2 "T% T%r|   