
    Pi              
       P   U 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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mZmZmZmZmZmZmZ d dlZd dlZd dlmZ dZdZdZ dZ!dZ"d	Z#d
Z$dZ%d Z&dZ'dZ(dZ)dZ*ddgZ+ ej,                    Z-e$e%dfde.de.de.dee.         fdZ/ G d d          Z0 G d d          Z1de2de2de2de2fdZ3 G d d e4          Z5de6deee2         ee2         f         fd!Z7d"d#deee2         ee2         ee2         f         fd$Z8 G d% d&e5          Z9 G d' d(e9          Z: G d) d*e9          Z; G d+ d,e9          Z< G d- d.e9          Z= G d/ d0e          Z> G d1 d2e          Z? G d3 d4          Z@ e@ee 5          ZA G d6 d7          ZB G d8 d9          ZCi ZDee2ee.eEf         f         eFd:<   d;e2deEfd<ZG G d= d>e4          ZHd?ed@ej        dAeEdBe.de6f
dCZIdDeBdEeg e0f         dd#fdFZJ G dG dHejK                  ZLdIedefdJZM G dK dL          ZN G dM dNejO                  ZP G dO dPejQ                  ZRdQede6fdRZSdadSeeE         dTeeE         de2fdUZTdVe2de2fdWZUdXe2dYe2de2fdZZVdDeBd[e2deEfd\ZWe G d] d^e                      ZXee2eXd_f         ZYdVeYde2fd`ZZdS )b    N)AnyCallableDictIteratorListMapping
NamedTupleOptionalProtocolSequenceTupleUnionruntime_checkable)_xmli       
   i   i,  iX  g?g      N@      zhttps://storage.googleapis.com)i    i  i    i  z*[SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC]z('Connection aborted.',initialmaximum
multiplierreturnc              #   l   K   dV  | }	 |t                                           z  V  ||z  }||k    r|},Nr   )rngrandom)r   r   r   bases       d/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/blobfile/_common.pyexponential_sleep_generatorr!   >   sQ       GGGDSZZ\\!!!!
'>>D    c                       e Zd ZdZdddddefdededeeeef                  deeeef                  d	ed
e	de
e         de
e         ddfdZdefdZdS )Requestz/
    A struct representing an HTTP request
    NT)   methodurlparamsheadersdatapreload_contentsuccess_codesretry_codesr   c	                 v    || _         || _        || _        || _        || _        || _        || _        || _        d S N)r&   r'   r(   r)   r*   r+   r,   r-   )	selfr&   r'   r(   r)   r*   r+   r,   r-   s	            r    __init__zRequest.__init__Q   sE     "394;	%4,9*5r"   c                 8    d| j          d| j         d| j         dS )Nz<Request method=z url=z params=>)r&   r'   r(   r0   s    r    __repr__zRequest.__repr__f   s)    T$+TTDHTTdkTTTTr"   )__name__
__module____qualname____doc__DEFAULT_RETRY_CODESstrr
   r   r   boolr   intr1   r5    r"   r    r$   r$   L   s          /3/3 $'-%86 66 6 c*+	6
 '#s(+,6 6 6  }6 c]6 
6 6 6 6*U# U U U U U Ur"   r$   c                   0    e Zd ZdZdedededdfdZd ZdS )	FileBodyzq
    A struct for referencing a section of a file on disk to be used as the `data` property
    on a Request
    pathstartendr   Nc                 0    || _         || _        || _        d S r/   rA   rB   rC   )r0   rA   rB   rC   s       r    r1   zFileBody.__init__p   s    	
r"   c                 8    d| j          d| j         d| j         dS )Nz<FileBody path=z start=z end=r3   rE   r4   s    r    r5   zFileBody.__repr__u   s)    OOO4:OODHOOOOr"   )r6   r7   r8   r9   r;   r=   r1   r5   r>   r"   r    r@   r@   j   sb         
S  3 4    
P P P P Pr"   r@   base_urltemplater*   c                     i }|                                 D ])\  }}t          j                            |d          ||<   *|  |j        di |z   S )N )safer>   )itemsurllibparsequoteformat)rG   rH   r*   escaped_datakvs         r    	build_urlrT   y   s_    L

 9 91 ,,,QR,88Qoho555555r"   c                   ,     e Zd ZdZdedef fdZ xZS )Errorz#Base class for blobfile exceptions.messageargsc                 J    || _          t                      j        |g|R   d S r/   )rW   superr1   )r0   rW   rX   	__class__s      r    r1   zError.__init__   s/    #(4((((((r"   )r6   r7   r8   r9   r;   r   r1   __classcell__r[   s   @r    rV   rV      sQ        --) )C ) ) ) ) ) ) ) ) ) )r"   rV   c                    |                      d          rN	 t          j        |           }|d         d         |d                             d          fS # t          $ r Y nhw xY w|                      d          rO	 t          j        |           }t          |d                   |                    d          fS # t          $ r Y nw xY wdS )	Ns   ﻿<?xmlrV   CodeMessage   {errorerror_descriptionNN)
