§
    	Êj.  ã                  ó:  — 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„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd$d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd%d„Zd ej         d¦  «         !                    ¦   «         z   Z"d„ Z#d„ Z$d „ Z%d!„ Z&d"„ Z'd#„ Z(dS )&é    )ÚannotationsNc                ó¢  — |                       d¦  «                             ¦   «         d         }d}||u }|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}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )Nz/healthzÚokT©Úis©z%(py1)s is %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6z/readyzÚready)ÚgetÚjsonÚ
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanation)ÚclientÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7s         ú&C:\Projects\Muse2API\tests\test_api.pyÚtest_healthr      sŠ  € Ø�:Š:�jÑ!Ô!×&Ò&Ñ(Ô(¨Ô.Ð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Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø�:Š:�iÑ Ô ×%Ò%Ñ'Ô'¨Ô0Ð8°DÐ8Ð0°DÐ8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð0°DÐ8Ñ8Ô8Õ8Ô8Ð0Ñ8Ô8Õ8Ô8°DÑ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ó    c                óê  — |                       d¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        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	         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ú
/v1/modelsé‘  ©ú==©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚr©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7ÚerrorÚcodeÚinvalid_api_key©z%(py1)s == %(py4)sr	   r   r   )r   Ústatus_coder   r   Ú@py_builtinsÚlocalsÚ_should_repr_global_namer   r   r   r   )r   r%   Ú@py_assert1Ú@py_assert4r   Ú@py_format6Ú@py_format8r   r   r   r   s              r   Útest_auth_requiredr8      s°  € Ø�
Š
�<Ñ Ô €AØŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�6Š6‰8Œ8�GÔ˜VÔ$Ð9Ð(9Ð9Ð$Ð(9Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð$Ð(9Ð9Ñ9Ô9Õ9Ô9Ð$Ñ9Ô9Õ9Ô9Ð(9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r   c                óÆ  — d„ |                       d|¬¦  «                             ¦   «         d         D ¦   «         }h d£}||k    }|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 )Nc                ó   — h | ]
}|d          ’ŒS )Úid© )Ú.0Úms     r   ú	<setcomp>ztest_models.<locals>.<setcomp>   s   € Ð
RÐ
RÐ
R�qˆ1ˆTŒ7Ð
RÐ
RÐ
Rr   r    ©ÚheadersÚdata>   ú	muse-chatú
muse-imageúgpt-4oú
muse-video)ú<=)z%(py1)s <= %(py3)sÚids©r
   Úpy3úassert %(py5)sr)   )
r   r   r   r   r   r1   r2   r3   r   r   )r   ÚauthrH   r   r   Ú@py_format4r6   s          r   Útest_modelsrN      s  € Ø
RÐ
R˜FŸJšJ |¸T˜JÑBÔB×GÒGÑIÔIÈ&ÔQÐ
RÑ
RÔ
R€CØ>Ð>Ð>Ð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ÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEr   c                ó&  — |                       d|ddddœgdœ¬¦  «        }|j        }d}||k    }|sªt          j        d	|fd
||f¦  «        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         }	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}|	|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         d         }|	|v }
|
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ú/v1/chat/completionsrE   ÚuserÚhello©ÚroleÚcontent©ÚmodelÚmessages©rA   r   éÈ   r"   r$   r%   r&   r*   r+   Úobjectzchat.completionr/   r	   r   r   rW   Úchoicesr   ÚmessagerU   ©Úin©z%(py1)s in %(py4)s)Úpostr0   r   r   r1   r2   r3   r   r   r   r   )r   rL   r%   r4   r5   r   r6   r7   Úbodyr   r   r   r   s                r   Útest_chat_non_streamrc      s1  € Ø�ŠÐ*°DØ°ÀGÐ(LÐ(LÐ'Mð@Oð @Oˆñ 	Pô 	P€AàŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�6Š6‰8Œ8€DØ�Œ>Ð.Ð.Ð.ˆ>Ð.Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆ>Ð.Ð.Ñ.Ô.Õ.Ô.ˆ>Ñ.Ô.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ø�Œ=Ð$˜HÐ$ˆ=˜HÒ$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ=˜HÐ$Ñ$Ô$Õ$Ô$ˆ=Ñ$Ô$Õ$Ô$˜HÑ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØÐ>�d˜9”o aÔ(¨Ô3°IÔ>Ð>ˆ7Ð>Ð>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>ˆ7Ð>Ð>Ñ>Ô>Õ>Ô>ˆ7Ñ>Ô>Õ>Ô>Ð>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r   c           	     ó  — |                       dd|dddœgdddidœ¬	¦  «        5 }|j        }d
}||k    }|sªt          j        d|fd||f¦  «        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„ | 
                    ¦   «         D ¦   «         }d d d ¦  «         n# 1 swxY w Y   |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 ¦   «         }d                     d„ |D ¦   «         ¦  «        }d}	|	|v }
