ó
    á³j|  ã                   ó�   • S r SSKrSSKJs  Jr  SSKrSSKrSSK	J
r
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g)u  The batch runner: parsing the prompt window, scheduling, retry, error
rows, events and eviction. The runner holds no model â€” the caller hands it a
coroutine â€” so these run it for real on a stub answerer and assert on the
run's own accounting, which is the module's whole contract.é    N)ÚBatchRunnerÚparse_questionsc                  óN  • Sn [        U 5      n/ SQo!U:H  o3(       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[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS =n=p2S
n[        U5      n/ o‡U:H  o"(       d×  [        R                  " SU4SXx4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(g )NzCWhat was Q3 revenue?

  What drove margins?  
What was Q3 revenue?
)úWhat was Q3 revenue?zWhat drove margins?r   ©ú==)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   Útext)Úpy0Úpy1Úpy3Úpy6zassert %(py8)sÚpy8z
 
)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)s)r
   Úpy2Úpy4Úpy7zassert %(py9)sÚpy9)	r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)r	   Ú@py_assert2Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9Ú@py_assert1Ú@py_assert3Ú@py_assert6Ú@py_format8Ú@py_format10s              Ú5/home/mande/repo/quber/tests/playground/test_batch.pyÚ@test_parse_questions_one_per_line_blanks_dropped_duplicates_keptr&      s‚  € ØT€DÜ˜4Ó ð ò %ð ð %ñ ÷ ô ïé ô	Ð ÷ ò ïé ÷	õ ïé ð	Œ?÷ ö ïé ð	Œ?÷ ó ïé ÷	õ ïé ð	˜4÷ ö ïé ð	˜4÷ ò ïé ð	Ð ÷ ð ïé ð	ð %÷ ÷ ÷ ñ ïé ÷	÷ ð
 #Ð)Œ?˜7Ó#Ð) rÐ) rÑ)×)×)×)Ò)Ð#×)×)×)×)×)Õ)Œ?×)×)×)Ñ)Œ?×)×)Õ)˜7×)×)Ó)Ð#×)×)Ó) r×)×)×)×)×)×)Ö)ó    c              ƒ   ó   #   • U /$ 7f)N© )Úquestions    r%   Ú	retrievedr+      s   é € Øˆ:Ðùs   ‚c              ƒ   ó   #   • SU SS0/ S.$ 7f)NÚscalarÚvalueÚ1)ÚshapeÚanswerr.   Ú
