Ë
    uPêjw  ã                   ób   — 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  G d„ d	e«      Zy)
z}
Azure Blob Cache implementation

Has 4 methods:
    - set_cache
    - get_cache
    - async_set_cache
    - async_get_cache
é    N)Úsuppress)ÚFinal)Úprint_verboseÚverbose_loggeré   )Ú	BaseCachec                   óH   — e Zd Zd
d„Zd
d„Zd
d„Zd„ Zd„ Zd
d„Zd
d„Z	d
d	„Z
y)ÚAzureBlobCacheNc                 ó@  — ddl m} ddlm} ddlm} ddlm} ddlm}  || |«       ¬«      j                  |«      | _	         || |«       ¬«      j                  |«      | _
        t        |«      5  | j                  j                  «        d d d «       y # 1 sw Y   y xY w)Nr   )ÚResourceExistsError)ÚDefaultAzureCredential)ÚBlobServiceClient)Úaccount_urlÚ
credential)Úazure.core.exceptionsr   Úazure.identityr   Úazure.identity.aioÚazure.storage.blobr   Úazure.storage.blob.aioÚget_container_clientÚcontainer_clientÚasync_container_clientr   Úcreate_container)Úselfr   Ú	containerr   r   ÚAsyncDefaultAzureCredentialr   ÚAsyncBlobServiceClients           úe/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/caching/azure_blob_cache.pyÚ__init__zAzureBlobCache.__init__   s•   € Ý=Ý9õ	
õ 	9ÝVá 1Ø#Ù-Ó/ô!
÷ Ñ
˜yÓ
)ð 	Ôñ '=Ø#Ù2Ó4ô'
÷ Ñ
˜yÓ
)ð 	Ô#ô
 Ð)Ó*ñ 	5Ø×!Ñ!×2Ñ2Ô4÷	5÷ 	5ñ 	5ús   Á0BÂBc                 óÒ   — t        d|› d|› �«       t        j                  |«      }	 | j                  j	                  ||«       y # t
        $ r}t        d|› �«       Y d }~y d }~ww xY w)Nú$LiteLLM SET Cache - Azure Blob. Key=ú. Value=ú5LiteLLM set_cache() - Got exception from Azure Blob: )r   ÚjsonÚdumpsr   Úupload_blobÚ	Exception©r   ÚkeyÚvalueÚkwargsÚserialized_valueÚes         r   Ú	set_cachezAzureBlobCache.set_cache+   sk   € ÜÐ<¸S¸EÀÈ%ÈÐQÔRÜ"&§*¡*¨UÓ"3Ðð	WØ×!Ñ!×-Ñ-¨cÐ3CÕDøÜò 	WäÐQÐRSÐQTÐU×VÑVûð	Wús   ¨A Á	A&ÁA!Á!A&c              ‹   óò   K  — t        d|› d|› �«       t        j                  |«      }	 | j                  j	                  ||d¬«      ƒ d {  –—†  y 7 Œ# t
        $ r}t        d|› �«       Y d }~y d }~ww xY w­w)Nr!   r"   T)Ú	overwriter#   )r   r$   r%   r   r&   r'   r(   s         r   Úasync_set_cachezAzureBlobCache.async_set_cache4   sz   è ø€ ÜÐ<¸S¸EÀÈ%ÈÐQÔRÜ"&§*¡*¨UÓ"3Ðð	WØ×-Ñ-×9Ñ9¸#Ð?OÐ[_Ð9Ó`×`Ò`ùÜò 	WäÐQÐRSÐQTÐU×VÑVûð	Wüs@   ‚'A7ª!A ÁAÁA ÁA7ÁA Á	A4ÁA/Á*A7Á/A4Á4A7c                 ó&  — ddl m} 	 t        d|› �«       | j                  j	                  |«      j                  «       }|j                  d«      }t        j                  |«      }t        j                  d||t        |«      «       |S # |$ r Y y w xY w©Nr   )ÚResourceNotFoundErrorzGet Azure Blob Cache: key: zutf-8zCGot Azure Blob Cache: key: %s, cached_response %s. Type Response %s)r   r4   r   r   Údownload_blobÚreadallÚdecoder$   Úloadsr   ÚdebugÚtype)r   r)   r+   r4   Úas_bytesÚas_strÚcached_responses          r   Ú	get_cachezAzureBlobCache.get_cache=   sŽ   € Ý?ð	ÜÐ7¸°uÐ=Ô>Ø"×3Ñ3×AÑAÀ#ÓF×NÑNÓPˆHØ$ŸO™O¨GÓ4ˆFÜ%)§Z¡Z°Ó%7ˆOä× Ñ ØUØØÜ�_Ó%ô	ð #Ð"øØ$ò 	Ùð	ús   ˆA?B ÂBÂBc              ‹   óZ  K  — ddl m} 	 t        d|› �«       | j                  j	                  |«      ƒ d {  –—† }|j                  «       ƒ d {  –—† }|j                  d«      }t        j                  |«      }t        j                  d||t        |«      «       |S 7 Œe7 ŒO# |$ r Y y w xY w­wr3   )r   r4   r   r   r5   r6   r7   r$   r8   r   r9   r:   )r   r)   r+   r4   Úblobr;   r<   r=   s           r   Úasync_get_cachezAzureBlobCache.async_get_cacheQ   s¥   è ø€ Ý?ð	ÜÐ7¸°uÐ=Ô>Ø $× ;Ñ ;× IÑ IÈ#Ó N×NˆDØ$(§L¡L£N×2ˆHØ$ŸO™O¨GÓ4ˆFÜ%)§Z¡Z°Ó%7ˆOÜ× Ñ ØUØØÜ�_Ó%ô	ð #Ð"ð OøØ2ùð %ò 	Ùð	üsK   ‚B+Š,B  ¶B·B  ÁBÁAB  ÂB+ÂB  ÂB  Â B(Â%B+Â'B(Â(B+c                 óŒ   — | j                   j                  «       D ]'  }| j                   j                  |j                  «       Œ) y ©N)r   Ú