startswithxmlrN   get	Exceptionjsonloadsr;   )r*   results     r    _extract_errorrl      s    +,, 	Yt__F'?6*F7O,?,?	,J,JJJ 	 	 	D				 	Z%%Fvg''4G)H)HHH 	 	 	D	:s#   <A 
A! A!:=B8 8
CCresponseurllib3.BaseHTTPResponsec                     d }d }d }| j         t          | j                   \  }}| j        r6d                    d | j                                        D                       }|||fS )N, c              3   *   K   | ]\  }}| d | V  dS )z: Nr>   ).0headervalues      r    	<genexpr>z/_extract_error_from_response.<locals>.<genexpr>   s4      cc6 4 4U 4 4ccccccr"   )r*   rl   r)   joinrL   )rm   errerr_descerr_headerss       r    _extract_error_from_responserz      sv     CHK} &x}55X diicc(JZJ`J`JbJbccccc+%%r"   c                        e Zd ZdZ	 ddedededee         dee         dee         f fd	Zd
efdZe	dede
ddd
efd            Z xZS )RequestFailurezA
    A request failed, possibly after some number of retries
    NrW   request_stringresponse_statusrb   rc   error_headersc                     || _         || _        || _        || _        || _        t                                          || j         | j        | j        | j        | j                   d S r/   )r}   r~   rb   rc   r   rZ   r1   )r0   rW   r}   r~   rb   rc   r   r[   s          r    r1   zRequestFailure.__init__   sr     $2$3$)
0A,9 J"	
 	
 	
 	
 	
r"   r   c                 f    d| j          d| j         d| j         d| j         d| j         d| j         S )Nzmessage=z
, request=z	, status=z, error=z, error_description=z, error_headers=rW   r}   r~   rb   rc   r   r4   s    r    __str__zRequestFailure.__str__   su    ^t| ^ ^t/B ^ ^*^ ^48J^ ^!%!7^ ^IMI[^ ^	
r"   requestrm   rn   c                 n    t          |          \  }}} | |t          |          |j        |||          S )Nr   )rz   r;   status)clsrW   r   rm   rw   rx   ry   s          r    create_from_request_responsez+RequestFailure.create_from_request_response   sN     &B(%K%K"X{ sw<<$O&%
 
 
 	
r"   r/   )r6   r7   r8   r9   r;   r=   r
   r1   r   classmethodr$   r   r   r\   r]   s   @r    r|   r|      s          (,
 

 
 	

 }
 $C=
  }
 
 
 
 
 
.
 
 
 
 
 

$+
7Q
	
 
 
 [
 
 
 
 
r"   r|   c                       e Zd ZdZdS ) RestartableStreamingWriteFailurezo
    A streaming write failed in a permanent way that requires restarting from the beginning of the stream
    Nr6   r7   r8   r9   r>   r"   r    r   r                	Dr"   r   c                       e Zd ZdZdS )ConcurrentWriteFailurez9
    A write failed due to another concurrent writer
    Nr   r>   r"   r    r   r      r   r"   r   c                       e Zd ZdZdS )DeadlineExceededz7
    A read failed after the deadline was exceeded
    Nr   r>   r"   r    r   r      r   r"   r   c                       e Zd ZdZdS )VersionMismatchza
    A write failed due to a version mismatch, using ETag for azure or generation for gcloud
    Nr   r>   r"   r    r   r      r   r"   r   c                   Z    e Zd ZU eed<   eed<   eed<   ee         ed<   ee         ed<   dS )Statsizemtimectimemd5versionN)r6   r7   r8   r=   __annotations__floatr
   r;   r>   r"   r    r   r      sM         
IIILLLLLL	#c]r"   r   c                   N    e Zd ZU eed<   eed<   eed<   eed<   ee         ed<   dS )DirEntryrA   nameis_diris_filestatN)r6   r7   r8   r;   r   r<   r
   r   r>   r"   r    r   r     sF         
III
IIILLLMMM
4.r"   r   c                   d    e Zd ZdededdfdZdej        fdZdee	e
f         fdZde
ddfd	ZdS )
PoolDirectorconnection_pool_max_sizemax_connection_pool_countr   Nc                 n    || _         || _        d | _        d | _        t	          j                    | _        d S r/   )r   r   pool_managercreation_pid	threadingLocklock)r0   r   r   s      r    r1   zPoolDirector.__init__  s5    (@%)B&  N$$			r"   c                    | j         5  | j        | j        t          j                    k    r=t          j                    | _        t          j        | j        | j                  | _        | j        cd d d            S # 1 swxY w Y   d S )N)maxsize	num_pools)	r   r   r   osgetpidurllib3PoolManagerr   r   r4   s    r    get_http_poolzPoolDirector.get_http_pool  s     Y 	% 	% (D,=,L,L$&IKK!$+$7 9TEc% % %!
 $	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   A'A<<B B c                 H    d | j                                         D             S )Nc                 "    i | ]\  }}|d v	||S ))r   r   r>   )rr   rR   rS   s      r    