|
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         d!         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ÚPOSTrP   rQ   z	stream merS   TÚinclude_usage)rX   ÚstreamÚstream_optionsrY   rZ   r"   r$   r%   r&   r*   r+   c                óL   — g | ]!}|                      d ¦  «        ¯|dd…         ‘Œ"S )zdata: é   N)Ú
startswith)r=   Úlns     r   ú
<listcomp>z$test_chat_stream.<locals>.<listcomp>(   s1   € ÐLÐLÐL˜B°B·M²MÀ(Ñ4KÔ4KÐL��A�B�B”ÐLÐLÐLr   éÿÿÿÿz[DONE]r/   r	   r   r   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r<   )r   Úloads)r=   Úxs     r   rm   z$test_chat_stream.<locals>.<listcomp>*   s    € Ð0Ð0Ð0 �dŒj˜‰mŒmÐ0Ð0Ð0r   Ú c              3  óv   K  — | ]4}|d          ¯
|d          d         d                               dd¦  «        V — Œ5dS )r\   r   ÚdeltarU   rr   N)r   )r=   Úcs     r   ú	<genexpr>z#test_chat_stream.<locals>.<genexpr>+   sK   è è € Ð_Ð_À1ÐRSÐT]ÔR^Ð_�1�Y”< ”? 7Ô+×/Ò/°	¸2Ñ>Ô>Ð_Ð_Ð_Ð_Ð_Ð_r   r^   )z%(py1)s in %(py3)sÚtextrI   rK   r)   ÚusageÚtotal_tokensr   )ú>)z%(py1)s > %(py4)s)rg   r0   r   r   r1   r2   r3   r   r   r   Ú
iter_linesÚjoin)r   rL   r%   r4   r5   r   r6   r7   Úlinesr   r   r   r   Úchunksrw   rM   s                   r   Útest_chat_streamr   "   sü  € Ø	�Š�vÐ5¸tØ$°Ð=Ð=Ð>È$Ø*¨DÐ1ðKð Kˆñ 
ô 
ð Mð ØŒ}Ð# Ð#ˆ} Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ} Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆqÑ#Ô#Ð#Õ#Ô#ˆqÑ#Ô#Ð#Ð#Õ#Ô#ˆ}Ñ#Ô#Õ#Ô# Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØLÐL !§,¢,¡.¤.ÐLÑLÔLˆðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Mð �Œ9Ð ˜Ð ˆ9˜Ò Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ9˜Ð Ñ Ô Õ Ô ˆ9Ñ Ô Õ Ô ˜Ñ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ø0Ð0 U¨3¨B¨3¤ZÐ0Ñ0Ô0€FØ�7Š7Ð_Ð_ÈÐ_Ñ_Ô_Ñ_Ô_€DØÐˆ;˜$ÐÐÐÐÕÔÐÐÐÐˆ;˜$ÐÑÔÕÔˆ;ÑÔÐÕÔÑÔÐÐÕÔ˜$ÑÔÐÕÔ˜$ÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ�"Œ:�gÔ˜~Ô.Ð2°Ð2Ð.°Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð.°Ð2Ñ2Ô2Õ2Ô2Ð.Ñ2Ô2Õ2Ô2°Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2s   ¤C DÄDÄDc                óÆ  — |                       d|ddddœgdœ¬¦  «        }|j        }d}||k    }|sªt          j        d	|fd
||f¦  «        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 )NrP   rF   rQ   rq   rS   rV   rY   é�  r"   r$   r%   r&   r*   r+   ©
ra   r0   r   r   r1   r2   r3   r   r   r   ©r   rL   r%   r4   r5   r   r6   r7   s           r   Útest_chat_wrong_model_kindr„   0   s  € Ø�ŠÐ*°DØ°VÈÐ,LÐ,LÐ+Mð@Oð @Oˆñ 	Pô 	P€AàŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐr   c                ó$  — |                       d|ddddœ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd	||f¦  «        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         }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         d                              dd¦  «        d         }|                      |¦  «        }|j        }d}||k    }|sªt          j        d|fd	||f¦  «        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}}|j        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ú/v1/images/generationsza caté   z1:1)ÚpromptÚnÚsizerY   rZ   r"   r$   r%   r&   r*   r+   rB   ©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlen©r'   r
   rJ   r   úassert %(py8)sÚpy8r   ÚurlÚ
testserveré   Úmediaúcontent-typeú	image/pngr/   r	   r   r   )ra   r0   r   r   r1   r2   r3   r   r   r   r   rŒ   Úsplitr   rA   )r   rL   r%   r4   r5   r   r6   r7   rB   r   Ú@py_assert5r   Ú@py_format9Úpathr“   r   r   s                    r   Útest_image_url_and_mediarš   6   sü  € Ø�ŠÐ,°dØ$+°!¸UÐCÐCð 	ñ 	Eô 	E€AàŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�6Š6‰8Œ8�FÔ€DÝˆt‰9Œ9Ð˜Ðˆ9˜Š>ÐÐÐÕÔÐÐÐÐˆ9˜ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔˆ9ÑÔÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�Œ7�5Œ>×Ò ¨aÑ0Ô0°Ô3€DØ�JŠJ�tÑÔ€EØÔÐ# Ð#Ð Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#Ð Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆ5Ñ#Ô#Ð#Õ#Ô#ˆ5Ñ#Ô#Ð#Ð#Õ#Ô#ÐÑ#Ô#Õ#Ô# Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØŒ=˜Ô(Ð7¨KÐ7Ð(¨KÒ7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð(¨KÐ7Ñ7Ô7Õ7Ô7Ð(Ñ7Ô7Õ7Ô7¨KÑ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7r   c                ó  — |                       d|dddœ¬¦  «        }|                     ¦   «         d         d         d         }|s:dd	t          j        |¦  «        iz  }t	          t          j        |¦  «        ¦  «        ‚d }d S )
Nr†   za dogÚb64_json)rˆ   Úresponse_formatrY   rB   r   úassert %(py1)sr
   )ra   r   r   r   r   r   )r   rL   r%   r   Ú@py_format2s        r   Útest_image_b64r    B   s”   € Ø�ŠÐ,°dØ$+À
ÐKÐKð 	ñ 	Mô 	M€Aà�6Š6‰8Œ8�FÔ˜AÔ˜zÔ*Ð*Ð*Ð*Ð*Ð*Õ*Ô*Ð*Ñ*Ô*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*r   Úreturnúlist[bytes]c                ón   ‡— g Šdˆfd„}|                      | j        j        j        j        d|¦  «         ‰S )NrB   Úbytesr¡   c              “  ó6   •K  — ‰                      | ¦  «         dS )Nó
   cutout-png©Úappend)rB   Úseens    €r   Úfake_removez"_fake_matting.<locals>.fake_removeK   s   øè è € Ø�Š�DÑÔÐØˆ}r   Úremove)rB   r¤   r¡   r¤   )ÚsetattrÚappÚstateÚservicesÚmatting)r   Úmonkeypatchrª   r©   s      @r   Ú_fake_mattingr²   H   sP   ø€ Ø€Dðð ð ð ð ð ð ×Ò˜œ
