ó
    fj¤  ã                   ó~   • S r SSKrSSKJs  Jr  SSKJr  SSKJ	r	J
r
Jr   " S S5      r " S S5      r " S	 S
5      rg)zTests for database models.é    N)Údatetime)ÚBaseÚDocumentÚExtractedTablec                   ó   • \ rS rSrSrS rSrg)ÚTestBaseé   z$Tests for the Base declarative base.c                 óD  • Sn[        [        U5      o"(       dõ  SS[        R                  " 5       ;   d  [        R
                  " [         5      (       a  [        R                  " [         5      OSS[        R                  " 5       ;   d  [        R
                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      S.-  n[        [        R                  " U5      5      eS=pSn[        [        U5      o"(       dõ  SS[        R                  " 5       ;   d  [        R
                  " [         5      (       a  [        R                  " [         5      OSS[        R                  " 5       ;   d  [        R
                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      S.-  n[        [        R                  " U5      5      eS=pg)z+Test that Base is a valid declarative base.Úmetadataú5assert %(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
}Úhasattrr   ©Úpy0Úpy1Úpy3Úpy5NÚregistry)	r   r   Ú@py_builtinsÚlocalsÚ
@pytest_arÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)ÚselfÚ@py_assert2Ú@py_assert4Ú@py_format6s       Ú./home/mande/repo/quber/tests/db/test_models.pyÚtest_base_is_declarative_baseÚ&TestBase.test_base_is_declarative_base   s  € à'Ð(Œw”t˜ZÓ(Ð(Õ(×(×(×(×(×(Ñ(Œw×(×(×(Ñ(Œw×(×(×(×(×(Ö(”t×(×(×(Ñ(”t×(×(Õ(˜Z×(×(Ó(Ð(×(×(×(×(×(Ò(Ø'Ð(Œw”t˜ZÓ(Ð(Õ(×(×(×(×(×(Ñ(Œw×(×(×(Ñ(Œw×(×(×(×(×(Ö(”t×(×(×(Ñ(”t×(×(Õ(˜Z×(×(Ó(Ð(×(×(×(×(×(Ó(ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r    Ú__static_attributes__r#   r"   r   r   r      s
   † Ù.õ)r"   r   c                   ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
ÚTestDocumenté   zTests for the Document model.c           
      ó\
  • [        S[        R                  " 5       SSSSSS9nUR                  nSo2U:H  oD(       dº  [        R
                  " SU4S	X#45      S
[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS
[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                  nSo2U:H  oD(       dº  [        R
                  " SU4SX#45      S
[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS
[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                  nSo2U:H  oD(       dº  [        R
                  " SU4SX#45      S
[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS
[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                  nSo2U:H  oD(       dº  [        R
                  " SU4SX#45      S
[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS
[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                  nSo2U:H  oD(       dº  [        R
                  " SU4SX#45      S
[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS
[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                   nSo2U:H  oD(       dº  [        R
                  " SU4SX#45      S
[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS
[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCg)z"Test creating a Document instance.útest.pdfé
   é   zTest summaryÚ	anthropiczclaude-3-5-sonnet-20241022)ÚfilenameÚextraction_dateÚtotal_pagesÚtotal_tablesÚexecutive_summaryÚmodel_providerÚmodel©ú==©z0%(py2)s
{%(py2)s = %(py0)s.filename
} == %(py5)sÚdoc©r   Úpy2r   úassert %(py7)sÚpy7N)z3%(py2)s
{%(py2)s = %(py0)s.total_pages
} == %(py5)s)z4%(py2)s
{%(py2)s = %(py0)s.total_tables
} == %(py5)s)z9%(py2)s
{%(py2)s = %(py0)s.executive_summary
} == %(py5)s)z6%(py2)s
{%(py2)s = %(py0)s.model_provider
} == %(py5)s)z-%(py2)s
{%(py2)s = %(py0)s.model
} == %(py5)s©r   r   Únowr2   r   Ú_call_reprcomparer   r   r   r   r   r   r4   r5   r6   r7   r8   ©r   r<   Ú@py_assert1r   Ú@py_assert3r   Ú@py_format8s          r   Útest_document_creationÚ#TestDocument.test_document_creation   sÒ  € äØÜ$ŸLšL›NØØØ,Ø&Ø.ñ
ˆð �|‰|Ð)˜zÐ)˜zÑ)×)×)×)Ò)ˆ|×)×)×)×)×)Õ)ˆs×)×)×)Ñ)ˆs×)×)Õ)ˆ|×)×)Ó)˜z×)×)×)×)×)×)Ó)Ø�‰Ð$ "Ð$ "Ñ$×$×$×$Ò$ˆ×$×$×$×$×$Õ$ˆs×$×$×$Ñ$ˆs×$×$Õ$ˆ×$×$Ó$ "×$×$×$×$×$×$Ó$Ø×ÑÐ$ 1Ð$ 1Ñ$×$×$×$Ò$Ð×$×$×$×$×$Õ$ˆs×$×$×$Ñ$ˆs×$×$Õ$Ð×$×$Ó$ 1×$×$×$×$×$×$Ó$Ø×$Ñ$Ð6¨Ð6¨Ñ6×6×6×6Ò6Ð$×6×6×6×6×6Õ6ˆs×6×6×6Ñ6ˆs×6×6Õ6Ð$×6×6Ó6¨×6×6×6×6×6×6Ó6Ø×!Ñ!Ð0 [Ð0 [Ñ0×0×0×0Ò0Ð!×0×0×0×0×0Õ0ˆs×0×0×0Ñ0ˆs×0×0Õ0Ð!×0×0Ó0 [×0×0×0×0×0×0Ó0Ø�y‰yÐ8Ð8Ð8Ð8Ñ8×8×8×8Ò8ˆy×8×8×8×8×8Õ8ˆs×8×8×8Ñ8ˆs×8×8Õ8ˆy×8×8Ó8Ð8×8×8×8×8×8×8Ô8r"   c                 óH
  • [        S[        R                  " 5       S9nUR                  nSo2U:H  oD(       dº  [        R
                  " SU4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCUR                  nS	o2UL oD(       dº  [        R
                  " S
U4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCUR                  nS	o2UL oD(       dº  [        R
                  " S
U4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCUR                  nS	o2UL oD(       dº  [        R
                  " S
U4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCUR                  nS	o2UL oD(       dº  [        R
                  " S
U4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCUR                   nS	o2UL oD(       dº  [        R
                  " S
U4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCg	)z-Test creating a Document with minimal fields.zminimal.pdf©r2   r3   r9   r;   r<   r=   r?   r@   N©Úis)z3%(py2)s
{%(py2)s = %(py0)s.total_pages
} is %(py5)s)z4%(py2)s
{%(py2)s = %(py0)s.total_tables
} is %(py5)s)z9%(py2)s
{%(py2)s = %(py0)s.executive_summary
} is %(py5)s)z6%(py2)s
{%(py2)s = %(py0)s.model_provider
} is %(py5)s)z-%(py2)s
{%(py2)s = %(py0)s.model
} is %(py5)srA   rD   s          r   Útest_document_with_defaultsÚ(TestDocument.test_document_with_defaults'   sº  € ä ¼x¿|º|»~ÑNˆà�|‰|Ð,˜}Ð,˜}Ñ,×,×,×,Ò,ˆ|×,×,×,×,×,Õ,ˆs×,×,×,Ñ,ˆs×,×,Õ,ˆ|×,×,Ó,˜}×,×,×,×,×,×,Ó,Ø�‰Ð& $Ð& $Ð&×&×&×&Ò&ˆ×&×&×&×&×&Õ&ˆs×&×&×&Ñ&ˆs×&×&Õ&ˆ×&×&Ó& $×&×&×&×&×&×&Ó&Ø×ÑÐ' 4Ð' 4Ð'×'×'×'Ò'Ð×'×'×'×'×'Õ'ˆs×'×'×'Ñ'ˆs×'×'Õ'Ð×'×'Ó' 4×'×'×'×'×'×'Ó'Ø×$Ñ$Ð,¨Ð,¨Ð,×,×,×,Ò,Ð$×,×,×,×,×,Õ,ˆs×,×,×,Ñ,ˆs×,×,Õ,Ð$×,×,Ó,¨×,×,×,×,×,×,Ó,Ø×!Ñ!Ð) TÐ) TÐ)×)×)×)Ò)Ð!×)×)×)×)×)Õ)ˆs×)×)×)Ñ)ˆs×)×)Õ)Ð!×)×)Ó) T×)×)×)×)×)×)Ó)Ø�y‰yÐ ˜DÐ ˜DÐ × × × Ò ˆy× × × × × Õ ˆs× × × Ñ ˆs× × Õ ˆy× × Ó ˜D× × × × × × Ô r"   c                 ó  • [        S[        R                  " 5       SS9nSUl        [	        U5      nSo3U;   oD(       d¥  [
        R                  " SU4SX245      [
        R                  " U5      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OSS	.-  nS
SU0-  n[        [
        R                  " U5      5      eS=p4So3U;   oD(       d¥  [
        R                  " SU4SX245      [
        R                  " U5      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OSS	.-  nS
SU0-  n[        [
        R                  " U5      5      eS=p4So3U;   oD(       d¥  [
        R                  " SU4SX245      [
        R                  " U5      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OSS	.-  nS
SU0-  n[        [
        R                  " U5      5      eS=p4So3U;   oD(       d¥  [
        R                  " SU4SX245      [
        R                  " U5      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OSS	.-  nS
SU0-  n[        [
        R                  " U5      5      eS=p4g)zTest Document __repr__ method.r.   r0   )r2   r3   r5   é   r   ©Úin©z%(py1)s in %(py3)sÚrepr_str©r   r   úassert %(py5)sr   Nzid=1ztables=5)r   r   rB   ÚidÚreprr   rC   r   r   r   r   r   r   )r   r<   rU   Ú@py_assert0r   Ú@py_format4r   s          r   Útest_document_reprÚTestDocument.test_document_repr2   s“  € ä 
¼H¿LºL»NÐYZÑ[ˆØˆŒä˜“9ˆØÐ%˜XÑ%×%×%×%Ò%ˆz×%×%Ô%ˆz×%×%×%×%×%Ô%˜X×%×%×%Ñ%˜X×%×%×%×%×%×%Ó%ØÐ!˜Ñ!×!×!×!Ò!ˆv×!×!Ô!ˆv×!×!×!×!×!Ô!˜×!×!×!Ñ!˜×!×!×!×!×!×!Ó!ØÐ%˜XÑ%×%×%×%Ò%ˆz×%×%Ô%ˆz×%×%×%×%×%Ô%˜X×%×%×%Ñ%˜X×%×%×%×%×%×%Ó%ØÐ%˜XÑ%×%×%×%Ò%ˆz×%×%Ô%ˆz×%×%×%×%×%Ô%˜X×%×%×%Ñ%˜X×%×%×%×%×%×%Ô%r"   c                 óª  • [        S[        R                  " 5       S9nSn[        X5      o3(       dí  SS[        R
                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  n[        [        R                  " U5      5      eS=p#UR                  n[        U[        5      oU(       Gd@  S	S
[        R
                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS
S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S[        R
                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      S.-  n[        [        R                  " U5      5      eS=p%UR                  n[        U5      nSosU:H  oˆ(       Gd"  [        R                  " SU4SX745      S[        R
                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS=n=n=p‡g)z+Test that Document has tables relationship.r.   rK   Útablesr   r   r<   r   NzQassert %(py6)s
{%(py6)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.tables
}, %(py4)s)
}Ú
isinstanceÚlist)r   r   r   Úpy4Úpy6r   r9   )zL%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.tables
})
} == %(py8)sÚlen)r   r   r   r   Úpy8zassert %(py10)sÚpy10)r   r   rB   r   r   r   r   r   r   r   r   r_   r`   ra   rd   rC   )r   r<   r   r   r   Ú@py_assert5Ú@py_format7Ú@py_assert7Ú@py_assert6Ú@py_format9Ú@py_format11s              r   Ú!test_document_tables_relationshipÚ.TestDocument.test_document_tables_relationship=   sã  € ä 
¼H¿LºL»NÑKˆð %Ð%Œw�sÓ%Ð%Õ%×%×%×%×%×%Ñ%Œw×%×%×%Ñ%Œw×%×%×%×%×%Ö%�s×%×%×%Ñ%�s×%×%Õ%˜H×%×%Ó%Ð%×%×%×%×%×%Ò%ØŸ*™*Ð+Œz˜*¤dÓ+Ð+Ö+×+×+×+×+×+Ñ+Œz×+×+×+Ñ+Œz×+×+×+×+×+Ö+˜#×+×+×+Ñ+˜#×+×+Õ+˜*×+×+×+×+×+Ô+¤d×+×+×+Ñ+¤d×+×+Õ+Ð+×+×+×+×+×+Ò+Ø—:‘:Ð#Œs�:‹Ð# !Ð# !Ñ#×#×#×#Ó#ˆ×#×#×#×#×#Õ#Œs×#×#×#Ñ#Œs×#×#×#×#×#Ö#�3×#×#×#Ñ#�3×#×#Õ#�:×#×#Ó#ˆ×#×#Ó# !×#×#×#×#×#×#Ö#r"   c                 óÊ  • [         R                  nSo!U:H  o3(       dÂ  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " [         5      (       a  [        R                  " [         5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=p2g)	z*Test that Document has correct table name.Ú	documentsr9   ©z5%(py2)s
{%(py2)s = %(py0)s.__tablename__
} == %(py5)sr   r=   r?   r@   N)
r   Ú__tablename__r   rC   r   r   r   r   r   r   ©r   rE   r   rF   r   rG   s         r   Útest_document_table_nameÚ%TestDocument.test_document_table_nameF   su   € ä×%Ñ%Ð4¨Ð4¨Ñ4×4×4×4Ò4Ð%×4×4×4×4×4Õ4Œx×4×4×4Ñ4Œx×4×4Õ4Ð%×4×4Ó4¨×4×4×4×4×4×4Ô4r"   r#   N)r$   r%   r&   r'   r(   rH   rN   r\   rm   rt   r)   r#   r"   r   r+   r+      s   † Ù'ò9ò&	!ò	&ò$õ5r"   r+   c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚTestExtractedTableéK   z#Tests for the ExtractedTable model.c                 óX  • [        SSSSSSSSS/0S	S
0S9	nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR                   nSS/0o2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCUR"                  nS	S
0o2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pCg)z)Test creating an ExtractedTable instance.rQ   r   zTable 1z
Test TablezA test tablez| Header |
| ----- |
| Data |ÚheadersÚHeaderÚkeyÚvalue)	Údocument_idÚtable_idÚpage_numberÚprocedural_titleÚ	llm_titleÚllm_descriptionÚtable_markdownrz   Útable_metadatar9   ©z3%(py2)s
{%(py2)s = %(py0)s.document_id
} == %(py5)sÚtabler=   r?   r@   N©z0%(py2)s
{%(py2)s = %(py0)s.table_id
} == %(py5)s©z3%(py2)s
{%(py2)s = %(py0)s.page_number
} == %(py5)s)z8%(py2)s
{%(py2)s = %(py0)s.procedural_title
} == %(py5)s)z1%(py2)s
{%(py2)s = %(py0)s.llm_title
} == %(py5)s)z7%(py2)s
{%(py2)s = %(py0)s.llm_description
} == %(py5)s)z6%(py2)s
{%(py2)s = %(py0)s.table_markdown
} == %(py5)s)z/%(py2)s
{%(py2)s = %(py0)s.headers
} == %(py5)s)z6%(py2)s
{%(py2)s = %(py0)s.table_metadata
} == %(py5)s)r   r~   r   rC   r   r   r   r   r   r   r   r€   r�   r‚   rƒ   r„   rz   r…   ©r   r‡   rE   r   rF   r   rG   s          r   Útest_extracted_table_creationÚ0TestExtractedTable.test_extracted_table_creationN   sG  € äØØØØ&Ø"Ø*Ø<Ø  
Ð+Ø! 7Ð+ñ

ˆð × Ñ Ð% AÐ% AÑ%×%×%×%Ò%Ð ×%×%×%×%×%Õ%ˆu×%×%×%Ñ%ˆu×%×%Õ%Ð ×%×%Ó% A×%×%×%×%×%×%Ó%Ø�~‰~Ð" Ð" Ñ"×"×"×"Ò"ˆ~×"×"×"×"×"Õ"ˆu×"×"×"Ñ"ˆu×"×"Õ"ˆ~×"×"Ó" ×"×"×"×"×"×"Ó"Ø× Ñ Ð% AÐ% AÑ%×%×%×%Ò%Ð ×%×%×%×%×%Õ%ˆu×%×%×%Ñ%ˆu×%×%Õ%Ð ×%×%Ó% A×%×%×%×%×%×%Ó%Ø×%Ñ%Ð2¨Ð2¨Ñ2×2×2×2Ò2Ð%×2×2×2×2×2Õ2ˆu×2×2×2Ñ2ˆu×2×2Õ2Ð%×2×2Ó2¨×2×2×2×2×2×2Ó2Ø�‰Ð. ,Ð. ,Ñ.×.×.×.Ò.ˆ×.×.×.×.×.Õ.ˆu×.×.×.Ñ.ˆu×.×.Õ.ˆ×.×.Ó. ,×.×.×.×.×.×.Ó.Ø×$Ñ$Ð6¨Ð6¨Ñ6×6×6×6Ò6Ð$×6×6×6×6×6Õ6ˆu×6×6×6Ñ6ˆu×6×6Õ6Ð$×6×6Ó6¨×6×6×6×6×6×6Ó6Ø×#Ñ#ÐHÐ'HÐHÐ'HÑH×H×H×HÒHÐ#×H×H×H×H×HÕHˆu×H×H×HÑHˆu×H×HÕHÐ#×H×HÓHÐ'H×H×H×H×H×H×HÓHØ�}‰}Ð7 ¨X¨JÐ 7Ð7Ð 7Ñ7×7×7×7Ò7ˆ}×7×7×7×7×7Õ7ˆu×7×7×7Ñ7ˆu×7×7Õ7ˆ}×7×7Ó7Ð 7×7×7×7×7×7×7Ó7Ø×#Ñ#Ð7¨¨wÐ'7Ð7Ð'7Ñ7×7×7×7Ò7Ð#×7×7×7×7×7Õ7ˆu×7×7×7Ñ7ˆu×7×7Õ7Ð#×7×7Ó7Ð'7×7×7×7×7×7×7Ô7r"   c                 óÔ  • [        SSSS9nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCUR                  nS
o2UL oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCUR                  nS
o2UL oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCUR                  nS
o2UL oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCUR                  nS
o2UL oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCg
)z:Test creating an ExtractedTable with only required fields.rQ   r   ©r~   r   r€   r9   r†   r‡   r=   r?   r@   Nrˆ   r‰   rL   )z8%(py2)s
{%(py2)s = %(py0)s.procedural_title
} is %(py5)s)z1%(py2)s
{%(py2)s = %(py0)s.llm_title
} is %(py5)s)z7%(py2)s
{%(py2)s = %(py0)s.llm_description
} is %(py5)s)z6%(py2)s
{%(py2)s = %(py0)s.table_markdown
} is %(py5)s)r   r~   r   rC   r   r   r   r   r   r   r   r€   r�   r‚   rƒ   r„   rŠ   s          r   Ú(test_extracted_table_with_minimal_fieldsÚ;TestExtractedTable.test_extracted_table_with_minimal_fieldsf   s-  € ä¨1°qÀaÑHˆà× Ñ Ð% AÐ% AÑ%×%×%×%Ò%Ð ×%×%×%×%×%Õ%ˆu×%×%×%Ñ%ˆu×%×%Õ%Ð ×%×%Ó% A×%×%×%×%×%×%Ó%Ø�~‰~Ð" Ð" Ñ"×"×"×"Ò"ˆ~×"×"×"×"×"Õ"ˆu×"×"×"Ñ"ˆu×"×"Õ"ˆ~×"×"Ó" ×"×"×"×"×"×"Ó"Ø× Ñ Ð% AÐ% AÑ%×%×%×%Ò%Ð ×%×%×%×%×%Õ%ˆu×%×%×%Ñ%ˆu×%×%Õ%Ð ×%×%Ó% A×%×%×%×%×%×%Ó%Ø×%Ñ%Ð-¨Ð-¨Ð-×-×-×-Ò-Ð%×-×-×-×-×-Õ-ˆu×-×-×-Ñ-ˆu×-×-Õ-Ð%×-×-Ó-¨×-×-×-×-×-×-Ó-Ø�‰Ð& $Ð& $Ð&×&×&×&Ò&ˆ×&×&×&×&×&Õ&ˆu×&×&×&Ñ&ˆu×&×&Õ&ˆ×&×&Ó& $×&×&×&×&×&×&Ó&Ø×$Ñ$Ð,¨Ð,¨Ð,×,×,×,Ò,Ð$×,×,×,×,×,Õ,ˆu×,×,×,Ñ,ˆu×,×,Õ,Ð$×,×,Ó,¨×,×,×,×,×,×,Ó,Ø×#Ñ#Ð+ tÐ+ tÐ+×+×+×+Ò+Ð#×+×+×+×+×+Õ+ˆu×+×+×+Ñ+ˆu×+×+Õ+Ð#×+×+Ó+ t×+×+×+×+×+×+Ô+r"   c           
      óR  • S/S-  n[        SSSSSUUS9nUR                  o3U:H  oD(       dð  [        R                  " SU4S	X145      S
[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS
[        R                  " U5      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OSS.-  nSSU0-  n[        [        R                  " U5      5      eS=p4UR                  o3U:H  oD(       dð  [        R                  " SU4SX145      S
[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS
[        R                  " U5      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OSS.-  nSSU0-  n[        [        R                  " U5      5      eS=p4g)z0Test creating an ExtractedTable with embeddings.gš™™™™™¹?i   rQ   r   ÚTestÚDescription)r~   r   r€   r‚   rƒ   Útitle_embeddingÚdescription_embeddingr9   )z7%(py2)s
{%(py2)s = %(py0)s.title_embedding
} == %(py4)sr‡   Ú	embedding)r   r>   rb   zassert %(py6)src   N)z=%(py2)s
{%(py2)s = %(py0)s.description_embedding
} == %(py4)s)r   r”   r   rC   r   r   r   r   r   r   r•   )r   r–   r‡   rE   rF   Ú@py_format5rh   s          r   Ú$test_extracted_table_with_embeddingsÚ7TestExtractedTable.test_extracted_table_with_embeddingsr   s:  € ð �E˜D‘Lˆ	äØØØØØ)Ø%Ø"+ñ
ˆð ×$Ñ$Ð1¨	Ñ1×1×1×1Ò1Ð$×1×1×1×1×1Õ1ˆu×1×1×1Ñ1ˆu×1×1Õ1Ð$×1×1×1×1×1Ô1¨	×1×1×1Ñ1¨	×1×1×1×1×1×1Ó1Ø×*Ñ*Ð7¨iÑ7×7×7×7Ò7Ð*×7×7×7×7×7Õ7ˆu×7×7×7Ñ7ˆu×7×7Õ7Ð*×7×7×7×7×7Ô7¨i×7×7×7Ñ7¨i×7×7×7×7×7×7Ô7r"   c                 óF  • [        SSSS9nSUl        [        U5      nSo3U;   oD(       d¥  [        R                  " SU4SX245      [        R
                  " U5      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R
                  " U5      OS	S
.-  nSSU0-  n[        [        R                  " U5      5      eS=p4So3U;   oD(       d¥  [        R                  " SU4SX245      [        R
                  " U5      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R
                  " U5      OS	S
.-  nSSU0-  n[        [        R                  " U5      5      eS=p4So3U;   oD(       d¥  [        R                  " SU4SX245      [        R
                  " U5      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R
                  " U5      OS	S
.-  nSSU0-  n[        [        R                  " U5      5      eS=p4So3U;   oD(       d¥  [        R                  " SU4SX245      [        R
                  " U5      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R
                  " U5      OS	S
.-  nSSU0-  n[        [        R                  " U5      5      eS=p4So3U;   oD(       d¥  [        R                  " SU4SX245      [        R
                  " U5      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R
                  " U5      OS	S
.-  nSSU0-  n[        [        R                  " U5      5      eS=p4g)z$Test ExtractedTable __repr__ method.rQ   r   r0   rŽ   r/   r   rR   rT   rU   rV   rW   r   Nzid=10zdocument_id=1z
table_id=0zpage=5)r   rX   rY   r   rC   r   r   r   r   r   r   )r   r‡   rU   rZ   r   r[   r   s          r   Útest_extracted_table_reprÚ,TestExtractedTable.test_extracted_table_repr„   sé  € ä¨1°qÀaÑHˆØˆŒä˜“;ˆØÐ+ 8Ñ+×+×+×+Ò+Ð×+×+Ô+Ð×+×+×+×+×+Ô+ 8×+×+×+Ñ+ 8×+×+×+×+×+×+Ó+ØÐ"˜(Ñ"×"×"×"Ò"ˆw×"×"Ô"ˆw×"×"×"×"×"Ô"˜(×"×"×"Ñ"˜(×"×"×"×"×"×"Ó"ØÐ* (Ñ*×*×*×*Ò*ˆ×*×*Ô*ˆ×*×*×*×*×*Ô* (×*×*×*Ñ* (×*×*×*×*×*×*Ó*ØÐ'˜xÑ'×'×'×'Ò'ˆ|×'×'Ô'ˆ|×'×'×'×'×'Ô'˜x×'×'×'Ñ'˜x×'×'×'×'×'×'Ó'ØÐ#˜8Ñ#×#×#×#Ò#ˆx×#×#Ô#ˆx×#×#×#×#×#Ô#˜8×#×#×#Ñ#˜8×#×#×#×#×#×#Ô#r"   c                 ó   • [        SSSS9nSn[        X5      o3(       dí  SS[        R                  " 5       ;   d  [        R
                  " [        5      (       a  [        R                  " [        5      OSS[        R                  " 5       ;   d  [        R
                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  n[        [        R                  " U5      5      eS	=p#g	)
z3Test that ExtractedTable has document relationship.rQ   r   rŽ   Údocumentr   r   r‡   r   N)	r   r   r   r   r   r   r   r   r   )r   r‡   r   r   r   s        r   Ú*test_extracted_table_document_relationshipÚ=TestExtractedTable.test_extracted_table_document_relationship�   s’   € ä¨1°qÀaÑHˆð )Ð)Œw�uÓ)Ð)Õ)×)×)×)×)×)Ñ)Œw×)×)×)Ñ)Œw×)×)×)×)×)Ö)�u×)×)×)Ñ)�u×)×)Õ)˜j×)×)Ó)Ð)×)×)×)×)×)Ó)r"   c                 óÊ  • [         R                  nSo!U:H  o3(       dÂ  [        R                  " SU4SX45      S[        R
                  " 5       ;   d  [        R                  " [         5      (       a  [        R                  " [         5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n=p2g)	z0Test that ExtractedTable has correct table name.Úextracted_tablesr9   rq   r   r=   r?   r@   N)
r   rr   r   rC   r   r   r   r   r   r   rs   s         r   Útest_extracted_table_table_nameÚ2TestExtractedTable.test_extracted_table_table_name—   sx   € ä×+Ñ+ÐAÐ/AÐAÐ/AÑA×A×A×AÒAÐ+×A×A×A×A×AÕAŒ~×A×A×AÑAŒ~×A×AÕAÐ+×A×AÓAÐ/A×A×A×A×A×A×AÔAr"   c                 ó  • [         R                   Vs/ s H  n[        US5      (       d  M  UPM     nnU Vs/ s H  oR                  PM     nnSoDU;   oU(       d¥  [        R
                  " SU4SXC45      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OSS.-  nSSU0-  n[        [        R                  " U5      5      eS	=pEg	s  snf s  snf )
zITest that ExtractedTable has unique constraint on document_id + table_id.ÚnameÚuq_document_tablerR   rT   Úconstraint_namesrV   rW   r   N)r   Ú__table_args__r   r¦   r   rC   r   r   r   r   r   r   )r   ÚcÚconstraintsr¨   rZ   r   r[   r   s           r   Ú&test_extracted_table_unique_constraintÚ9TestExtractedTable.test_extracted_table_unique_constraint›   s©   € ô #1×"?Ò"?ÓVÒ"?˜QÄ7È1Èf×CU—qÑ"?ˆÐVÙ,7Ó8ªK qŸFœF©KÐÐ8à"Ð6Ð&6Ñ6×6×6×6Ò6Ð"×6×6Ô6Ð"×6×6×6×6×6Ô6Ð&6×6×6×6Ñ6Ð&6×6×6×6×6×6×6Ô6ùò WùÚ8s   “D¬D¸D	r#   N)r$   r%   r&   r'   r(   r‹   r�   r˜   r›   rŸ   r£   r¬   r)   r#   r"   r   rw   rw   K   s)   † Ù-ò8ò0
,ò8ò$
$ò*òBõ7r"   rw   )r(   Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r   Úquber.db.modelsr   r   r   r   r+   rw   r#   r"   r   Ú<module>r³      s7   ðÙ  ç  „ Õ ç :Ñ :÷)ñ )÷75ñ 75÷tV7ò V7r"   