§
    	Êj  ã                  ót  — d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
Z
ddlZddlmZ ddlmZ ddlmZmZ  G d„ d¦  «        Zej        d)d„¦   «         Z edddi¬¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ de¦  «        Z ej        d„ ¦   «         Z!d„ Z"dddd œZ#d!d"d#g d$œZ$d%„ Z%d&„ Z&d'„ Z'd(„ Z(dS )*zDTab pool of the browser driver, with Chromium replaced by fake tabs.é    )ÚannotationsN)ÚAccount)ÚSettings)ÚBrowserDriverÚ_Tabc                  ó   — e Zd ZdZdd„ZdS )Ú_FakeSessionFÚreturnÚNonec              ƒ  ó   K  — d| _         d S )NT)Úclosed)Úselfs    ú/C:\Projects\Muse2API\tests\test_browser_tabs.pyÚclosez_FakeSession.close   s   è è € ØˆŒˆˆó    N)r
   r   )Ú__name__Ú
__module__Ú__qualname__r   r   © r   r   r	   r	      s-   € € € € € Ø€Fðð ð ð ð ð r   r	   r
   r   c                ó¦   ‡— t          t          d | d¬¦  «        ¦  «        }t          j        ¦   «         Šd	ˆfd„}|                     |d|¦  «         |S )
Né   )Ú	_env_fileÚdata_dirÚaccount_max_concurrencyÚaccountr   r
   r   c              “  ón   •K  — t          | j        ddt          ‰¦  «        › �t          ¦   «         ¦  «        S )NÚctxÚt)r   ÚidÚnextr	   )r   Úidss    €r   Ú	fake_openzdriver.<locals>.fake_open   s-   øè è € Ý�G”J  ­4°©9¬9  ½¹¼ÑGÔGÐGr   Ú	_open_tab)r   r   r
   r   )r   r   Ú	itertoolsÚcountÚsetattr)Útmp_pathÚmonkeypatchÚdrvr"   r!   s       @r   Údriverr*      sp   ø€ å
�¨4¸(Ð\]Ð^Ñ^Ô^Ñ
_Ô
_€CÝ
Œ/Ñ
Ô
€CðHð Hð Hð Hð Hð Hð ×Ò˜˜[¨)Ñ4Ô4Ð4Ø€Jr   Úa0Ú
hatch_sessÚx)r   Úcookiesc              ƒ  ó¼  K  — |                       t          ¦  «        ƒ d {V —†}|                       t          ¦  «        ƒ d {V —†}g }||u}|}|r|j        }|}|r	|j        }|}|�sÒt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }	| 	                    |	¦  «         |rÚddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }
| 	                    |
¦  «         |rld
dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }| 	                    |¦  «         t          j
        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}|                      ¦   «         ƒ d {V —†d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}d S )N©úis not)z%(py2)s is not %(py4)sÚt1Út2)Úpy2Úpy4z%(py6)sÚpy6z#%(py10)s
{%(py10)s = %(py8)s.busy
})Úpy8Úpy10z$%(py14)s
{%(py14)s = %(py12)s.busy
})Úpy12Úpy14r   zassert %(py17)sÚpy17Útabsr   ©ú==©z%(py1)s == %(py4)s©Úpy1r5   úassert %(py6)s)Ú	_checkoutÚACCÚbusyÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚappendÚ_format_boolopÚAssertionErrorÚ_format_explanationÚhealth)r*   r2   r3   Ú@py_assert1Ú@py_assert3Ú@py_assert0Ú@py_assert9Ú@py_assert13Ú@py_format5Ú@py_format7Ú@py_format11Ú@py_format15Ú@py_format16Ú@py_format18Ú@py_assert2s                  r   Ú)test_parallel_checkouts_get_separate_tabsr]   %   sf  è è € Ø×Ò¥Ñ$Ô$Ð	$Ð	$Ð	$Ð	$Ð	$Ð	$€BØ×Ò¥Ñ$Ô$Ð	$Ð	$Ð	$Ð	$Ð	$Ð	$€BØ/Ð/ˆ2�Rˆ<Ð/Ð/Ð/Ð/Ð/˜BœGÐ/˜GÐ/˜GÐ/¨¬Ð/¨Ð/Ð/Ñ/Õ/Ô/Ð/Ð/Ð/Ð/ˆ2�RÐ/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆ2Ñ/Ô/Ð/Õ/Ô/ˆ2Ñ/Ô/Ð/Ð/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�RÑ/Ô/Ð/Õ/Ô/�RÑ/Ô/Ð/Ð/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Ð/×/Ò/Ð/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/˜BÑ/Ô/Ð/Õ/Ô/˜BÑ/Ô/Ð/Ð/Õ/Ô/˜GÑ/Ô/Ð/Ð/Ñ/Ð/Ð/×/Ò/Ð/Ñ/Ô/Ð/˜GÐ/Ð/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/¨Ñ/Ô/Ð/Õ/Ô/¨Ñ/Ô/Ð/Ð/Õ/Ô/¨Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/×/Ò/Ð/Ñ/Ô/Ð/Õ/Ô/Ð/Ð/Ñ/Ô/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø—-’-‘/”/Ð!Ð!Ð!Ð!Ð!Ð! 6Ô*Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð*¨aÐ/Ñ/Ô/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r   c              ƒ  ó  K  — |                       t          ¦  «        ƒ d {V —†}|                       t          ¦  «        ƒ d {V —† t          j        |                       t          ¦  «        ¦  «        }t          j        d¦  «        ƒ d {V —† |j        } |¦   «         }| }|s‹ddt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                      |¦  «        ƒ d {V —† t          j        |d¦  «        ƒ d {V —†}||u }|s—t          j        d|fd||f¦  «        t          j
        |¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndd	œz  }	d