Ô(Ô1Ô9¸8À[ÑQÔQÐQØ€Kr   c           	     óÄ  — t          | |¦  «        }|                      d|dddddœ¬¦  «        }|j        }d}||k    }|sªt          j        d	|fd
||f¦  «        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         }
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„ |
D ¦   «         }t          |¦  «        }|s•ddt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}}d}|
d         d         }||v }|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         }||v}|slt          j        d"|fd#||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d d!|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d S )$Nr†   úa foxr‡   Útransparentrœ   )rˆ   r‰   Ú
backgroundr�   rY   rZ   r"   r$   r%   r&   r*   r+   rB   r‹   rŒ   r©   r�   rŽ   r�   c              3  óR   K  — | ]"}t          j        |d          ¦  «        dk    V — Œ#dS )rœ   r¦   N)Úbase64Ú	b64decode)r=   Úds     r   rv   z4test_image_transparent_background.<locals>.<genexpr>[   s6   è è € ÐNÐNÀA�vÔ  *¤Ñ.Ô.°-Ò?ÐNÐNÐNÐNÐNÐNr   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úall)r'   r(   r   Úplainr   Úrevised_promptr^   r`   r	   r   r   )únot in)z%(py1)s not in %(py4)s)r²   ra   r0   r   r   r1   r2   r3   r   r   r   r   rŒ   r»   )r   rL   r±   r©   r%   r4   r5   r   r6   r7   rB   r   r—   r   r˜   r   r   s                    r   Ú!test_image_transparent_backgroundr¿   S   se  € Ý˜ Ñ-Ô-€DØ�ŠÐ,°dØ$+°!À=Ø-7ð9ð 9ð 	ñ 	:ô 	:€Að Œ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�6Š6‰8Œ8�FÔ€DÝˆt‰9Œ9Ð˜Ðˆ9˜Š>ÐÐÐÕÔÐÐÐÐˆ9˜ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔˆ9ÑÔÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØNÐNÈÐNÑNÔNÐN�3ÐNÑNÔNÐNÐNÐNÐNÐNÕNÔNÑNÔNÐNÐNÕNÔN�3ÑNÔNÐNÕNÔN�3ÑNÔNÐNÐNÕNÔNÐNÑNÔNÕNÔNÐNÑNÔNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNàÐ/�d˜1”gÐ.Ô/Ð/ˆ7Ð/Ð/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/ˆ7Ð/Ð/Ñ/Ô/Õ/Ô/ˆ7Ñ/Ô/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÐ9  Q¤Ð(8Ô 9Ð9ˆ=Ð 9Ð9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9ˆ=Ð 9Ð9Ñ9Ô9Õ9Ô9ˆ=Ñ9Ô9Õ9Ô9Ð 9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r   c                óÊ  — t          | |¦  «         |                      d|dddœ¬¦  «        }|                     ¦   «         d         d         d         }|j        }d	} ||¦  «        }|ssd
t	          j        |¦  «        t	          j        |¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}}d S )Nr†   r´   rµ   ©rˆ   r¶   rY   rB   r   r�   z.pngúJassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.endswith
}(%(py5)s)
}©r
   rJ   r)   r+   )r²   ra   r   Úendswithr   r   r   r   )	r   rL   r±   r%   r   r   r5   Ú@py_assert6r7   s	            r   Ú#test_image_transparent_saved_as_pngrÆ   a   s  € Ý�&˜+Ñ&Ô&Ð&Ø�ŠÐ,°dØ$+¸=ÐIÐIð 	ñ 	Kô 	K€Aà�6Š6‰8Œ8�FÔ˜AÔ˜uÔ%Ð6Ð%Ô.Ð6¨vÐ6Ð.Ð.¨vÑ6Ô6Ð6Ð6Ð6Ð6Õ6Ô6Ð%Ñ6Ô6Õ6Ô6Ð.Ñ6Ô6Õ6Ô6¨vÑ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Ð6Ð6Ð6r   c                ól  — t          | |¦  «        }|                      d|dddœ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        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}}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         d         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 )Nr†   r´   ÚopaquerÁ   rY   rZ   r"   r$   r%   r&   r*   r+   )z%(py0)s == %(py3)sr©   )r'   rJ   rK   r)   rB   r   r½   r/   r	   r   r   )r²   ra   r0   r   r   r1   r2   r3   r   r   r   r   )r   rL   r±   r©   r%   r4   r5   r   r6   r7   r   rM   r   r   r   s                  r   Ú*test_image_opaque_background_skips_mattingrÉ   h   s›  € Ý˜ Ñ-Ô-€DØ�ŠÐ,°dØ$+¸8ÐDÐDð 	ñ 	Fô 	F€AàŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØÐˆ4�2Š:ÐÐÐÕÔÐÐÐÐˆ4�2ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�2ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ�6Š6‰8Œ8�FÔ˜AÔÐ/Ô0Ð;°GÐ;Ð0°GÒ;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð0°GÐ;Ñ;Ô;Õ;Ô;Ð0Ñ;Ô;Õ;Ô;°GÑ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;r   c                ó‚   ‡‡— g Š| j         j        j        j        }|j        Šˆˆfd„}|                     |d|¦  «         ‰S )Nc              “  óT   •K  — ‰                      | ¦  «          ‰| ¦  «        ƒ d {V —†S ©Nr§   ©ÚreqÚoriginalr©   s    €€r   Úspyz$_capture_image_requests.<locals>.spyv   ó9   øè è € Ø�Š�CÑÔÐØ�X˜c‘]”]Ð"Ð"Ð"Ð"Ð"Ð"Ð"r   Úgenerate_image©r­   r®   r¯   ÚgatewayrÒ   r¬   ©r   r±   rÔ   rÐ   rÏ   r©   s       @@r   Ú_capture_image_requestsrÖ   q   s_   øø€ Ø€DØŒjÔÔ'Ô/€GØÔ%€Hð#ð #ð #ð #ð #ð #ð ×Ò˜Ð!1°3Ñ7Ô7Ð7Ø€Kr   c                ó¨  — t          | |¦  «        }t          j        d¦  «                             ¦   «         }|                      d|dd|› �d|› �gdœ¬¦  «        }|j        }d}||k    }|sªt          j        d	|fd
||f¦  «        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         j        }d„ |D ¦   «         }ddg}||k    }|slt          j        d	|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|d         }|j        }d}||k    }|st          j        d	|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d S )Ns	   ‰PNG faker†   za model wearing this hoodieúdata:image/png;base64,zdata:image/jpeg;base64,©rˆ   ÚimagerY   rZ   r"   r$   r%   r&   r*   r+   r   c                ó   — g | ]	}|j         ‘Œ
S r<   )Úmime©r=   Úis     r   rm   z/test_image_reference_images.<locals>.<listcomp>†   s   € Ð!Ð!Ð!�qˆAŒFÐ!Ð!Ð!r   r•   ú
image/jpegr/   r	   r   r   )z,%(py3)s
{%(py3)s = %(py1)s.data
} == %(py6)s)r
   rJ   r   rŽ   r�   )rÖ   r¸   Ú	b64encodeÚdecodera   r0   r   r   r1   r2   r3   r   r   r   Úreference_imagesrB   )r   rL   r±   r©   Úpngr%   r4   r5   r   r6   r7   Úrefsr   r   r   r   r—   r˜   s                     r   Útest_image_reference_imagesrå   ~   sà  € Ý" 6¨;Ñ7Ô7€DÝ
