ó
    Í>j3
  ã                  óž   • S r SSKJr  SSKrSSKJs  Jr  SSK	r	SSK
Jr  SSKJr  SSKJrJr  SS/rS	S
/rSrS rS rS rS rSS jrSS jrg)z@Tests for revising a table's box to the true end of its content.é    )ÚannotationsN)ÚExtractedTable)Úextent)Úapply_content_regionsÚrevise_content_region)ç      $@ç      H@ç      >@ç      J@ÚTotal)ç      D@r	   g      I@r   Ú5)r   ç      Q@r   ç      R@z(1))g     €F@r   g      T@r   Únotez1| a | b |
|---|---|
| Revenue | 9 |
| Total | 5 |c                 óŒ  • Sn [        U [        [        [        -   SS5      nUS S o S S o2U:H  oD(       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=pCUS   n[        R                  nS	o‡" U5      o’U	:H  oD(       dì  [        R
                  " SU4S
X)45      [        R                  " U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=n=p‰g )N©çš™™™™™¹?r   çÍÌÌÌÌÌì?gš™™™™™é?ç      Y@é   ©ú==)z%(py1)s == %(py4)s)Úpy1Úpy4zassert %(py6)sÚpy6ç¤p=
×£à?©zL%(py1)s == %(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.approx
}(%(py7)s)
}Úpytest©r   Úpy3Úpy5Úpy7Úpy9úassert %(py11)sÚpy11)r   ÚMDÚLAST_ROWÚFOOTNOTE_BELOWÚ
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanationr   ÚapproxÚ@py_builtinsÚlocalsÚ_should_repr_global_name)ÚsomÚregionÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7Ú@py_assert4Ú@py_assert6Ú@py_assert8Ú@py_format10Ú@py_format12s               Ú</home/mande/repo/quber/tests/core/test_set_of_mark_extent.pyÚ'test_revise_pulls_bottom_up_to_last_rowr@      s  € ð  €CÜ" 3¬¬H´~Ñ,EÀuÈeÓT€FØ�"�1ˆ:Ð ˜R˜a˜Ð ˜Ñ × × × Ò ˆ:× × Ô ˆ:× × Ó ˜× × × × × × Ó Ø�!‰9Ð+œŸ™Ð+ dÐ+˜ dÓ+Ð+Ð+Ñ+×+×+×+Ò+ˆ9×+×+Ô+ˆ9×+×+×+×+×+Ô+œ×+×+×+Ñ+œ×+×+Õ+˜×+×+Ó+ d×+×+Ó+Ð+×+×+×+×+×+×+×+Ð+ó    c                 óp  • Sn SS/n[        U [        USS5      nUS   n[        R                  nSoT" U5      ocU:H  ow(       dì  [        R
                  " SU4SX645      [        R                  " U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=n=pVg )N)r   r   r   gÍÌÌÌÌÌÜ?)r   g      C@r
   g      E@r   )r   g     €S@r
   g     €T@r   r   r   gáz®GáÚ?r   r   r   r    r%   r&   )r   r'   r   r/   r*   r+   r,   r0   r1   r2   r-   r.   )
