o
    RDid                     @  s  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teuZv	 ew  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@ZdidEdFZdjdIdJZdkdPdQZdldUdVZdmdWdXZdnd[d\ZG d]d^ d^eZG d_d` d`eZG dadb dbehZG dcdd ddehZG dedf dfejZG dgdh dhZdS )o    )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_SESSIONcodeintreturnboolc                 C  s*   d|   ko	dk n  p| t ttttfv S )z/Decides whether code is a retryable HTTP issue.i  iX  )r   r   r   r   r   rv    r{   T/var/www/Datamplify/venv/lib/python3.10/site-packages/snowflake/connector/network.pyis_retryable_http_code   s   r}   status_coder5   c                 C  s   t | t}|| dS )N)errno)ri   getr<   )r~   error_classr{   r{   r|   get_http_retryable_error   s   
r   
connectionSnowflakeConnection | NoneresponserN   Nonec              	   C  s,   t | d td|j d|j ttd d S )Nz&Failed to get authentication by OKTA: : msgr   sqlstate)r5   errorhandler_wrapperr4   r~   reasonr-   rG   )r   r   r{   r{   r|   raise_okta_unauthorized_error   s   r   urlstrmethodc                 C  sL   t | d t|j d|j d| dt|j t|j t|j t	d d S )N r   r   )
r5   r   r8   r~   r   r   netlocpathr0   rH   )r   r   r   r   r{   r{   r|   raise_failed_request_error   s   ,r   c                 C  s   dt | jv S )Nzlogin-request)rV   r   )r   r{   r{   r|   is_login_request   s   r   e	Exceptionc                 C  s   dt | v S )N
ECONNRESET)repr)r   r{   r{   r|   is_econnreset_exception      r   c                   @  s   e Zd ZdZdS )RetryRequestzSignal to retry request.N)__name__
__module____qualname____doc__r{   r{   r{   r|   r      s    r   c                   @  s   e Zd ZdZdddZdS )ReauthenticationRequestzSignal to reauthenticate.rx   r   c                 C  
   || _ d S N)cause)selfr   r{   r{   r|   __init__     
z ReauthenticationRequest.__init__Nrx   r   )r   r   r   r   r   r{   r{   r{   r|   r     s    r   c                   @  $   e Zd ZdZdddZddd	Zd
S )SnowflakeAuthz1Attaches HTTP Authorization header for Snowflake.rx   r   c                 C  r   r   token)r   r   r{   r{   r|   r        
zSnowflakeAuth.__init__rr   c                 C  s4   t |jv r	|jt = | jtkrtj| jd|jt < |S )!Modifies and returns the request.r   )HEADER_AUTHORIZATION_KEYheadersr   NO_TOKENHEADER_SNOWFLAKE_TOKENformatr   r   r{   r{   r|   __call__  s   

zSnowflakeAuth.__call__Nr   r   r   rx   r   r   r   r   r   r   r   r{   r{   r{   r|   r   	  s    
r   c                   @  r   )PATWithExternalSessionAuthzBAttaches HTTP Authorization headers for PAT with External Session.rx   r   c                 C  s   || _ || _d S r   )r   external_session_id)r   r   r   r{   r{   r|   r     s   
z#PATWithExternalSessionAuth.__init__r   r   c                 C  sB   t |jv r	|jt = | jtkrd| j |jt < | jr| j|jt< |S )r   zBearer )r   r   r   r   r   HEADER_EXTERNAL_SESSION_KEYr   r{   r{   r|   r   #  s   

z#PATWithExternalSessionAuth.__call__Nr   r   r   r{   r{   r{   r|   r     s    
r   c                      s   e Zd Z fddZ  ZS )SnowflakeRestfulJsonEncoderc                   s    t |tjr
t|S t |S r   )
isinstanceuuidUUIDr   superdefault)r   o	__class__r{   r|   r   0  s   z#SnowflakeRestfulJsonEncoder.default)r   r   r   r   __classcell__r{   r{   r   r|   r   /  s    r   c                   @  s  e Zd ZdZ						d}d~ddZedddZedddZedddZedddZ	e	j
dddZ	edd  Zej
dd!d Zedd"d#Zej
dd%d#Zedd&d'Zedd)d*Zedd,d-Zdd.d/Z		0	1		2	2	2ddd;d<Z			ddd=d>Zdd?d@ZdAdB ZdCdD ZddFdGZdddIdJZ				2dddRdSZ					2	2	2dddVdWZ		ddd\d]Zedd^d_Zd2edfdd`daZ	bdddjdkZddldmZ ddndoZ!		2	2	2			2	2dddudvZ"ddydzZ#dd{d|Z$dS )SnowflakeRestfulzSnowflake Restful class.	127.0.0.1  httpr   Nhostr   portrw   protocolinject_client_pauser   r   session_managerSessionManager | Nonerx   r   c                 C  s   || _ || _|| _|| _|| _|d u r"|r|jr|jntjt d}|| _t	 | _
| jr1| j ntjt_| jr<| jjnd t_| jrF| jjntt_| jrRt| jntjt_ddd}d S )N)adapter_factorydummyidnautf-8)_host_port	_protocol_inject_client_pause_connection_session_managerrD   get_managerrB   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   r   r   r   r   r   r   _r{   r{   r|   r   :  s>   	
	zSnowflakeRestful.__init__
str | Nonec                 C     t | dr| jS d S )N_token)hasattrr   r   r{   r{   r|   r   n     zSnowflakeRestful.tokenc                 C  r   )N_external_session_id)r   r   r   r{   r{   r|   r   r  s   z$SnowflakeRestful.external_session_idc                 C  r   )N_master_token)r   r   r   r{   r{   r|   master_tokenx  r   zSnowflakeRestful.master_tokenc                 C  s   t | dr| jr| jS tS )N_master_validity_in_seconds)r   r   rI   r   r{   r{   r|   master_validity_in_seconds|  s   z+SnowflakeRestful.master_validity_in_secondsc                 C  s   |r|| _d S t | _d S r   )rI   r   r   valuer{   r{   r|   r     s   c                 C     t | dd S )N	_id_tokengetattrr   r{   r{   r|   id_token     zSnowflakeRestful.id_tokenc                 C  r   r   )r   r   r{   r{   r|   r     r   c                 C  r   )N
_mfa_tokenr   r   r{   r{   r|   	mfa_token  r   zSnowflakeRestful.mfa_tokenr   c                 C  r   r   )r   r   r{   r{   r|   r     r   c                 C  s   | j  d| j d| j S )Nz://:)r   r   r   r   r{   r{   r|   
server_url  s   zSnowflakeRestful.server_urlrC   c                 C  s   | j S r   )r   r   r{   r{   r|   r     s   z SnowflakeRestful.session_managerdict[str, SessionPool]c                 C  s   | j jS r   )r   sessions_mapr   r{   r{   r|   r    s   zSnowflakeRestful.sessions_mapc                 C  sF   t | dr| `t | dr| `t | dr| `t | dr| `| j  d S )Nr   r   r   r   )r   r   r   r   r   r   closer   r{   r{   r|   r    s   



zSnowflakeRestful.closepostsfsqlFr   clienttimeout
int | None_no_resultsry   _include_retry_params	_no_retryc	                 C  s   |d u ri }| j d u r| jd u rt| jd tdttd |dkr$t}	nt	}	t
t	t|	tti}
zddlm} | |
 W n tyL   tjddd Y nw | jjrW| jj|
t< |d	krp| j||
tj|td
| j| j||||d	S | j||
| j| j|dS )NConnection is closedr   r  r   )TraceContextTextMapPropagatorz"Opentelemtry otel injection failedTexc_infor  cls)r   r   r  r  r	  no_retry)r   r   r  )r   r   r5   r   r   r4   r+   rF   !ACCEPT_TYPE_APPLICATION_SNOWFLAKECONTENT_TYPE_APPLICATION_JSONr   r   r    PYTHON_CONNECTOR_USER_AGENT,opentelemetry.trace.propagation.tracecontextr  injectr   loggerdebugservice_namer   _post_requestjsondumpsr   r   _get_request)r   r   bodyr   r  r  r  r	  r
  accept_typer   r  r{   r{   r|   request  sb   
zSnowflakeRestful.requestc                 C  sJ   | j  || _|| _|| _|| _|| _W d   dS 1 sw   Y  dS zFUpdates session and master tokens and optionally temporary credential.N)r   r   r   r   r   r   )r   session_tokenr   r   r   r   r{   r{   r|   update_tokens  s   	"zSnowflakeRestful.update_tokensc                 C  s>   | j  || _|| _|| _W d   dS 1 sw   Y  dS r!  )r   _personal_access_tokenr   r   )r   personal_access_tokenr   r{   r{   r|   set_pat_and_external_session  s
   "z-SnowflakeRestful.set_pat_and_external_sessionc                 C  s
   |  tS )z!Renew a session and master token.)_token_requestREQUEST_TYPE_RENEWr   r{   r{   r|   _renew_session  r   zSnowflakeRestful._renew_sessionc           
   	   C  s  t d| jr	dnd  tttttti}| j	j
r| j	j
|t< tt }t d| dtt|i }| jp7d}| j|d}| j||tj|td|d}|d	r|d
i drt dtt| | j|d
 d |d
 d|d
 dd t d |S t dtt| |d}|d ur|d