<dictcomp>z-PoolDirector.__getstate__.<locals>.<dictcomp>%  s)    \\\A!C[:[:[1:[:[:[r"   )__dict__rL   r4   s    r    __getstate__zPoolDirector.__getstate__$  s$    \\!4!4!6!6\\\\r"   statec                     |                      |d         |d                    | j                            |           d S )Nr   r   r   r   )r1   r   update)r0   r   s     r    __setstate__zPoolDirector.__setstate__'  sM    %*+E%F&+,G&H 	 	
 	
 	
 	U#####r"   )r6   r7   r8   r=   r1   r   r   r   r   r;   r   r   r   r>   r"   r    r   r     s        % %QT %Y] % % % %%w2 % % % % ]d38n ] ] ] ]$# $$ $ $ $ $ $ $r"   r   r   c            (           e Zd Zdeegdf         dedededededed	ee         d
ee         dee         dededeeg ej	        f                  dedededeeg ee
         f                  dededdf(dZdej	        fdZdS )Configlog_callbackNr   r   azure_write_chunk_sizegoogle_write_chunk_sizeretry_log_thresholdretry_common_log_thresholdretry_limitconnect_timeoutread_timeoutoutput_az_paths&use_azure_storage_account_key_fallbackr   use_streaming_readuse_blind_writesdefault_buffer_sizeget_deadlinesave_access_token_to_diskmultiprocessing_start_methodr   c                 V   || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        || _        || _        |!|t$          k    s|t&          k    r |d           || _        d S )Nzwarning: max_connection_pool_count and connection_pool_max_size are no longer supported, set get_http_pool instead if you want to control http pooling)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   !DEFAULT_MAX_CONNECTION_POOL_COUNT DEFAULT_CONNECTION_POOL_MAX_SIZE_get_http_pool)r0   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                       r    r1   zConfig.__init__9  s    , )(@%)B&&<##6 *D'&'>$.(.6\3"4 0#6 ()B&,H) )-NNN+/OOO m   ,r"   c                 j    | j         t                                          S |                                  S r/   )r   global_pool_directorr   r4   s    r    r   zConfig.get_http_pooll  s/    &'55777&&(((r"   )r6   r7   r8   r   r;   r=   r
   r<   r   r   r   r1   r   r>   r"   r    r   r   8  sI       1,ud{+1, #&1, $'	1,
 !$1, "%1, !1, %(1, c]1, "#1, sm1, 1, 151,  W-@)@ AB1, !1,  !1," !#1,$ xHUO(;<=%1,& $('1,( '*)1,* 
+1, 1, 1, 1,f)w2 ) ) ) ) ) )r"   r   c                   v    e Zd ZdZdedededdfdZdefdZej	        fd	ed
eddfdZ
ddee         defdZdS )WindowedFilez<
    A file object that reads from a window into a file
    frB   rC   r   Nc                 h    || _         || _        || _        d| _        |                     d           d S )Nr   )_f_start_end_posseek)r0   r   rB   rC   s       r    r1   zWindowedFile.__init__x  s1    				!r"   c                      | j         | j        z
  S r/   )r   r   r4   s    r    tellzWindowedFile.tell  s    y4;&&r"   offsetwhencec                     | j         |z   }|t          j        k    r| j         |cxk    r| j        k     sn J | j                            ||           || _        d S r/   )r   ioSEEK_SETr   r   r   r   )r0   r   r   new_poss       r    r   zWindowedFile.seek  sd    +&$$)K)K)K)K$))K)K)K)K)KKWf%%%			r"   nc                 h   | j         | j        k    sJ || j        | j         z
  }t          || j        | j         z
            }| j                            |          }| xj         t          |          z  c_         |dk    r"t          |          dk    rt          d          | j         | j        k    sJ |S )Nr   z0failed to read expected amount of data from file)r   r   minr   readlenrV   )r0   r   bufs      r    r   zWindowedFile.read  s    yDI%%%%9	DI%A49ty())gll1oo		SXX		q55SXX]]JKKKyDI%%%%
r"   r/   )r6   r7   r8   r9   r   r=   r1   r   r   r   r   r
   r   r>   r"   r    r   r   s  s         # c      'c ' ' ' ' /1k  3  d    
 
hsm 
s 
 
 
 
 
 