r3   Úwordsr4   r5   r:   r;   r<   r7   r=   r>   s
             r?   Ú1test_revise_ignores_stacked_sibling_identical_rowrD      sÃ   € ð  €CØ.Ð0QÐR€EÜ" 3¬¨E°5¸%Ó@€FØ�!‰9Ð+œŸ™Ð+ dÐ+˜ dÓ+Ð+Ð+Ñ+×+×+×+Ò+ˆ9×+×+Ô+ˆ9×+×+×+×+×+Ô+œ×+×+×+Ñ+œ×+×+Õ+˜×+×+Ó+ d×+×+Ó+Ð+×+×+×+×+×+×+×+Ð+rA   c                 ót  • Sn S/nSnSn[        U [        XU5      oDU :H  oU(       Gd  [        R                  " SU4SX@4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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[        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 =n=n=pEg )Nr   )r   g      4@r
   g      8@Ú	Unrelatedr   r   )zU%(py9)s
{%(py9)s = %(py0)s(%(py1)s, %(py2)s, %(py3)s, %(py5)s, %(py7)s)
} == %(py11)sr   r3   r'   rC   )Úpy0r   Úpy2r!   r"   r#   r$   r&   zassert %(py13)sÚpy13)
r   r'   r*   r+   r0   r1   r2   r,   r-   r.   )r3   rC   r:   r;   r<   Ú@py_assert10r>   Ú@py_format14s           r?   Ú+test_revise_falls_back_when_row_not_locatedrL   #   s%  € Ø
€CØ2Ð3€EØ16ÐE¸ÐEÔ  ¤b¨%¸Ó>ÐEÀ#ÑE×E×E×EÓEÐ>×E×E×E×E×EÕEÔ ×E×E×EÑEÔ ×E×E×E×E×EÖE ×E×E×EÑE ×E×E×E×E×EÖE¤b×E×E×EÑE¤b×E×E×E×E×EÖE¨%×E×E×EÑE¨%×E×EÕE°×E×EÓE¸×E×EÓEÐ>×E×E×E×E×EÔEÀ#×E×E×EÑEÀ#×E×E×E×E×E×E×EÐErA   c                 óŒ  • Sn Sn/ nSnSn[        XX#U5      oUU :H  of(       Gd—  [        R                  " SU4SXP4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      [        R                  " U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 =n=n=n=n=pVg )Nr   Ú r   r   )zW%(py11)s
{%(py11)s = %(py0)s(%(py1)s, %(py3)s, %(py5)s, %(py7)s, %(py9)s)
} == %(py13)sr   r3   )rG   r   r!   r"   r#   r$   r&   rI   zassert %(py15)sÚpy15)	r   r*   r+   r0   r1   r2   r,   r-   r.   )	r3   r7   r:   r;   r<   rJ   Ú@py_assert12rK   Ú@py_format16s	            r?   Ú,test_revise_keeps_region_when_markdown_emptyrR   )   s÷   € Ø
€CØ&(ÐB¨"ÐB¨eÐB°UÐBÔ  ¨"°UÓ;ÐB¸sÑB×B×B×BÓBÐ;×B×B×B×B×BÕBÔ ×B×B×BÑBÔ ×B×B×B×B×BÖB ×B×B×BÑB ×B×BÕB b×B×BÓB¨"×B×BÓB¨e×B×BÓB°U×B×BÓBÐ;×B×B×B×B×BÔB¸s×B×B×BÑB¸s×B×B×B×B×B×B×BÔBrA   c                óf  • U R                  [        SS 5        [        [        SSS9n[	        U/S5        U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
                  S   n[        R                  nSoƒ" U5      o—U	:H  oª(       dì  [        R                  " SU
4SXy45      [        R                  " U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
=n=p‰g )NÚ
page_wordsc                ó"   • SS[         [        -   4$ ©Nr   )r(   r)   ©ÚsrcÚpages     r?   Ú<lambda>Ú0test_apply_sets_content_region.<locals>.<lambda>/   s   € ÀÈÌxÔZhÑOhÑ@irA   é   r   )ÚmarkdownrY   Ú
som_regionúdoc.pdf)úis not)z:%(py2)s
{%(py2)s = %(py0)s.content_region
} is not %(py5)sÚtable©rG   rH   r"   úassert %(py7)sr#   r   r   r   r   r   r    r%   r&   )Úsetattrr   r   r'   r   Úcontent_regionr*   r+   r0   r1   r2   r,   r-   r.   r   r/   )Úmonkeypatchra   Ú@py_assert1r:   r6   Ú@py_format6Ú@py_format8r5   r;   r<   r7   r=   r>   s                r?   Útest_apply_sets_content_regionrj   .   sI  € Ø×Ñœ Ñ.iÔjÜ¤B¨QÐ;PÑQ€EÜ˜5˜' 9Ô-Ø×ÑÐ+ tÐ+ tÐ+×+×+×+Ò+Ð×+×+×+×+×+Õ+ˆ5×+×+×+Ñ+ˆ5×+×+Õ+Ð×+×+Ó+ t×+×+×+×+×+×+Ó+Ø×Ñ Ñ"Ð9¤f§m¡mÐ9°DÐ9 m°DÓ&9Ð9Ð&9Ñ9×9×9×9Ò9Ð"×9×9Ô9Ð"×9×9×9×9×9Ô9¤f×9×9×9Ñ9¤f×9×9Õ9 m×9×9Ó9°D×9×9Ó9Ð&9×9×9×9×9×9×9×9Ð9rA   c                ó  • U R                  [        SS 5        [        [        SS9n[	        U/S5        U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 )NrT   c                ó   • SS/ 4$ rV   © rW   s     r?   rZ   Ú;test_apply_skips_table_without_som_region.<locals>.<lambda>7   s   € ÀÈÈrÑ@RrA   r\   )r]   rY   r_   )Úis)z6%(py2)s
{%(py2)s = %(py0)s.content_region
} is %(py5)sra   rb   rc   r#   )rd   r   r   r'   r   re   r*   r+   r0   r1   r2   r,   r-   r.   )rf   ra   rg   r:   r6   rh   ri   s          r?   Ú)test_apply_skips_table_without_som_regionrp   6   s    € Ø×Ñœ Ñ.RÔSÜ¤B¨QÑ/€EÜ˜5˜' 9Ô-Ø×ÑÐ' 4Ð' 4Ð'×'×'×'Ò'Ð×'×'×'×'×'Õ'ˆ5×'×'×'Ñ'ˆ5×'×'Õ'Ð×'×'Ó' 4×'×'×'×'×'×'Ô'rA   )rf   zpytest.MonkeyPatch)Ú__doc__Ú
__future__r   Úbuiltinsr0   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter*   r   Úquber.core.extractors.baser   Ú!quber.core.extractors.set_of_markr   Ú(quber.core.extractors.set_of_mark.extentr   r   r(   r)   r'   r@   rD   rL   rR   rj   rp   rm   rA   r?   Ú<module>rz      sX   ðÙ Få "ç  „ ƒå 5Ý 4ß að .Ð/LÐM€Ø1Ð3SÐT€Ø;€ò,ò,òFòCô
:õ(rA   