+
    *j  c                       R t ^ RIt^ RIHu Ht ^ RIt^ RIt^ RI	H
t
HtHtHt R^RRRRR^dR	^R
RRRRRRRRRRRR/.RRRRRRRRR//	tR tR tR  tR! tR" tR# tR$ tR% tR& tR' tR( tR# ))uA   Tests for shared/package.py — round-trip and schema validation.N)PERSONAS_ROOTPackageWriterPersonaManifestload_packageschema_versionslugtest-personadisplay_nameTest Personaborndiedvoice_policy	generatedsourcesidtest-srctypebooktitlez	Test Bookrightszpublic-domain
origin_urlzhttps://example.com/bookstyle_summaryzWise and terse.fidelitygroundedness        style_match	last_evalc                     \         P                  ! \        4      p V P                  pR q!V8H  q3'       g   \        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\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;r2V P                  pRq!V8H  q3'       g   \        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\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;r2V P                  p\        V4      p^qrV8H  q'       Eg3   \        P
                  ! RV3RW'34      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\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR;p;p;rV P                  ^ ,          qP                  pRqV8H  q"'       g   \        P
                  ! RV3RWl34      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;r,V P                   qP"                  pRqV8H  q'       g   \        P
                  ! RV3RW834      RR\        P                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 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;rV P$                  p^q!V8H  q3'       g   \        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\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;r2R# )r   py0mpy2py5assert %(py7)spy7Nr	   lenpy1py3py8zassert %(py10)spy10r   py6zassert %(py8)sr   py4assert %(py9)spy9==)z,%(py2)s
{%(py2)s = %(py0)s.slug
} == %(py5)sz4%(py2)s
{%(py2)s = %(py0)s.display_name
} == %(py5)s)zM%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.sources
})
} == %(py8)s)z*%(py3)s
{%(py3)s = %(py1)s.id
} == %(py6)s)zR%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.fidelity
}.groundedness
} == %(py7)sz7%(py2)s
{%(py2)s = %(py0)s.retrieval_top_k
} == %(py5)s)r   model_validateFIXTURE_MANIFESTr   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr   r   r#   r   r   r   retrieval_top_k)r   @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert2@py_assert7@py_assert6@py_format9@py_format11@py_assert0@py_assert5@py_format7@py_format10s                  B/Users/jameslopez/projects/MentorCore/tests/shared/test_package.pytest_manifest_round_triprJ   "   s   &&'78A66#^#^#####6######1####1###6###^########>>+^+^+++++>++++++1++++1+++>+++^++++++++yy3y>QQ>33qqy>Q99Q<(??(j(j(((((?(((<(((?(((j((((((((::)"")c)c)))))"))))))1))))1))):)))")))c))))))))!!!!!!!!!!!!!1!!!!1!!!!!!!!!!!!!!    c                     \         P                  p R qV8H  q"'       g   \        P                  ! RV3RW34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p ;r!\         P                  q P                  pRqRV8H  qf'       g   \        P                  ! RV3RW%34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         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;reR# )personasr   r   r   r    r!   r"   N
MentorCorer)   r*   r+   r,   )z,%(py2)s
{%(py2)s = %(py0)s.name
} == %(py5)s)zH%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.parent
}.name
} == %(py7)s)r   namer2   r3   r4   r5   r6   r7   r8   r9   parent)r;   r<   r=   r>   r?   rB   rF   rH   s           rI   5test_default_personas_root_points_at_project_personasrQ   ,   s   +++++++++++++=++++=++++++++++++++4$$4444444$444444=4444=444444$44444444444rK   c            	         \        \        ^R7      p \        P                  ! V 4      pVP                  p^q2V8H  qD'       g   \
        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\
        P                  ! V4      /,          pRRV/,          p\        \
        P                  ! V4      4      hR;p;rCR# )   r:   r   r   r   r    r!   r"   Nr,   r/   )dictr1   r   r0   r:   r2   r3   r4   r5   r6   r7   r8   r9   )datar   r;   r<   r=   r>   r?   s          rI   %test_manifest_accepts_retrieval_top_krW   1   s     !4D&&t,A!!!!!!!!!!!!!1!!!!1!!!!!!!!!!!!!!rK   c                      \        \        ^ R7      p \        P                  ! \        4      ;_uu_ 4        \
        P                  ! V 4       RRR4       R#   + '       g   i     R# ; i)    rT   NrU   r1   pytestraises	Exceptionr   r0   bads    rI   )test_manifest_rejects_bad_retrieval_top_kr`   7   s;    

3C	y	!	!&&s+ 
"	!	!	!s   AA&	c                      \        \        4      p R V R&   \        P                  ! \        4      ;_uu_ 4        \
        P                  ! V 4       RRR4       R#   + '       g   i     R# ; i) r   NrZ   r^   s    rI   "test_manifest_rejects_missing_slugrc   =   sB    

 CCK	y	!	!&&s+ 
"	!	!	!   AA)	c                      \        \        4      p R V R&   \        P                  ! \        4      ;_uu_ 4        \
        P                  ! V 4       RRR4       R#   + '       g   i     R# ; i)
telepathicr   NrZ   r^   s    rI   &test_manifest_rejects_bad_voice_policyrg   D   sC    

 C&C	y	!	!&&s+ 
"	!	!	!rd   c                     \        \        4      p \        \        R ,          ^ ,          RR7      .V R &   \        P                  ! \        4      ;_uu_ 4        \
        P                  ! V 4       RRR4       R#   + '       g   i     R# ; i)r   stream)r   NrZ   r^   s    rI   %test_manifest_rejects_bad_source_typerj   K   sW    

 C+I6q9IJC	N	y	!	!&&s+ 
