§
    9Êjú  ã                   ó†  — d Z ddlZddlmc mZ ddlZddlZddl	m
Z
 ddlZ e
e¦  «                             ¦   «         j        j        dz  Z ee¦  «        ej        vr$ej                             d ee¦  «        ¦  «         ddlmZmZmZmZmZmZ ddlmZ d„ Zd„ Zd	„ Zd
„ Zd„ Z e!dk    r ej"        edg¦  «         dS dS )uK   
Kiá»ƒm thá»­ tÃ­ch há»£p Muse2API Gateway vÃ o Pipeline Tháº­p NgÅ© NiÃªn
é    N)ÚPathÚ05_Production_Pipeline)ÚMuseApiClientÚresolve_api_keyÚsanitize_promptÚensure_audio_guardÚencode_image_to_data_uriÚAUDIO_GUARD_CANONICAL)Úclassify_shot_enginec                  óŠ  — t          ¦   «         } d }| |u}|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}}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 )N)úis not)z%(py0)s is not %(py3)sÚkey)Úpy0Úpy3úassert %(py5)sÚpy5é
   )ú>)z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} > %(py6)sÚlen)r   Úpy1r   Úpy6úassert %(py8)sÚpy8)
r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr   )	r   Ú@py_assert2Ú@py_assert1Ú@py_format4Ú@py_format6Ú@py_assert5Ú@py_assert4Ú@py_format7Ú@py_format9s	            ú8C:\Projects\KieuStory\tests\test_muse_api_integration.pyÚtest_muse_api_key_resolutionr+      sî  € Ý
Ñ
Ô
€CØÐˆ3�dˆ?ÐÐÐÕÔÐÐÐÐˆ3�dÐÑÔÐÕÔÑÔÐÐÕÔˆ3ÑÔÐÕÔˆ3ÑÔÐÐÕÔ�dÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÝˆs‰8Œ8Ð�bÐˆ8�bŠ=ÐÐÐÕÔÐÐÐÐˆ8�bÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔˆ8ÑÔÕÔ�bÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐó    c                  ó–  — d} t          | ¦  «        }t          j        } |¦   «         }||v }|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        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}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 S )Nu.   Cáº£nh ThÃºy Kiá»�u tráº§m tÆ° bÃªn song cá»­a©Úin)zD%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.strip
}()
} in %(py6)sr
   Úguarded)r   Úpy2Úpy4r   r   r   zno music/BGM©z%(py1)s in %(py3)s©r   r   r   r   )r   r
   Ústripr   r   r   r   r   r   r    r!   )Úpromptr0   r#   Ú@py_assert3r&   r(   r)   Ú@py_assert0r"   r$   r%   s              r*   Útest_audio_guard_canonicalr9   !   s  € Ø=€FÝ  Ñ(Ô(€GÝ Ô&Ð3Ð&Ð&Ñ(Ô(Ð3Ð(¨GÐ3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð(¨GÐ3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3Õ Ñ3Ô3Ð3Õ3Ô3Õ Ñ3Ô3Ð3Ð3Õ3Ô3Ð&Ñ3Ô3Õ3Ô3Ð(Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¨GÑ3Ô3Ð3Õ3Ô3¨GÑ3Ô3Ð3Ð3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØÐ$ˆ>˜WÐ$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ>˜WÐ$Ñ$Ô$Õ$Ô$ˆ>Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$˜WÑ$Ô$Ð$Õ$Ô$˜WÑ$Ô$Ð$Ð$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r,   c                  óú  — d} t          | ¦  «        }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	}||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
}||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 S )NuQ   ThÃºy Kiá»�u Ä‘á»©ng trÆ°á»›c náº¥m má»“ cÃ´ quáº¡nh Ä‘áº§y Ã¢m khÃ­ báº¡c má»‡nhu
   náº¥m má»“)únot in)z%(py1)s not in %(py3)sÚcleanedr4   r   r   u   Ã¢m khÃ­u   gÃ² Ä‘áº¥t phá»§ cá»� Ãºar.   r3   )	r   r   r   r   r   r   r   r    r!   )Úrawr<   r8   r"   r$   r%   s         r*   Útest_prompt_sanitizationr>   (   sc  € Ø
]€CÝ˜cÑ"Ô"€GØÐ&ˆ<˜wÐ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ<˜wÐ&Ñ&Ô&Õ&Ô&ˆ<Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&˜wÑ&Ô&Ð&Õ&Ô&˜wÑ&Ô&Ð&Ð&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&ØÐ$ˆ:˜WÐ$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ:˜WÐ$Ñ$Ô$Õ$Ô$ˆ:Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$˜WÑ$Ô$Ð$Õ$Ô$˜WÑ$Ô$Ð$Ð$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ø&Ð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Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1r,   c                  óL  — t          ¦   «         } | j        } |¦   «         }d}||u }|s½t          j        d|fd||f¦  «        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}}|  
                    ¦   «         }|j        }d} ||¦  «        }d}||u }	|	sÐt          j        d|	fd	||f¦  «        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}	}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}||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 )NT)Úis)zK%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.is_available
}()
} is %(py7)sÚclient)r   r1   r2   Úpy7zassert %(py9)sÚpy9Úready)zI%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
} is %(py9)sÚhealth©r   r1   r2   r   rC   úassert %(py11)sÚpy11Úaccountsr.   r3   r4   r   r   Útotalé   )ú>=)z%(py1)s >= %(py4)s)r   r2   zassert %(py6)sr   )r   Úis_availabler   r   r   r   r   r   r    r!   Úcheck_healthÚget)rA   r#   r7   Ú@py_assert6r&   Ú@py_format8Ú@py_format10rE   Ú@py_assert8Ú@py_assert7Ú@py_format12r8   r"   r$   r%   Ú@py_format5r(   s                    r*   Útest_gateway_healthrW   0   s³  € Ý‰_Œ_€FØÔÐ(ÐÐÑ Ô Ð( DÐ(Ð  DÐ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð  DÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ6Ñ(Ô(Ð(Õ(Ô(ˆ6Ñ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô(Ð Ñ(Ô(Õ(Ô( DÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø× Ò Ñ"Ô"€FØŒ:Ð&�gÐ&ˆ:ˆ:�gÑÔÐ& $Ð&Ð $Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ6Ñ&Ô&Ð&Õ&Ô&ˆ6Ñ&Ô&Ð&Ð&Õ&Ô&ˆ:Ñ&Ô&Õ&Ô&�gÑ&Ô&Õ&Ô&ÐÑ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÐˆ:˜ÐÐÐÐÕÔÐÐÐÐˆ:˜ÐÑÔÕÔˆ:ÑÔÐÕÔÑÔÐÐÕÔ˜ÑÔÐÕÔ˜ÑÔÐÐÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ�*Ô˜gÔ&Ð+¨!Ð+Ð&¨!Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð&¨!Ð+Ñ+Ô+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r,   c                  ó  — 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        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}x}x}}d} d}t          | |¬¦  «        }d}||v }|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Ú
shot_closeu%   Cáº­n cáº£nh giá»�t lá»‡ ThÃºy Kiá»�u)r6   Ú
gradio_ltx)ú==)z@%(py6)s
{%(py6)s = %(py0)s(%(py2)s, prompt=%(py4)s)
} == %(py9)sr   rF   rG   rH   Ú	shot_wideu&   ToÃ n cáº£nh kinh thÃ nh nhá»™n nhá»‹p)ÚmuseÚmuse_apir.   )z@%(py6)s
{%(py6)s = %(py0)s(%(py2)s, prompt=%(py4)s)
} in %(py9)s)	r   r   r   r   r   r   r   r    r!   )r#   r7   r&   rS   rT   rR   rU   s          r*   Ú!test_classify_shot_engine_routingr_   9   sV  € Ø ,ÐmÐ5\ÐmÕ Ð5\Ð]Ñ]Ô]ÐmÐamÐmÐ]ÐamÒmÐmÐmÐmÕmÔmÐmÐmÐmÐmÐ]ÐamÐmÑmÔmÐmÕmÔmÑmÔmÐmÐmÕmÔmÕÑmÔmÐmÕmÔmÕÑmÔmÐmÐmÕmÔm ÑmÔmÕmÔmÐ5\ÑmÔmÕmÔmÐ]ÑmÔmÕmÔmÐamÑmÔmÐmÐmÑmÐmÐmÐmÐmÐmÑmÐmÕmÕmÔmÐmÑmÔmÑmÔmÐmÐmÐmÐmÐmÐmÐmÐmÐmÐmÐmØ +ÐuÐ4\ÐuÕ Ð4\Ð]Ñ]Ô]ÐuÐauÐuÐ]ÐauÐuÐuÐuÐuÕuÔuÐuÐuÐuÐuÐ]ÐauÐuÑuÔuÐuÕuÔuÑuÔuÐuÐuÕuÔuÕÑuÔuÐuÕuÔuÕÑuÔuÐuÐuÕuÔu ÑuÔuÕuÔuÐ4\ÑuÔuÕuÔuÐ]ÑuÔuÕuÔuÐauÑuÔuÐuÐuÑuÐuÐuÐuÐuÐuÑuÐuÕuÕuÔuÐuÑuÔuÑuÔuÐuÐuÐuÐuÐuÐuÐuÐuÐuÐuÐuÐuÐur,   Ú__main__z-v)#Ú__doc__Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   ÚosÚsysÚpathlibr   ÚpytestÚ__file__ÚresolveÚparentÚPIPELINE_DIRÚstrÚpathÚinsertÚmuse_api_clientr   r   r   r   r	   r
   Úrun_shotr   r+   r9   r>   rW   r_   Ú__name__Úmain© r,   r*   ú<module>rv      s˜  ððð ð € € € € € € € € € € € € €	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø €€€àˆt�H‰~Œ~×%Ò%Ñ'Ô'Ô.Ô5Ð8PÑP€Ø€3€|ÑÔ˜CœHÐ$Ð$Ø„H‡O‚O�A�s�s˜<Ñ(Ô(Ñ)Ô)Ð)ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )ðð ð ð%ð %ð %ð2ð 2ð 2ð,ð ,ð ,ðvð vð vð
 ˆzÒÐØ€F„K�˜4Ð Ñ!Ô!Ð!Ð!Ð!ð Ðr,   