+
    o*j  c                     R t ^ RIHt ^ RIt^ RIHu Ht ^ RI	H
t
 ^ RIt^ RIHtHt ^ RIHt ^ RIHt ]
! ]4      P(                  P(                  R,          t]P,                  P.                  R 4       t]P,                  P.                  R	 4       t]P,                  P.                  R
 4       t]P,                  P.                  R 4       tR tR t]P,                  P.                  R 4       t]P,                  P.                  R 4       tR# )zTests for runtime/providers.)annotationsN)Path)AnthropicProvider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 z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_deterministicallyr5      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)   r7   r8   r.   r*   r/   r0   r1   r2   r3   s              r4   #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   r8   r   r   r   r   r   r   r9   )r(   r)   _r8   r.   r*   r/   r0   r1   r2   r3   s              r4   .test_fake_provider_repeats_last_when_exhaustedr>   %   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   r7   r   r   r   r   z)The impediment to action advances action.r8   r   r   )r   
from_jsonlFIXTURESr   r'   r   r    r$   r!   r"   r#   r%   r&   r:   s              r4   test_fake_provider_from_jsonlrB   -   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        r4   "test_fake_provider_raises_on_emptyrI   6   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   singlerL   r   r!   r"   r   r#   r$   r%   r&   )r(   @py_assert3@py_format5s      r4   %test_fake_provider_satisfies_protocolrQ   @   s    ""4(Hh---------:----:-------h----h---------------------rH   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)delenvrD   rE   rF   r   )monkeypatchs   &r4   *test_anthropic_provider_raises_without_keyrX   J   s?     *E:	z)<	=	= 
>	=	=	=s   8A#A
A#A 		A#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   rD   rE   NotImplementedErrorr   )r(   r=   s     r4   +test_ollama_provider_raises_not_implementedr[   V   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   pathlibr   rD   $runtime.providers.anthropic_providerr   r   runtime.providers.baser   runtime.providers.faker   __file__parentrA   markasyncior5   r;   r>   rB   rI   rQ   rX   r[   rG   rH   r4   <module>rj      s    " "      R / />  ''*4 . . ( ( & & J J.    rH   