Ô
˜?Ñ
+Ô
+×
2Ò
2Ñ
4Ô
4€CØ�ŠÐ,°dØ$AØ$B¸SÐ$BÐ$BÐDcÐ^aÐDcÐDcÐ#dðfð fð 	ñ 	gô 	g€Að Œ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�Œ7Ô#€DØ!Ð!˜DÐ!Ñ!Ô!Ð@ k°<Ð%@Ð@Ð!Ð%@Ò@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@Ð!Ð%@Ð@Ñ@Ô@Õ@Ô@Ð!Ñ@Ô@Õ@Ô@Ð%@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø�Œ7Ð*ˆ7Œ<Ð*˜?Ð*ˆ<˜?Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*ˆ<˜?Ð*Ñ*Ô*Õ*Ô*ˆ7Ñ*Ô*Õ*Ô*ˆ<Ñ*Ô*Õ*Ô*˜?Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r   c                óH  — t          | |¦  «        }t          j        d¦  «                             ¦   «         }|                      d|dd|› �dœ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd	||f¦  «        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         }|j        }t          |¦  «        }d}||k    }|sÚt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}d S )Nó   xr†   ÚprØ   rÙ   rY   rZ   r"   r$   r%   r&   r*   r+   r   r’   )zV%(py6)s
{%(py6)s = %(py0)s(%(py4)s
{%(py4)s = %(py2)s.reference_images
})
} == %(py9)srŒ   )r'   r(   r   r   Úpy9zassert %(py11)sÚpy11)rÖ   r¸   rà   rá   ra   r0   r   r   r1   r2   r3   r   r   r   râ   rŒ   )r   rL   r±   r©   rã   r%   r4   r5   r   r6   r7   r—   Ú@py_assert8Ú@py_assert7Ú@py_format10Ú@py_format12s                   r   Ú"test_image_single_reference_stringrï   Š   sd  € Ý" 6¨;Ñ7Ô7€DÝ
Ô
˜4Ñ
 Ô
 ×