referencesr)   ©r*   Úcontexts     r%   Úansweredr5      s   é € Ø¨¸WÀc¸NÐZ\Ñ]Ð]ùs   ‚
c                 ó"   ^ ^• UU 4S jnU" 5       $ )Nc               “   ó~   >#   • TR                  T5        S h  v•N n U R                  S5      S:X  d  M   U s  $  N
 g 7f)NÚtypeÚdone)ÚeventsÚget)ÚeventÚjob_idÚrunners    €€r%   ÚdrainÚwait_done.<locals>.drain    s7   øé € Ø!Ÿ=™=¨Ô0÷ 	�%Ø�y‰y˜Ó  FÕ*Ø’ñ	Ñ0ùs    ƒ=•;™9š;�=µ=¹;»=r)   )r>   r=   r?   s   `` r%   Ú	wait_donerA      s   ù€ öñ
 ‹7€Nr'   c                  ó@   • S n [         R                  " U " 5       5        g )Nc               “   ó¤  #   • [        SS9n U R                  S/ SQS[        [        5      n/ o!R                  nSoCU:H  oUoe(       a  UR
                  ownU(       Gdh  [        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-  o’R                  U	5        U(       av  SS	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	[        R                  " W5      S.-  o¢R                  U
5        [        R                  " US5      0 -  nSSU0-  n[        [        R                  " U5      5      eS =n=n=n=n=pG[!        XR"                  5      I S h  v•N nSSSSS.oíU: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.U R%                  UR"                  5      nS nUULo"(       d¦  [        R                  " SU4SUU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.UR&                   Vs/ s H  nUR(                  PM     nn/ SQo6U:H  oî(       do  [        R                  " SU4SXc45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pãUR&                  S   R*                  n/ nS nUULo3oc(       a  US   nS nUU:H  nUnU(       Gd@  [        R                  " SU4S!UU45      S"[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS"[        R                  " U5      S#.-  nS$S%U0-  o‚R                  U5        U(       ab  [        R                  " SW4S&WU45      [        R                  " U5      [        R                  " U5      S'.-  n
S(S)U
0-  nUR                  U5        [        R                  " US5      0 -  nS*S+U0-  n[        [        R                  " U5      5      eS =n=n=n=n=n=nnUR
                  o"(       + 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 =p#g  GNcs  snf 7f).Né   ©Úconcurrencyé   )Úq1Úq2Úq3r.   é   r   )z-%(py4)s
{%(py4)s = %(py2)s.total
} == %(py7)sÚstate©r   r   r   ú%(py9)sr   z'%(py13)s
{%(py13)s = %(py11)s.running
})Úpy11Úpy13r   zassert %(py16)sÚpy16r9   ©r8   Útotalr9   Úfailed©z%(py0)s == %(py3)s©r
   r   úassert %(py5)sÚpy5©úis not©z%(py0)s is not %(py3)sÚfinal©z%(py1)s == %(py4)s©r   r   úassert %(py6)sr   r1   rH   ©z%(py2)s is not %(py5)sÚfirst©r   rX   ú%(py7)sr   )z%(py10)s == %(py13)s)Úpy10rP   z%(py15)sÚpy15zassert %(py18)sÚpy18z/assert not %(py2)s
{%(py2)s = %(py0)s.running
})r
   r   )r   Ústartr+   r5   rS   Úrunningr   r   r   r   r   r   ÚappendÚ_format_boolopr   r   rA   r=   r;   Úrowsr*   Úresponse)r>   rL   r    r!   r"   r   Ú@py_assert0Ú@py_assert12r#   r$   Ú@py_format14Ú@py_format15Ú@py_format17r9   r   Ú@py_format4Ú@py_format6r\   ÚrÚ@py_format5r   ra   r   Ú@py_assert9Ú@py_assert11Ú@py_format16Ú@py_format19s                              r%   ÚrunÚ?test_rows_land_per_question_and_state_reports_them.<locals>.run)   sh  é € Ü¨Ñ+ˆØ—‘˜QÒ 2°G¼YÌÓQˆÙ1�{‰{Ð1˜aÐ1˜aÑ×1 E§M¡M×1×1×1Õ1ˆ{×1×1×1×1×1Õ1ˆu×1×1×1Ñ1ˆu×1×1Õ1ˆ{×1×1Ó1˜a×1×1×1×1×1×1×1×1×1×1Ð1 E×1×1×1Ñ1 E×1×1Õ1 M×1×1×1×1×1×1×1×1×1×1×1×1Ó1Ü˜v§|¡|Ó4×4ˆØ &°¸AÈÑKÐKÐKÑK×K×K×KÒKˆt×K×K×K×K×KÕKˆt×K×K×KÑKˆt×K×KÕKÐK×K×K×K×K×K×KÑKØ—
‘
˜5Ÿ<™<Ó(ˆØ Ð ˆu˜DÐ × × × Ò ˆu˜D× × × × × Õ ˆu× × × Ñ ˆu× × Õ ˜D× × × × × × Ñ Ø$)§J¢JÓ/¢J˜q�—
”
¡JÐEÐ/Ò3EÐEÐ3EÑE×E×E×EÒEÐ/×E×EÔEÐ/×E×EÓEÐ3E×E×E×E×E×E×EÓEØ—
‘
˜1‘×&Ñ&ˆÙ<˜DÐ<ˆu˜DÐ ×< U¨8¡_Ð<¸Ð< _¸Ñ%<×<×<×<Ö<ˆu˜D×<×<×<×<×<Õ<ˆu×<×<×<Ñ<ˆu×<×<Õ<˜D×<×<×<×<×<×<×<Ò< _¸×<×<Ô< _×<×<Ó<¸×<×<×<×<×<×<×<×<×<×<×<×<×<Ö<Ø—=‘=Ð Ô Ð Õ × × × × × Ñ �5× × × Ñ �5× × Õ �=× × × × × Ó ò 5ùò 0ùs&   ‚G#YÇ%YÇ&FYÎYÎJ2YÙY©Úasynciorz   ©rz   s    r%   Ú2test_rows_land_per_question_and_state_reports_themr   (   s   € ò!ô ‡K‚K‘“Õr'   c                  óN   ^• S mU4S jn [         R                  " U " 5       5        g )Nc              “   óV   #   • U S:X  a  [        S5      e[        X5      I S h  v•N $  N7f)NÚbadÚboom)ÚRuntimeErrorr5   r3   s     r%   ÚflakyÚJtest_a_question_that_fails_becomes_a_row_carrying_its_error.<locals>.flaky:   s)   é € Ø�uÓÜ˜vÓ&Ð&Ü˜hÓ0×0Ð0Ñ0ùs   ‚ )¢'£)c               “   óÜ	  >#   • [        5       n U R                  SSS/S[        T5      n[        XR                  5      I S h  v•N   U R                  UR                  5      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 =pC/ oBR                  nSo‡U:H  o™o©(       a  UR                  nSoËU:H  oÝn
U
(       GdŸ  [        R                  " SU	4SXx4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-  oôR!                  U5        U	(       a­  [        R                  " SW4SWW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UR!                  U5        [        R"                  " US5      0 -  nSSU0-  n[        [        R                  " U5      5      eS =n
=n=n=n	=n=n=pÜUR$                  S   n/ nUR&                  nSo‡U:H  o™o©(       a  UR(                  nS oËUL oÝn
U
(       Gdž  [        R                  " SU	4SXx4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-  oôR!                  U5        U	(       a¬  [        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UR!                  U5        [        R"                  " US5      0 -  nSSU0-  n[        [        R                  " U5      5      eS =n
=n=n=n	=n=n=pÜg  GN¨7f)NrG   Úokr‚   ÚautorY   r[   r\   rV   rW   rX   rD   r   )z.%(py4)s
{%(py4)s = %(py2)s.failed
} == %(py7)srM   rN   r   )z0%(py13)s
{%(py13)s = %(py11)s.done
} == %(py16)s)rO   rP   rQ   z%(py18)srf   r   zassert %(py21)sÚpy21rƒ   )z-%(py4)s
{%(py4)s = %(py2)s.error
} == %(py7)s©Úis)z4%(py13)s
{%(py13)s = %(py11)s.response
} is %(py16)s)r   rg   r+   rA   r=   r;   r   r   r   r   r   r   r   r   rT   r9   ri   rj   rk   Úerrorrl   )r>   rL   r\   r   r    rr   rs   r!   r"   r   rm   rn   Ú@py_assert15Ú@py_assert14r#   r$   rq   ry   Ú@py_format20Ú@py_format22r‚   r…   s                        €r%   rz   ÚHtest_a_question_that_fails_becomes_a_row_carrying_its_error.<locals>.run?   s–  øé € Ü“ˆØ—‘˜Q  u ¨v´yÀ%ÓHˆÜ˜§¡Ó-×-Ð-Ø—
‘
˜5Ÿ<™<Ó(ˆØ Ð ˜DÐ × × × Ò ˆu× × × × × Õ ˆu× × × Ñ ˆu× × Õ ˜D× × × × × × Ñ Ù4�|‰|Ð4˜qÐ4˜qÑ ×4 U§Z¡ZÐ4°1Ð4°1¡_×4×4×4Õ4ˆ|×4×4×4×4×4Õ4ˆu×4×4×4Ñ4ˆu×4×4Õ4ˆ|×4×4Ó4˜q×4×4×4×4×4×4×4Ò4 Z°1×4×4×4×4×4Õ4 U×4×4×4Ñ4 U×4×4Õ4 Z×4×4Ó4°1×4×4×4×4×4×4×4×4×4×4×4×4×4×4Ø�j‰j˜‰mˆÙ;ˆs�y‰yÐ;˜FÐ;˜FÑ"×; s§|¡|Ð;°tÐ;°tÐ';×;×;×;Õ;ˆy×;×;×;×;×;Õ;ˆs×;×;×;Ñ;ˆs×;×;Õ;ˆy×;×;Ó;˜F×;×;×;×;×;×;×;Ò; |×;×;×;×;×;Õ; s×;×;×;Ñ; s×;×;Õ; |×;×;Ó;°t×;×;×;×;×;×;×;×;×;×;×;×;×;×;Ð;ò 	.ùs   ƒ>S,ÁS)ÁR(S,r|   )rz   r…   s    @r%   Ú;test_a_question_that_fails_becomes_a_row_carrying_its_errorr“   9   s   ø€ ò1õ
<ô ‡K‚K‘“Õr'   c                  ó‚   ^^^•  " S S[         5      mSS0mUU4S jmUU4S jn [        R                  " U " 5       5        g )Nc                   ó   • \ rS rSrSrSrg)Ú7test_retry_on_overload_then_success.<locals>.OverloadedéM   i  r)   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ústatus_codeÚ__static_attributes__r)   r'   r%   Ú
Overloadedr–   M   s   † Ø‹r'   rž   Únr   c              “   ór   >#   • TS==   S-  ss'   TS   S:X  a  T" S5      e[        X5      I S h  v•N $  N7f)NrŸ   rG   Ú
overloaded)r5   )r*   r4   rž   Úcallss     €€r%   Úonce_overloadedÚ<test_retry_on_overload_then_success.<locals>.once_overloadedR   s:   øé € Øˆc‹
�a‰‹
Ø�‰:˜‹?Ù˜\Ó*Ð*Ü˜hÓ0×0Ð0Ñ0ùs   ƒ-7°5±7c               “   óF  >#   • [        5       n SS KJs  Jn  UR                  nSUl         U R                  SS/S[        T5      n[        XR                  5      I S h  v•N   X!l        U R                  UR                  5      nS oTULof(       d¥  [        R                  " SU4SXE4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 =peUR$                  nSo–U	:H  oª(       dº  [        R                  " SU
4SXi4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©TS   nSo¬U
:H  oU(       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=pZg  GN6! X!l        f = f7f)Nr   g{®Gáz„?rG   Úqr‰   rY   r[   r\   rV   rW   rX   r   )z.%(py2)s
{%(py2)s = %(py0)s.failed
} == %(py5)s)r
   r   rX   zassert %(py7)sr   rŸ   rD   r]   r^   r_   r   )r   Úquber.playground.batchÚ
playgroundÚbatchÚFIRST_RETRY_DELAYrg   r+   rA   r=   r;   r   r   r   r   r   r   r   r   rT   )r>   Úbatch_moduleÚoriginalrL   r\   r   r    rr   rs   r   r!   r#   rm   ru   r   r¢   r£   s                  €€r%   rz   Ú0test_retry_on_overload_then_success.<locals>.runX   s�  øé € Ü“ˆç5Ð5à×1Ñ1ˆØ)-ˆÔ&ð	6Ø—L‘L  S E¨6´9¸oÓNˆEÜ˜F§L¡LÓ1×1Ð1à-5Ô*Ø—
‘
˜5Ÿ<™<Ó(ˆØ Ð ˜DÐ × × × Ò ˆu× × × × × Õ ˆu× × × Ñ ˆu× × Õ ˜D× × × × × × Ñ Ø�|‰|Ð ˜qÐ ˜qÑ × × × Ò ˆ|× × × × × Õ ˆu× × × Ñ ˆu× × Õ ˆ|× × Ó ˜q× × × × × × Ó Ø�S‰zÐ˜QÐ˜Q‰×××Òˆz××Ôˆz××Ó˜Q××××××Ôò 2øà-5Õ*üs/   ƒ'J!«2J ÁJÁJ Á"H1J!ÊJ ÊJÊJ!)Ú	Exceptionr}   rz   )rz   rž   r¢   r£   s    @@@r%   Ú#test_retry_on_overload_then_successr¯   L   s4   ú€ ô”Yô ð �!ˆH€Eö1öô" ‡K‚K‘“Õr'   c                  ó`   ^^• SS0mU4S jmUU4S jn [         R                  " U " 5       5        g )NrŸ   r   c              “   ó<   >#   • TS==   S-  ss'   [        S5      e7f)NrŸ   rG   zschema mismatch)Ú
ValueError)r*   r4   r¢   s     €r%   Ú
always_badÚ=test_a_non_retryable_error_is_not_retried.<locals>.always_bado   s   øé € Øˆc‹
�a‰‹
ÜÐ*Ó+Ð+ùs   ƒc               “   óV  >#   • [        5       n U R                  SS/S[        T5      n[        XR                  5      I S h  v•N   TS   n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 R                  UR                  5      n/ nS o—U	Lo3o#(       a  UR                  n
SoºU:H  oÌnU(       GdŠ  [
        R                  " S
U4SXy45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U	5      S.-  nSSU0-  oèR                  U5        U(       a­  [
        R                  " SW4SW
W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UR                  U5        [
        R                   " US5      0 -  nSSU0-  n[        [
        R                  " U5      5      eS =n=n=n=n	=n
=pËg  GNf7f)NrG   r¦   r‰   rŸ   r   r]   r^   r_   r   rY   r`   r\   rb   rc   r   )z1%(py11)s
{%(py11)s = %(py9)s.failed
} == %(py14)s)r   rO   Úpy14ú%(py16)srQ   r   úassert %(py19)sÚpy19)r   rg   r+   rA   r=   r   r   r   r   r   r;   rT   r   r   r   ri   rj   )r>   rL   rm   r!   r   ru   r   r\   r    r   Ú@py_assert10Ú@py_assert13rn   rs   r#   rp   rq   Ú@py_format18r�   r³   r¢   s                      €€r%   rz   Ú6test_a_non_retryable_error_is_not_retried.<locals>.runs   sv  øé € Ü“ˆØ—‘˜Q   v¬y¸*ÓEˆÜ˜§¡Ó-×-Ð-Ø�S‰zÐ˜QÐ˜Q‰×××Òˆz××Ôˆz××Ó˜Q××××××ÓØ—
‘
˜5Ÿ<™<Ó(ˆÙ6˜DÐ6˜DÐ ×6 U§\¡\Ð6°QÐ6°QÑ%6×6×6×6Õ6ˆu×6×6×6×6×6Õ6ˆu×6×6×6Ñ6ˆu×6×6Õ6˜D×6×6×6×6×6×6×6Ò6 \°Q×6×6×6×6×6Õ6 U×6×6×6Ñ6 U×6×6Õ6 \×6×6Ó6°Q×6×6×6×6×6×6×6×6×6×6×6×6×6Ö6ò 	.ùs   ƒ=J)Á J&ÁI&J)r|   )rz   r³   r¢   s    @@r%   Ú)test_a_non_retryable_error_is_not_retriedr¾   l   s&   ù€ Ø�!ˆH€Eõ,ö7ô ‡K‚K‘“Õr'   c                  ó@   • S n [         R                  " U " 5       5        g )Nc            	   “   ó®  #   • [        SS9n U R                  SS/S[        [        5      nU R                  SS/S[        [        5      nU R                  SS/S[        [        5      nX#4 H   n[	        XR
                  5      I S h  v•N   M"     U R                  oQR
                  oe" U5      nS o‡UL o™(       Gd/  [        R                  " SU	4SXx4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	[        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˜U R                  oSR
                  oe" U5      nS o‡ULo™(       Gd/  [        R                  " SU	4SXx4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[        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  GNÎ7f)NrD   )Úmax_runsrG   r¦   r‰   r‹   )zf%(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py5)s
{%(py5)s = %(py3)s.job_id
})
} is %(py10)sr>   ra   )r
   r   r   rX   r   rd   zassert %(py12)sÚpy12rY   )zj%(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py5)s
{%(py5)s = %(py3)s.job_id
})
} is not %(py10)sÚthird)r   rg   r+   r5   rA   r=   r;   r   r   r   r   r   r   r   r   )r>   ra   ÚsecondrÃ   Úsr    r   r"   rv   Ú@py_assert8Ú@py_format11Ú@py_format13s               r%   rz   Ú?test_eviction_past_the_cap_reports_the_run_as_gone.<locals>.run   sñ  é € Ü aÑ(ˆØ—‘˜Q   v¬y¼(ÓCˆØ—‘˜a # ¨´	¼8ÓDˆØ—‘˜Q   v¬y¼(ÓCˆØ“ˆAÜ˜F§H¡HÓ-×-Ò-ñ !à�z‰zÐ/Ÿ,™,Ð/ˆz˜,Ó'Ð/¨4Ð/¨4Ð/×/×/×/Ó/Ð'×/×/×/×/×/Õ/ˆv×/×/×/Ñ/ˆv×/×/Õ/ˆz×/×/×/×/×/Ô/˜%×/×/×/Ñ/˜%×/×/Õ/˜,×/×/Ó/Ð'×/×/Ó/¨4×/×/×/×/×/×/×/Ø�z‰zÐ3Ÿ,™,Ð3ˆz˜,Ó'Ð3¨tÐ3¨tÐ3×3×3×3Ó3Ð'×3×3×3×3×3Õ3ˆv×3×3×3Ñ3ˆv×3×3Õ3ˆz×3×3×3×3×3Ô3˜%×3×3×3Ñ3˜%×3×3Õ3˜,×3×3Ó3Ð'×3×3Ó3¨t×3×3×3×3×3×3×3Ð3ò .ùs   ‚BMÂMÂKMr|   r~   s    r%   Ú2test_eviction_past_the_cap_reports_the_run_as_gonerÊ   ~   s   € ò4ô ‡K‚K‘“Õr'   c                  ó@   • S n [         R                  " U " 5       5        g )Nc               “   óò  #   • [        SS9n U R                  SSS/S[        [        5      n/ nU R	                  UR
                  5        S h  v•N nUS   S:X  a  UR                  U5        US   S:X  d  M.    U Vs/ s H  oDS	   PM	     nnS