r||d
 dd7 }|dpt}	|	tttttt fv rt!t"|t#|	t$dt%&| j	d t"|t#|	t$d d S )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errorMessagerv   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_secretsr#  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=   rw   rH   r5   r   )
r   request_typer   
request_idr   header_tokenr  reterrr   r{   r{   r|   r'    s|   



zSnowflakeRestful._token_requestAny | dict[Any, Any] | Nonec                 C  s   t ttttti}| jjr| jj|t< tt	
 }td| dtt|i }| j||d | jd}|ds?td|d| |S )Nr*  z/session/heartbeat?r   r.  z&Failed to heartbeat. code: %s, url: %srv   )r   r  r   r    r  r   r  r   r   r   r5  r  r  r   r6  r  r   r   error)r   r   r?  r   rA  r{   r{   r|   
_heartbeata  s$   
zSnowflakeRestful._heartbeatretryc              
   C  s  | j du rt| jdtdttd dtddi }tt	t
t	tti}| jjr,| jj|t< i }|r2dnd}d	}d
}|r||k rznzOd}| j||tj|td| jdd
d}|sb|rZd
}nW W |d7 }dS |droW W |d7 }dS |d}	|	dur|dr|	|d dd7 }	td|	 W n ty }
 ztd|
 W Y d}