'Ò
'Ñ
)Ô
)€CØ�ŠÐ,°dØ$'Ð2PÈ3Ð2PÐ2PÐQÐQð 	ñ 	Sô 	S€AàŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�AŒwÐ-ˆwÔ'Ð-�3Ð'Ñ(Ô(Ð-¨AÐ-Ð(¨AÒ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð(¨AÐ-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-�3Ñ-Ô-Ð-Õ-Ô-�3Ñ-Ô-Ð-Ð-Õ-Ô-ˆwÑ-Ô-Õ-Ô-Ð'Ñ-Ô-Õ-Ô-Ð(Ñ-Ô-Õ-Ô-¨AÑ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r   c                ó  — dt          j        d¦  «                             ¦   «         z   }|                      d|d|gdz  dœ¬¦  «        }|j        }d}||k    }|sªt          j        d	|fd
||f¦  «        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Ø   rç   r†   rè   é   rÙ   rY   r�   r"   r$   r%   r&   r*   r+   )r¸   rà   rá   ra   r0   r   r   r1   r2   r3   r   r   r   )	r   rL   rã   r%   r4   r5   r   r6   r7   s	            r   Útest_image_too_many_referencesrò   “   s0  € Ø
"¥VÔ%5°dÑ%;Ô%;×%BÒ%BÑ%DÔ%DÑ
D€CØ�ŠÐ,°dÈCÐ[^ÐZ_ÐbcÑZcÐAdÐAdˆÑeÔe€AØŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐr   c                ó¾  — |                       d|dddœ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        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†   r´   ÚglassrÁ   rY   r�   r"   r$   r%   r&   r*   r+   r‚   rƒ   s           r   Útest_image_invalid_backgroundrõ   ™   s  € Ø�ŠÐ,°dØ$+¸7ÐCÐCð 	ñ 	Eô 	E€AàŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐr   c           	     óH
  — dd l }dt          j        d¦  «                             ¦   «         z   }|                      d|d|dddœ¬	¦  «        }|j        }d
}||k    }|sªt          j        d|fd||f¦  «        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}}|                     ¦   «         }
g }|
d         }d}||k    }|}|r|
d         }|j        }d} ||¦  «        }|}|�s	t          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |rgdt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}}t%          d¦  «        D ]R}|                      d|
d         › �|¬¦  «                             ¦   «         }|d          d!k    r n |j        d"¦  «         ŒS|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)         }|                      |                     d*d+¦  «        d,         |¬¦  «        }g }|j        }d
}||k    }|}|r|j        d-         }d.}||k    }|}|�s@t          j        d|fd/||f¦  «        d0t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd0t          j        |¦  «        t          j        |¦  «        d1œz  }	d2d3|	iz  }|                     |¦  «         |r`t          j        d|fd4||f¦  «        t          j        |¦  «        t          j        |¦  «        d5œz  } d6d7| iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}d S )8Nr   rØ   rç   r†   r´   Trœ   )rˆ   rÚ   Úasyncr�   rY   rZ   r"   r$   r%   r&   r*   r+   r[   z
image.taskr;   Útask_)z%(py3)s == %(py6)s)rJ   r   z%(py8)sr�   zK%(py17)s
{%(py17)s = %(py13)s
{%(py13)s = %(py11)s.startswith
}(%(py15)s)
})rê   Úpy13Úpy15Úpy17zassert %(py20)sÚpy20é2   z/v1/images/generations/r@   ÚstatusÚ	succeededç{®Gáz”?r/   r	   r   r   ÚresultrB   r�   zhttp://testserverr’   rn   r”   r•   )z3%(py4)s
{%(py4)s = %(py2)s.status_code
} == %(py7)sr“   )r(   r   r+   z%(py9)sré   )z%(py12)s == %(py15)s)Úpy12rú   z%(py17)srû   )Útimer¸   rà   rá   ra   r0   r   r   r1   r2   r3   r   r   r   r   rk   r¨   Ú_format_boolopÚranger   Úsleepr–   rA   )!r   rL   r  rã   r%   r4   r5   r   r6   r7   Útaskr   r—   r   Ú@py_assert10Ú@py_assert12Ú@py_assert14Ú@py_assert16r   r˜   Ú@py_format18Ú@py_format19Ú@py_format21Ú_Úviewr   r�   r“   rÅ   Ú@py_assert11Ú@py_assert13rí   Ú@py_format16s!                                    r   Útest_image_async_taskr  Ÿ   s4  € Ø€K€K€KØ
"¥VÔ%5°dÑ%;Ô%;×%BÒ%BÑ%DÔ%DÑ
D€CØ�ŠÐ,°dØ$+°cÀDÐ]gÐhÐhð 	ñ 	jô 	j€AàŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�6Š6‰8Œ8€DØLÐLˆ4�Œ>ÐL˜\ÐLˆ>˜\Ò)ÐLÐLÐLÐLÐL¨d°4¬jÐL¨jÔ.CÐLÀGÐLÐ.CÐ.CÀGÑ.LÔ.LÐLÐ.LÐLÐLÑLÕLÔLÐLÐLÐLÐLˆ>˜\ÐLÑLÔLÕLÔLˆ>ÑLÔLÕLÔL˜\ÑLÔLÐLÐLÑLÐLÐLÐLÐLÐLÑLÐLÐL×LÒLÐLÑLÔLÐLÐLÐLÐLÕLÔL¨jÑLÔLÕLÔLÐ.CÑLÔLÕLÔLÀGÑLÔLÕLÔLÐ.LÑLÔLÐLÐLÑLÐLÐL×LÒLÐLÑLÔLÐLÕLÔLÐLÐLÑLÔLÐLÑLÐLÐLÐLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÝ�2‰YŒYð ð ˆØ�zŠzÐ@°D¸´JÐ@Ð@È$ˆzÑOÔO×TÒTÑVÔVˆØ�Œ>˜[Ò(Ð(ØˆEØˆŒ
�4ÑÔÐÐØ�Œ>Ð(˜[Ð(ˆ>˜[Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ>˜[Ð(Ñ(Ô(Õ(Ô(ˆ>Ñ(Ô(Õ(Ô(˜[Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø
ˆxŒ.˜Ô
  Ô
# EÔ
*€CØ�JŠJ�s—y’yÐ!4°aÑ8Ô8¸Ô<ÀdˆJÑKÔK€EØTÐTˆ5ÔÐT ÐTÐ Ò#ÐTÐTÐTÐTÐT¨¬°nÔ(EÐTÈÐTÐ(EÈÒ(TÐTÐTÐTÐTÑTÕTÔTÐTÐTÐTÐTÐ ÐTÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔTˆ5ÑTÔTÐTÕTÔTˆ5ÑTÔTÐTÐTÕTÔTÐÑTÔTÕTÔT ÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÐT×TÒTÐTÑTÔTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐ(EÈÐTÑTÔTÕTÔTÐ(EÑTÔTÕTÔTÈÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÐT×TÒTÐTÑTÔTÐTÕTÔTÐTÐTÑTÔTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTr   c           
     ó°  — | j         }d} |||¬¦  «        }|j        }d}||k    }|�s!t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d x}x}x}x}x}}d S )Nz /v1/images/generations/task_noper@   i”  r"   ©z|%(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s, headers=%(py5)s)
}.status_code
} == %(py12)sr   rL   ©r'   r(   r   r)   r+   ré   r  úassert %(py14)sÚpy14)
r   r0   r   r   r1   r2   r3   r   r   r   )
r   rL   r4   r   rÅ   rë   r  r  Ú@py_format13Ú@py_format15s
             r   Útest_image_task_not_foundr  ²   sˆ  € ØŒ:ÐZÐ8ÐZˆ:ˆ:Ð8À$ÐGÑGÔGÐZÐGÔSÐZÐWZÐZÐSÐWZÒZÐZÐZÑZÕZÔZÐZÐZÐZÐZÐSÐWZÐZÑZÔZÐZÕZÔZÑZÔZÐZÐZÕZÔZˆ6ÑZÔZÐZÕZÔZˆ6ÑZÔZÐZÐZÕZÔZˆ:ÑZÔZÕZÔZÐ8ÑZÔZÐZÕZÔZÑZÔZÐZÐZÕZÔZÀ$ÑZÔZÐZÕZÔZÀ$ÑZÔZÐZÐZÕZÔZÐGÑZÔZÕZÔZÐSÑZÔZÕZÔZÐWZÑZÔZÐZÐZÑZÐZÐZÐZÐZÐZÑZÐZÕZÕZÔZÐZÑZÔZÑZÔZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZr   c                óœ  — |                       d|dddœ¬¦  «        }|                     ¦   «         d         }t          d¦  «        D ]N}|                      d|› �|¬	¦  «                             ¦   «         }|d
         dv r nt	          j        d¦  «         ŒO|d
         }d}||k    }|s�t          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	t          j	        |¦  «        dz   d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}}|d         d         }|j        }d} ||¦  «        }|ssdt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d S )Nz
/v1/videosÚwavesrñ   )rˆ   ÚdurationrY   r;   rý   z/v1/videos/r@   rþ   )rÿ   Úfailedr   rÿ   r"   r/   r	   z
>assert %(py6)sr   r  r�   z.mp4rÂ   rÃ   )ra   r   r  r   r  r  r   r   r   Ú_format_assertmsgr   r   rÄ   )r   rL   r%   Útask_idr  r  r   r   r   r   r   r5   rÅ   r7   s                 r   Útest_video_taskr#  ¶   s  € Ø�Š�L¨$ÀÐUVÐ5WÐ5WˆÑXÔX€AØ�fŠf‰hŒh�tŒn€GÝ�2‰YŒYð ð ˆØ�zŠzÐ1¨Ð1Ð1¸4ˆzÑ@Ô@×EÒEÑGÔGˆØ�Œ>Ð4Ð4Ð4ØˆEÝŒ
�4ÑÔÐÐØ�Œ>Ð.˜[Ð.ˆ>˜[Ò(Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆ>˜[Ð.Ñ.Ô.Õ.Ô.ˆ>Ñ.Ô.Õ.Ô.˜[Ñ.Ô.Ð.Ð.Ñ.Ð.Õ.Ô.¨$Ñ.Ô.Ð.Ñ.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ø�Œ>˜%Ô Ð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Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1r   c                óà  — | j         }d}i } ||||¬¦  «        }|j        }d}||k    }|�s4t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	d	d
|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚d x}x}x}x}x}x}}d S )Nz/v1/responsesrY   iõ  r"   )z�%(py11)s
{%(py11)s = %(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.post
}(%(py4)s, headers=%(py5)s, json=%(py7)s)
}.status_code
} == %(py14)sr   rL   )r'   r(   r   r)   r+   ré   rê   r  zassert %(py16)sÚpy16r‚   )r   rL   r4   r   rÅ   rë   r  r  r	  r  Ú@py_format17s              r   Útest_reserved_endpointsr'  Â   sœ  € ØŒ;ÐQ�ÐQ¸2ÐQˆ;ˆ;�°¸2Ð>Ñ>Ô>ÐQÐ>ÔJÐQÈcÐQÐJÈcÒQÐQÐQÑQÕQÔQÐQÐQÐQÐQÐJÈcÐQÑQÔQÐQÕQÔQÑQÔQÐQÐQÕQÔQˆ6ÑQÔQÐQÕQÔQˆ6ÑQÔQÐQÐQÕQÔQˆ;ÑQÔQÕQÔQ�ÑQÔQÐQÕQÔQÑQÔQÐQÐQÕQÔQ°ÑQÔQÐQÕQÔQ°ÑQÔQÐQÐQÕQÔQ¸2ÑQÔQÕQÔQÐ>ÑQÔQÕQÔQÐJÑQÔQÕQÔQÈcÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQr   Úlistc                ó„   ‡‡— | j         j        j        j        }|j        g cŠŠˆˆfd„}|                     |d|¦  «         ‰S )Nc              “  óT   •K  — ‰                      | ¦  «          ‰| ¦  «        ƒ d {V —†S rÌ   r§   rÍ   s    €€r   rÐ   z$_capture_image_requests.<locals>.spyÊ   rÑ   r   rÒ   rÓ   rÕ   s       @@r   rÖ   rÖ   Æ   s`   øø€ ØŒjÔÔ'Ô/€GØÔ+¨R€N€Hˆdð#ð #ð #ð #ð #ð #ð ×Ò˜Ð!1°3Ñ7Ô7Ð7Ø€Kr   rØ   ó   ‰PNG-refc                ó  — t          | |¦  «        }|                      d|dt          dœ¬¦  «        }|j        }d}||k    }|sªt	          j        d|fd||f¦  «        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         j        }
d„ |
D ¦   «         }dg}||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 )Nr†   zsame fox, wearing a scarfrÙ   rY   rZ   r"   r$   r%   r&   r*   r+   r   c                ó*   — g | ]}|j         |j        f‘ŒS r<   ©rB   rÜ   rÝ   s     r   rm   z8test_image_generation_with_reference.<locals>.<listcomp>Û   s!   € Ð+Ð+Ð+ ˆQŒV�Q”VÐÐ+Ð+Ð+r   )r+  r•   r/   r	   r   r   )rÖ   ra   Ú_PNG_DATA_URLr0   r   r   r1   r2   r3   r   r   r   râ   )r   rL   r±   r©   r%   r4   r5   r   r6   r7   rä   r   r   r   r   s                  r   Ú$test_image_generation_with_referencer0  Õ   sã  € Ý" 6¨;Ñ7Ô7€DØ�ŠÐ,°dØ$?Í-ÐXÐXð 	ñ 	Zô 	Z€AàŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�Œ7Ô#€DØ+Ð+ dÐ+Ñ+Ô+ÐNÐ0MÐ/NÐNÐ+Ð/NÒNÐNÐNÐNÕNÔNÐNÐNÐNÐNÐ+Ð/NÐNÑNÔNÕNÔNÐ+ÑNÔNÕNÔNÐ/NÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNr   c                óÐ  — |                       d|dt          gdz  dœ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        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†   rq   rñ   rÙ   rY   r�   r"   r$   r%   r&   r*   r+   )ra   r/  r0   r   r   r1   r2   r3   r   r   r   rƒ   s           r   Ú*test_image_generation_reference_list_limitr2  Þ   s  € Ø�ŠÐ,°dØ$'µ=°/ÀAÑ2EÐFÐFð 	ñ 	Hô 	H€AàŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐr   c                ó^  — t          | |¦  «        }|                      d|ddddœddg¬¦  «        }|j        }d	}||k    }|sªt          j        d
|fd||f¦  «        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         d         d         }
|
s:ddt          j        |
¦  «        iz  }t          t          j
        |¦  «        ¦  «        ‚d }