d|	iz  }t          t          j        |¦  «        ¦  «        ‚d x}}d S )Ng{®Gáz„?úCassert not %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.done
}()
}Úthird©Úpy0r4   r5   é   ©Úis©z%(py1)s is %(py3)sr2   ©rA   Úpy3úassert %(py5)sÚpy5)rC   rD   ÚasyncioÚcreate_taskÚsleepÚdonerH   rI   rF   rJ   rK   rN   rO   Ú_checkinÚwait_forrG   )
r*   r2   r`   rQ   rR   Ú@py_assert5Ú@py_format6rS   r\   Ú@py_format4s
             r   Ú.test_checkout_waits_at_the_limit_until_checkinrt   ,   sR  è è € Ø×Ò¥Ñ$Ô$Ð	$Ð	$Ð	$Ð	$Ð	$Ð	$€BØ
×
Ò
�3Ñ
Ô
ÐÐÐÐÐÐÐÝÔ × 0Ò 0µÑ 5Ô 5Ñ6Ô6€EÝ
Œ-˜Ñ
Ô
ÐÐÐÐÐÐÐØŒzÐˆzˆz‰|Œ|Ðˆ|ÐÐÐÐÐÐÕÔÑÔÐÐÕÔˆuÑÔÐÕÔˆuÑÔÐÐÕÔˆzÑÔÕÔˆ|ÑÔÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ
�/Š/˜"Ñ
Ô
ÐÐÐÐÐÐÐÝÔ! %¨Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð1Ð+¨rÐ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð+¨rÐ1Ñ1Ô1Õ1Ô1Ð+Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1¨rÑ1Ô1Ð1Õ1Ô1¨rÑ1Ô1Ð1Ð1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1r   c              ƒ  ój  K  — |                       t          ¦  «        ƒ d {V —†}dg|_        |                      |¦  «        ƒ d {V —† |                       t          d„ ¬¦  «        ƒ d {V —†}||u}|sÂt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }d	d
|iz  }t          t	          j        |¦  «        ¦  «        ‚d }d S )N©ÚuserÚhic                ó   — | j          S ©N©Ú	has_state©r   s    r   ú<lambda>zFtest_media_opens_a_new_tab_rather_than_wiping_a_chat.<locals>.<lambda>:   s
   € ¸Q¼[¸€ r   ©Úpreferr0   ©z%(py0)s is not %(py2)sÚmediaÚchat©rb   r4   úassert %(py4)sr5   ©rC   rD   Úturnsro   rF   rG   rH   rI   rJ   rK   rN   rO   )r*   rƒ   r‚   rQ   Ú@py_format3rV   s         r   Ú4test_media_opens_a_new_tab_rather_than_wiping_a_chatr‰   6   sp  è è € Ø×!Ò!¥#Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&€DØ Ð!€D„JØ
�/Š/˜$Ñ
Ô
ÐÐÐÐÐÐÐØ×"Ò"¥3Ð/HÐ/HÐ"ÑIÔIÐIÐIÐIÐIÐIÐI€EØ˜ÐÐÐÐÕÔÐÐÐÐˆ5˜ÐÑÔÐÕÔÑÔÐÐÕÔˆ5ÑÔÐÕÔˆ5ÑÔÐÐÐÕÔÑÔÐÐÕÔ˜ÑÔÐÕÔ˜ÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐr   c              ƒ  óà  K  — |                       t          ¦  «        ƒ d {V —†}|                       t          ¦  «        ƒ d {V —†}dg|_        |                      |¦  «        ƒ d {V —† |                       t          d„ ¬¦  «        ƒ d {V —†}||u }|sÂt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }d	d
|iz  }t          t	          j        |¦  «        ¦  «        ‚d }|                      |¦  «        ƒ d {V —† d S )Nrv   c                ó   — | j          S rz   r{   r}   s    r   r~   z8test_at_the_limit_a_chat_tab_is_reused.<locals>.<lambda>C   s
   € ¸1¼;°€ r   r   rd   ©z%(py0)s is %(py2)sÚgotÚar„   r…   r5   r†   ©r*   rŽ   Úbr�   rQ   rˆ   rV   s          r   Ú&test_at_the_limit_a_chat_tab_is_reusedr‘   >   ss  è è € Ø×Ò�sÑ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#€AØ×Ò�sÑ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#€AØÐ€A„GØ
�/Š/˜!Ñ
Ô
ÐÐÐÐÐÐÐØ× Ò ¥Ð-FÐ-FÐ ÑGÔGÐ
GÐ
GÐ
GÐ
GÐ
GÐ
G€CØ�!ˆ8€O€O€O…O„O€O€O€O€Oˆ3�!€O�O„O€O…O„O�O„O€O€O…O„Oˆ3�O„O€O…O„Oˆ3�O„O€O€O€O…O„O�O„O€O€O…O„O�!�O„O€O…O„O�!�O„O€O€O€O€O�O€O€O€O€O€O�O€O…O…O„O€O�O„O�O„O€O€O€OØ
�/Š/˜!Ñ
Ô
ÐÐÐÐÐÐÐÐÐr   c              ƒ  óð  K  — |                       t          ¦  «        ƒ d {V —†}|                       t          ¦  «        ƒ d {V —†}ddgc|_        |_        |                      |¦  «        ƒ d {V —† |                      |¦  «        ƒ d {V —† |                       t          d„ ¬¦  «        ƒ d {V —†}||u }|sÂt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nddt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndd	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d }d S )Núuser-1rv   c                ó&   — | j         o
| j        dk    S )Nr“   )r|   Úhintr}   s    r   r~   zDtest_chat_prefers_the_tab_holding_its_conversation.<locals>.<lambda>N   s   € °q´{Ð7YÀqÄvÐQYÒGY€ r   r   rd   rŒ   r�   r�   r„   r…   r5   )rC   rD   r•   r‡   ro   rF   rG   rH   rI   rJ   rK   rN   rO   r�   s          r   Ú2test_chat_prefers_the_tab_holding_its_conversationr–   H   sy  è è € Ø×Ò�sÑ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#€AØ×Ò�sÑ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#€AØ Ð 0€O€A„FˆAŒGØ
�/Š/˜!Ñ
Ô
ÐÐÐÐÐÐÐØ
�/Š/˜!Ñ
Ô
ÐÐÐÐÐÐÐØ× Ò ¥Ð-YÐ-YÐ ÑZÔZÐ
ZÐ
ZÐ
ZÐ
ZÐ
ZÐ
Z€CØ�!ˆ8€O€O€O…O„O€O€O€O€Oˆ3�!€O�O„O€O…O„O�O„O€O€O…O„Oˆ3�O„O€O…O„Oˆ3�O„O€O€O€O…O„O�O„O€O€O…O„O�!�O„O€O…O„O�!�O„O€O€O€O€O�O€O€O€O€O€O�O€O…O…O„O€O�O„O�O„O€O€O€O€O€Or   c              ƒ  ó  K  — |                       t          ¦  «        ƒ d {V —†}d|_        |                      |¦  «        ƒ d {V —† |j        }|j        }|s‹ddt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}}|                      ¦   «         ƒ d {V —†d         }d}||k    }|slt          j        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NTzGassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.session
}.closed
}Útabra   r<   r   r=   r?   r@   rB   r6   )rC   rD   Ústalero   Úsessionr   rH   rI   rF   rJ   rK   rN   rO   rP   rG   )r*   r˜   rQ   rR   rV   rS   r\   rW   s           r   Ú test_stale_tab_closes_on_checkinr›   R   sÂ  è è € Ø× Ò ¥Ñ%Ô%Ð
%Ð
%Ð
%Ð
%Ð
%Ð
%€CØ€C„IØ
�/Š/˜#Ñ
Ô
ÐÐÐÐÐÐÐØŒ;Ðˆ;ÔÐÐÐÐÐÕÔÑÔÐÐÕÔˆ3ÑÔÐÕÔˆ3ÑÔÐÐÕÔˆ;ÑÔÕÔÐÑÔÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ—-’-‘/”/Ð!Ð!Ð!Ð!Ð!Ð! 6Ô*Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð*¨aÐ/Ñ/Ô/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r   c              ƒ  ó0  K  — | j         }d„ }|                     | d|¦  «         t          j        t          ¦  «        5  |                      t          ¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |                     | d|¦  «         |                      t          ¦  «        ƒ d {V —†}|                      t          ¦  «        ƒ d {V —†}||u}|sÂt          j        d|fd||f¦  «        dt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d }d S )
Nc              “  ó$   K  — t          d¦  «        ‚)Nzchromium went away)ÚRuntimeError)r   s    r   Úbrokenz2test_failed_open_releases_its_slot.<locals>.broken]   s   è è € ÝÐ/Ñ0Ô0Ð0r   r#   r0   r�   rŽ   r�   r„   r…   r5   )r#   r&   ÚpytestÚraisesrž   rC   rD   rF   rG   rH   rI   rJ   rK   rN   rO   )	r*   r(   Úok_openrŸ   rŽ   r�   rQ   rˆ   rV   s	            r   Ú"test_failed_open_releases_its_slotr£   Z   s  è è € ØÔ€Gð1ð 1ð 1ð ×Ò˜ ¨VÑ4Ô4Ð4Ý	Œ•|Ñ	$Ô	$ð $ð $Ø×Ò�sÑ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $à×Ò˜ ¨WÑ5Ô5Ð5Ø×Ò�sÑ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#€AØ×Ò�sÑ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#€AØ�Aˆ:ÐÐÐÕÔÐÐÐÐˆ1�AÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÐÕÔÑÔÐÐÕÔ�AÑÔÐÕÔ�AÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐs   ½!A*Á*A.Á1A.c              ƒ  ó˜  ‡‡K  — |                       t          ¦  «        ƒ d {V —†}g Š| j        Šˆˆfd„}|                     | d|¦  «         d|_        |                      |¦  «        ƒ d {V —† |                      |¦  «        ƒ d {V —† |g}‰|k    }|s—t          j        d|fd‰|f¦  «        dt          j
        ¦   «         v st          j        ‰¦  «        rt          j        ‰¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}|                      ¦   «         ƒ d {V —†d
         }d}	||	k    }|slt          j        d|fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}	d S )Nc              “  óX   •K  — ‰                      | ¦  «          ‰| ¦  «        ƒ d {V —† d S rz   )rL   )r   ÚcallsÚoriginals    €€r   Úcountingz5test_close_then_checkin_closes_once.<locals>.countingn   s<   øè è € Ø�Š�Q‰ŒˆØˆh�q‰kŒkÐÐÐÐÐÐÐÐÐr   Ú_dispose_tabTr=   )z%(py0)s == %(py3)sr¦   )rb   rh   ri   rj   r<   r   r?   r@   rB   r6   )rC   rD   r©   r&   r™   Ú
_close_tabro   rF   rG   rH   rI   rJ   rK   rN   rO   rP   )r*   r(   r˜   r¨   r\   rQ   rs   rr   rS   rR   rV   rW   r¦   r§   s               @@r   Ú#test_close_then_checkin_closes_oncer«   i   sO  øøè è € Ø× Ò ¥Ñ%Ô%Ð
%Ð
%Ð
%Ð
%Ð
%Ð
%€CØ€EØÔ"€Hðð ð ð ð ð ð ×Ò˜ °Ñ9Ô9Ð9Ø€C„IØ
×
Ò
˜CÑ
 Ô
 Ð Ð Ð Ð Ð Ð Ð Ø
�/Š/˜#Ñ
Ô
ÐÐÐÐÐÐÐØ�EÐˆ5�EŠ>ÐÐÐÕÔÐÐÐÐˆ5�EÐÑÔÐÕÔÑÔÐÐÕÔˆ5ÑÔÐÕÔˆ5ÑÔÐÐÕÔ�EÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ—-’-‘/”/Ð!Ð!Ð!Ð!Ð!Ð! 6Ô*Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð*¨aÐ/Ñ/Ô/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r   c              ƒ  ó˜  K  — |                       t          ¦  «        ƒ d {V —†}| j                             ¦   «         ƒ d {V —† t	          j        |                      |¦  «        ¦  «        }t	          j        d¦  «        ƒ d {V —† |                     ¦   «          | j         	                    ¦   «          t          j        t          j        ¦  «        5  |ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |j        }| }|sxddt          j        ¦   «         v st!          j        |¦  «        rt!          j        |¦  «        ndt!          j        |¦  «        dœz  }t'          t!          j        |¦  «        ¦  «        ‚d x}}t	          j        |                       t          ¦  «        d¦  «        ƒ d {V —†}||u }|s—t!          j        d|fd||f¦  «        t!          j        |¦  «        dt          j        ¦   «         v st!          j        |¦  «        rt!          j        |¦  «        nddœz  }d	d
|iz  }t'          t!          j        |¦  «        ¦  «        ‚d x}}d S )Nr   z,assert not %(py2)s
{%(py2)s = %(py0)s.busy
}r˜   r„   rc   rd   rf   rg   ri   rj   )rC   rD   Ú	_tab_condÚacquirerk   rl   ro   rm   ÚcancelÚreleaser    r¡   ÚCancelledErrorrE   rH   rI   rF   rJ   rK   rN   rO   rp   rG   )	r*   r˜   ÚtaskrQ   rR   rs   rS   r\   rr   s	            r   Ú*test_cancelled_checkin_still_frees_the_tabr³   z   sµ  è è € Ø× Ò ¥Ñ%Ô%Ð
%Ð
%Ð
%Ð
%Ð
%Ð
%€CØ
Ô
×
"Ò
"Ñ
$Ô
$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ÝÔ˜vŸš¨sÑ3Ô3Ñ4Ô4€DÝ
Œ-˜Ñ
Ô
ÐÐÐÐÐÐÐØ‡K‚K�M„M€MØ
Ô×ÒÑÔÐÝ	Œ•wÔ-Ñ	.Ô	.ð ð Øˆ
ˆ
ˆ
ˆ
ˆ
ˆ
ˆ
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð àŒxÐˆxˆ<Ðˆ<ÐÐÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔˆxÑÔÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÝÔ! &×"2Ò"2µ3Ñ"7Ô"7¸Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;ÐBÐ;¸sÐBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ;¸sÐBÑBÔBÕBÔBÐ;ÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔB¸sÑBÔBÐBÕBÔ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ÐBs   Ã	C#Ã#C'Ã*C'c                  ó    — e Zd ZdZd	d„Zd„ ZdS )
Ú_ScriptedSessionzKReturns the scripted CHAT_STATE snapshots in order, repeating the last one.Ústatesú
list[dict]r
   r   c                ó   — || _         d S rz   ©r¶   )r   r¶   s     r   Ú__init__z_ScriptedSession.__init__Œ   s   € ØˆŒˆˆr   c              ‹  óª   K  — ddl m} ||j        k    r?t          | j        ¦  «        dk    r| j                             d¦  «        n| j        d         S i S )Nr   )Údomrc   )Úmuse2api.drivers.browserr¼   Ú
CHAT_STATEÚlenr¶   Úpop)r   ÚexprÚ_r¼   s       r   Úevaluatez_ScriptedSession.evaluate�   s]   è è € Ø0Ð0Ð0Ð0Ð0Ð0à�3”>Ò!Ð!Ý),¨T¬[Ñ)9Ô)9¸AÒ)=Ð)=�4”;—?’? 1Ñ%Ô%Ð%À4Ä;ÈqÄ>ÐQØˆ	r   N)r¶   r·   r
   r   )r   r   r   Ú__doc__rº   rÃ   r   r   r   rµ   rµ   ‰   s=   € € € € € ØUÐUðð ð ð ðð ð ð ð r   rµ   c                ó´   ‡— dd l mc mc m} t          j        Š|                      |j        dˆfd„¦  «         |                      t          ddddœ¦  «         d S )Nr   rm   c                ó   •—  ‰d¦  «        S )Nr   r   )ÚsÚ
real_sleeps    €r   r~   zfast.<locals>.<lambda>œ   s   ø€ ¸
¸
À1¹¼€ r   Ú_MEDIA_GRACEg        )ÚimageÚvideo)Úmuse2api.drivers.browser.driverÚdriversÚbrowserr*   rk   rm   r&   r   )r(   ÚmodrÈ   s     @r   ÚfastrÐ   —   sx   ø€ à1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1å”€JØ×Ò˜œ WÐ.EÐ.EÐ.EÐ.EÑFÔFÐFØ×Ò� ~ÀÈsÐ7SÐ7SÑTÔTÐTÐTÐTr   c                ó@   — t          dddt          | ¦  «        ¦  «        S )Nr+   r   r   )r   rµ   r¹   s    r   Ú
_media_tabrÒ       s   € Ý��e˜SÕ"2°6Ñ":Ô":Ñ;Ô;Ð;r   z$hatch-chat-attachment-presentation-1rÊ   zblob:x)ÚtidÚkindÚsrcrc   u   Done â€” the sheet passed QC.F©Ú
agentCountÚlastTextÚ
generatingÚattachmentsc              ƒ  ó,  ‡K  — g Šˆfd„}|                      | d|¦  «         t          i t          ¥ddi¥t          t          g¦  «        }|                      |dg dœddd d ¦  «        ƒ d {V —†}|t          k    }|sÑt          j        d|fd	|t          f¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d }g }t          ‰¦  «        }	d}
|	|
k    }|}|rd}‰d         }||v }|}|�sˆt          j        d|fd|	|
f¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nddt          j        ¦   «         v st          j	        ‰¦  «        rt          j
        ‰¦  «        ndt          j
        |	¦  «        t          j
        |
¦  «        dœz  }dd|iz  }|                     |¦  «         |r`t          j        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}	x}x}
x}x}}d S )Nc              “  ó~   •K  — ‰                      |¦  «         i t          ¥dt          gdœ¥g| j        j        d d …<   d S )Nr   ©r×   rÚ   )rL   ÚDONEÚIMGrš   r¶   ©r˜   ÚtextÚsents     €r   Úsendz9test_text_only_reply_asks_for_the_file_once.<locals>.send¬   sI   øè è € Ø�Š�DÑÔÐØ!P¥DÐ!P¸Í3È%Ð!PÐ!PÐ!PÐ QˆŒÔ˜1˜1˜1ÑÐÐr   Ú_sendr×   r   rÝ   rÊ   é   r=   )z%(py0)s == %(py2)sÚattrß   r„   r…   r5   rc   zattach the final image)z0%(py5)s
{%(py5)s = %(py2)s(%(py3)s)
} == %(py8)sr¿   râ   )r4   rh   rj   r7   z%(py10)sr8   )Úin)z%(py13)s in %(py16)s)Úpy13Úpy16z%(py18)sÚpy18zassert %(py21)sÚpy21)r&   rÒ   rÞ   Ú_wait_mediarß   rF   rG   rH   rI   rJ   rK   rN   rO   r¿   rL   rM   )r*   rÐ   r(   rã   r˜   ræ   rQ   rˆ   rV   Ú@py_assert4Ú@py_assert7Ú@py_assert6rS   Ú@py_assert12Ú@py_assert15Ú@py_assert14Ú@py_format9rX   Ú@py_format17Ú@py_format19Ú@py_format20Ú@py_format22râ   s                         @r   Ú+test_text_only_reply_asks_for_the_file_oncerø   ©   s«  øè è € Ø€DðRð Rð Rð Rð Rð ×Ò˜ ¨Ñ.Ô.Ð.Ý
Ð/�Ð/˜|¨QÐ/Ð/µµtÐ<Ñ
=Ô
=€CØ×"Ò" 3°qÈÐ(LÐ(LÈgÐWYÐ[_ÐaeÑfÔfÐ
fÐ
fÐ
fÐ
fÐ
fÐ
f€CØ•#Š:ÐÐÐÕÔÐÐÐÐˆ3•#ÐÑÔÐÕÔÑÔÐÐÕÔˆ3ÑÔÐÕÔˆ3ÑÔÐÐÐÕÔÑÔÐÐÕÔ•#ÑÔÐÕÔ•#ÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐØAÐA�3ˆt‰9Œ9ÐA˜ÐAˆ9˜Š>ÐAÐAÐAÐAÐAÐ6ÐA¸$¸q¼'ÐAÐ6¸'ÐAÐAÐAÐAÐAÑAÕAÔAÐAÐAÐAÐAˆ9˜ÐAÑAÔAÐAÕAÔAÑAÔAÐAÐAÕAÔA�3ÑAÔAÐAÕAÔA�3ÑAÔAÐAÐAÐAÕAÔAÑAÔAÐAÐAÕAÔAˆtÑAÔAÐAÕAÔAˆtÑAÔAÐAÐAÕAÔAˆ9Ñ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Ð6¸'ÐAÑAÔAÕAÔAÐ6Ñ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Ð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           	   ƒ  ó>  ‡K  — ddl m} g Šˆfd„}|                     | d|¦  «         t          t          g¦  «        }t          j        |¦  «        5  |                      |dg dœddd d ¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   t          ‰¦  «        }d}||k    }|sòt          j
        d	|fd
||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        ‰¦  «        rt          j        ‰¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}}d S )Nr   )ÚUpstreamRefusedc              “  ór   •K  — ‰                      |¦  «         i t          ¥dddœ¥g| j        j        d d …<   d S )Nr   zIt's in my workspace.)r×   rØ   )rL   rÞ   rš   r¶   rà   s     €r   rã   z:test_still_text_only_after_asking_is_refused.<locals>.send¼   sH   øè è € Ø�Š�DÑÔÐØ!_¥DÐ!_¸ÐG^Ð!_Ð!_Ð!_Ð `ˆŒÔ˜1˜1˜1ÑÐÐr   rä   rÝ   rÊ   rå   rc   r=   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr¿   râ   )rb   rA   rh   r6   zassert %(py8)sr7   )Úmuse2api.errorsrú   r&   rÒ   rÞ   r    r¡   rì   r¿   rF   rG   rH   rI   rJ   rK   rN   rO   )r*   rÐ   r(   rú   rã   r˜   r\   rq   rí   rW   ró   râ   s              @r   Ú,test_still_text_only_after_asking_is_refusedrý   ·   s6  øè è € Ø/Ð/Ð/Ð/Ð/Ð/à€Dðað að að að að ×Ò˜ ¨Ñ.Ô.Ð.Ý
•d�VÑ
Ô
€CÝ	Œ�Ñ	'Ô	'ð eð eØ× Ò  °QÀrÐ&JÐ&JÈGÐUWÐY]Ð_cÑdÔdÐdÐdÐdÐdÐdÐdÐdðeð eð eñ eô eð eð eð eð eð eð eøøøð eð eð eð eåˆt‰9Œ9Ð˜Ðˆ9˜Š>ÐÐÐÕÔÐÐÐÐˆ9˜ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔˆ9ÑÔÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐs   Á$BÂBÂBc           
   ƒ  óü  K  — dddg dœ}t          |g¦  «        }t          j        |                      |dg dœddd d ¦  «        ¦  «        }t          j        d¦  «        ƒ d {V —† |j        } |¦   «         }| }|s‹d	d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
