Ë
    uPêjí
  ã                   ó¤   — U d Z ddlZddlZddlZddlmZ ddlZdefd„Zdede	fd„Z
dd	iZeed
<    G d„ dej                  ej                  «      Zy)u&  
Mock httpx transport that returns valid OpenAI ChatCompletion responses.

Activated via `litellm_settings: { network_mock: true }`.
Intercepts at the httpx transport layer â€” the lowest point before bytes hit the wire â€”
so the full proxy -> router -> OpenAI SDK -> httpx path is exercised.
é    N)ÚFinalÚreturnc                  óJ   — dt        j                  «       j                  d d › �S )Nzchatcmpl-mock-é   )ÚuuidÚuuid4Úhex© ó    úm/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/custom_httpx/mock_transport.pyÚ_mock_idr      s#   € ØœDŸJ™J›L×,Ñ,¨R¨aÐ0Ð1Ð2Ð2r   Úmodelc           	      ór   — t        «       dt        t        j                  «       «      | ddddœddœgddd	d
œdœS )z-Return a minimal valid ChatCompletion object.zchat.completionr   Ú	assistantzMock response)ÚroleÚcontentÚstop)ÚindexÚmessageÚfinish_reasoné   é   )Úprompt_tokensÚcompletion_tokensÚtotal_tokens)ÚidÚobjectÚcreatedr   ÚchoicesÚusage)r   ÚintÚtime)r   s    r   Ú_chat_completion_jsonr#      sV   € ô ‹jØ#Ü”t—y‘y“{Ó#Øð à'Ø.ñð "(ñð	
ð Ø!"Øñ
ñð r   zcontent-typezapplication/jsonÚ_JSON_HEADERSc                   ó¸   — e Zd ZdZedej                  deee	f   fd„«       Z
dej                  dej                  fd„Zdej                  dej                  fd„Zy)ÚMockOpenAITransportz’
    httpx transport that returns canned OpenAI ChatCompletion responses.

    Supports both async (AsyncOpenAI) and sync (OpenAI) SDK paths.
    Úrequestr   c                 ó¬   — 	 t        j                  | j                  «      }|j                  dd«      }|dfS # t         j                  t        f$ r Y yw xY w)z$Extract model from the request body.)ú
mock-modelFr   r)   F)ÚjsonÚloadsr   ÚJSONDecodeErrorÚ
ValueErrorÚget)r'   Úbodyr   s      r   Ú_parse_requestz"MockOpenAITransport._parse_requestB   sT   € ð	)ÜŸ*™* W§_¡_Ó5ˆDð —x‘x ¨Ó6ˆØ�uˆ~Ðøô ×$Ñ$¤jÐ1ò 	)Ù(ð	)ús   ‚7 ·AÁAc              ƒ   óÂ   K  — | j                  |«      \  }}t        j                  t        |«      «      j	                  «       }t        j                  dt        |¬«      S ­w©NéÈ   )Ústatus_codeÚheadersr   ©r0   r*   Údumpsr#   ÚencodeÚhttpxÚResponser$   ©Úselfr'   r   Ú_r/   s        r   Úhandle_async_requestz(MockOpenAITransport.handle_async_requestL   sQ   è ø€ Ø×&Ñ& wÓ/‰ˆˆqÜ—j‘jÔ!6°uÓ!=Ó>×EÑEÓGˆÜ�~‰~ØÜ!Øô
ð 	
ùs   ‚AAc                 óº   — | j                  |«      \  }}t        j                  t        |«      «      j	                  «       }t        j                  dt        |¬«      S r2   r6   r;   s        r   Úhandle_requestz"MockOpenAITransport.handle_requestU   sM   € Ø×&Ñ& wÓ/‰ˆˆqÜ—j‘jÔ!6°uÓ!=Ó>×EÑEÓGˆÜ�~‰~ØÜ!Øô
ð 	
r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr9   ÚRequestÚtupleÚstrÚboolr0   r:   r>   r@   r
   r   r   r&   r&   ;   sl   „ ñð ð §¡ð °%¸¸T¸	Ñ2Bò ó ðð
°%·-±-ð 
ÀEÇNÁNó 
ð
 e§m¡mð 
¸¿¹ô 
r   r&   )rD   r*   r"   r   Útypingr   r9   rH   r   Údictr#   r$   Ú__annotations__ÚAsyncBaseTransportÚBaseTransportr&   r
   r   r   ú<module>rO      sj   ðòó Û Û Ý ã ð3�#ó 3ð ð ¨ó ð< Ð&ð€ˆuó ô
!
˜%×2Ñ2°E×4GÑ4Gõ !
r   