walk_blobsÚdelete_blobÚname)r   r@   s     r   Úflush_cachezAzureBlobCache.flush_cached   s8   € Ø×)Ñ)×4Ñ4Ó6ò 	9ˆDØ×!Ñ!×-Ñ-¨d¯i©iÕ8ñ	9ó    c              ƒ   óˆ   K  — | j                   j                  «        | j                  j                  «       ƒ d {  –—†  y 7 Œ­wrC   )r   Úcloser   )r   s    r   Ú
disconnectzAzureBlobCache.disconnecth   s0   è ø€ Ø×Ñ×#Ñ#Ô%Ø×)Ñ)×/Ñ/Ó1×1Ò1ús   ‚8AºA »Ac              ‹   ó¨   K  — g }|D ]+  }|j                   | j                  |d   |d   fi |¤Ž«       Œ- t        j                  |Ž ƒ d {  –—†  y 7 Œ­w)Nr   r   )Úappendr1   ÚasyncioÚgather)r   Ú
cache_listr+   ÚtasksÚvals        r   Úasync_set_cache_pipelinez'AzureBlobCache.async_set_cache_pipelinel   sW   è ø€ ØˆØò 	IˆCØ�L‰LÐ-˜×-Ñ-¨c°!©f°c¸!±fÑGÀÑGÕHð	Iä�n‰n˜eÐ$×$Ò$ús   ‚AAÁ
AÁA)ÚreturnN)Ú__name__Ú
__module__Ú__qualname__r   r.   r1   r>   rA   rG   rK   rS   © rH   r   r
   r
      s,   „ ó5ó*WóWòò(ó&9ó2ô%rH   r
   )Ú__doc__rN   r$   Ú
contextlibr   Útypingr   Úlitellm._loggingr   r   Ú
base_cacher   r
   rX   rH   r   ú<module>r^      s,   ðñó Û Ý Ý ç :å !ô[%�Yõ [%rH   