ó
    9°Mj‡  ã                  óü  • S r SSKJr  SSKrSSKJs  Jr  SSK	J
r
  SSKrSSKJs  Js  Js  Jr  SSKJrJr  SSKJr  S r\R.                  S 5       rS	 r\R4                  R6                  S
 5       r\R4                  R6                  S 5       r\R4                  R6                  S 5       r\R4                  R6                  S 5       r\R4                  R6                  S 5       r \R4                  R6                  S 5       r!g)zùThe status inspector verifies proposed gap conditions against the table
image, and the deterministic gate only ever downgrades: confirmed conditions
keep their status with the evidence noted, everything else becomes
`unverified` for user inspection.é    )ÚannotationsN)ÚPath)ÚCellFindingÚMockStatusInspector©ÚGroundedCellc            	     ól   • [        SSSS9/[        SSS9/[        SS	S9/[        S
SS9/[        SSS9//$ )NÚItem©çš™™™™™¹?r   gš™™™™™É?g¸…ëQ¸¾?Ú
reconciled©ÚtextÚboxÚstatuszCoverage DataÚheader_printed_unlocated)r   r   ÚTotalÚtotal_label_addedz9,999Ú
unverifiedÚ$Úsingle_characterr   © ó    Ú;/home/mande/repo/quber/tests/core/test_status_inspection.pyÚ_gridr      sS   € ä	˜6Ð'<À\Ñ	RÐSÜ	˜?Ð3MÑ	NÐOÜ	˜7Ð+>Ñ	?Ð@Ü	˜7¨<Ñ	8Ð9Ü	˜3Ð'9Ñ	:Ð;ðð r   c                ó”   • U R                  [        SS 5        U R                  [        SS 5        U R                  [        SS 5        g )NÚ
page_wordsc                ó   • SS/ 4$ )Ng      ƒ@g     Àˆ@r   )ÚsourceÚpages     r   Ú<lambda>Úpatched.<locals>.<lambda>   s   € ÈÈuÐVXÑGYr   Úcrop_region_pngc                ó   • g)Ns   pngr   )Úimager   Údpis      r   r!   r"      s   € Èvr   Útable_crop_boxc                ó   • U $ )Nr   )ÚbboxÚpage_hs     r   r!   r"      s   € É4r   )ÚsetattrÚ
inspection)Úmonkeypatchs    r   Úpatchedr.      s=   € à×Ñœ
 LÑ2YÔZØ×Ñœ
Ð$5Ñ7UÔVØ×Ñœ
Ð$4Ñ6OÕPr   c           
   ƒ  ól   #   • [         R                  " U SSS[        S5      SSU5      I S h  v•N   g  N7f)Nú| Item |údoc.pdfé	   zpage.png©ç      $@r4   ç      Y@r5   éÈ   )r,   Úinspect_gap_cellsr   )ÚgridÚ	inspectors     r   Ú_runr:   "   s6   é € Ü