~
nd}
~
ww W |d7 }n|d7 }w |r||k s>dS dS dS dS )zDeletes the session.Nr  r   z	/session?deletetrue   r	   r   TFr     )r   r  r  r.  r3  r/  r4  r+  z*error in deleting session. ignoring...: %s)r   r5   r   r   r4   r+   rF   r   r   r  r   r    r  r  r   r  r  r  r   r   r   r  r  r   )r   rF  r   r   r  retry_limitnum_retriesshould_retryrA  rB  r   r{   r{   r|   delete_sessionv  sf   

	
zSnowflakeRestful.delete_sessionr   r   dict[str, str]r   r   is_fetch_query_statusdict[str, Any]c           
   
   C  s   d|v r|d= d|v r|d= | j  | }| jd||||||d}|dtkrq| jjtkrqz|  }W n  tyT }	 z| jjt	krE|	j
| j }W Y d }	~	nd }	~	ww tdj|ddd |d	rq| j||| j|d
S |S )NContent-EncodingzContent-Lengthr   )r  r   r   rP  rv   &ret[code] = {code} after renew_sessionN/Arz   r.  )r   rP  )r   fetchr   r9  r   _authenticatorru   r)  r   EXTERNAL_BROWSER_AUTHENTICATORr   _reauthenticater  r  r   r  r   )
r   r   r   r   r   r  rP  full_urlrA  exr{   r{   r|   r    sJ   	


zSnowflakeRestful._get_requestsocket_timeoutr  c                 C  s  | j  | }| jjrddlm} t|}|| | jd|||||||	|
|d
}tdj|	ddd |	dt
krAd	| j_nQ|	dtkr| jjtkrz|  }W n  tyt } z| jjtkre|j| j }W Y d }~nd }~ww td
j|	ddd |	dr| j|||| j|dS t|	dtr|d 	drtd|d d  |	dtkr|r|S |	dttfv r| jdkrtd| j t| j |d d }td | j||| j|tt d|d}td|	dd td |	dttfv s|S )Nr   )pprintr  )r/  r  r   r   r  r	  r[  z&ret[code] = {code}, after post requestrv   rT  rz   TrS  r.  )r   r  r/  queryIdzQuery id: {}zwaiting for %s...getResultUrlzping pong starting...z^/queries/.+/result$)r   r  rP  zret[code] = %szping pong done)!r   r   _probe_connectionr\  rL   rU  r  r  r   r   r;  expiredr9  rV  ru   r)  r   rW  r   rX  r  r   r   dictQUERY_IN_PROGRESS_ASYNC_CODEQUERY_IN_PROGRESS_CODEr   timesleepr  ry   rematch)r   r   r   r  r   r   r  r[  r  r  r	  rY  r\  rA  rZ  
result_urlr{   r{   r|   r    s   






	
zSnowflakeRestful._post_requestrY  r/  dict[str, Any] | Nonedict[Any, Any]c                 K  s   G dd dt }| jj}|dd}	| |4}
||	||dur!|n| jj| jjd}|  	 | j|
|||||fi |}|durJ|W  d   S q/1 sNw   Y  dS )z.Carry out API request with session management.c                      s.   e Zd Z		dd fddZdddZ  ZS )z(SnowflakeRestful.fetch.<locals>.RetryCtxFr	  ry   _include_retry_reasonrx   r   c                   s(   t  jdi | d| _|| _|| _d S )Nr   r{   )r   r   retry_reasonr	  rk  )r   r	  rk  kwargsr   r{   r|   r   A  s   
z1SnowflakeRestful.fetch.<locals>.RetryCtx.__init__rY  r   c                 S  s^   | j r-| jdkr-| j| jd}| jr|d| ji t|}t|jr%dnd}|| | S |S )Nr   )clientStartTime
retryCountretryReason&?)	r	  current_retry_count_start_time_millisrk  updaterl  r   r   query)r   rY  retry_paramssuffixsepr{   r{   r|   add_retry_paramsL  s   z9SnowflakeRestful.fetch.<locals>.RetryCtx.add_retry_params)FF)r	  ry   rk  ry   rx   r   rY  r   rx   r   )r   r   r   r   rz  r   r{   r{   r   r|   RetryCtx@  s
    r|  r	  FN)r	  rk  r  backoff_generator)	rJ   r   &_enable_retry_reason_in_query_responsepopuse_sessionnetwork_timeout_backoff_generatorset_start_time_request_exec_wrapper)r   r   rY  r   r/  r  rm  r|  include_retry_reasoninclude_retry_paramssession	retry_ctxrA  r{   r{   r|   rU  5  s,   	zSnowflakeRestful.fetchc                 C  s\   t | }tt|js| S tt }tt	|i}t