r"   r   _hostname_check_cachehostnamec                     dt           dt          fd}t          j                    }| t          v r*t          |          d         |k    rt          |          d         S  ||           }|dz   |ft          | <   |S )Nr   r   c                    	 t          j        | d t           j                   n# t           j        $ r}|j        t           j        k    r!|j        t           j        k    rt          cY d }~S 	 t          j        dd t           j                   n!# t           j        $ r t          cY cY d }~S w xY wt          cY d }~S d }~ww xY wt          S )N)familyzwww.bing.com)
socketgetaddrinfoAF_INETgaierrorerrno
EAI_NONAME
EAI_NODATAHOSTNAME_STATUS_UNKNOWNHOSTNAME_DOES_NOT_EXISTHOSTNAME_EXISTS)r   es     r    innerz_check_hostname.<locals>.inner  s    	+xfnEEEEE 	+ 	+ 	+w&+++6;L0L0L......./">4OOOOO? / / / /......../ +******)	+. sJ   !$ B>0B9#B>*!BB9B*"B9#B>)B**	B93B>9B>r   r   r   )r;   r=   timer   )r   r   nowrets       r    _check_hostnamer    s         : )++C(((-B8-LQ-OSV-V-V$X.q11
%//C'*Rxo(#Jr"   c                       e Zd ZdS )TimeoutN)r6   r7   r8   r>   r"   r    r  r    s        Dr"   r  fpsocknbytes_to_readdeadlinec                    |t          j                     z
  }|dk    rt          d          |                    |           	 |                                 }n"# t          j        $ r t          d          w xY wt          |          }t          |          }||d t          |          <   t          |          }||k     r|t          j                     z
  }|dk    rt          d          |                    |           	 |	                    ||d                    }	n"# t          j        $ r t          d          w xY w||	z  }||k     t          |          S )Nr   z1Did not read enough bytes before deadline expiredzTimed out waiting for read)r   r  
settimeoutpeekr   timeout	bytearray
memoryviewr   	recv_intobytes)
r  r  r  r	  r  initial_datar   mvnbytes_readr   s
             r    _read_with_deadliner    st    $G!||IJJJOOG4wwyy> 4 4 423334 N
#
#C	CB*B\		l##K

&
&TY[[(a<<MNNN   	8r+,,/00AA~ 	8 	8 	86777	8q 
&
& ::s   A A6D D>conf	build_reqc                 B   t          t                                D ]\  }} |            }|j        }|j        Bt	          |j                  dk    r*|dt
          j                            |j                  z   z  }d }t          |j	        t                    rAt          |j	        j        d          }t          ||j	        j        |j	        j                  }n|j	        }|j        }d }	d }
| j        |j        dk    r|                                 }	|	z|s
J d            d}t'          j                    }||	k    rNt(                              d|t,          j                            dt3          j        d	          
                    |	|z
  }
d }	 |                                                     |j        ||j        |t-          j        | j        | j         |
          |dd          }|	|j        !                    d          dk    r|j	         n|j"        j#        }|j$        j%        }	 tM          ||tO          |j        d                   |	          }|(                                 t,          j                            |j)        |j        |          }nF# t<          $ r9}|*                                 t(                              d| ||          d }~ww xY w|j)        |j+        v r|||*                                 c S c S d|j)         }tX          }|-                    t\                    r1|j)        dv r|dz  }nT|j)        dk    r|dz  }nC|j)        dk    r|dz  }n2|j)        dk    r'|j        !                    d          dk    r	t^          }d}|                    |||          }|j)        |j0        vr|n# t,          j1        j2        t,          j1        j3        t,          j1        j4        t,          j1        j5        tl          j5        f$ rd}t          |t,          j1        j7                  rt
          j        8                    |j                  }|j9        J |j9        :                    d          rtw          |j9                  tx          k    rt,          j                            tz          t3          j        d	          
          }|j)        |j+        v r"|cY d }~||*                                 c S c S tX                              d ||!          |tX                              d| |t,          j                            dt3          j        d	          
                    }Y d }~nd }~ww xY w||*                                 n# ||*                                 w w xY w| j>        || j>        k    r||t          | t          |                    k    r#| A                    d"| d#| d$| d%|d&d'	           t'          jB        |           J d(            ))Nr   ?rbrB   rC   HEADz9preload_content must be set to True when using a deadlineFz(refusing to send request due to deadliner"   )r   body)rW   r   rm   )connectr   total)r&   r'   r)   r  r  r+   retriesredirectzTransfer-EncodingchunkedzContent-Length)r  r  r  r	  )r   r)   r  zrequest failed with exception zunexpected status )r   r   z: if you are writing a blob this error may be due to multiple concurrent writers - make sure you are not writing to the same blob from multiple processes simultaneouslyi  z: no valid credentials were found, please login with 'gcloud auth application-default login' or else set the 'GOOGLE_APPLICATION_CREDENTIALS' environment variable to the path of a JSON format service account keyi  z: credentials were found but do not grant access to this resource, please make sure the account you are using (either via 'gcloud auth application-default login' or the 'GOOGLE_APPLICATION_CREDENTIALS' environment variable) has accessi  zx-ms-error-codeConditionNotMetzetag mismatchz.blob.core.windows.netzhost does not exist)r   rm   error z when executing http request 	 attempt , sleeping for .1f seconds before retryingunreachable)C	enumerater!   r'   r(   r   rM   rN   	urlencode
