
    ^j.                    J   d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZmZ e	j        d         Ze	j        d         Z eedd          Ze	j        d	         re	j                                        Z ej                    Zeej                            ed
          ej                            ed
          gZe	j        dk    r5ej        dxx         ej        ej                            e          z   z  cc<   ndZ G d d          Z G d d          Zer G d d          Z  G d d          Z! G d de!          Z" G d de!          Z#e	j        dk    r e"            Z$n/e	j        %                    d          r e#            Z$n
 e!            Z$e$j&        Z&dS )zUFunctions for loading dynamic libraries.

These extend and correct ctypes functions.
    )annotationsN)NoReturnCallableAny	debug_libdebug_traceis_pyglet_doc_runFsearch_local_libslibwin32PATHc                  4    e Zd ZddZddZd ZddZddZdS )_TraceFunctionfuncr   returnNonec                    || j         d<   d S )N_func)__dict__)selfr   s     E/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/lib.py__init__z_TraceFunction.__init__"   s    !%g    strc                    | j         j        S N)r   __name__)r   s    r   __str__z_TraceFunction.__str__%   s    z""r   c                     | j         |i |S r   )r   r   argskwargss      r   __call__z_TraceFunction.__call__(   s    tz4*6***r   namer   c                ,    t          | j        |          S r   )getattrr   r   r$   s     r   __getattr__z_TraceFunction.__getattr__+   s    tz4(((r   valueobjectc                2    t          | j        ||           d S r   )setattrr   r   r$   r)   s      r   __setattr__z_TraceFunction.__setattr__.   s    
D%(((((r   N)r   r   r   r   )r   r   )r$   r   r   r   )r$   r   r)   r*   r   r   )r   
__module____qualname__r   r   r#   r(   r.    r   r   r   r   !   ss        & & & &# # # #+ + +) ) ) )) ) ) ) ) )r   r   c                      e Zd ZddZdd	Zd
S )_TraceLibrarylibraryr   r   r   c                2    || _         t          |           d S r   )_libraryprint)r   r4   s     r   r   z_TraceLibrary.__init__3   s    gr   r$   r   r   c                J    t          | j        |          }t          |          S r   )r&   r6   r   )r   r$   r   s      r   r(   z_TraceLibrary.__getattr__7   s!    t}d++d###r   N)r4   r   r   r   )r$   r   r   r   )r   r/   r0   r   r(   r1   r   r   r3   r3   2   s<           $ $ $ $ $ $r   r3   c                  0    e Zd ZdZddZddZd Zdd
ZdS )LibraryMockz0Mock library used when generating documentation.r$   r   c                    t                      S r   r:   r'   s     r   r(   zLibraryMock.__getattr__?       == r   r   r   c                    d S r   r1   r-   s      r   r.   zLibraryMock.__setattr__B   s    Dr   c                    t                      S r   r<   r    s      r   r#   zLibraryMock.__call__E   r=   r   otherc                    dS )Nr   r1   )r   r@   s     r   
__rshift__zLibraryMock.__rshift__H   s    1r   N)r$   r   )r$   r   r   r   )r@   r:   )r   r/   r0   __doc__r(   r.   r#   rB   r1   r   r   r:   r:   =   se        >>	! 	! 	! 	!	 	 	 		! 	! 	!	 	 	 	 	 	r   r:   c                  T    e Zd Zej        Zedk    rdZddZdd	Zedd            Z	dS )LibraryLoadercygwinr   namesr   c           	        t           rt                      S d|v r&| j        dk    r|                     |d                   S |sd}t	          |          |                    | j        g           }t          |t                    r|g}n%t          |          t          u rt          |          }| j                            d          r5|D ]2}|                     |          }|                    |pd| d           3|                    |           |D ]N}	 t          j                            |          }t$          r#t'          ||                     |                     t(          rt+          |          }|c S # t,          $ r}|                     |          }	|	r	 t          j                            |	          }t$          rt'          |	           t(          rt+          |          }|cY d}~c S # t,          $ r&}
t$          rt'          d| d	|
           Y d}
~
n:d}
~
ww xY w| j        d
k    r'|j        dk    rt$          rt'          d| d	|           Y d}~Hd}~ww xY wd|d          d}t	          |          )zFind and load a library.

        More than one name can be specified, they will be tried in order.
        Platform-specific library names (given as kwargs) are tried first.

        Raises ImportError if library is not found.
        	frameworkdarwinzNo library name specifiedlinuxr   z.soNz!Unexpected error loading library z: r   ~   z	Library "r   z" not found.)_is_pyglet_doc_runr:   platformload_frameworkImportErrorget
