+
    *jj7  c                  R   R t ^ RIHt ^ RIt^ RIHu Ht ^ RI	t	^ RI
Ht ^ RIt^ RIHtHtHt ^ RIHt ^ RIHt ]! ]4      P,                  P,                  R,          t]P0                  P2                  R 4       t]P0                  P2                  R	 4       t]P0                  P2                  R
 4       t]P0                  P2                  R 4       tR tR t]P0                  P2                  R 4       t ]P0                  P2                  R 4       t!]P0                  P2                  R 4       t"R# )zTests for runtime/providers.)annotationsN)Path)AnthropicProviderLMStudioProviderOllamaProvider)ChatProvider)FakeProviderfixturesc                 B  "   \        . RO.4      p V P                  R. R7       Uu. u Rj  xL
 qNK   LDMu upi pp. ROq2T8H  qD'       g   \        P                  ! RT3RY#34      RR\        P
                  ! 4       9   g   \        P                  ! T4      '       d   \        P                  ! T4      MRR\        P                  ! T4      /,          pRR	T/,          p\        \        P                  ! T4      4      hR;rCRqwP                  q3! T4      pR
qT	8H  q'       g   \        P                  ! RT
3RY34      R\        P                  ! T4      R\        P                  ! T4      RR\        P
                  ! 4       9   g   \        P                  ! T4      '       d   \        P                  ! T4      MRR\        P                  ! T4      R\        P                  ! T	4      /,          pRRT/,          p\        \        P                  ! T4      4      hR;p;p;p;rR# 5i)HellossystemmessagesNpy0chunkspy3 assert %(py5)spy5zHello, world.py1py4py6py9assert %(py11)spy11)r
   z, world.==z%(py0)s == %(py3)szJ%(py6)s
{%(py6)s = %(py3)s
{%(py3)s = %(py1)s.join
}(%(py4)s)
} == %(py9)s)r   stream_chat
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationjoin)providercr   @py_assert2@py_assert1@py_format4@py_format6@py_assert0@py_assert5@py_assert8@py_assert7@py_format10@py_format12s                E/Users/jameslopez/projects/MentorCore/tests/runtime/test_providers.py,test_fake_provider_streams_deterministicallyr8      s3    :;<H'3333LMM!aMMFM222222226222222622226222222222222-77-76?-o-o-----?---2---7------6----6---?---o---------s5   $H864
6868A'HC?HB Hc                 R  "   \        R .R..4      p V P                  R. R7       Uu. u Rj  xL
 qNK   LDMu upi ppT P                  R. R7       Uu. u Rj  xL 
 qNK  DMu upi ppRqDP                  qU! T4      pR qvT8H  q'       g   \        P                  ! RT3RYg34      R\        P
                  ! T4      R\        P
                  ! T4      RR	\        P                  ! 4       9   g   \        P                  ! T4      '       d   \        P
                  ! T4      MR	R
\        P
                  ! T4      R\        P
                  ! T4      /,          p	RRT	/,          p
\        \        P                  ! T
4      4      hR;p;p;p;rRqDP                  qU! T4      pRqvT8H  q'       g   \        P                  ! RT3RYg34      R\        P
                  ! T4      R\        P
                  ! T4      RR\        P                  ! 4       9   g   \        P                  ! T4      '       d   \        P
                  ! T4      MRR
\        P
                  ! T4      R\        P
                  ! T4      /,          p	RRT	/,          p
\        \        P                  ! T
4      4      hR;p;p;p;rR# 5i)zFirst.zSecond.r   r   Nr   r   r   r   firstr   r   r   r   secondr   r    r   r!   r*   r"   r#   r'   r$   r%   r&   r(   r)   r+   r,   r:   r;   r1   r-   r2   r3   r4   r5   r6   s              r7   #test_fake_provider_cycles_responsesr>      s    hZ)56H&22#2KLLQLLEL'3333LMM!aMMFM%77%75>%X%X%%%%%>%%%2%%%7%%%%%%5%%%%5%%%>%%%X%%%%%%%%'77'76?'i'i'''''?'''2'''7''''''6''''6'''?'''i'''''''''sY   %J'975
7979J'A&A$A
A$ A&%B%J'DJ''B J'c                   "   \        R ..4      p V P                  R. R7       Uu. u Rj  xL
 qNK   LDMu upi ppT P                  R. R7       Uu. u Rj  xL 
 qNK  DMu upi ppRqDP                  qU! T4      pR qvT8H  q'       g   \        P                  ! RT3RYg34      R\        P
                  ! T4      R\        P
                  ! T4      RR\        P                  ! 4       9   g   \        P                  ! T4      '       d   \        P
                  ! T4      MRR	\        P
                  ! T4      R