d|  |jr&dnd}| | | S )z5Adds request_guid parameter for HTTP request tracing.zRequest guid: rq  rr  )r   rf  searchr   hostnamer   r   r5  r   REQUEST_GUIDr  r  rv  )rY  
parsed_urlrg   rx  ry  r{   r{   r|   add_request_guido  s   z!SnowflakeRestful.add_request_guidc
                 K  s  | j }td|jd ur|jnd|jd  ||}t|}|
	dd}|
	dd}z1| j
d|||||||	|d|
}|d urD|W S |rQd}t| t|| ||||| i W S  tys } z||jd | j  |d }~w ty } z|jd	 }|r| j||||j|j|dd
 i W  Y d }~S |js| ||||j|j| i W  Y d }~S tdt|||jd |j tt|j |  t|dd	}|d u rd	}n
|tkr|t n|}||_t|rztd ||  W n t y } ztd| W Y d }~nd }~ww W Y d }~d S d }~w t yG } z|r/t!|t"j#j$s2|s4|tjddd i W  Y d }~S d }~ww )Nz/remaining request timeout: %s ms, retry cnt: %srT  r	   rP  Fraise_raw_http_failure)r  r   rY  r   r/  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_millisrs  rz  r   r  r  _request_execinfor   _handle_unknown_errorr?   exception_telemetryr   args$log_and_handle_http_error_with_causerM  typecurrent_sleep_timerd  re  float	incrementr   r0   rl  r   get_adapterr  r   r   rM   
exceptions	HTTPError)r   r  r   rY  r   r/  r  r  r   r   rm  connrP  r  return_objecterr_msgrcer   r   r   close_adapter_excr{   r{   r|   r  |  s   

	

	

z&SnowflakeRestful._request_exec_wrapperTr   r   retry_timeoutretry_countr  rW   r  c           	      C  sD   |j d }tj|dd t|trt|| d S | ||| d S )Nr   Tr  )r  r  rD  r   r5   errorhandler_wrapper_from_cause handle_invalid_certificate_error)	r   r   rY  r   r  r  r  r  r   r{   r{   r|   r    s
   


z5SnowflakeRestful.log_and_handle_http_error_with_causec                 C  s    t |d td| td d S )NzFailed to execute request: r   r   )r5   r   r;   r/   )r   r  rY  r   r{   r{   r|   r    s   z1SnowflakeRestful.handle_invalid_certificate_errorc           	   
   C  sh   |rt |\}}}|du r|}td| d| d| d|  t|dtd| d| td dS )zHandles unknown errors.Nz-Failed to get the response. Hanging? method: z, url: z