isinstancer   typetuplelist
startswithfind_libraryappendextendctypescdllLoadLibrary
_debug_libr7   _debug_tracer3   OSErrorwinerror)r   rG   r"   msgplatform_namesr$   libnamer   opathes              r   load_libraryzLibraryLoader.load_libraryS   s     	!== &  T]h%>%>&&vk':;;; 	#-Cc"""DM266nc** 	2,-NN.!!U**!.11N=##G,, 	B B B++D11%%g&@tAAAAe$$$" 	M 	MDMk--d33 9$ 1 1$ 7 7888 -',,C


 M M M((.. M	U$k55d;;% (!$KKK' 5"/"4"4C"







" U U U% U!"Sd"S"Sa"S"STTTU ]g--!*2C2C
2CKdKKaKKLLLM  1%(000#sD   A E99
IIAG/'I/
H9HIH5IIr$   r   
str | Nonec                @    t           j                            |          S r   )rZ   utilrW   r'   s     r   rW   zLibraryLoader.find_library   s    {''---r   _namer   c                $    d}t          |          )Nz&Can't load framework on this platform.)RuntimeError)rk   ra   s     r   rO   zLibraryLoader.load_framework   s    63r   N)rG   r   )r$   r   r   rh   )rk   r   r   r   )
r   r/   r0   pygletcompat_platformrN   rg   rW   staticmethodrO   r1   r   r   rE   rE   L   su        %H87 7 7 7r. . . .       \     r   rE   c                  6    e Zd ZddZddZedd
            ZdS )MacOSLibraryLoaderr   r   c                   dt           j        v r+t           j        d                             d          | _        ng | _        t          r;t          | j        z   | _        d                    | j                  t           j        d<   dt           j        v r+t           j        d                             d          | _        ng | _        dt           j        v r,t           j        d                             d          | _        d S t           j        	                    d          ddg| _        dt           j        v rmt           j                            t           j        d         d	          }t           j        
                    |          r| j                            |           d S d S t           j        
                    d
          r| j                            d
           d S d S )NLD_LIBRARY_PATH:DYLD_LIBRARY_PATHDYLD_FALLBACK_LIBRARY_PATHz~/libz/usr/local/lib/usr/libHOMEBREW_PREFIXr   z/opt/homebrew/lib)osenvironsplitld_library_path_local_lib_pathsjoindyld_library_pathdyld_fallback_library_pathre   
expanduserexistsrX   )r   brew_lib_paths     r   r   zMacOSLibraryLoader.__init__   s   
**#%:.?#@#F#Fs#K#KD  #%D  	K#3d6J#JD ,/HHT5I,J,JBJ()"*,,%'Z0C%D%J%J3%O%OD""%'D"'2:55.0j9U.V.\.\]`.a.aD+++/1w/A/A'/J/JL\^h.iD+ !BJ.. "RZ8I-JE R R7>>-00 J3::=IIIIIJ J 7>>"566 P3::;NOOOOOP Pr   re   r   rh   c                   t           j                            |          g }dvrdz   dz   t          t          dd          dk    rSdt           j        v rE|                    t           j                            t           j        d         dd                     t           j                            d	d
          rD|                    t           j                            t           j        d	         d                     t          t          dd
          rKt          t          dd          x}r3|                    t           j                            |                     t           j                            d	d
          rD|                    t           j                            t           j        d	         d                     d|v rb|	                    fd| j
        D                        |                    |           |	                    fd| j        D                        n|	                    fd| j        D                        |	                    fd| j
        D                        |                    |           |	                    fd| j        D                        |D ]%}t           j                            |          r|c S &dS )a  Implements the dylib search as specified in Apple documentation:

        http://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryUsageGuidelines.html

        Before commencing the standard search, the method first checks
        the bundle's ``Frameworks`` directory if the application is running
        within a bundle (OS X .app).
        z.dylibr   frozenN
