Ë
    tPêjo  ã                   ó¼   — U d Z ddl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mZ ddlZddlmZ ddlmZ ej&                  j(                  Zeed	<    G d
„ d«      Zy)z7
Prometheus Auth Middleware - Pure ASGI implementation
é    N)ÚMutableMapping)ÚAnyÚFinal)ÚRequest)ÚASGIAppÚReceiveÚScopeÚSend)ÚSpecialHeaders)Úuser_api_key_authÚ_AUTHORIZATION_HEADERc                   ó8   — e Zd ZdZdeddfd„Zdedededdfd	„Z	y)
ÚPrometheusAuthMiddlewarea  
    Middleware to authenticate requests to the metrics endpoint.

    By default, auth is run on the metrics endpoint.

    To allow unauthenticated metrics in proxy_config.yaml:

    ```yaml
    litellm_settings:
        require_auth_for_metrics_endpoint: false
    ```
    ÚappÚreturnNc                 ó   — || _         y ©N)r   )Úselfr   s     úx/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/middleware/prometheus_auth_middleware.pyÚ__init__z!PrometheusAuthMiddleware.__init__"   s	   € Øˆ�ó    ÚscopeÚreceiveÚsendc              ƒ   ól  ‡‡
‡K  — |d   dk7  sd|j                  dd«      vr| j                  |‰|«      ƒ d {  –—†  y t        j                  du�ršg Š
dt        t
        t        f   fˆ
ˆfd„}t        ||«      }	 t        ||j                  j                  t        «      xs d|j                  j                  t        j                  j                  «      xs d|j                  j                  t        j                  j                  «      |j                  j                  t        j                  j                  «      |j                  j                  t        j                   j                  «      xs d|j                  j                  t        j"                  j                  «      ¬	«      ƒ d {  –—†  dŠdt        t
        t        f   fˆ
ˆˆfd„}	| j                  ||	|«      ƒ d {  –—†  y | j                  |‰|«      ƒ d {  –—†  y 7 �ŒÏ7 Œ\# t$        $ r˜}t'        |d
t        |«      «      }t)        j*                  d|› d�«      j-                  d«      } |ddddgdt        t/        |«      «      j-                  d«      ggdœ«      ƒ d {  –—†7    |d|dœ«      ƒ d {  –—†7   Y d }~y d }~ww xY w7 ŒÊ7 Œ°­w)NÚtypeÚhttpz/metricsÚpathÚ Fr   c               “   óT   •K  —  ‰«       ƒ d {  –—† } ‰j                  | «       | S 7 Œ­wr   )Úappend)ÚmessageÚbuffered_messagesr   s    €€r   Úreceive_for_authz;PrometheusAuthMiddleware.__call__.<locals>.receive_for_auth2   s(   øè ø€ Ù'.£y§�Ø!×(Ñ(¨Ô1Ø�ð "1ús   ƒ(Ž&�()ÚrequestÚapi_keyÚazure_api_key_headerÚanthropic_api_key_headerÚgoogle_ai_studio_api_key_headerÚazure_apim_headerÚcustom_litellm_key_headerr"   z)Unauthorized access to metrics endpoint: z| To allow unauthenticated access, set `litellm_settings.require_auth_for_metrics_endpoint: false` in your proxy_config.yaml.zutf-8zhttp.response.starti‘  s   content-types   application/jsons   content-lengthÚascii)r   ÚstatusÚheaderszhttp.response.body)r   Úbodyr   c               “   ób   •K  — ‰t        ‰«      k  r‰‰   } ‰dz  Š| S  ‰«       ƒ d {  –—† S 7 Œ­w)Né   )Úlen)Úmsgr#   r   Ú
replay_idxs    €€€r   Úreceive_replayz9PrometheusAuthMiddleware.__call__.<locals>.receive_replayb   s9   øè ø€ à¤Ð$5Ó 6Ò6Ø!2°:Ñ!>�CØ !‘O�JØ�JÙ$›Y—Ð&�ús   ƒ%/¨-©/)Úgetr   ÚlitellmÚ!require_auth_for_metrics_endpointr   Ústrr   r   r   r.   r   r   Úazure_authorizationÚvalueÚanthropic_authorizationÚgoogle_ai_studio_authorizationÚazure_apim_authorizationÚcustom_litellm_api_keyÚ	ExceptionÚgetattrÚjsonÚdumpsÚencoder2   )r   r   r   r   r$   r%   ÚeÚerror_messager/   r5   r#   r4   s     `       @@r   Ú__call__z!PrometheusAuthMiddleware.__call__%   s{  úè ø€ à�‰=˜FÒ" j¸¿	¹	À&È"Ó8MÑ&MØ—(‘(˜5 '¨4Ó0×0Ð0Øô ×4Ñ4¸EÒAð HJÐð¬N¼3Ä¸8Ñ,Dö ô
 % UÐ,<Ó=ˆGð%Ü'Ø#Ø#ŸO™O×/Ñ/Ô0EÓFÒLÈ"Ø)0¯©×)<Ñ)<¼^×=_Ñ=_×=eÑ=eÓ)fÒ)lÐjlØ-4¯_©_×-@Ñ-@Ä×AgÑAg×AmÑAmÓ-nØ4;·O±O×4GÑ4GÜ&×EÑE×KÑKó5ð '.§o¡o×&9Ñ&9¼.×:aÑ:a×:gÑ:gÓ&hÒ&nÐlnØ.5¯o©o×.AÑ.AÄ.×BgÑBg×BmÑBmÓ.nô
÷ 
ð 
ðL ˆJð'¬.¼¼c¸Ñ*B÷ 'ð —(‘(˜5 .°$Ó7×7Ð7Øð �h‰h�u˜g tÓ,×,Ñ,ðM 1ùð$
ùô ò ä'.¨q°)¼SÀ»VÓ'D�Ü"Ÿj™jØ?À¸ð O1ð 2ó÷
 ‘&˜“/ð ñ à 5Ø"%à,Ð.AÐBØ.´´C¸³I³×0EÑ0EÀgÓ0NÐOð$ñó	÷ 	ñ 	ñ à 4Ø $ñó÷ ñ ô ûð3úðJ 8øð 	-ús„   …3J4¸H¹A J4Á:D3H Æ-H
Æ.H Æ23J4Ç%J0Ç&J4ÈJ2ÈJ4È
H È	J-ÈA4J(Ê	JÊ
J(ÊJ ÊJ(Ê#J4Ê(J-Ê-J4Ê2J4)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r	   r   r
   rG   © r   r   r   r      s@   „ ñð˜Gð ¨ó ðI- Eð I-°Gð I-À4ð I-ÈDô I-r   r   )rK   rB   Úcollections.abcr   Útypingr   r   Úfastapir   Ústarlette.typesr   r   r	   r
   r7   Úlitellm.proxy._typesr   Ú$litellm.proxy.auth.user_api_key_authr   Úopenai_authorizationr;   r   Ú__annotations__r   rL   r   r   ú<module>rU      sL   ðòó Ý *ß å ß 9Ó 9ã Ý /Ý Bð  .×BÑB×HÑHÐ �uÓ H÷Z-ò Z-r   