t          j
        |¦  «        t          j
        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}i |¥ddt          gdœ¥g|j        j        d d …<   t          j        |d¦  «        ƒ d {V —†}	|	t          k    }
|
s¦t          j        d|
fd|	t          f¦  «        t          j
        |	¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	}
d S )Nr   Ú TrÖ   rÝ   rÊ   gš™™™™™©?gš™™™™™¹?r_   r²   ra   Frc   )rÙ   r×   rÚ   r=   )z%(py1)s == %(py3)srß   rg   ri   rj   )rÒ   rk   rl   rì   rm   rn   rH   rI   rF   rJ   rK   rN   rO   rß   rš   r¶   rp   rG   )r*   rÐ   rE   r˜   r²   rQ   rR   rq   rr   rS   r\   rs   s               r   Ú+test_timeout_is_soft_while_still_generatingr   Ç   sK  è è € Ø¨¸4ÐPRÐSÐS€DÝ
�d�VÑ
Ô
€CÝÔØ×Ò˜3¨qÀÐ DÐ DÀgÈtÐUYÐ[_Ñ`Ô`ñbô b€Då
Œ-˜Ñ
Ô
ÐÐÐÐÐÐÐØŒyÐˆyˆy‰{Œ{Ðˆ{ˆ?Ðˆ?ÐÐÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔˆyÑÔÕÔˆ{ÑÔÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØa Ða°EÈÕ\_Ð[`ÐaÐaÐaÐb€C„KÔ�q�q�qÑÝÔ! $¨Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð1Ð*­cÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð*­cÐ1Ñ1Ô1Õ1Ô1Ð*Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1­cÑ1Ô1Ð1Õ1Ô1­cÑ1Ô1Ð1Ð1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1r   c              ƒ  ó@  K  — ddl m} ddddœ}|                      t          |g¦  «        ¦  «        ƒ d {V —†d         }|d         }||k    }|slt	          j        d|fd	||f¦  «        t	          j        |¦  «        t	          j        |¦  «        d
œz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}ddddœ}t          j
        |d¬¦  «        5  |                      t          |g¦  «        ¦  «        ƒ d {V —† d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )ÚUpstreamQuotaErrorz6Earlier: Fixed token limit in the sheet script 2:21 pmzGenerating your imageT)ÚtailrØ   rÙ   r  r=   r?   r@   rB   r6   z1You've reached your usage limit. Try again later.Fzusage limit)Úmatch)rü   r  Ú_staterÒ   rF   rG   rK   rN   rO   r    r¡   )	r*   r  ÚsidebarrS   rR   r\   rV   rW   Úquotas	            r   Ú1test_quota_hint_only_counts_in_the_finished_replyr  Ò   sÂ  è è € Ø2Ð2Ð2Ð2Ð2Ð2àOØ2À$ðHð H€Gà—-’-¥
¨G¨9Ñ 5Ô 5Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6¸Ô?ÐRÀ7È6Ä?ÐRÐ?À?ÒRÐRÐRÐRÕRÔRÐRÐRÐRÐRÐ?À?ÐRÑRÔRÕRÔRÐ?ÑRÔRÕRÔRÀ?ÑRÔRÐRÐRÑRÐRÐRÐRÐRÐRÑRÐRÕRÕRÔRÐRÑRÔRÑRÔRÐRÐRÐRÐRÐRÐRÐRØHØLÐ\aðcð c€Eå	ŒÐ)°Ð	?Ñ	?Ô	?ð 1ð 1Ø�mŠm�J¨ wÑ/Ô/Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1s   Ã*DÄDÄD)r
   r   ))rÄ   Ú
__future__r   ÚbuiltinsrH   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterF   rk   r$   r    Úmuse2api.accountsr   Úmuse2api.configr   rÌ   r   r   r	   Úfixturer*   rD   r]   rt   r‰   r‘   r–   r›   r£   r«   r³   rµ   rÐ   rÒ   rß   rÞ   rø   rý   r   r  r   r   r   ú<module>r     sK  ðØ JÐ Jà "Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø Ð Ð Ð à €€€à %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ñ ô ð ð „ðð ð ñ „ðð €g� ¨cÐ2Ð3Ñ3Ô3€ð0ð 0ð 0ð2ð 2ð 2ðð ð ðð ð ðð ð ð0ð 0ð 0ðð ð ð0ð 0ð 0ð"
Cð 
Cð 
Cðð ð ð ð �|ñ ô ð ð „ðUð Uñ „ðUð<ð <ð <ð 5¸gÈhÐWÐW€ØÐ%DÐTYØðð €ðBð Bð Bðð ð ð 2ð 2ð 2ð	1ð 	1ð 	1ð 	1ð 	1r   