+
    }i                     D    ^ RI Ht  ! R R4      tR tR tR tR tR tR# )	    Nc                   ,   a  ] tR t^t o R tR tRtV tR# )_FakeSessionc                :    R RRR/.V n         RV n        ^ V n        R# )roleusercontenthelloUntitledN)messagestitlesavedselfs   &8/home/ubuntu/hermes-webui/tests/test_streaming_errors.py__init___FakeSession.__init__   s#     &)W=>

    c                8    V ;P                   ^,          un         R# )   N)r   r   s   &r   save_FakeSession.save
   s    

a
r   )r   r   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s     
 r   r   c                   a \        4       oV P                  \        R V3R l4       V P                  \        RR 4       \        P                  ! RRRR4       SP                  ^8X  g   Q hSP
                  R8X  g   Q hSP                  R,          R	,          R
8X  g   Q hRSP                  R,          R,          9   g   Q hRSP                  R,          R,          9   g   Q hRSP                  R,          R,          9   g   Q hR# )get_sessionc                    < S# N _sidfakes   &r   <lambda>Etest_persist_stream_error_appends_assistant_message.<locals>.<lambda>       tr   
title_fromc                     R # Updated titler#   r   fallbacks   &&r   r'   r(          Or   sess-1
rate_limitHTTP 429 upstream rate limitTry again in a moment.r-   r   	assistantRate limit reachedr   N)r   setattr	streaming_persist_stream_errorr   r   r   )monkeypatchr&   s   &@r   3test_persist_stream_error_appends_assistant_messager<      s    >D	=2CD	<1[\##& 	 ::??::(((==V$3334==#4Y#????)T]]2->y-IIII#t}}R'8'CCCCr   c                 ,  a \        4       oR pSP                  P                  RRRV/4       V P                  \        RV3R l4       \        P
                  ! RRR4       SP                  ^ 8X  g   Q hSP                  R
,          R,          V8X  g   Q hR	# )u   **⚠️ Error:** Boomr   r5   r   r    c                    < S# r"   r#   r$   s   &r   r'   Etest_persist_stream_error_deduplicates_same_message.<locals>.<lambda>&   r)   r   r1   errorBoomNr7   )r   r   appendr8   r9   r:   r   )r;   r   r&   s   & @r   3test_persist_stream_error_deduplicates_same_messagerC   "   s{    >D&GMM&+y'BC	=2CD##Hgv>::??==Y'7222r   c                 >  aa \        4       o. Sn        \        4       oR RRR/.Sn        V P                  \        RV3R l4       V P                  \        R\	        RRR\        V3R	 l4      /4      4       V P                  \        R
R 4       \        P                  ! RRRR4       SP                  ^8X  g   Q hSP                  ^ ,          R ,          R8X  g   Q hSP                  R,          R ,          R8X  g   Q hRSP                  R,          R,          9   g   Q hR# )r   r   r   testr    c                    < S# r"   r#   )r%   cacheds   &r   r'   Vtest_persist_stream_error_uses_persisted_session_when_cache_is_stale.<locals>.<lambda>4   s    vr   SessionFakeSessionLoaderloadc                    < S# r"   r#   )r%   	persisteds   &r   r'   rH   6   s    )r   r*   c                     R # r,   r#   r.   s   &&r   r'   rH   8   r0   r   r1   r2   r3   r4   r5   r6   Nr#   r7   )r   r   r8   r9   typestaticmethodr:   r   )r;   rG   rM   s   &@@r   Dtest_persist_stream_error_uses_persisted_session_when_cache_is_stalerQ   .   s   ^FFOI!69f=>I	=2EF	9d3F34M /  	<1[\##& 	 ??aa (F222b!&)[8889#5#5b#9)#DDDDr   c                      R RRR/.p \         P                  ! V R4      pVR,          R ,          R8X  g   Q hVR,          R,          R8X  g   Q hV^ ,          R ,          R8X  g   Q hR# )r   r   r   rE   API call failed after 3 retriesr5   Nr7   r9   _ensure_final_response_messager   updateds     r   <test_ensure_final_response_message_appends_missing_assistantrX   G   sl    F34H66xAbcG2;v+---2;y!%FFFF1:f'''r   c                  \    R RRR/R RRR/.p \         P                  ! V R4      pW8X  g   Q hR# )r   r   r   rE   r5   rS   NrT   rV   s     r   <test_ensure_final_response_message_skips_duplicate_assistantrZ   P   sC    	F+	i)JKH 66xAbcGr   )api.streamingr9   r   r<   rC   rQ   rX   rZ   r#   r   r   <module>r\      s-    ! D(	3E2(r   