
    lj&                        d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d	d
lmZ ddZddZ G d de          Zd dZdS )!    )annotations)Callable)Any)CairoRenderer)OpenGLRenderer)Scene)SceneFileWriter)
PixelArrayStrPath   )_FramesTester
base_scenetype[Scene]construct_testCallable[[Scene], None]test_renderer%CairoRenderer | OpenGLRenderer | Nonereturnc                ,     G fdd|           }|S )Nc                  0     e Zd Zd fdZd	fdZ xZS )
,_make_test_scene_class.<locals>._TestedSceneargsr   kwargsr   Nonec                >     t                      j        |di| d S )Nrenderer)super__init__)selfr   r   	__class__r   s      a/home/agentuser/manim-venv/lib/python3.11/site-packages/manim/utils/testing/_test_class_makers.pyr   z5_make_test_scene_class.<locals>._TestedScene.__init__   s*    EGGdE]EfEEEEE    c                     |            | j         P|                     |                     | j                              | j                            | d| j                   d S d S Nr   )
animationsupdate_to_timeget_run_timer   rendermoving_mobjects)r   r   s    r!   	constructz6_make_test_scene_class.<locals>._TestedScene.construct   sl    N4    *##D$5$5do$F$FGGG$$T1d.BCCCCC +*r"   )r   r   r   r   r   r   r   r   )__name__
__module____qualname__r   r*   __classcell__)r    r   r   s   @r!   _TestedScener      sr        	F 	F 	F 	F 	F 	F 	F	D 	D 	D 	D 	D 	D 	D 	D 	D 	Dr"   r0    )r   r   r   r0   s    `` r!   _make_test_scene_classr2      sP    
D 
D 
D 
D 
D 
D 
D 
Dz 
D 
D 
D r"   from_renderertyper   c                "     G d d|           }|S )Nc                      e Zd ZdS )0_make_test_renderer_class.<locals>._TestRendererN)r,   r-   r.   r1   r"   r!   _TestRendererr7   &   s        r"   r8   r1   )r3   r8   s     r!   _make_test_renderer_classr9   $   s4            r"   c                  n     e Zd ZdZd! fd
Zd"dZd#dZ	 d$d%dZd&d'dZd(dZ	d(dZ
d(dZ	 d)d*d Z xZS )+DummySceneFileWriterz4Delegate of SceneFileWriter used to test the frames.r   CairoRenderer | OpenGLRenderer
scene_namestrr   r   r   r   c                L     t                      j        ||fi | d| _        d S )Nr   )r   r   i)r   r   r=   r   r    s       r!   r   zDummySceneFileWriter.__init__/   s1     	:88888r"   c                    d S Nr1   )r   r=   s     r!   init_output_directoriesz,DummySceneFileWriter.init_output_directories8       r"   hash_animation
str | Nonec                    d S rB   r1   )r   rE   s     r!   add_partial_movie_filez+DummySceneFileWriter.add_partial_movie_file;   rD   r"   TNallow_writebool	file_pathStrPath | Nonec                    d S rB   r1   )r   rI   rK   s      r!   begin_animationz$DummySceneFileWriter.begin_animation>   s	     	r"   Fc                    d S rB   r1   )r   rI   s     r!   end_animationz"DummySceneFileWriter.end_animationC   rD   r"   c                    d S rB   r1   r   s    r!   combine_to_moviez%DummySceneFileWriter.combine_to_movieF   rD   r"   c                    d S rB   r1   rR   s    r!   combine_to_section_videosz.DummySceneFileWriter.combine_to_section_videosI   rD   r"   c                    d S rB   r1   rR   s    r!   clean_cachez DummySceneFileWriter.clean_cacheL   rD   r"   r   frame_or_rendererPixelArray | OpenGLRenderer
num_framesintc                &    | xj         dz  c_         d S r$   )r@   )r   rX   rZ   s      r!   write_framez DummySceneFileWriter.write_frameO   s     	!r"   )r   r<   r=   r>   r   r   r   r   )r=   r>   r   r   )rE   rF   r   r   )TN)rI   rJ   rK   rL   r   r   )F)rI   rJ   r   r   r+   r   rX   rY   rZ   r[   r   r   )r,   r-   r.   __doc__r   rC   rH   rN   rP   rS   rU   rW   r]   r/   )r    s   @r!   r;   r;   ,   s        >>            EI    
              QR        r"   r;   testerr   type[SceneFileWriter]c                2      G  fddt                     }|S )Nc                  (     e Zd Z	 d	d
 fdZ xZS ):_make_scene_file_writer_class.<locals>.TestSceneFileWriterr   rX   rY   rZ   r[   r   r   c                                         | j        |           t                                          ||           d S )N)rZ   )check_framer@   r   r]   )r   rX   rZ   r    ra   s      r!   r]   zF_make_scene_file_writer_class.<locals>.TestSceneFileWriter.write_frameW   sB     tv'8999GG 1jIIIIIr"   r^   r_   )r,   r-   r.   r]   r/   )r    ra   s   @r!   TestSceneFileWriterre   V   sW        TU	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Jr"   rh   )r;   )ra   rh   s   ` r!   _make_scene_file_writer_classri   U   sJ    J J J J J J J2 J J J r"   N)r   r   r   r   r   r   r   r   )r3   r4   r   r   )ra   r   r   rb   )
__future__r   collections.abcr   typingr   manim.renderer.cairo_rendererr   manim.renderer.opengl_rendererr   manim.scene.scener   manim.scene.scene_file_writerr	   manim.typingr
   r   _frames_testersr   r2   r9   r;   ri   r1   r"   r!   <module>rs      s   " " " " " " $ $ $ $ $ $       7 7 7 7 7 7 9 9 9 9 9 9 # # # # # # 9 9 9 9 9 9 , , , , , , , , * * * * * *   *   & & & & &? & & &R     r"   