isinstancer*   r@   openrA   r   rB   rC   r+   r   r&   r   r   r   r   rm   HTTPResponser   BytesIOr   r   r)   r  r   r   rg   _fpr  raw_sockr  r=   release_connr   closer,   r|   re   GCP_BASE_URLr   r-   
exceptionsConnectTimeoutErrorReadTimeoutErrorProtocolErrorSSLErrorsslNewConnectionErrorurlparser   endswithr  r   INVALID_HOSTNAME_STATUSr   get_log_threshold_for_errorr;   r   sleep)r  r  attemptbackoffreqr'   r   r  r+   r	  total_timeoutr  rw   respr  r  r   rW   error_class	fake_resps                       r    execute_requestrI    s   %&A&C&CDD ] ]ikkg:!3:""sV\33CJ????ch)) 	SX]D))ASX\JJJDD8D-(SZ6-A-A((**H#&cc(ccc"'ikk(??*GG J #!(!1!>!>abjY\oo!>!^!^ H    !)3o	%%''//z 0t7HP]   !0 0  D #<##$788IEEIII #hkB*,&,D2!!%+.t|<L/M+N+N%-	      ))+++&/<<#';4  =     #   

.KK$HQ$H$HRU`d L   
 {c///D }						 }}A =t{<<,>>,// .{j00  $N  N++  $y  y++  $P  PK3&&4<+;+;<M+N+NRc+c+c"1K-G!>>#S4 ?   ;co55I 6 2/,
 ' L
 +	 +	 +	  !W/BCC ! l++CG44|///L))*BCC!'559PPP
 !( 0 = =6Z__ !> ! !I !'3+<<<(((((( }						 }} -II13 J   ! !==<<< )66abjQToo6VV >  CCCCCCO+	Z }			 }				  'Gt7G,G,GI1$CAAAA G  G  G3  G  G  G  Gah  G  G  G  G   	
7-5sr   BN>)A+JN>
K4KKN>B6N><V>AU3C
U.U3V:A/U.)V.U33VV&c                   (     e Zd Zdedef fdZ xZS )TupleEncoderor   c                     dt           dt           ffdt                                           |                    S )Nitemr   c                     t          | t                    rd| dS t          | t                    rfd| D             S t          | t                    r fd|                                 D             S | S )NT)	__tuple__rL   c                 &    g | ]} |          S r>   r>   )rr   r   hint_tupless     r    
<listcomp>z<TupleEncoder.encode.<locals>.hint_tuples.<locals>.<listcomp>  s!    5551A555r"   c                 .    i | ]\  }}| |          S r>   r>   )rr   keyrt   rR  s      r    r   z<TupleEncoder.encode.<locals>.hint_tuples.<locals>.<dictcomp>  s)    OOOJC[[//OOOr"   )r,  tuplelistdictrL   )rN  rR  s    r    rR  z(TupleEncoder.encode.<locals>.hint_tuples  s    $&& :%)D999$%% 655555555$%% OOOO$**,,OOOOr"   )r   rZ   encode)r0   rL  rR  r[   s     @r    rY  zTupleEncoder.encode  sP    	c 	c 	 	 	 	 	 	 ww~~kk!nn---r"   )r6   r7   r8   r   rY  r\   r]   s   @r    rK  rK    sK        . . . . . . . . . . . .r"   rK  objc                 8    d| v rt          | d                   S | S )NrP  rL   )rV  )rZ  s    r    hinted_tuple_hookr\    s$    cS\"""
r"   c                       e Zd ZdZdeeegeeef         f         de	ddfdZ
d Zdee	gdf         fd	Zd
ededefdZdS )TokenManagerz7
    Automatically refresh tokens when they expire
    get_token_fnr   r   Nc                     || _         i | _        i | _        t          j                    | _        t          j                            d| d          | _	        t          j                            d| d          | _
        d S )Nz~/.blobfile/z_tokens.lockz_tokens.json)_get_token_fn_tokens_expirationsr   r   _lockr   rA   
expanduser_access_lock_file_access_token_file)r0   r_  r   s      r    r1   zTokenManager.__init__  sv    )^%%
!#!3!34U44U4U4U!V!V"$'"4"45VD5V5V5V"W"Wr"   c                    t           j                            | j                  rt	          | j                  5 }t          j        |t                    }t          |d         |d                   D ]\  }}|| j	        |<   t          |d         |d                   D ]\  }}|| j
        |<   	 d d d            d S # 1 swxY w Y   d S d S )N)object_hook
token_keystoken_valuesexpiration_keysexpiration_values)r   rA   existsrg  r-  ri   loadr\  ziprb  rc  )r0   r   tokensrU  rt   s        r    _load_token_filezTokenManager._load_token_file  s    7>>$122 	3d-.. 3!12CDDD"%f\&:F><R"S"S . .JC(-DL%%"%f->&?H[A\"]"] 3 3JC-2D%c**3	3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3s   A4B;;B?B?r   c                    t          j        t           j                            | j                  d           	 t          j        | j        d          5  t          j        t           j                            | j                  d           | j        dz   }t          |d          5 }|	                    t                                          t          | j                                                  t          | j                                                  t          | j                                                  t          | j                                                  d                     d d d            n# 1 swxY w Y   t          j        || j                   d d d            d S # 1 swxY w Y   d S # t
          j        $ r  |d           Y d S w xY w)	NT)exist_okr   )r  z.tmpw)rj  rk  rl  rm  z>Another instance of this application currently holds the lock.)r   makedirsrA   dirnamerf  filelockFileLockrg  r-  writerK  rY  rW  rb  keysvaluesrc  replacer  )r0   r   tmp_pathr   s       r    _save_token_filezTokenManager._save_token_file  s2   
BGOOD$:;;dKKKK	["4#91EEE > >BGOOD,CDDtTTTT2V;(C(( 
AGG$--.24<3D3D3F3F.G.G04T\5H5H5J5J0K0K378I8N8N8P8P3Q3Q59$:K:R:R:T:T5U5U	  	 	 	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8T%<===> > > > > > > > > > > > > > > > > >   	[ 	[ 	[LYZZZZZZ	[s[   F= AF0(C
E>2F0>F	F0F	F0#F= 0F44F= 7F48F= =GGr  rU  c                 p   | j         5  t          j                    }| j                            |          }||t          z   |k    r|j        r|                                  | j                            |          }||t          z   |k    rC|                     ||          \  | j        |<   | j        |<   | 	                    |j
                   n)|                     ||          \  | j        |<   | j        |<   | j        |         J || j        v sJ | j        |         cd d d            S # 1 swxY w Y   d S r/   )rd  r   rc  rg   EARLY_EXPIRATION_SECONDSr   rr  ra  rb  r  r   )r0   r  rU  r  
expirations        r    	get_tokenzTokenManager.get_token  s   Z 	% 	%)++C*..s33J!c,D&D
%R%R1 ^))+++!%!2!6!6s!;!;J!)c4L.LPZ-Z-ZDHDVDVW[]`DaDaAS)4+<S+A--d.?@@@ AE@R@RSWY\@]@]=DL%t'8'=(-999$,&&&&<$)	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   DD++D/2D/)r6   r7   r8   r9   r   r   r   r   r   r;   r1   rr  r  r  r>   r"   r    r^  r^    s         XXvsmU3:=N.N%O XWZ X_c X X X X3 3 3[XseTk-B [ [ [ [.%f %3 %3 % % % % % %r"   r^  c                        e Zd ZdededdfdZdededdfdZdd
ededefdZ	d fdZ
defdZdefdZdedefdZdedefdZdej        fdZddedefdZdedefdZ xZS )BaseStreamingWriteFiler  
chunk_sizer   Nc                 V    d| _         t                      | _        || _        || _        d S r   )_offsetr  _buf_chunk_size_conf)r0   r  r  s      r    r1   zBaseStreamingWriteFile.__init__  s'    KK	%