, headers:z, data: r  )r   r7  r  rD  r5   r   r;   r/   )	r   r   rY  r   r/  r  r   masked_dataerr_strr{   r{   r|   r    s.   z&SnowflakeRestful._handle_unknown_errorcatch_okta_unauthorized_erroris_raw_textis_raw_binaryis_okta_authenticationr  c                 C  s  |d u r| j jd urtd | j j}nt}td| z|s4|r4t|dkr4d|d< t|d}n|}t	 }|d urF|d urFt
||nt|}|j|||||d|
|d}t	 }z|jtkrtd	 |	rk|j}n|
rw||j|| }n| }|W |  W S t|r|jtkrtt|jrt|j}|rtd
dt|rtjd| dd tdtdt| d t||jtkr|rt| j | W |  W d S |r|  t | j ||| W |  W d S |  w  t!y% } z*t"|rt|dt#| dt$ }t| t%&| j d t|t'd W Y d }~d S d }~w t(t)t*t+t,t-j.j/t0t1t2t3t4fya } z#t|rOtjd| dd tdt5dtjd| dd t|d }~w t6yo } z|d }~ww )Nz&socket_timeout specified in connectionzsocket timeout: %sr   gziprR  r   T)r   r   r   r/  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   r[  r  r  DEFAULT_SOCKET_CONNECT_TIMEOUTlenr  compressr   rK   r   r   r   r~   r   textto_iteratorrawr  r  r   r   r6   r}   r   r>   r;   r1   r   r   r   raise_for_statusr   rT   r   r   r   r5   r   r/   r   rQ   rR   r   rU   OpenSSLSSLSysCallErrorKeyError
ValueErrorrS   RuntimeErrorAttributeErrorr,   r   )r   r  r   rY  r   r/  r   r   r  r  r  binary_data_handlerr[  r  r  
input_datadownload_start_timer  raw_retdownload_end_timerA  rB  ser   r{   r{   r|   r  ,  s   






)


	

	
zSnowflakeRestful._request_execstr | bytesGenerator[Session, Any, None]c                 C  s   | j |S r   )r   r  r   r   r{   r{   r|   r    r   zSnowflakeRestful.use_sessionc                 C  s
   |  |S r   )r  r  r{   r{   r|   use_requests_session  r   z%SnowflakeRestful.use_requests_session)r   r   r   r   NN)r   r   r   rw   r   r   r   rw   r   r   r   r   rx   r   )rx   r   )rx   rw   r   )r   r   rx   r   )rx   r   )rx   rC   )rx   r   )Nr  r  NFFF)r   r   r  r   r  r  r  ry   r	  ry   r
  ry   )NNN)rx   rC  )F)rF  ry   rx   r   )NNNF)r   r   r   rO  r   r   r   r   r  r  rP  ry   rx   rQ  )NNNNFFF)r   r   r  r  r[  r  r  ry   r  ry   r	  ry   )NN)r   r   rY  r   r   rQ  r/  ri  r  r  rx   rj  r{  )r  ry   )T)r   r   rY  r   r   r   r  rw   r  rw   r  rW   r  ry   rx   r   )NFFFNNFF)r  ry   r  ry   r  ry   r[  r  r  ry   r  ry   )r   r  rx   r  )%r   r   r   r   r   propertyr   r   r   r   setterr   r   r   r   r  r  r   r#  r&  r)  r'  rE  rN  r  r  rU  staticmethodr  r   r  r  r  r  r  r  r  r{   r{   r{   r|   r   7  s    4