×
&Ò
&Øˆj˜) Q¬¨ZÓ(8Ð:TÐVYÐ[dó÷ ó ùs   ‚*4¬2­4c              ƒ  ó¸  #   • [        5       n[        [        SSSSS9[        SSSSS9[        SSSS	S9/S
9n[        X5      I S h  v•N   US   S   o3R                  nSoTU:H  of(       d„  [
        R                  " SU4SXE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peUS   S   o3R                  nSoTU:H  of(       d„  [
        R                  " SU4SXE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peUS   S   o3R                  nSoTU:H  of(       d„  [
        R                  " SU4SXE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peUS   S   o3R                  nSoTU:H  of(       d„  [
        R                  " SU4SXE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peUR                  S   S    V	s1 s H  o™S   U	S   4iM     n
n	1 SkoJU:H  o»(       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 =p´g  GN�s  sn	f 7f)Né   r   Úholdsz"printed as a band over two columns©ÚrowÚcolÚverdictÚevidenceé   úblank label on a totals rowé   únot visible anywhere©Úfindingsr   ©ú==©z.%(py3)s
{%(py3)s = %(py1)s.status
} == %(py6)s©Úpy1Úpy3Úpy6úassert %(py8)sÚpy8©z,%(py3)s
{%(py3)s = %(py1)s.note
} == %(py6)sr   r   Úflaggedr?   r@   >   ©r<   r   ©rC   r   ©rE   r   )z%(py0)s == %(py3)sÚsent)Úpy0rN   zassert %(py5)sÚpy5)r   r   r   r:   r   Ú
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanationÚnoteÚcallsÚ@py_builtinsÚlocalsÚ_should_repr_global_name)r.   r8   r9   Ú@py_assert0Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9ÚfrW   Ú@py_assert1Ú@py_format4Ú@py_format6s                 r   Ú3test_confirmed_conditions_keep_status_with_evidencern   (   s�  é € ä‹7€DÜ#ä˜A 1¨gÐ@dÑeÜ˜A 1¨gÐ@]Ñ^Ü˜A 1¨gÐ@VÑWð
ñ€Iô ˆtÓ
×ÐØ�‰7�1‰:Ð:×ÑÐ:Ð :Ð:Ð :Ñ:×:×:×:Ò:Ð×:×:Ô:ˆ:×:×:Ó:Ð×:×:Ó:Ð :×:×:×:×:×:×:Õ:Ø�‰7�1‰:Ð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Ø�‰7�1‰:Ð3×ÑÐ3Ð 3Ð3Ð 3Ñ3×3×3×3Ò3Ð×3×3Ô3ˆ:×3×3Ó3Ð×3×3Ó3Ð 3×3×3×3×3×3×3Õ3Ø�‰7�1‰:Ð,×ÑÐ, Ð, Ñ,×,×,×,Ò,Ð×,×,Ô,ˆ:×,×,Ó,Ð×,×,Ó, ×,×,×,×,×,×,Õ,à*3¯/©/¸!Ñ*<¸YÒ*GÓHÒ*G Qˆu‰X�q˜‘xÓ Ñ*G€DÐHÚ+Ð+Ð+Ñ+×+×+×+Ò+ˆ4×+×+×+×+×+Õ+ˆ4×+×+×+Ñ+ˆ4×+×+Õ+Ð+×+×+×+×+×+×+Ò+ò  ùò Iùs&   ‚AOÁOÁK OÌOÌB:OÏOc           
   ƒ  óÚ  #   • [        5       n[        [        SSSSS9[        SSSSS9/S	9n[        X5      I S h  v•N   US   S   o3R                  nS
oTU:H  of(       d„  [
        R                  " SU4SXE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peUS   S   o3R                  nSoTU:H  of(       d„  [
        R                  " SU4SXE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peUS   S   o3R                  nSoTU:H  of(       d„  [
        R                  " SU4SXE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peUS   S   o3R                  nSoTU:H  of(       d„  [
        R                  " SU4SXE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peg  GN®7f)Nr<   r   Úcontradictedz%the band there reads 'Coverage Ratio'r>   rE   r=   rF   rG   ÚdefectrI   rK   rL   rP   rQ   rR   rC   r   znot confirmed by inspection©r   r   r   r:   r   rZ   r[   r\   r]   r^   r_   ©	r.   r8   r9   rd   re   rf   rg   rh   ri   s	            r   Ú?test_contradicted_unmentioned_and_unsettled_conditions_reassignrt   <   sï  é € ä‹7€DÜ#ô Ø˜1 nÐ?fñô ˜A 1¨gÐ@VÑWð
ñ€Iô ˆtÓ
×Ðà�‰7�1‰:Ð(×ÑÐ( Ð( Ñ(×(×(×(Ò(Ð×(×(Ô(ˆ:×(×(Ó(Ð×(×(Ó( ×(×(×(×(×(×(Õ(Ø�‰7�1‰:Ð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Ø�‰7�1‰:Ð,×ÑÐ, Ð, Ñ,×,×,×,Ò,Ð×,×,Ô,ˆ:×,×,Ó,Ð×,×,Ó, ×,×,×,×,×,×,Õ,Ø�‰7�1‰:Ð;�?‰?Ð;Ð;Ð;Ð;Ñ;×;×;×;Ò;ˆ?×;×;Ô;ˆ:×;×;Ó;ˆ?×;×;Ó;Ð;×;×;×;×;×;×;Ö;ò  ùs   ‚8K+ºK(»J.K+c              ƒ  óH  #   • [        5       n[        [        SSSSS9[        SSSSS9[        S	SSS
S9/S9n[        X5      I S h  v•N   US   S   o3R                  nSoTU:H  of(       d„  [
        R                  " SU4SXE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peUS   S   o3R                  nSoTU:H  of(       d„  [
        R                  " SU4SXE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peg  GNZ7f)Nr<   r   Úcannot_tellzheader area is croppedr>   rC   r=   rD   rE   rF   rG   r   rI   rK   rL   rP   rQ   rR   rr   rs   s	            r   Ú/test_cannot_tell_lands_in_unverified_not_defectrw   P   s*  é € ä‹7€DÜ#ä˜A 1¨mÐF^Ñ_Ü˜A 1¨gÐ@]Ñ^Ü˜A 1¨gÐ@VÑWð
ñ€Iô ˆtÓ
×ÐØ�‰7�1‰:Ð,×ÑÐ, Ð, Ñ,×,×,×,Ò,Ð×,×,Ô,ˆ:×,×,Ó,Ð×,×,Ó, ×,×,×,×,×,×,Õ,Ø�‰7�1‰:Ð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ò  ùs   ‚AF"ÁFÁEF"c              ƒ  óH  #   • [        5       n[        US 5      I S h  v•N   US   S   o"R                  nSoCU:H  oU(       d„  [        R                  " SU4SX445      [        R
                  " U5      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pTUS	   S   o"R                  nS
oCU:H  oU(       d„  [        R                  " SU4SX445      [        R
                  " U5      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pTUS   S   o"R                  nS oCUL oU(       d„  [        R                  " SU4SX445      [        R
                  " U5      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pTg  GN7f)Nr<   r   r   rI   rK   rL   rP   rQ   rC   r   )Úis)z,%(py3)s
{%(py3)s = %(py1)s.note
} is %(py6)s)	r   r:   r   rZ   r[   r\   r]   r^   r_   )r.   r8   rd   re   rf   rg   rh   ri   s           r   Ú*test_no_inspector_leaves_proposed_statusesrz   _   sX  é € ä‹7€DÜ
ˆt�TÓ
×ÐØ�‰7�1‰:Ð:×ÑÐ:Ð :Ð:Ð :Ñ:×:×:×:Ò:Ð×:×:Ô:ˆ:×:×:Ó:Ð×:×:Ó:Ð :×:×:×:×:×:×:Õ:Ø�‰7�1‰:Ð3×ÑÐ3Ð 3Ð3Ð 3Ñ3×3×3×3Ò3Ð×3×3Ô3ˆ:×3×3Ó3Ð×3×3Ó3Ð 3×3×3×3×3×3×3Õ3Ø�‰7�1‰:Ð"�?‰?Ð"˜dÐ"˜dÐ"×"×"×"Ò"ˆ?×"×"Ô"ˆ:×"×"Ó"ˆ?×"×"Ó"˜d×"×"×"×"×"×"Ö"ò ùs   ‚H"œH�HH"c              ƒ  ó  #   • [        SSSS9//n[        5       n[        X5      I S h  v•N   UR                  n/ 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      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=pTg  NÜ7f)Nr
   r   r   r   rI   ©z-%(py2)s
{%(py2)s = %(py0)s.calls
} == %(py5)sr9   ©rX   Úpy2rY   úassert %(py7)sÚpy7)r   r   r:   r`   rZ   r[   ra   rb   rc   r\   r]   r^   )r.   r8   r9   rk   rg   Ú@py_assert3rm   Ú@py_format8s           r   Ú"test_nothing_flagged_makes_no_callrƒ   h   s¤   é € ä˜vÐ+@ÈÑVÐWÐX€DÜ#Ó%€IÜ
ˆtÓ
×ÐØ�?‰?Ð ˜bÐ ˜bÑ × × × Ò ˆ?× × × × × Õ ˆ9× × × Ñ ˆ9× × Õ ˆ?× × Ó ˜b× × × × × × Ô ñ  ùs   ‚&D¨D©CDc           
   ƒ  óÚ  #   • [        5       n[        5       n[        R                  " USSSS SSU5      I S h  v•N   US   S   o3R                  nSoTU:H  of(       d„  [
        R                  " S	U4S
XE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peUS   S   o3R                  nSoTU:H  of(       d„  [
        R                  " S	U4S
XE45      [
        R                  " U5      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=peUR                  n	/ oiU:H  oª(       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	=p¦g  GN17f)Nr0   r1   r2   r3   r6   r<   r   r   rI   rK   rL   rP   rQ   rC   r|   r9   r}   r   r€   )r   r   r,   r7   r   rZ   r[   r\   r]   r^   r`   ra   rb   rc   )r.   r8   r9   rd   re   rf   rg   rh   ri   rk   r�   rm   r‚   s                r   Ú0test_missing_image_downgrades_everything_flaggedr…   p   s‚  é € ä‹7€DÜ#Ó%€IÜ
×
&Ò
&Øˆj˜) Q¨Ð.HÈ#Èyó÷ ð ð �‰7�1‰:Ð,×ÑÐ, Ð, Ñ,×,×,×,Ò,Ð×,×,Ô,ˆ:×,×,Ó,Ð×,×,Ó, ×,×,×,×,×,×,Õ,Ø�‰7�1‰:Ð,×ÑÐ, Ð, Ñ,×,×,×,Ò,Ð×,×,Ô,ˆ:×,×,Ó,Ð×,×,Ó, ×,×,×,×,×,×,Õ,Ø�?‰?Ð ˜bÐ ˜bÑ × × × Ò ˆ?× × × × × Õ ˆ9× × × Ñ ˆ9× × Õ ˆ?× × Ó ˜b× × × × × × Ô òùs   ‚5I+·I(¸H1I+)"Ú__doc__Ú
__future__r   Úbuiltinsra   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterZ   Úpathlibr   ÚpytestÚ,quber.core.extractors.set_of_mark.inspectionÚcoreÚ
extractorsÚset_of_markr,   Úquber.agents.status_inspectorr   r   Úquber.core.extractors.baser   r   Úfixturer.   r:   ÚmarkÚasynciorn   rt   rw   rz   rƒ   r…   r   r   r   Ú<module>r—      sþ   ðñ%õ
 #ç  „ Õ ã ç AÖ Aß JÝ 3òð ‡�ñQó ðQòð ‡�×Ññ,ó ð,ð& ‡�×Ññ<ó ð<ð& ‡�×Ññ7ó ð7ð ‡�×Ññ#ó ð#ð ‡�×Ññ!ó ð!ð ‡�×Ññ!ó ñ!r   