r"   chunkfinalizec                     t           r/   NotImplementedError)r0   r  r  s      r    _upload_chunkz$BaseStreamingWriteFile._upload_chunk  s    !!r"   Fr   c                    |rt          |          }n't          |          | j        z  | j        z  }|dk    sJ 	 |d |         }|                     ||           | xj        t          |          z  c_        ~~n# ~~w xY w|S r   )r   r  r  r  )r0   r   r  r   r  s        r    _upload_bufz"BaseStreamingWriteFile._upload_buf  s     	s88DDHH 00D4DDD!8888	JEuh///LLCJJ&LLsssNNNNs   =A; ;A?c                    | j         rd S |                     t          | j                  d          }|t	          | j                  k    sJ t                      | _        t                                                       d S )NT)r  )closedr  r  r  r   r  rZ   r4  )r0   r   r[   s     r    r4  zBaseStreamingWriteFile.close  so    ; 	F 
49 5 5EEs49~~%%%%KK	r"   c                 :    | j         t          | j                  z   S r/   )r  r   r  r4   s    r    r   zBaseStreamingWriteFile.tell  s    |c$)nn,,r"   c                     dS NTr>   r4   s    r    writablezBaseStreamingWriteFile.writable      tr"   bc                 6   t          | j                  dk    rYt          |          | j        k    rAt          |          }|                     |          }t          ||d                    | _        n{| xj        |z  c_        t          | j                  | j        k    rN	 t          | j                  }|                     |          }t          ||d                    | _        ~n# ~w xY wt          | j                  | j        k     sJ t          |          S r   )r   r  r  r  r  r  )r0   r  r  r   s       r    rz  zBaseStreamingWriteFile.write  s    ty>>Q3q66T-=#=#=AB##B''D!"TUU),,DIIIINII49~~!111#DI..B++B//D )"TUU) 4 4DIFFFF49~~ 000001vvs    AC' 'C*c                 *    t          j        d          Nznot readabler   UnsupportedOperationr0   r  s     r    readintozBaseStreamingWriteFile.readinto      %n555r"   c                 *    t          j        d          )Nzno underlying raw streamr  r4   s    r    detachzBaseStreamingWriteFile.detach  s    %&@AAAr"   r   r   c                 *    t          j        d          r  r  )r0   r   s     r    read1zBaseStreamingWriteFile.read1   r  r"   c                 *    t          j        d          r  r  r  s     r    	readinto1z BaseStreamingWriteFile.readinto1#  r  r"   )Fr   N)r   )r6   r7   r8   r   r=   r1   r  r<   r  r  r4  r   r  r  rz  r   r  r   	RawIOBaser  r  r  r\   r]   s   @r    r  r    s       V      ": " "$ " " " " z T c         -c - - - -$    u     &6# 6# 6 6 6 6B B B B B6 6# 6u 6 6 6 663 63 6 6 6 6 6 6 6 6r"   r  c            	            e Zd Zdedededdf fdZ	 ddeded	ee         dd
fdZ	de
fdZdedee         fdZej        fdededefdZdefdZd fdZdefdZdefdZ xZS )BaseStreamingReadFiler  rA   r   r   Nc                     t                                                       || _        || _        || _        d| _        d | _        d| _        d| _        d| _	        d S r   )
rZ   r1   r  _size_pathr  r   requestsfailures
bytes_read)r0   r  rA   r   r[   s       r    r1   zBaseStreamingReadFile.__init__(  sU    


r"   	streamingrB   rC   rn   c                     t           r/   r  )r0   r  rB   rC   s       r    _request_chunkz$BaseStreamingReadFile._request_chunk4  s
     "!r"   c                 0   g }	 | j         | j        z
  }|dk    s