\        P
                  ! T4      /,          p	RRT	/,          p
\        \        P                  ! T
4      4      hR;p;p;p;rR# 5i)zOnly.r   r   Nr   r   r   r   r;   r   r   r   r   r   r    r<   )r+   r,   _r;   r1   r-   r2   r3   r4   r5   r6   s              r7   .test_fake_provider_repeats_last_when_exhaustedrA   &   s     gYK(H"..cB.GHHQHHAH'3333LMM!aMMFM%77%76?%g%g%%%%%?%%%2%%%7%%%%%%6%%%%6%%%?%%%g%%%%%%%%%sR   #F	753
5757F	A$A"A
A"A$#B%F		B F	c                 v  "   \         P                  ! \        R ,          4      p V P                  R. R7       Uu. u Rj  xL
 qNK   LDMu upi ppT P                  R. R7       Uu. u Rj  xL 
 qNK  DMu upi ppRqDP                  qU! T4      pRqvT8H  q'       g   \
        P                  ! RT3RYg34      R\
        P                  ! T4      R\
        P                  ! T4      RR	\        P                  ! 4       9   g   \
        P                  ! T4      '       d   \
        P                  ! T4      MR	R
\
        P                  ! T4      R\
        P                  ! T4      /,          p	RRT	/,          p
\        \
        P                  ! T
4      4      hR;p;p;p;rRqDP                  qU! T4      pRqvT8H  q'       g   \
        P                  ! RT3RYg34      R\
        P                  ! T4      R\
        P                  ! T4      RR\        P                  ! 4       9   g   \
        P                  ! T4      '       d   \
        P                  ! T4      MRR
\
        P                  ! T4      R\
        P                  ! T4      /,          p	RRT	/,          p
\        \
        P                  ! T
4      4      hR;p;p;p;rR# 5i)zresponses.jsonlr   r   Nr   zYou ask about virtue.r   r   r   r:   r   r   r   r   z)The impediment to action advances action.r;   r   r    )r   
from_jsonlFIXTURESr!   r*   r"   r#   r'   r$   r%   r&   r(   r)   r=   s              r7   test_fake_provider_from_jsonlrE   .   s    &&x2C'CDH&22#2KLLQLLEL'3333LMM!aMMFM477475>444444444>44424447444444544445444>444444444444I77I76?IIIIIIIII?III2III7IIIIII6IIII6III?IIIIIIIIIIIIIse   7J9AA	A
 A	AA		A
J9'A8)A6-A0
.A62A87B%J9DJ99B J9c                     \         P                  ! \        4      ;_uu_ 4        \        . 4       R R R 4       R #   + '       g   i     R # ; i)N)pytestraises
ValueErrorr        r7   "test_fake_provider_raises_on_emptyrL   7   s(    	z	"	"R 
#	"	"	"s	   9A
	c                    \         P                  ! R 4      p \        V \        4      q'       Eg9   RRR\        P
                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRRR\        P
                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MRRR\        P
                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          p\        \        P                  ! V4      4      hR	pR	# )
hiz5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}r   
isinstancer   r+   py2r   r   N)r   singlerO   r   r$   r%   r"   r&   r'   r(   r)   )r+   @py_assert3@py_format5s      r7   %test_fake_provider_satisfies_protocolrT   A   s    ""4(Hh---------:----:-------h----h---------------------rK   c                   "   V P                  R RR7       \        P                  ! \        R R7      ;_uu_ 4        \	        4        RRR4       R#   + '       g   i     R# ; i5i)ANTHROPIC_API_KEYF)raising)matchN)delenvrG   rH   rI   r   )monkeypatchs   &r7   *test_anthropic_provider_raises_without_keyr[   K   s?     *E:	z)<	=	= 
>	=	=	=s   8A#A
A#A 		A#c                 D  a"   ^ RI oR V3R llp \        RRSP                  V 4      R7      pVP                  R. R7       Uu. u Rj  xL
 q"NK   LDMu upi ppR	R