"	!	!	!s   A66B	c           	         VP                  R \        V 4      4       RpW,          pVP                  4        VR,          P                  \        P
                  ! \        4      4       \        V4      pVP                  qUV8H  qf'       g   \        P                  ! RV3RWR3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                  ! V4      '       d   \        P                  ! V4      MR/,          pRR	V/,          p\        \        P                   ! V4      4      hR
;rVVP"                  pRqV	8H  qf'       g   \        P                  ! RV3RWY34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R\        P                  ! V	4      /,          p
RRV
/,          p\        \        P                   ! V4      4      hR
;p;riR
# )MENTORCORE_PERSONAS_ROOTr   persona.yamlr   r   r   r)   r   assert %(py6)sr(   Nr	   r    r!   r"   r,   z,%(py2)s
{%(py2)s = %(py0)s.slug
} == %(py4)sr.   )setenvstrmkdir
write_textyamldumpr1   r   r   r2   r3   r4   r5   r6   r7   r8   r9   r   )tmp_pathmonkeypatchr   pkg_dirr   r;   r=   @py_format5rG   r<   r>   r?   s   &&          rI   test_load_packagerz   R   sH   13x=ADoGMMO~))$))4D*EFTA66T>6116TT>>+^+^+++++>++++++1++++1+++>+++^++++++++rK   c                     VP                  R \        V 4      4       \        P                  ! \        4      ;_uu_ 4        \        R4       RRR4       R#   + '       g   i     R# ; i)rl   nonexistentN)rp   rq   r[   r\   FileNotFoundErrorr   )rv   rw   s   &&rI   test_load_package_not_foundr~   _   s>    13x=A	(	)	)]# 
*	)	)	)s   AA%	c                 
   VP                  R \        V 4      4       Rp\        V4      ;_uu_ 4       pVP                  R\        P
                  ! \        4      4       VP                  RR4       RRR4       W,          pVR,          pVP                  qf! 4       qw'       g   \        P                  ! R4      R,           R	R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR
\        P                  ! V4      R\        P                  ! V4      /,          p\        \        P                  ! V4      4      hR;rgRqeV,          qwP                   q! 4       q'       g   RR	R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR
\        P                  ! V4      R\        P                  ! V	4      R\        P                  ! V
4      /,          p\        \        P                  ! V4      4      hR;p;p;rRqeV,          pRqV	,          qP                   q! 4       q'       g   RR	R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR
\        P                  ! V4      R\        P                  ! V	4      R\        P                  ! V4      R\        P                  ! V4      /,          p\        \        P                  ! V4      4      hR;p;p;p	;p
;r\        V4      ;_uu_ 4       pVP                  R\        P
                  ! \        4      4       RRR4       VR,          pVP                   qf! 4       qw'       g   \        P                  ! R4      R,           R	R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR
\        P                  ! V4      R\        P                  ! V4      /,          p\        \        P                  ! V4      4      hR;rgVP                  qf! 4       qw'       g   \        P                  ! R4      R,           R	R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR
\        P                  ! V4      R\        P                  ! V4      /,          p\        \        P                  ! V4      4      hR;rgR#   + '       g   i     EL; i  + '       g   i     EL; i)rl   r   rm   zcorpus/doc.mdz# HelloNcurrentz'current should be a symlink after buildzG
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.is_symlink
}()
}r   r   r)   zMassert %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = (%(py0)s / %(py2)s).exists
}()
}r    r"   corpuszdoc.mdz[assert %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = ((%(py0)s / %(py2)s) / %(py5)s).exists
}()
}r&   r'   previousz!previous build should be retainedzC
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}z'current still exists after second build)rp   rq   r   
write_filert   ru   r1   
is_symlinkr2   _format_assertmsgr4   r5   r6   r7   r8   r9   exists)rv   rw   r   wpkg_rootr   r;   r=   ry   r<   rB   r?   rA   @py_assert9rD   r   s   &&              rI   test_package_writer_atomic_swapr   e   s   13x=AD 
t			^TYY/?%@A	_i0 
 H"GJJJJ!JJJJJJJJ7JJJJ7JJJJJJJJJJJJ$.n$.,,.,.........G....G...n...,...........3h33)31131333333333G3333G333h333333133333333333 
t			^TYY/?%@A 
 *$H??A?AAAAAAAAAAA8AAAA8AAA?AAAAAAAAAJJJJ!JJJJJJJJ7JJJJ7JJJJJJJJJJJJ! 
		 
		s   =U	+U	U	U.	c           	      :   VP                  R \        V 4      4       Rp\        V4      ;_uu_ 4       pVP                  R\        P
                  ! \        4      4       RRR4       \        V4      pVP                  qUV8H  qf'       g   \        P                  ! RV3RWR3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                  ! V4      '       d   \        P                  ! V4      MR/,          pR	R
V/,          p\        \        P                   ! V4      4      hR;rVR#   + '       g   i     EL6; i)rl   r   rm   Nr   r   r   r)   r   rn   r(   r,   ro   )rp   rq   r   r   rt   ru   r1   r   r   r2   r3   r4   r5   r6   r7   r8   r9   )	rv   rw   r   r   r   r;   r=   ry   rG   s	   &&       rI   ,test_package_writer_load_via_current_symlinkr   ~   s    13x=AD	t			^TYY/?%@A 
 	TA66T>6116TT	 
		s   +F		F	)__doc__builtinsr4   _pytest.assertion.rewrite	assertionrewriter2   r[   rt   shared.packager   r   r   r   r1   rJ   rQ   rW   r`   rc   rg   rj   rz   r~   r   r    rK   rI   <module>r      s    G     a
NN
C
CK*F[o4	
 &mS+tL# *"5
",,,,
,$K2rK   