ó
    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  SSKJrJr  SSKJr  S rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS r S\4S jr!S r"g)z*Tests for quber.core.consolidation module.é    N)ÚPath)ÚMockÚpatch)ÚHeaderConsolidatorÚsave_metadata)ÚTableMetadatac                  óÌ  • [        5       n U R                  nSo!U:H  o3(       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=p2U R                  nS	o!U:H  o3(       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=p2U R                  nSo!UL o3(       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=p2U R                  nSo!UL o3(       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=p2g)z5Test HeaderConsolidator initialization with defaults.z ^ ©ú==©z1%(py2)s
{%(py2)s = %(py0)s.separator
} == %(py5)sÚparser©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7Né
   ©z4%(py2)s
{%(py2)s = %(py0)s.max_lookback
} == %(py5)sT©Úis©z<%(py2)s
{%(py2)s = %(py0)s.enable_consolidation
} is %(py5)sF©z-%(py2)s
{%(py2)s = %(py0)s.debug
} is %(py5)s©r   Ú	separatorÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚmax_lookbackÚenable_consolidationÚdebug©r   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8s         Ú7/home/mande/repo/quber/tests/core/test_consolidation.pyÚ(test_enhanced_table_parser_init_defaultsr.   
   sÒ  € äÓ!€Fà×ÑÐ$˜uÐ$˜uÑ$×$×$×$Ò$Ð×$×$×$×$×$Õ$ˆ6×$×$×$Ñ$ˆ6×$×$Õ$Ð×$×$Ó$˜u×$×$×$×$×$×$Ó$Ø×ÑÐ$ "Ð$ "Ñ$×$×$×$Ò$Ð×$×$×$×$×$Õ$ˆ6×$×$×$Ñ$ˆ6×$×$Õ$Ð×$×$Ó$ "×$×$×$×$×$×$Ó$Ø×&Ñ&Ð.¨$Ð.¨$Ð.×.×.×.Ò.Ð&×.×.×.×.×.Õ.ˆ6×.×.×.Ñ.ˆ6×.×.Õ.Ð&×.×.Ó.¨$×.×.×.×.×.×.Ó.Ø�<‰<Ð ˜5Ð ˜5Ð × × × Ò ˆ<× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ ˆ<× × Ó ˜5× × × × × × Ô ó    c                  óÐ  • [        SSSSS9n U R                  nSo!U:H  o3(       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=p2U R                  nSo!U:H  o3(       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=p2U R                  nSo!UL o3(       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=p2U R                  nSo!UL o3(       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=p2g)z:Test HeaderConsolidator initialization with custom values.ú | é   FT)r   r$   r%   r&   r
   r   r   r   r   r   Nr   r   r   r   r   r'   s         r-   Ú&test_enhanced_table_parser_init_customr3      sâ  € äØØØ"Øñ	€Fð ×ÑÐ$˜uÐ$˜uÑ$×$×$×$Ò$Ð×$×$×$×$×$Õ$ˆ6×$×$×$Ñ$ˆ6×$×$Õ$Ð×$×$Ó$˜u×$×$×$×$×$×$Ó$Ø×ÑÐ# !Ð# !Ñ#×#×#×#Ò#Ð×#×#×#×#×#Õ#ˆ6×#×#×#Ñ#ˆ6×#×#Õ#Ð×#×#Ó# !×#×#×#×#×#×#Ó#Ø×&Ñ&Ð/¨%Ð/¨%Ð/×/×/×/Ò/Ð&×/×/×/×/×/Õ/ˆ6×/×/×/Ñ/ˆ6×/×/Õ/Ð&×/×/Ó/¨%×/×/×/×/×/×/Ó/Ø�<‰<Ð˜4Ð˜4Ð×××Òˆ<×××××Õˆ6×××Ñˆ6××Õˆ<××Ó˜4××××××Ôr/   c                  ó   • [        5       n U R                  / 5      nSo!UL o3(       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      S.-  nSSU0-  n[        [        R                  " U5      5      eS=p2g)z&Test consolidating empty headers list.Nr   ©z%(py0)s is %(py3)sÚresult©r   Úpy3úassert %(py5)sr   ©
r   Úconsolidate_headersr   r   r   r   r    r!   r"   r#   ©r   r6   Ú@py_assert2r(   Ú@py_format4r+   s         r-   Útest_consolidate_headers_emptyr?   #   st   € äÓ!€Fà×'Ñ'¨Ó+€FàÐ�Tˆ>×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�T××××××Òr/   c                  ó¤  • [        5       n U R                  S/5      nSo!U:H  o3(       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      S.-  nSSU0-  n[        [        R                  " U5      5      eS=p2g)	z!Test consolidating single header.úHeader 1r
   ©z%(py0)s == %(py3)sr6   r7   r9   r   Nr:   r<   s         r-   Útest_consolidate_headers_singlerC   ,   sw   € äÓ!€Fà×'Ñ'¨¨Ó5€FàÐ�ZÑ×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�Z××××××Òr/   c                  ó¦  • [        5       n U R                  / SQ5      nSo!U:H  o3(       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      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=p2g	)
z$Test consolidating multiple headers.)rA   úHeader 2zHeader 3zHeader 1 ^ Header 2 ^ Header 3r
   rB   r6   r7   r9   r   Nr:   r<   s         r-   Ú!test_consolidate_headers_multiplerF   5   sx   € äÓ!€Fà×'Ñ'Ò(LÓM€Fà5Ð5Ð5Ñ5×5×5×5Ò5ˆ6×5×5×5×5×5Õ5ˆ6×5×5×5Ñ5ˆ6×5×5Õ5Ð5×5×5×5×5×5×5Ò5r/   c                  ó¤  • [        SS9n U R                  SS/5      nSo!U:H  o3(       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      S	.-  nS
SU0-  n[        [        R                  " U5      5      eS=p2g)z1Test consolidating headers with custom separator.r1   )r   úPart 1úPart 2zPart 1 | Part 2r
   rB   r6   r7   r9   r   Nr:   r<   s         r-   Ú)test_consolidate_headers_custom_separatorrJ   >   s~   € ä¨%Ñ0€Fà×'Ñ'¨°8Ð(<Ó=€Fà&Ð&Ð&Ñ&×&×&×&Ò&ˆ6×&×&×&×&×&Õ&ˆ6×&×&×&Ñ&ˆ6×&×&Õ&Ð&×&×&×&×&×&×&Ò&r/   c                  ó¤  • [        5       n / nU R                  USSS9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      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS=pCg)z-Test getting preceding text with no elements.r   é   ©ÚlimitNr   r5   r6   r7   r9   r   )
r   Úget_preceding_textr   r   r   r   r    r!   r"   r#   )r   Úelementsr6   r=   r(   r>   r+   s          r-   Ú#test_get_preceding_text_no_elementsrQ   G   s€   € äÓ!€FØ€Hà×&Ñ& x°¸!Ð&Ð<€FàÐ�Tˆ>×××Òˆ6×××××Õˆ6×××Ñˆ6××Õ�T××××××Òr/   c                  óÜ  • [        5       n [        5       nSUl        U[        5       /nU R                  USSS9nSoCU:H  oU(       d¥  [        R
                  " SU4SX445      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS=pTg)z0Test getting preceding text with single element.zPreceding text contenté   rL   rM   r
   rB   r6   r7   r9   r   N©r   r   ÚtextrO   r   r   r   r   r    r!   r"   r#   )r   Ú	mock_elemrP   r6   r=   r(   r>   r+   s           r-   Ú&test_get_preceding_text_single_elementrW   Q   s˜   € äÓ!€Fä“€IØ-€I„Nàœ4›6Ð"€Hà×&Ñ& x°¸!Ð&Ð<€Fà-Ð-Ð-Ñ-×-×-×-Ò-ˆ6×-×-×-×-×-Õ-ˆ6×-×-×-Ñ-ˆ6×-×-Õ-Ð-×-×-×-×-×-×-Ò-r/   c                  ó"  • [        5       n [        5       nSUl        [        5       nSUl        [        5       nSUl        XU[        5       /nU R                  USSS9nSoeU:H  ow(       d¥  [        R
                  " SU4SXV45      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	[        R                  " U5      S
.-  nSSU0-  n	[        [        R                  " U	5      5      eS=pvg)z3Test getting preceding text with multiple elements.z
First textzSecond textz
Third textrL   rM   z!First text
Second text
Third textr
   rB   r6   r7   r9   r   NrT   ©
r   Úelem1Úelem2Úelem3rP   r6   r=   r(   r>   r+   s
             r-   Ú)test_get_preceding_text_multiple_elementsr]   _   s¶   € äÓ!€Fä‹F€EØ€E„Jä‹F€EØ€E„Jä‹F€EØ€E„Jà˜e¤T£VÐ,€Hà×&Ñ& x°¸!Ð&Ð<€Fà:Ð:Ð:Ñ:×:×:×:Ò:ˆ6×:×:×:×:×:Õ:ˆ6×:×:×:Ñ:ˆ6×:×:Õ:Ð:×:×:×:×:×:×:Ò:r/   c                  ó  • [        5       n [        5       nSUl        [        5       nSUl        [        5       nSUl        [        5       nSUl        XX4[        5       /nU R                  USSS9nSovU:H  oˆ(       d¥  [        R
                  " S	U4S
Xg45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS=p‡So»U;  ow(       d¥  [        R
                  " SU4SX¶4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=p·So»U;  ow(       d¥  [        R
                  " SU4SX¶4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=p·g)z2Test that preceding text respects limit parameter.zText 1zText 2zText 3zText 4é   é   rM   zText 3
Text 4r
   rB   r6   r7   r9   r   N©únot in©z%(py1)s not in %(py3)s©Úpy1r8   rT   )r   rZ   r[   r\   Úelem4rP   r6   r=   r(   r>   r+   Ú@py_assert0s               r-   Ú&test_get_preceding_text_respects_limitrh   s   sz  € äÓ!€Fä‹F€EØ€E„Jä‹F€EØ€E„Jä‹F€EØ€E„Jä‹F€EØ€E„Jà˜e¬D«FÐ3€Hà×&Ñ& x°¸!Ð&Ð<€Fà%Ð%Ð%Ñ%×%×%×%Ò%ˆ6×%×%×%×%×%Õ%ˆ6×%×%×%Ñ%ˆ6×%×%Õ%Ð%×%×%×%×%×%×%Ñ%ØÐ!˜6Ñ!×!×!×!Ò!ˆ8×!×!Ô!ˆ8×!×!×!×!×!Ô!˜6×!×!×!Ñ!˜6×!×!×!×!×!×!Ó!ØÐ!˜6Ñ!×!×!×!Ò!ˆ8×!×!Ô!ˆ8×!×!×!×!×!Ô!˜6×!×!×!Ñ!˜6×!×!×!×!×!×!Ô!r/   c                  ó"  • [        5       n [        5       nSUl        [        5       nSUl        [        5       nSUl        XU[        5       /nU R                  USSS9nSoeU:H  ow(       d¥  [        R
                  " SU4SXV45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S	.-  nS
SU0-  n	[        [        R                  " U	5      5      eS=pvg)z3Test that preceding text skips empty text elements.z
Valid textz   NrL   rM   r
   rB   r6   r7   r9   r   rT   rY   s
             r-   Ú#test_get_preceding_text_skips_emptyrj   Œ   s´   € äÓ!€Fä‹F€EØ€E„Jä‹F€EØ€E„Jä‹F€EØ€E„Jà˜e¤T£VÐ,€Hà×&Ñ& x°¸!Ð&Ð<€Fà!Ð!�\Ñ!×!×!×!Ò!ˆ6×!×!×!×!×!Õ!ˆ6×!×!×!Ñ!ˆ6×!×!Õ!�\×!×!×!×!×!×!Ò!r/   c                  óú  • [        5       n [        5       nSUl        [        US5        U[        5       /nU R	                  US5      u  p4/ oSU:H  of(       d¥  [
        R                  " SU4SX545      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  nSS	U0-  n[        [
        R                  " U5      5      eS
=peg
)z7Test finding headers when there are no header elements.zRegular textÚlevelrS   r
   rB   Úheadersr7   r9   r   N)r   r   rU   ÚdelattrÚfind_preceding_headersr   r   r   r   r    r!   r"   r#   )	r   rZ   rP   rm   Ú_r=   r(   r>   r+   s	            r-   Ú&test_find_preceding_headers_no_headersrq       s›   € äÓ!€Fä‹F€EØ€E„JÜˆE�7Ôà”t“vˆ€Hà×.Ñ.¨x¸Ó;�J€GàÐ�b‰=×××Òˆ7×××××Õˆ7×××Ñˆ7××Õ�b××××××Òr/   c                  óò  • [        5       n [        5       nSUl        SUl        U[        5       /nU R	                  US5      u  p4S/oSU:H  of(       d¥  [
        R                  " SU4SX545      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS	=peg	)
z(Test finding single header before table.zTable HeaderrS   r
   rB   rm   r7   r9   r   N©r   r   rU   rl   ro   r   r   r   r   r    r!   r"   r#   )	r   ÚheaderrP   rm   rp   r=   r(   r>   r+   s	            r-   Ú)test_find_preceding_headers_single_headerru   ¯   sŸ   € äÓ!€Fä‹V€FØ €F„KØ€F„Làœ›Ð€Hà×.Ñ.¨x¸Ó;�J€Gà%Ð&Ð&Ð&Ñ&×&×&×&Ò&ˆ7×&×&×&×&×&Õ&ˆ7×&×&×&Ñ&ˆ7×&×&Õ&Ð&×&×&×&×&×&×&Ò&r/   c                  ó$  • [        5       n [        5       nSUl        SUl        [        5       nSUl        SUl        X[        5       /nU R	                  US5      u  pESS/odU:H  ow(       d¥  [
        R                  " SU4SXF45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  nSS	U0-  n	[        [
        R                  " U	5      5      eS
=pvg
)z8Test finding multiple consecutive headers of same level.rH   r`   rI   r
   rB   rm   r7   r9   r   Nrs   )
r   Úheader1Úheader2rP   rm   rp   r=   r(   r>   r+   s
             r-   Ú/test_find_preceding_headers_multiple_same_levelry   ¾   s¶   € äÓ!€Fä‹f€GØ€G„LØ€G„Mä‹f€GØ€G„LØ€G„Mà¤$£&Ð)€Hà×.Ñ.¨x¸Ó;�J€Gà Ð*Ð*Ð*Ñ*×*×*×*Ò*ˆ7×*×*×*×*×*Õ*ˆ7×*×*×*Ñ*ˆ7×*×*Õ*Ð*×*×*×*×*×*×*Ò*r/   c                  óŠ  • [        5       n [        5       nSUl        SUl        [        5       nSUl        SUl        X[        5       /nU R	                  US5      u  pES/odU:H  ow(       d¥  [
        R                  " SU4SXF45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  nS	S
U0-  n	[        [
        R                  " U	5      5      eS=pvSoªU;  of(       d¥  [
        R                  " SU4SX¤4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=p¦g)z1Test that header search stops at different level.zLevel 1 HeaderrS   zLevel 2 Headerr`   r
   rB   rm   r7   r9   r   Nra   rc   rd   rs   )r   rw   rx   rP   rm   rp   r=   r(   r>   r+   rg   s              r-   Ú4test_find_preceding_headers_stops_at_different_levelr{   Ñ   s  € äÓ!€Fä‹f€GØ#€G„LØ€G„Mä‹f€GØ#€G„LØ€G„Mà¤$£&Ð)€Hà×.Ñ.¨x¸Ó;�J€Gà'Ð(Ð(Ð(Ñ(×(×(×(Ò(ˆ7×(×(×(×(×(Õ(ˆ7×(×(×(Ñ(ˆ7×(×(Õ(Ð(×(×(×(×(×(×(Ñ(ØÐ* 7Ñ*×*×*×*Ò*Ð×*×*Ô*Ð×*×*×*×*×*Ô* 7×*×*×*Ñ* 7×*×*×*×*×*×*Ô*r/   c                  ó6  • [        5       n [        5       nSUl        SUl        [        5       nSUR                  l        SUl        X![        5       /nU R                  US5      u  pES/odU:H  ow(       d¥  [        R                  " SU4SXF45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S	.-  nS
SU0-  n	[        [        R                  " U	5      5      eS=pvg)z0Test that header search stops at table boundary.ÚHeaderrS   Ú	TableItemNr`   r
   rB   rm   r7   r9   r   )r   r   rU   rl   Ú	__class__Ú__name__ro   r   r   r   r   r    r!   r"   r#   )
r   rt   ÚtablerP   rm   rp   r=   r(   r>   r+   s
             r-   Ú*test_find_preceding_headers_stops_at_tabler‚   å   s¶   € äÓ!€Fä‹V€FØ€F„KØ€F„Lä‹F€EØ*€E‡O�OÔØ€E„Jàœt›vÐ&€Hà×.Ñ.¨x¸Ó;�J€Gà�jÐ �jÑ × × × Ò ˆ7× × × × × Õ ˆ7× × × Ñ ˆ7× × Õ �j× × × × × × Ò r/   Útmp_pathc           
      óö	  • [        SSS/SSSS9[        SSS/SS	S
S9/nU S-  n[        S5         [        U[        U5      5        SSS5        UR                  o3" 5       oD(       dš  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=p4SSKn[        U5       nUR                  U5      nSSS5        WS   n	SoIU:H  oª(       do  [        R                  " SU
4SX”45      [        R                  " U	5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n	=p¤US   n[!        U5      nSoÄU:H  oÝ(       d×  [        R                  " SU4SXL45      S[
        R                  " 5       ;   d  [        R                  " [         5      (       a  [        R                  " [         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ÜUS   S   S   n	SoIU:H  oª(       do  [        R                  " SU
4SX”45      [        R                  " U	5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n	=p¤US   S   S   n	SoIU:H  oª(       do  [        R                  " SU
4SX”45      [        R                  " U	5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n	=p¤US   S   S   n	SoIU:H  oª(       do  [        R                  " SU
4SX”45      [        R                  " U	5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n	=p¤US   S   S   n	SoIU:H  oª(       do  [        R                  " SU
4SX”45      [        R                  " U	5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n	=p¤g! , (       d  f       GN™= f! , (       d  f       GNÍ= f) z"Test saving metadata to JSON file.r   rS   rA   r2   rL   )Útable_indexÚpage_numberrm   Úconsolidated_headerÚrowsÚcolsr`   rE   r   r_   zmetadata.jsonúbuiltins.printNzAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}Úoutput_file)r   r   Úpy4Útotal_tablesr
   )z%(py1)s == %(py4)s)re   rŒ   zassert %(py6)sÚpy6Útables)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sÚlen)r   r   rŒ   r   zassert %(py9)sÚpy9r…   r†   r‡   )r   r   r   ÚstrÚexistsr   r   r   r    r!   r"   r#   ÚjsonÚopenÚloadr   r�   )rƒ   Úmetadata_listr‹   r(   r*   Ú@py_format5r”   ÚfÚdatarg   r=   Ú@py_format7Ú@py_assert6Ú@py_assert5r,   Ú@py_format10s                   r-   Útest_save_metadatarŸ   ø   sB  € ô 	ØØØ�LØ *ØØñ	
ô 	ØØØ�LØ *ØØñ	
ð€Mð& ˜_Ñ,€Kä	ÐÕ	 Ü�m¤S¨Ó%5Ô6÷ 
!ð ×ÑÐÐÓÐÕ×××××Ñˆ;×××Ñˆ;××ÕÐ××ÓÐ×××××Òãä	ˆkÔ	˜aØ�y‰y˜‹|ˆ÷ 
ð �ÑÐ$ 1Ð$ 1Ñ$×$×$×$Ò$Ð×$×$Ô$Ð×$×$Ó$ 1×$×$×$×$×$×$Ó$Ø�H‰~Ð#Œ3ˆ~ÓÐ# !Ð# !Ñ#×#×#×#Ò#Ð×#×#×#×#×#Õ#Œ3×#×#×#Ñ#Œ3×#×#Õ#ˆ~×#×#Ó#Ð×#×#Ó# !×#×#×#×#×#×#Õ#Ø�‰>˜!Ñ˜]Ñ+Ð0¨qÐ0¨qÑ0×0×0×0Ò0Ð+×0×0Ô0Ð+×0×0Ó0¨q×0×0×0×0×0×0Ó0Ø�‰>˜!Ñ˜]Ñ+Ð0¨qÐ0¨qÑ0×0×0×0Ò0Ð+×0×0Ô0Ð+×0×0Ó0¨q×0×0×0×0×0×0Ó0Ø�‰>˜!ÑÐ2Ñ3ÐA°zÐA°zÑA×A×A×AÒAÐ3×A×AÔAÐ3×A×AÓA°z×A×A×A×A×A×AÓAØ�‰>˜!Ñ˜]Ñ+Ð0¨qÐ0¨qÑ0×0×0×0Ò0Ð+×0×0Ô0Ð+×0×0Ó0¨q×0×0×0×0×0×0Ô0÷ 
!Ö	 ú÷ 
Ö	ús   ¯SÄS)Ó
S&Ó)
S8c                  óØ  • [        SS9n [        SSSS/SSS	S
SS9n[        S5       nU R                  U5        UR                  o3(       d…  SS[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  n[        [        R                  " U5      5      eSnSSS5        g! , (       d  f       g= f)zTest debug info printing.T)r&   r   rS   rA   rE   zHeader 1 ^ Header 2zThis is a test tabler2   rL   zCell A1)r…   r†   rm   r‡   Údescriptive_textrˆ   r‰   Úfirst_cell_contentrŠ   z*assert %(py2)s
{%(py2)s = %(py0)s.called
}Ú
mock_print)r   r   N)r   r   r   Úprint_debug_infoÚcalledr   r   r   r    r!   r"   r#   )r   Úmetadatar£   r(   Ú@py_format3s        r-   Útest_print_debug_infor¨   !  s©   € ä dÑ+€FäØØØ˜ZÐ(Ø1Ø/ØØØ$ñ	€Hô 
ÐÔ	  JØ×Ñ Ô)à× Ñ Ð Õ × × × × × Ñ ˆz× × × Ñ ˆz× × Õ Ð × × × × × Ñ ÷ 
!×	 Ö	 ús   §B+CÃ
C))#Ú__doc__Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   Úpathlibr   Úunittest.mockr   r   Úquber.core.consolidationr   r   Úquber.core.modelsr   r.   r3   r?   rC   rF   rJ   rQ   rW   r]   rh   rj   rq   ru   ry   r{   r‚   rŸ   r¨   © r/   r-   Ú<module>r³      s{   ðÙ 0ç  „ Õ ß %ç FÝ +ò!ò òò ò6ò'òò.ò;ò("ò2"ò(ò'ò+ò&+ò(!ð&&1 ô &1óR!r/   