
    k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 d d	lmZ d d
lmZ d dlmZ deeef         ddfdZdeeef         ddfdZdeeef         ddfdZdeeef         ddfdZdeeef         ddfdZdeeef         deeeef                  ddfdZedeeeef                  deeeeef                           fd            ZdS )    )Iterator)contextmanager)Path)Union)settings)ImproperlyConfigured)data)programs)scenes)
TextureAny)texturespathreturnNc                 ~    t          |            t          |            t          |            t          |            dS )zpAdds a resource directory for all resource types

    Args:
        path (Union[Path, str]): Directory path
    N)register_data_dirregister_program_dirregister_scene_dirregister_texture_dirr   s    ]/home/agentuser/manim-venv/lib/python3.11/site-packages/moderngl_window/resources/__init__.pyregister_dirr      sB     dt    c                 :    t          | t          j                   dS )zsAdds a resource directory specifically for programs

    Args:
        path (Union[Path, str]): Directory path
    N)_append_unique_pathr   PROGRAM_DIRSr   s    r   r   r           h344444r   c                 :    t          | t          j                   dS )zsAdds a resource directory specifically for textures

    Args:
        path (Union[Path, str]): Directory path
    N)r   r   TEXTURE_DIRSr   s    r   r   r   $   r   r   c                 :    t          | t          j                   dS )zqAdds a resource directory specifically for scenes

    Args:
        path (Union[Path, str]): Directory path
    N)r   r   
SCENE_DIRSr   s    r   r   r   -   s     h122222r   c                 :    t          | t          j                   dS )zuAdds a resource directory specifically for data files

    Args:
        path (Union[Path, str]): Directory path
    N)r   r   	DATA_DIRSr   s    r   r   r   6   s     h011111r   destc                 $   t          |           } |                                 s"t          d                    |                     |                                 s"t          d                    |                     |                                 s"t          d                    |                     |D ]'}t          |                              |           r d S (|                    t          |                                                      d S )Nz Search path must be absolute: {}z"Search path is not a directory: {}zSearch path do not exist: {})	r   is_absoluter   formatis_direxistssamefileappendabsolute)r   r#   resource_paths      r   r   r   ?   s    ::D T"#E#L#LT#R#RSSS;;== V"#G#N#Nt#T#TUUU;;== P"#A#H#H#N#NOOO + +''-- 	EE	 	DJJ''))*****r   dirsc              #     K   t           j        }t           j        }t           j        }t           j        }| t           _        | t           _        | t           _        | t           _        	 | V  |t           _        |t           _        |t           _        |t           _        dS # |t           _        |t           _        |t           _        |t           _        w xY w)zTemporarily changes all resource directories

    Example::

        with temporary_dirs([path1, path2, path3]):
            # Load some resource here

    Args:
        dirs (Union[Path,str]) list of paths to use
    N)r   r"   r   r    r   )r-   	data_dirsprogram_dirs
scene_dirstextures_dirss        r   temporary_dirsr3   Q   s       "I(L$J)MH HH H.


& ,( - ' ,( -----s   $B 2C)collections.abcr   
contextlibr   pathlibr   typingr   moderngl_window.confr   moderngl_window.exceptionsr   moderngl_window.resources.datar	   "moderngl_window.resources.programsr
    moderngl_window.resources.scenesr   "moderngl_window.resources.texturesr   r   strr   r   r   r   r   listr   r3    r   r   <module>rA      s<   $ $ $ $ $ $ % % % % % %             ) ) ) ) ) ) ; ; ; ; ; ; 7 7 7 7 7 7 C C C C C C = = = = = = G G G G G G C C C C C C	uT3Y' 	D 	 	 	 	5uT3Y/ 5D 5 5 5 55uT3Y/ 5D 5 5 5 53U49- 3$ 3 3 3 32E$), 2 2 2 2 2+eD#I. +d5s;K6L +QU + + + +$ .eD#I./ .HT%c	BR=S4T . . . . . .r   