macosx_appRESOURCEPATHz..
FrameworksCONDA_PREFIXF_MEIPASS/c                P    g | ]"}t           j                            |          #S r1   rz   re   r   .0prc   s     r   
<listcomp>z3MacOSLibraryLoader.find_library.<locals>.<listcomp>   )    YYYQQ 8 8YYYr   c                P    g | ]"}t           j                            |          #S r1   r   r   s     r   r   z3MacOSLibraryLoader.find_library.<locals>.<listcomp>   )    bbbQQ 8 8bbbr   c                P    g | ]"}t           j                            |          #S r1   r   r   s     r   r   z3MacOSLibraryLoader.find_library.<locals>.<listcomp>   s)    WWWQQ 8 8WWWr   c                P    g | ]"}t           j                            |          #S r1   r   r   s     r   r   z3MacOSLibraryLoader.find_library.<locals>.<listcomp>   r   r   c                P    g | ]"}t           j                            |          #S r1   r   r   s     r   r   z3MacOSLibraryLoader.find_library.<locals>.<listcomp>   r   r   )rz   re   basenamer&   sysr{   rX   r   rQ   rY   r   r   r}   r   )r   re   search_pathmeipassrc   s       @r   rW   zMacOSLibraryLoader.find_library   s    '""4((7""go0G 3$''<77Nbj<X<Xrw||BJ~,F,0,8,3 5  5 6 6 6 :>>.%00 	Yrw||BJ~,FwWWXXX 3%(( 	?jRV9W9W.Wg 	?rw||GW==>>> :>>.%00 	Yrw||BJ~,FwWWXXX$;;YYYY$BXYYYZZZt$$$bbbb$BabbbccccWWWW$BVWWWXXXYYYY$BXYYYZZZt$$$bbbb$Babbbccc 	 	Dw~~d##  tr   r$   ctypes.CDLL | _TraceLibraryc                D   t           j                            |           }|ddddd}|                    |           }|rMt           j                            |          }t          rt          |           t          rt          |          }|S d|  d}t          |          )Nz,/System/Library/Frameworks/AGL.framework/AGLz0/System/Library/Frameworks/IOKit.framework/IOKitz2/System/Library/Frameworks/OpenAL.framework/OpenALz2/System/Library/Frameworks/OpenGL.framework/OpenGL)AGLIOKitOpenALOpenGLzCan't find framework .)rZ   rj   rW   rQ   r[   r\   r]   r7   r^   r3   rP   )r$   re   
frameworksr   ra   s        r   rO   z!MacOSLibraryLoader.load_framework   s    {''-- <EKNN	 J >>$''D 	+))$//C d )#C((J-d---#r   Nr   r   )re   r   r   rh   )r$   r   r   r   )r   r/   r0   r   rW   rp   rO   r1   r   r   rr   rr      sb        P P P PB1 1 1 1f    \  r   rr   c                  >    e Zd ZdZdZedd            ZddZddZdS )LinuxLibraryLoaderNdirectories	list[str]r   dict[str, str]c                H   i }t          j        d          }| D ]}	 t          j        |          D ]`}|                    |          }|rGt          j                            ||          }||vr|||<   |                    d          }||vr|||<   ay# t          $ r Y w xY w|S )Nzlib(.*)\.so(?:$|\.)   )	recompilerz   listdirmatchre   r   groupr_   )r   libslib_re	directoryfiler   re   r4   s           r   
_find_libszLinuxLibraryLoader._find_libs  s    233$ 	 	IJy11 
1 
1D"LL..E 1!w||It<<t++)-DJ"'++a.."$..,0DM
1    s   A5B
BBr   c                ,   g }t          j        t                    5  |                    t          j        d                             d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          d          5 }|                    d |D                        d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    ddg           | 	                    |          | _
        d S )Nrt   ru   z/etc/ld.so.confc                6    g | ]}|                                 S r1   )strip)r   r   s     r   r   z:LinuxLibraryLoader._create_ld_so_cache.<locals>.<listcomp>*  s"    GGGi	 1 1GGGr   z/librx   )
contextlibsuppressKeyErrorrY   rz   r{   r|   r_   openr   _ld_so_cache)r   r   fids      r   _create_ld_so_cachez&LinuxLibraryLoader._create_ld_so_cache  s     ** 	I 	Irz*;<BB3GGHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I  )) 	I 	I40A+B+B 	IcGG3GGGHHH	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 	FJ/000 OOK88sG   9A!!A%(A%C C5CC	CC		CCCre   r   c                8   t           r<| j        s|                     t                     | _        || j        v r| j        |         S t          j                            |          }|r|S | j        |                                  | j                            |          S r   )	r~   _local_libs_cacher   rZ   rj   rW   r   r   rQ   )r   re   results      r   rW   zLinuxLibraryLoader.find_library0  s      	4) K)-9I)J)J&t----d33 ))$// 	M$$$&&& $$T***r   )r   r   r   r   r   )re   r   r   r   )	r   r/   r0   r   r   rp   r   r   rW   r1   r   r   r   r     se        L   \(9 9 9 9&+ + + + + +r   r   rJ   rK   )'rC   
__future__r   rz   r   r   r   rZ   ctypes.utilrn   typingr   r   r   optionsr]   r^   r&   rM   resourceget_script_homescript_pathgetcwdcwdre   r   r~   ro   r{   pathsepr   r3   r:   rE   rr   r   loaderrV   rg   r1   r   r   <module>r      s    # " " " " " 				 				 



           * * * * * * * * * *^K(
~m,WS"5u== 	>%& /1133K
")++C#RW\\+u%E%Erw||TWY^G_G_`((

6bj2:??;K+L+LLL) ) ) ) ) ) ) )"$ $ $ $ $ $ $ $         F  F  F  F  F  F  F  F Rl l l l l l l l^A+ A+ A+ A+ A+ A+ A+ A+H 
X%%!!FF&&w// !!FF]__F"r   