L

G;6\: 

 
r   )rv   rw   rx   ry   )r~   rw   rx   r5   )r   r   r   rN   rx   r   )
r   r   r   r   r   r   r   rN   rx   r   )r   r   rx   ry   )r   r   rx   ry   )
__future__r   r  r  loggingrf  rd  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.   r/   r0   r1   errorsr2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   r   rB   rC   rD   rE   r   rF   rG   rH   	time_utilrI   rJ   rK   tool.probe_connectionrL   vendoredrM   vendored.requestsrN   rO   vendored.requests.authrP   vendored.requests.exceptionsrQ   rR   rS   rT   vendored.urllib3.exceptionsrU   vendored.urllib3.util.urlrV   r   rW   	getLoggerr   r  inject_into_urllib3APPLICATION_SNOWSQLr  rc  rb  r8  r9  r:  r;  r<  &ID_TOKEN_INVALID_LOGIN_REQUEST_GS_CODEr=  "OAUTH_ACCESS_TOKEN_EXPIRED_GS_CODEr  r  r(  r   r   r   r6  r  SNOWFLAKE_HOST_SUFFIXr  r   ri   __annotations__DEFAULT_AUTHENTICATORrW  KEY_PAIR_AUTHENTICATOROAUTH_AUTHENTICATORrn   ro   ID_TOKEN_AUTHENTICATORUSR_PWD_MFA_AUTHENTICATORrr   NO_AUTH_AUTHENTICATORWORKLOAD_IDENTITY_AUTHENTICATORru   r}   r   r   r   r   r   r   r   r   r   r   JSONEncoderr   r   r{   r{   r{   r|   <module>   s   H$	($
H	
 