.qCT8H  qU'       g   \        P
                  ! RT3RY434      RR\        P                  ! 4       9   g   \        P                  ! T4      '       d   \        P                  ! T4      MRR\        P                  ! T4      /,          pRRT/,          p\        \        P                  ! T4      4      hR;rTR# 5i)    Nc                    V ^8  d   QhRRRR/# )   requestzhttpx.Requestreturnzhttpx.ResponserJ   )formats   "r7   __annotate__?test_lmstudio_provider_streams_openai_sse.<locals>.__annotate__V   s     

 

} 

 

rK   c                  <"   V P                   pSP                  pR q2! V4      qAV8H  qU'       EgA   \        P                  ! RV3RW34      RR\        P
                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MRR\        P                  ! V4      RR\        P
                  ! 4       9   g   \        P                  ! S4      '       d   \        P                  ! S4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p;p;p;r4\        P                  ! V P                  4      R,          pRqXV8H  q'       gy   \        P                  ! RV	3RW34      R\        P                  ! V4      R\        P                  ! V4      /,          p
RRV
/,          p\        \        P                  ! V4      4      hR;p;rSP                  ^RR7      # 5i)z#http://lm.local/v1/chat/completionsr   r`   rP   r   httpxr   py8py10zassert %(py12)spy12Nmodellocal-modelr   zassert %(py6)szudata: {"choices":[{"delta":{"content":"Hello"}}]}

data: {"choices":[{"delta":{"content":" world"}}]}

data: [DONE]

)contentr   )zd%(py2)s
{%(py2)s = %(py0)s.url
} == %(py10)s
{%(py10)s = %(py6)s
{%(py6)s = %(py4)s.URL
}(%(py8)s)
})z%(py1)s == %(py4)s)urlURLr"   r#   r$   r%   r&   r'   r(   r)   jsonloadsrl   Response)r`   r.   r2   r4   @py_assert9rR   @py_format11@py_format13r1   r-   rS   @py_format7rf   s   &           r7   handler:test_lmstudio_provider_streams_openai_sse.<locals>.handlerV   sF    {{NeiiN(MNi(MNNNNNNNN{NNNNNNwNNNNwNNN{NNNNNNeNNNNeNNNiNNN(MNNNNNNNNNNNNzz'//*73D}D}DDDDD3DDD3DDD}DDDDDDDD~~#  
 	
s   A>H>A#H>&EH>zhttp://lm.local/v1rk   )base_urlrj   	transportr   r   r
   z worldr   r   r   r   r   r   r   )rf   r   MockTransportr!   r"   r#   r$   r%   r&   r'   r(   r)   )	rv   r+   chunkr   r-   r.   r/   r0   rf   s	           @r7   )test_lmstudio_provider_streams_openai_sser|   R   s     

 

  %%%g.H
 (0';';3QS';'TUUeeUUFUx((((((((6((((((6((((6((((((((((((s>   A D AA	A

AAAAA'D <A$D c                    "   \        4       p \        P                  ! \        4      ;_uu_ 4        V P	                  R . R7        Rj  xL
  pK   LD RRR4       R#   + '       g   i     R# ; i5i)r   r   N)r   rG   rH   NotImplementedErrorr!   )r+   r@   s     r7   +test_ollama_provider_raises_not_implementedr   p   sU     H	*	+	+++3+D 	 	!	D 
,	+	+	+s@   -A1AAA
AAAA
A1A.	(	A1)#__doc__
__future__r   builtinsr$   _pytest.assertion.rewrite	assertionrewriter"   ro   pathlibr   rG   $runtime.providers.anthropic_providerr   r   r   runtime.providers.baser   runtime.providers.faker   __file__parentrD   markasyncior8   r>   rA   rE   rL   rT   r[   r|   r   rJ   rK   r7   <module>r      s   " "      d d / />  ''*4 . . ( ( & & J J.   ) ):  rK   