J d            |                     t          t          |                    }|
J d            |}t          |          dk    rn|                    |           d                    |          S )NTr   zread more bytes than expectedfile is in non-blocking moder"   )r  r  r   r   
CHUNK_SIZEr   appendrv   )r0   piecesbytes_remaining	opt_piecepieces        r    readallzBaseStreamingReadFile.readall9  s     		!"j4<7O"a''')H'''		#j/"B"BCCI((*H(((E5zzQMM%   		! xxr"   r  c                    | j         | j        z
  }|dk    st          |          dk    rdS t          |t                    st	          |          }t          |          |k    r
|d |         }d}| j        j        rt          t                                D ]\  }}| j	        A| 
                    d| j                  }|j        dk    r dS || _	        | xj        dz  c_        d }	 | j	                            |          }|
J d            |}|dk    rt          d| j                   }n n/ng# t           j        j        t           j        j        t           j        j        t*          j        f$ r$}	t          d|	 d	| j                   }Y d }	~	nd }	~	ww xY w| j	                                         d | _	        | xj        dz  c_        | j        j        || j        j        k    r||t3          | j        t5          |                    k    r=| j                            d
| dt          |           d| j         d| d|dd           t9          j        |           no| 
                    d| j        | j        t          |          z             }|j        dk    rdS | xj        dz  c_        t          |j                  }|j        |d |<   | xj        |z  c_        | xj        |z  c_        |S )Nr   T)r  rB   i  r   r  z5failed to read from connection while reading file at z
