Ë
    uPêj]  ã                   ó‚   — d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZmZmZ dd	lmZ  G d
„ de«      Zy)ziGCS Cache implementation
Supports syncing responses to Google Cloud Storage Buckets using HTTP requests.
é    N)ÚFinal)Úquote)Úprint_verboseÚverbose_logger)ÚGCSBucketBase)Ú_get_httpx_clientÚget_async_httpx_clientÚhttpxSpecialProvideré   )Ú	BaseCachec            	       ó€   ‡ — e Zd Z	 	 	 ddedz  dedz  dedz  ddfˆ fd„Zdefd„Zd„ Zd	„ Zd
„ Z	d„ Z
d„ Zd„ Zd„ Zˆ xZS )ÚGCSCacheNÚbucket_nameÚpath_service_accountÚgcs_pathÚreturnc                 ó4  •— t         ‰| �  «        |xs t        d ¬«      j                  | _        |xs t        d ¬«      j
                  | _        |r|j                  d«      dz   nd| _        t        t        j                  ¬«      | _        t        «       | _        y )N©r   ú/Ú )Úllm_provider)ÚsuperÚ__init__r   ÚBUCKET_NAMEr   Úpath_service_account_jsonr   ÚrstripÚ
key_prefixr	   r
   ÚLoggingCallbackÚasync_clientr   Úsync_client)Úselfr   r   r   Ú	__class__s       €ú^/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/caching/gcs_cache.pyr   zGCSCache.__init__   sy   ø€ ô 	‰ÑÔØ&ÒU¬-ÀDÔ*I×*UÑ*UˆÔØ$8Ò$u¼MÐVZÔ<[×<uÑ<uˆÔ!Ù8@˜(Ÿ/™/¨#Ó.°Ò4ÀbˆŒä2Ô@T×@dÑ@dÔeˆÔÜ,Ó.ˆÕó    c                 ó’   — t        | j                  ¬«      }| j                  |_        | j                  |_        |j                  «       S )Nr   )r   r   r   r   r   Úsync_construct_request_headers)r!   Úbases     r#   Ú_construct_headerszGCSCache._construct_headers$   s=   € Ü#°×0@Ñ0@ÔAˆØ)-×)BÑ)BˆÔ&Ø×+Ñ+ˆÔØ×2Ñ2Ó4Ð4r$   c                 óR  — 	 t        d|› d|› �«       | j                  «       }| j                  |z   }| j                  }d|› dt	        |d¬«      › �}t        j                  |«      }| j                  j                  |||¬«       y # t        $ r}	t        d|	› �«       Y d }	~	y d }	~	ww xY w)	NzLiteLLM SET Cache - GCS. Key=z. Value=ú3https://storage.googleapis.com/upload/storage/v1/b/ú/o?uploadType=media&name=r   ©Úsafe©ÚurlÚdataÚheadersz3GCS Caching: set_cache() - Got exception from GCS: )
r   r(   r   r   r   ÚjsonÚdumpsr    ÚpostÚ	Exception©
r!   ÚkeyÚvalueÚkwargsr1   Úobject_namer   r/   r0   Úes
             r#   Ú	set_cachezGCSCache.set_cache*   sÁ   € ð		UÜÐ9¸#¸¸hÀuÀgÐNÔOØ!×4Ñ4Ó6ˆGØ!%§¡°3Ñ!6ˆKØ!%×!1Ñ!1ˆKØGÈÀ}ÐTmÔnsÐtð  GIô  oJð  nKð  LˆCÜŸ*™* UÓ+ˆDØ×Ñ×!Ñ! c°¸gÐ!ÕFøÜò 	UÜÐOÐPQÈsÐS×TÑTûð	Uús   ‚BB Â	B&ÂB!Â!B&c              ‹   óL  K  — 	 | j                  «       }| j                  |z   }| j                  }d|› dt        |d¬«      › �}t	        j
                  |«      }| j                  j                  |||¬«      ƒ d {  –—†  y 7 Œ# t        $ r}	t        d|	› �«       Y d }	~	y d }	~	ww xY w­w)Nr*   r+   r   r,   r.   z9GCS Caching: async_set_cache() - Got exception from GCS: )
r(   r   r   r   r2   r3   r   r4   r5   r   r6   s
             r#   Úasync_set_cachezGCSCache.async_set_cache6   sµ   è ø€ ð	[Ø!×4Ñ4Ó6ˆGØ!%§¡°3Ñ!6ˆKØ!%×!1Ñ!1ˆKØGÈÀ}ÐTmÔnsÐtð  GIô  oJð  nKð  LˆCÜŸ*™* UÓ+ˆDØ×#Ñ#×(Ñ(¨S°tÀWÐ(ÓM×MÒMùÜò 	[ÜÐUÐVWÐUXÐY×ZÑZûð	[üsA   ‚B$„A4B  Á8A>Á9B  Á=B$Á>B  Â 	B!Â	BÂB$ÂB!Â!B$c                 ó¸  — 	 | j                  «       }| j                  |z   }| j                  }d|› dt        |d¬«      › d�}| j                  j                  ||¬«      }|j                  dk(  rBt        j                  |j                  «      }t        j                  d||t        |«      «       |S y # t        $ r }	t        j                  d	|	«       Y d }	~	y d }	~	ww xY w)
Nú,https://storage.googleapis.com/storage/v1/b/ú/o/r   r,   ú
?alt=media©r/   r1   éÈ   z<Got GCS Cache: key: %s, cached_response %s. Type Response %sz5GCS Caching: get_cache() - Got exception from GCS: %s)r(   r   r   r   r    ÚgetÚstatus_coder2   ÚloadsÚtextr   ÚdebugÚtyper5   Úerror)
r!   r7   r9   r1   r:   r   r/   ÚresponseÚcached_responser;   s
             r#   Ú	get_cachezGCSCache.get_cacheA   sÛ   € ð	]Ø!×4Ñ4Ó6ˆGØ!%§¡°3Ñ!6ˆKØ!%×!1Ñ!1ˆKØ@ÀÀÈSÔQVÐWbÐikÔQlÐPmÐmwÐxˆCØ"×.Ñ.×2Ñ2°sÀGÐ2ÓLˆHØ×#Ñ# sÒ*Ü)-¯©°H·M±MÓ)B�Ü×$Ñ$ØRØØ#Ü˜Ó)ô	ð 'Ð&ØøÜò 	]Ü× Ñ Ð!XÐZ[×\Ñ\ûð	]ús   ‚B,B0 Â0	CÂ9CÃCc              ‹   óŽ  K  — 	 | j                  «       }| j                  |z   }| j                  }d|› dt        |d¬«      › d�}| j                  j                  ||¬«      ƒ d {  –—† }|j                  dk(  rt        j                  |j                  «      S y 7 Œ3# t        $ r }t        j                  d|«       Y d }~y d }~ww xY w­w)	Nr@   rA   r   r,   rB   rC   rD   z;GCS Caching: async_get_cache() - Got exception from GCS: %s)r(   r   r   r   r   rE   rF   r2   rG   rH   r5   r   rK   )	r!   r7   r9   r1   r:   r   r/   rL   r;   s	            r#   Úasync_get_cachezGCSCache.async_get_cacheU   sÃ   è ø€ ð
	cØ!×4Ñ4Ó6ˆGØ!%§¡°3Ñ!6ˆKØ!%×!1Ñ!1ˆKØ@ÀÀÈSÔQVÐWbÐikÔQlÐPmÐmwÐxˆCØ$(×$5Ñ$5×$9Ñ$9¸cÈ7Ð$9Ó$S×SˆHØ×#Ñ# sÒ*Ü—z‘z (§-¡-Ó0Ð0Øð Tùô ò 	cÜ× Ñ Ð!^Ð`a×bÑbûð	cüsA   ‚C„AB Á#BÁ$1B ÂCÂB Â	CÂ"B=Â8CÂ=CÃCc                  ó   — y ©N© ©r!   s    r#   Úflush_cachezGCSCache.flush_cacheb   s   € Ør$   c              ƒ   ó   K  — y ­wrR   rS   rT   s    r#   Ú
disconnectzGCSCache.disconnecte   s	   è ø€ Øùs   ‚c              ‹   ó¨   K  — g }|D ]+  }|j                   | j                  |d   |d   fi |¤Ž«       Œ- t        j                  |Ž ƒ d {  –—†  y 7 Œ­w)Nr   r   )Úappendr>   ÚasyncioÚgather)r!   Ú
cache_listr9   ÚtasksÚvals        r#   Úasync_set_cache_pipelinez!GCSCache.async_set_cache_pipelineh   sW   è ø€ ØˆØò 	IˆCØ�L‰LÐ-˜×-Ñ-¨c°!©f°c¸!±fÑGÀÑGÕHð	Iä�n‰n˜eÐ$×$Ò$ús   ‚AAÁ
AÁA)NNN)Ú__name__Ú
__module__Ú__qualname__Ústrr   Údictr(   r<   r>   rN   rP   rU   rW   r_   Ú__classcell__)r"   s   @r#   r   r      sx   ø„ ð #'Ø+/Ø#ñ	/à˜4‘Zð/ð " D™jð/ð ˜‘*ð	/ð
 
õ/ð5 Dó 5ò
Uò	[ò]ò(còòö%r$   r   )Ú__doc__rZ   r2   Útypingr   Úurllib.parser   Úlitellm._loggingr   r   Ú/litellm.integrations.gcs_bucket.gcs_bucket_baser   Ú&litellm.llms.custom_httpx.http_handlerr   r	   r
   Ú
base_cacher   r   rS   r$   r#   ú<module>rm      s;   ðñó Û Ý Ý ç :Ý I÷ñ õ "ôW%ˆyõ W%r$   