S/oeU:H  ow(       do  [        R                  " SU4SXV45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=pv/ o¢S
   S   nSo·U:H  oÌo\(       a  US
   S   nSoíUL oÿnU(       Gd
  [        R                  " SU4SX{45      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  nU
R                  U5        U(       ab  [        R                  " SW4SWW45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  nU
R                  U5        [        R                  " U
S
5      0 -  nSSU0-  n[        [        R                  " U5      5      eS =n=n
=n=n=n=n=pþUS
   S   S   nSoeU:H  ow(       do  [        R                  " SU4SXV45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=pvUS
   S   S    S!   nSoeU:H  ow(       do  [        R                  " SU4SXV45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=pvg  GN 
 GNûs  snf 7f)"NrG   rE   rH   rI   r‰   r8   Úrowr9   Úindexr   r   r]   r^   r_   r   rS   rD   rˆ   T)z%(py3)s == %(py6)s)r   r   z%(py8)sr   r‹   )z%(py11)s is %(py14)s)rO   r¶   r·   rQ   r¸   r¹   r*   rl   r1   )r   rg   r+   r5   r:   r=   ri   r   r   r   r   r   rj   )r>   rL   rk   r<   Úerm   r!   r   ru   r   r    r   r   rº   r»   rn   r   rp   rq   r¼   r�   s                        r%   rz   ÚAtest_row_events_carry_index_total_and_the_row_itself.<locals>.run�   sC  é € Ü¨Ñ+ˆØ—‘˜Q  t ¨f´iÄÓJˆØˆØ!Ÿ=™=¨¯©Ô6÷ 	�%Ø�V‰} Ó%Ø—‘˜EÔ"Ø�V‰} Õ&ØÙ$(Ó)¢D˜q�'”
¡DÐ3Ð)¨a°¨VÐ3¨VÑ3×3×3×3Ò3Ð)×3×3Ô3Ð)×3×3Ó3¨V×3×3×3×3×3×3Ó3Ù>�A‰w�wÑÐ> 1Ð> 1Ñ$×>¨¨a©°©Ð>¸$Ð>¸$Ð)>×>×>×>Õ>Ð×>×>Ô>Ð×>×>Ó> 1×>×>×>×>×>×>×>Ó>¨¸$×>×>Ô>¨×>×>Ó>¸$×>×>×>×>×>×>×>×>×>×>×>×>×>×>Ø�A‰w�u‰~˜jÑ)Ð1¨TÐ1¨TÑ1×1×1×1Ò1Ð)×1×1Ô1Ð)×1×1Ó1¨T×1×1×1×1×1×1Ó1Ø�A‰w�u‰~˜jÑ)¨(Ñ3Ð;°tÐ;°tÑ;×;×;×;Ò;Ð3×;×;Ô;Ð3×;×;Ó;°t×;×;×;×;×;×;Ô;ò	Ò6ùò
 *ùsC   ‚AM7ÁM/ÁM,ÁM/Á"M7Á6M7Á;M2Â	K#M7Í,M/Í/M7Í2M7r|   r~   s    r%   Ú4test_row_events_carry_index_total_and_the_row_itselfrÑ   Œ   s   € ò<ô ‡K‚K‘“Õr'   c                  ó@   • S n [         R                  " U " 5       5        g )Nc               “   óz  #   • [        5       n U R                  SS/S[        [        5      n[	        XR
                  5      I S h  v•N   U R                  UR
                  5       Vs/ s S h  v•N o"PM   N/ N	
 Os  snf nnSSSS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 7f)NrG   r¦   r‰   r9   r   rR   r   rU   r:   rV   rW   rX   )r   rg   r+   r5   rA   r=   r:   r   r   r   r   r   r   r   r   )r>   rL   rÏ   r:   r   r    rr   rs   s           r%   rz   ÚGtest_subscribing_to_a_finished_run_yields_done_immediately.<locals>.runŸ   sÊ   é € Ü“ˆØ—‘˜Q   v¬y¼(ÓCˆÜ˜§¡Ó-×-Ð-Ø#)§=¡=°·±Ô#>×?Ó?˜a’!ñ 	.Û?ùÒ?ˆÐ?Ø#)°A¸qÈAÑNÐOÐOÐOÑO×O×O×OÒOˆv×O×O×O×O×OÕOˆv×O×O×OÑOˆv×O×OÕOÐO×O×O×O×O×O×OÒOùsI   ‚AD;ÁA3Á!D;Á%A9Á'A7Á+A5
Á,A7Á/A9Á3D;Á5A7Á7A9Á8CD;r|   r~   s    r%   Ú:test_subscribing_to_a_finished_run_yields_done_immediatelyrÕ   ž   s   € òPô ‡K‚K‘“Õr'   c                  ó¼   • [        5       n [        R                  " [        5         U R	                  SS/S[
        [        5        S S S 5        g ! , (       d  f       g = f)NrG   r¦   r‰   )r   ÚpytestÚraisesr„   rg   r+   r5   )r>   s    r%   Ú#test_starting_outside_a_loop_raisesrÙ   ©   s7   € Ü‹]€FÜ	�Š”|Õ	$Ø�‰�Q˜˜˜v¤y´(Ô;÷ 
%×	$Ö	$ús   ¥AÁ
Ac                  ó@   • S n [         R                  " U " 5       5        g )Nc               “   óø  #   • [        5       n U R                  SS/S[        [        5      n[	        XR
                  5      I S h  v•N   U R                  nSo2" U5      oD(       + oU(       d¯  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[        [        R                  " U5      5      eS =n=n=pEU R                  nSo2" U5      oD(       + oU(       d¯  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[        [        R                  " U5      5      eS =n=n=pEg  GN´7f)NrG   r¦   r‰   zQassert not %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.running_for
}(%(py4)s)
}r>   )r
   r   r   r   rD   )r   rg   r+   r5   rA   r=   Úrunning_forr   r   r   r   r   r   r   )r>   rL   r    r!   r   Ú@py_assert7r#   s          r%   rz   ÚKtest_running_for_reports_only_in_flight_runs_for_that_document.<locals>.run°   s3  é € Ü“ˆØ—‘˜Q   v¬y¼(ÓCˆÜ˜§¡Ó-×-Ð-Ø×%Ñ%Ð( aÐ(Ð% aÓ(Ð(Ô(Ð(Õ(×(×(×(×(×(Ñ(�6×(×(×(Ñ(�6×(×(Õ(Ð%×(×(Ó( a×(×(Ó(Ð(×(×(×(×(×(Ö(Ø×%Ñ%Ð( aÐ(Ð% aÓ(Ð(Ô(Ð(Õ(×(×(×(×(×(Ñ(�6×(×(×(Ñ(�6×(×(Õ(Ð%×(×(Ó( a×(×(Ó(Ð(×(×(×(×(×(×(ò 	.ùs   ‚AG:ÁG7ÁF4G:r|   r~   s    r%   Ú>test_running_for_reports_only_in_flight_runs_for_that_documentrß   ¯   s   € ò)ô ‡K‚K‘“Õr'   )Ú__doc__Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r}   r×   r§   r   r   r&   r+   r5   rA   r   r“   r¯   r¾   rÊ   rÑ   rÕ   rÙ   rß   r)   r'   r%   Ú<module>rå      s\   ðñ?÷
 „ ƒã ç ?ò*òò^òòò"ò&ò@ò$òò$ò<ór'   