exception z while reading file at r$  z when executing readinto(z) at offset r%  r&  r'  r(  F)r  rB   rC   ) r  r  r   r,  r  r  r   r*  r!   r   r  r   r  r  rV   r  r   r6  r8  r9  r:  r;  r4  r  r   r@  r;   r   r   rA  r*   r  )
r0   r  r  r   rB  rC  rF  rw   opt_nr   s
             r    r  zBaseStreamingReadFile.readintoM  si   *t|3a3q66Q;;1 !Z(( 	1Aq66O##"?"#A:( ;	$-.I.K.K$L$L /$ /$ 7?..T\.RRD{c))  !qq"DGMMQ&MMU G,,Q//E ,,.L,,,AAvv $`TXT^`` 
   &7&4&/L	 U U U   SQ S Stz S STTCCCCCCU ":)5'TZE[:[:[I9$*c#hhOOOOJ++ h  h  hs1vv  h  hSWS_  h  hjq  h  h  CJ  h  h  h  h   
7####&&t|A9N '  D {c!! qMMQMMDIAIAbqbE1s   'AD11A F1FFr   r   c                    |t           j        k    r|}np|t           j        k    r| j        |z   }nU|t           j        k    r| j        |z   }n:t          d| dt           j         dt           j         dt           j         d	          || j        k    r.|| _        | j        | j                                         d | _        | j        S )NzInvalid whence (z, should be rp   z, or ))	r   r   SEEK_CURr  SEEK_ENDr  
ValueErrorr   r4  )r0   r   r   
new_offsets       r    r   zBaseStreamingReadFile.seek  s    R[  JJr{"".JJr{""f,JJf6ffr{ffbkffXZXcfff   %%%DLw"DG|r"   c                     | j         S r/   )r  r4   s    r    r   zBaseStreamingReadFile.tell  s
    |r"   c                     | j         rd S t          | d          r'| j         | j                                         d | _        t	                                                       d S )Nr   )r  hasattrr   r4  rZ   )r0   r[   s    r    r4  zBaseStreamingReadFile.close  sX    ; 	F4 	47#6
 GMMOOODGr"   c                     dS r  r>   r4   s    r    readablezBaseStreamingReadFile.readable  r  r"   c                     dS r  r>   r4   s    r    seekablezBaseStreamingReadFile.seekable  r  r"   r/   r  )r6   r7   r8   r   r;   r=   r1   r<   r
   r  r  r  r   r  r   r   r   r   r4  r  r  r\   r]   s   @r    r  r  '  s       
V 
3 
c 
d 
 
 
 
 
 
 AE" ""&)"08"	#" " " "
         (L# L(3- L L L L\ /1k  3  c    $c         $    $        r"   r  r   c                     t          j                    }	 |                     t                    }|dk    rn|                    |           7|                                S )NTr"   )hashlibr   r   r  r   digest)r   mblocks      r    	block_md5r    sS    Az""C<<		
 88::r"   rB   rC   c                     | |d|  d|dz
   S | d|  dS |!|dk    rd|dz
   S dt          |            S t          d          )Nzbytes=-r   r   zbytes=0-zbytes=-zInvalid range)r=   rV   r  s     r    
calc_ranger    s     S_'''A'''		     	77%c!e%%%(c#hhY(((O$$$r"   rA   c                 n    |                      d          r| d d         } |                      d          | S )N/r   )r>  rA   s    r    strip_slashesr    s>    
--

 CRCy --

 Kr"   ar  c                 2   d| vrd|vsJ | dk    r|S |dk    r| S |d d         dk    r|                     d          }nU|                      d          }|d         dk    r|d= ||                     d          z   }d |dd         D             |dd<   g }|D ]L}|dk    r(t          |          dk    r|                                 0|d	k    r7|                    |           M|d         d
v r|                    d           d                    |          S )Nz://rJ   r   r  r   c                     g | ]
}|d k    |S )rJ   r>   )rr   ss     r    rS  zpath_join.<locals>.<listcomp>  s    ???qBww!wwwr"   ..r   .)r  r  )splitr   popr  rv   )r  r  segments
base_partsresolved_pathsegs         r    	path_joinr    sO    >>e1nnn,BwwBww!u||773<<WWS\\
b>R2,??Xad^???2!M & &$;;=!!A%%!!###CZZ  %%%%|{""R   88M"""r"   rw   c                 `    t          fdt          D                       r| j        S | j        S )Nc              3       K   | ]}|v V  	d S r/   r>   )rr   substrrw   s     r    ru   z.get_log_threshold_for_error.<locals>.<genexpr>  s'      
?
?V6S=
?
?
?
?
?
?r"   )anyCOMMON_ERROR_SUBSTRINGSr   r   )r  rw   s    `r    r@  r@  
  s;    

?
?
?
?'>
?
?
??? (..''r"   c                       e Zd ZdZdefdZdS )BlobPathLikez>Similar to the __fspath__ protocol, but for remote blob paths.r   c                     d S r/   r>   r4   s    r    __blobpath__zBlobPathLike.__blobpath__  s    r"   N)r6   r7   r8   r9   r;   r  r>   r"   r    r  r    s5        HHc      r"   r  zos.PathLike[str]c                     t          | t                    r|                                 S t          | t          j                  r|                                 S | S r/   )r,  r  r  r   PathLike
__fspath__r  s    r    path_to_strr    sO    $%%   """	D"+	&	&    r"   rd   )[r  r   ri   r   r   r   r;  r   r   urllib.parserM   typingr   r   r   r   r   r   r	   r
   r   r   r   r   r   rx  r   blobfiler   rf   r  r   r   PARALLEL_COPY_MINIMUM_PART_SIZEr  r?  BACKOFF_INITIALBACKOFF_MAXr   r   r   r5  r:   r  SystemRandomr   r   r!   r$   r@   r;   rT   rh   rV   r  rl   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r=   r   r  r  r  rI  JSONEncoderrK  r\  r^  BufferedIOBaser  r  r  r  r  r  r  r@  r  RemoteOrLocalPathr  r>   r"   r    <module>r      s    				  				   



                                                     
#%  $& !", !    /4 
 HIbc f %{XY /4PUe_   U U U U U U U U<P P P P P P P P6 6s 6C 6C 6 6 6 6) ) ) ) )I ) ) ) 5#)E#F     &(&
8C=(3-#67& & & &3
 3
 3
 3
 3
U 3
 3
 3
l	 	 	 	 	~ 	 	 		 	 	 	 	^ 	 	 		 	 	 	 	~ 	 	 		 	 	 	 	n 	 	 	    :       z    $  $  $  $  $  $  $  $L $|=?   8) 8) 8) 8) 8) 8) 8) 8)v       D 79 tCucz!223 8 8 8#c #c # # # #L	 	 	 	 	i 	 	 	=25AF
   <_ & _ Xb'k-B _ Ga _  _  _  _ D. . . . .4# . . .3 3    B% B% B% B% B% B% B% B%JG6 G6 G6 G6 G6R. G6 G6 G6T[ [ [ [ [BL [ [ [~     % %hsm %# %# % % % %      !# !# !# !# !# !# !#H(f (3 (3 ( ( ( (     8    #|-??@ ' C      r"   