|d         }|j        }d}||k    }|sªt          j        d
|fd||f¦  «        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„ |j        D ¦   «         }
ddg}|
|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ú/v1/images/editszput them in a cafeÚ1rœ   )rˆ   r‰   r�   )úimage[])úa.pngó   img-ar•   )r6  )zb.jpgó   img-bzapplication/octet-stream©rA   rB   ÚfilesrZ   r"   r$   r%   r&   r*   r+   rB   r   rž   r
   )z.%(py2)s
{%(py2)s = %(py0)s.prompt
} == %(py5)srÎ   c                ó*   — g | ]}|j         |j        f‘ŒS r<   r.  rÝ   s     r   rm   z.test_image_edits_multipart.<locals>.<listcomp>ï   s!   € Ð;Ð;Ð; ˆQŒV�Q”VÐÐ;Ð;Ð;r   )r8  r•   )r9  rß   r/   r	   r   r   )rÖ   ra   r0   r   r   r1   r2   r3   r   r   r   r   rˆ   râ   )r   rL   r±   r©   r%   r4   r5   r   r6   r7   r   rŸ   rÎ   r   r   r   s                   r   Útest_image_edits_multipartr=  ä   s¤  € Ý" 6¨;Ñ7Ô7€DØ�ŠÐ&°Ø$8¸sÐWaÐbÐbØHØWðYð 	ñ 	Zô 	Z€Að Œ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�6Š6‰8Œ8�FÔ˜AÔ˜zÔ*Ð*Ð*Ð*Ð*Ð*Õ*Ô*Ð*Ñ*Ô*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ø
ˆqŒ'€CØŒ:Ð-Ð-Ð-ˆ:Ð-Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-ˆ:Ð-Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ3Ñ-Ô-Ð-Õ-Ô-ˆ3Ñ-Ô-Ð-Ð-Õ-Ô-ˆ:Ñ-Ô-Õ-Ô-Ð-Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-à;Ð; cÔ&:Ð;Ñ;Ô;ð ;ØÐ!9ð@;ð ;Ð;ð @;ò ;ð ;ð ;ð ;õ ;Ü):ð;ð ;ð ;ð ;Ð;ð @;ð ;ñ ;ô ;õ ;Ü1:ð <ñ ;ô ;õ ;Ü1:ð@;ñ ;ô ;ð ;ð ;ñ ;ð ;ð ;ð ;ð ;ð ;ñ ;ð ;õ ;õ ;Ü':ð;ñ ;ô ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;r   c                ó8  — d}|                       d|ddi¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        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|ddi|dg¬¦  «        }	|	j        }d}||k    }|sªt          j        d|fd||f¦  «        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|dddœ|g¬¦  «        }
|
j        }d}||k    }|sªt          j        d|fd||f¦  «        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 )N)rÚ   )r7  s   imgr•   r4  rˆ   rq   )rA   rB   r�   r"   r$   Úno_imager&   r*   r+   )Úmask)zm.pngs   maskr•   r:  r@  Ú9)rˆ   r‰   Úbad_nr‚   )r   rL   rã   r?  r4   r5   r   r6   r7   r@  rB  s              r   Ú"test_image_edits_rejects_bad_inputrC  ó   s'  € Ø
3€CØ�{Š{Ð-°tÀ8ÈSÀ/ˆ{ÑRÔR€HØÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Õ&Ô&ˆ8Ñ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø�;Š;Ð)°4¸xÈ¸oØ!Ð#LÐMð ñ Oô O€DàÔÐ"˜sÐ"Ð˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Õ"Ô"ˆ4Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø�KŠKÐ*°DÈ#ÐTWÐ?XÐ?XØ"˜eð ñ %ô %€EàÔÐ# Ð#Ð Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#Ð Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆ5Ñ#Ô#Ð#Õ#Ô#ˆ5Ñ#Ô#Ð#Ð#Õ#Ô#ÐÑ#Ô#Õ#Ô# Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#r   c                ól  — |                       d|dddidœ¬¦  «        }|                     ¦   «         d         d         }|                      d	|› d
�|¬¦  «        }|j        }d}||k    }|sªt	          j        d|fd||f¦  «        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         }||k    }|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         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!}||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         }||v }|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'         d         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ú/admin/accountsÚq1Ú
hatch_sessÚsecretvalue123©ÚlabelÚcookiesrY   Úaccountr;   ú/admin/accounts/z/quotar@   rZ   r"   r$   Úqr&   r*   r+   Ú
account_id)z%(py1)s == %(py3)sÚacc_idrI   rK   r)   ÚquotaÚplanÚfreer/   r	   r   r   Úmessages_remainingéd   Ú
checked_atr^   r`   rB   r   Úmeta)ra   r   r   r0   r   r   r1   r2   r3   r   r   r   )r   Úadminr%   rP  rN  r4   r5   r   r6   r7   rb   r   r   rM   r   r   Úlisteds                    r   Útest_admin_account_quotarZ  ÿ   s  € Ø�ŠÐ%¨uØ#'°\ÐCSÐ4TÐUÐUð 	ñ 	Wô 	W€Aà�VŠV‰XŒX�iÔ  Ô&€Fà�
Š
Ð4 fÐ4Ð4Ð4¸eˆ
ÑDÔD€AØŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�6Š6‰8Œ8€DØ�ÔÐ'Ð Ò'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð Ð'Ñ'Ô'Õ'Ô'ÐÑ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô' Ñ'Ô'Ð'Õ'Ô' Ñ'Ô'Ð'Ð'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ø�Œ=˜Ô Ð* FÐ*Ð  FÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð  FÐ*Ñ*Ô*Õ*Ô*Ð Ñ*Ô*Õ*Ô* FÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø�Œ=Ð-Ô.Ð5°#Ð5Ð.°#Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð.°#Ð5Ñ5Ô5Õ5Ô5Ð.Ñ5Ô5Õ5Ô5°#Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ØÐ(˜4 œ=Ð(ˆ<˜=Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ<˜=Ð(Ñ(Ô(Õ(Ô(ˆ<Ñ(Ô(Õ(Ô(˜=Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð �ZŠZÐ)°5ˆZÑ9Ô9×>Ò>Ñ@Ô@ÀÔHÈÔK€FØ�&Œ>˜'Ô" 6Ô*Ð4¨fÐ4Ð*¨fÒ4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð*¨fÐ4Ñ4Ô4Õ4Ô4Ð*Ñ4Ô4Õ4Ô4¨fÑ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4r   c           
     ó�  — | j         }d} |||¬¦  «        }|j        }d}||k    }|�s!t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	d	d
|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚d x}x}x}x}x}}|  
                    d|dddidœ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        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         }|d         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         }||v }|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$i¬¦  «        }|                     ¦   «         d         d#         }d$}||u }|slt          j        d%|fd&||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|                       d|¬¦  «                             ¦   «         d'         }t          |¦  «        }d(}||k    }|sÇt          j        d|fd)||f¦  «        d*t	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd*t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d+œz  }d,d-|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}}|  
                    d!|d"         › d.�|¬¦  «                             ¦   «         d/         }|s:d0d1t          j        |¦  «        iz  }t          t          j	        |¦  «        ¦  «        ‚d }| j        }d!|d"         › �} |||¬¦  «        }|j        }d}||k    }|�s!t          j        d|fd2||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        d3t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd3t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	d	d
|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚d x}x}x}x}x}}|                       d4|¬¦  «                             ¦   «         d5         d6         }d7}||k    }|slt          j        d|fd8||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d S )9NrE  r@   r!   r"   r  r   rL   r  r  r  Úa1rG  rH  rI  rY   rZ   r$   r%   r&   r*   r+   rL  rK  )ú!=)z%(py1)s != %(py4)sr	   r   r   Ú	hatch_vmlÚmissing_cookiesr^   r`   rM  r;   ÚenabledFr   r   rB   r’   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)srŒ   )r'   r(   r   r+   zassert %(py9)sré   z/renewr   rž   r
   )z%(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.delete
}(%(py4)s, headers=%(py5)s)
}.status_code
} == %(py12)srX  z/admin/statusÚaccountsÚtotalr   r/   )r   r0   r   r   r1   r2   r3   r   r   r   ra   r   ÚpatchrŒ   Údelete)r   rL   rX  r4   r   rÅ   rë   r  r  r  r  r%   r5   r6   r7   Úaccr   r   r   r   r—   rí   rŸ   s                          r   Útest_admin_accounts_crudrf    sà  € ØŒ:ÐIÐ'ÐIˆ:ˆ:Ð'°Ð6Ñ6Ô6ÐIÐ6ÔBÐIÀcÐIÐBÀcÒIÐIÐIÑIÕIÔIÐIÐIÐIÐIÐBÀcÐIÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔIˆ6ÑIÔIÐIÕIÔIˆ6ÑIÔIÐIÐIÕIÔIˆ:ÑIÔIÕIÔIÐ'ÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔI°ÑIÔIÐIÕIÔI°ÑIÔIÐIÐIÕIÔIÐ6ÑIÔIÕIÔIÐBÑIÔIÕIÔIÀcÑIÔIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIà�ŠÐ%¨uØ#'°\ÐCSÐ4TÐUÐUð 	ñ 	Wô 	W€AàŒ=Ð˜CÐˆ=˜CÒÐÐÐÕÔÐÐÐÐˆ=˜CÐÑÔÐÕÔÑÔÐÐÕÔˆ1ÑÔÐÕÔˆ1ÑÔÐÐÕÔˆ=ÑÔÕÔ˜CÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ
�&Š&‰(Œ(�9Ô
€CØˆyŒ>˜,Ô'Ð;Ð+;Ð;Ð'Ð+;Ò;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð'Ð+;Ð;Ñ;Ô;Õ;Ô;Ð'Ñ;Ô;Õ;Ô;Ð+;Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ØÐ5˜!Ÿ&š&™(œ(Ð#4Ô5Ð5ˆ;Ð5Ð5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5ˆ;Ð5Ð5Ñ5Ô5Õ5Ô5ˆ;Ñ5Ô5Õ5Ô5Ð5Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5à�ŠÐ3¨¨D¬	Ð3Ð3¸UÈ)ÐUZÐI[ˆÑ\Ô\€AØ�6Š6‰8Œ8�IÔ˜yÔ)Ð2¨UÐ2Ð)¨UÐ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð)¨UÐ2Ñ2Ô2Õ2Ô2Ð)Ñ2Ô2Õ2Ô2¨UÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2à�zŠzÐ+°UˆzÑ;Ô;×@Ò@ÑBÔBÀ6ÔJÐP�3ÐJÑKÔKÐPÈqÐPÐKÈqÒPÐPÐPÐPÕPÔPÐPÐPÐPÐPÐKÈqÐPÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔP�3ÑPÔPÐPÕPÔP�3ÑPÔPÐPÐPÕPÔPÐJÑPÔPÕPÔPÐKÑPÔPÕPÔPÈqÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPÐPÐPÐPÐPØ�;Š;Ð;¨#¨d¬)Ð;Ð;Ð;ÀUˆ;ÑKÔK×PÒPÑRÔRÐSWÔXÐXÐXÐXÐXÐXÕXÔXÐXÑXÔXÐXÑXÐXÕXÕXÔXÐXÑXÔXÑXÔXÐXÐXÐXØŒ=ÐZÐ7¨C°¬IÐ7Ð7ÐZˆ=ˆ=Ð7ÀÐGÑGÔGÐZÐGÔSÐZÐWZÐZÐSÐWZÒZÐZÐZÑZÕZÔZÐZÐZÐZÐZÐSÐWZÐZÑZÔZÐZÕZÔZÑZÔZÐZÐZÕZÔZˆ6ÑZÔZÐZÕZÔZˆ6ÑZÔZÐZÐZÕZÔZˆ=ÑZÔZÕZÔZÐ7ÑZÔZÐZÕZÔZÑZÔZÐZÐZÕZÔZÀÑZÔZÐZÕZÔZÀÑZÔZÐZÐZÕZÔZÐGÑZÔZÕZÔZÐSÑZÔZÕZÔZÐWZÑZÔZÐZÐZÑZÐZÐZÐZÐZÐZÑZÐZÕZÕZÔZÐZÑZÔZÑZÔZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZØ�:Š:�o¨uˆ:Ñ5Ô5×:Ò:Ñ<Ô<¸ZÔHÈÔQÐVÐUVÐVÐQÐUVÒVÐVÐVÐVÕVÔVÐVÐVÐVÐVÐQÐUVÐVÑVÔVÕVÔVÐQÑVÔVÕVÔVÐUVÑVÔVÐVÐVÑVÐVÐVÐVÐVÐVÑVÐVÕVÕVÔVÐVÑVÔVÑVÔVÐVÐVÐVÐVÐVÐVÐVÐVÐVr   )r¡   r¢   )r¡   r(  ))Ú
__future__r   Úbuiltinsr1   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r¸   r   r  r   r8   rN   rc   r   r„   rš   r    r²   r¿   rÆ   rÉ   rÖ   rå   rï   rò   rõ   r  r  r#  r'  rà   rá   r/  r0  r2  r=  rC  rZ  rf  r<   r   r   ú<module>rl     s>  ðØ "Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø €€€Ø €€€ð9ð 9ð 9ð
:ð :ð :ðFð Fð Fð
?ð ?ð ?ð3ð 3ð 3ð ð  ð  ð	8ð 	8ð 	8ð+ð +ð +ðð ð ð ð:ð :ð :ð7ð 7ð 7ð<ð <ð <ð
ð 
ð 
ð	+ð 	+ð 	+ð.ð .ð .ð ð  ð  ð ð  ð  ðUð Uð Uð&[ð [ð [ð	2ð 	2ð 	2ðRð Rð Rð	ð 	ð 	ð 	ð )Ð+;¨6Ô+;¸NÑ+KÔ+K×+RÒ+RÑ+TÔ+TÑT€ðOð Oð Oð ð  ð  ð;ð ;ð ;ð	$ð 	$ð 	$ð5ð 5ð 5ð$Wð Wð Wð Wð Wr   