
    \
j2                     "   d 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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.
    N	debug_libdebug_traceis_pyglet_doc_runFsearch_local_libslibwin32PATHc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )_TraceFunctionc                     || j         d<   d S )N_func)__dict__)selffuncs     D/DATA/AppData/hermes/venv/lib/python3.11/site-packages/pyglet/lib.py__init__z_TraceFunction.__init__A   s    !%g    c                     | j         j        S N)r   __name__r   s    r   __str__z_TraceFunction.__str__D   s    z""r   c                      | j         |i |S r   )r   r   argskwargss      r   __call__z_TraceFunction.__call__G   s    tz4*6***r   c                 ,    t          | j        |          S r   )getattrr   r   names     r   __getattr__z_TraceFunction.__getattr__J   s    tz4(((r   c                 2    t          | j        ||           d S r   )setattrr   r   r!   values      r   __setattr__z_TraceFunction.__setattr__M   s    
D%(((((r   N)r   
__module____qualname__r   r   r   r"   r'    r   r   r   r   @   s_        & & &# # #+ + +) ) )) ) ) ) )r   r   c                       e Zd Zd Zd ZdS )_TraceLibraryc                 2    || _         t          |           d S r   )_libraryprint)r   librarys     r   r   z_TraceLibrary.__init__R   s    gr   c                 N    t          | j        |          }t          |          }|S r   )r   r.   r   )r   r!   r   fs       r   r"   z_TraceLibrary.__getattr__V   s%    t}d++4  r   N)r   r(   r)   r   r"   r*   r   r   r,   r,   Q   s2              r   r,   c                   *    e Zd ZdZd Zd Zd Zd ZdS )LibraryMockz0Mock library used when generating documentation.c                     t                      S r   r4   r    s     r   r"   zLibraryMock.__getattr___       == r   c                     d S r   r*   r%   s      r   r'   zLibraryMock.__setattr__b   s    Dr   c                     t                      S r   r6   r   s      r   r   zLibraryMock.__call__e   r7   r   c                     dS )Nr   r*   )r   others     r   
__rshift__zLibraryMock.__rshift__h   s    1r   N)r   r(   r)   __doc__r"   r'   r   r<   r*   r   r   r4   r4   ]   sV        >>	! 	! 	!	 	 		! 	! 	!	 	 	 	 	r   r4   c                   N    e Zd Zej        Zedk    rdZd Zd Zed             Z	dS )LibraryLoadercygwinr   c                    t           rt                      S d|v r&| j        dk    r|                     |d                   S |st	          d          |                    | j        g           }t          |t                    r|g}n%t          |          t          u rt          |          }| j                            d          r4|D ]1}|                     |          }|                    |pd|z             2|                    |           |D ]T}	 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,          $ r3}	t$          r"t'          d| dt          |	                      Y d}	~	nGd}	~	ww xY w| j        d	k    r4|j        d
k    r)t$          r"t'          d| dt          |                      Y d}~Nd}~ww xY wt	          d|d         z            )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linuxzlib%s.soNz!Unexpected error loading library z: r   ~   zLibrary "%s" not found.r   )_is_pyglet_doc_runr4   platformload_frameworkImportErrorget
isinstancestrtypetuplelist
startswithfind_libraryappendextendctypescdllLoadLibrary
_debug_libr/   _debug_tracer,   OSErrorwinerror)
r   namesr   platform_namesr!   libnamer   opathes
             r   load_libraryzLibraryLoader.load_librarys   s     	!== &  T]h%>%>&&vk':;;; 	;9:::DM266nc** 	2,-NN.!!U**!.11N=##G,, 	D D D++D11%%g&Bd1BCCCCe$$$" 	T 	TDTk--d33  $KKK -',,C


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







" X X X% X!"Vd"V"VcRSff"V"VWWWX ]g--!*2C2C! TR$RR#a&&RRSSST" 3eAh>???sE   AE""
I",IAGI"
H")HIHAII"c                 @    t           j                            |          S r   )rT   utilrQ   r    s     r   rQ   zLibraryLoader.find_library   s    {''---r   c                      t          d          )Nz&Can't load framework on this platform.)RuntimeError)r!   s    r   rH   zLibraryLoader.load_framework   s    CDDDr   N)
r   r(   r)   pygletcompat_platformrG   ra   rQ   staticmethodrH   r*   r   r   r?   r?   l   sn        %H86@ 6@ 6@p. . . E E \E E Er   r?   c                   0    e Zd Zd Zd Zed             ZdS )MachOLibraryLoaderc                 Z   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          | _        n't           j        	                    d          ddg| _        dg| _
        d S )	NLD_LIBRARY_PATH:DYLD_LIBRARY_PATHDYLD_FALLBACK_LIBRARY_PATHz~/libz/usr/local/lib/usr/libz/opt/homebrew/lib)osenvironsplitld_library_path_local_lib_pathsjoindyld_library_pathdyld_fallback_library_pathr_   
expanduserbrew_library_pathr   s    r   r   zMachOLibraryLoader.__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+ #6!6r   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          rpt          t          d          r[t          j
        du rMt          j        dk    r=|                    t           j                            t          j                             d|v r|                    fd| j        D                        |                    |           |                    fd| j        D                        |                    fd| j        D                        n|                    fd| j        D                        |                    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_MEIPASSTrC   /c                 P    g | ]"}t           j                            |          #S r*   rq   r_   rv   .0pr]   s     r   
<listcomp>z3MachOLibraryLoader.find_library.<locals>.<listcomp>   )    YYYQQ 8 8YYYr   c                 P    g | ]"}t           j                            |          #S r*   r   r   s     r   r   z3MachOLibraryLoader.find_library.<locals>.<listcomp>   )    bbbQQ 8 8bbbr   c                 P    g | ]"}t           j                            |          #S r*   r   r   s     r   r   z3MachOLibraryLoader.find_library.<locals>.<listcomp>   r   r   c                 P    g | ]"}t           j                            |          #S r*   r   r   s     r   r   z3MachOLibraryLoader.find_library.<locals>.<listcomp>   s)    WWWQQ 8 8WWWr   c                 P    g | ]"}t           j                            |          #S r*   r   r   s     r   r   z3MachOLibraryLoader.find_library.<locals>.<listcomp>   r   r   c                 P    g | ]"}t           j                            |          #S r*   r   r   s     r   r   z3MachOLibraryLoader.find_library.<locals>.<listcomp>   r   r   c                 P    g | ]"}t           j                            |          #S r*   r   r   s     r   r   z3MachOLibraryLoader.find_library.<locals>.<listcomp>   r   r   )rq   r_   basenamer   sysrr   rR   rv   rJ   hasattrr|   rf   rg   r   rS   rw   rx   rz   rt   exists)r   r_   search_pathr]   s      @r   rQ   zMachOLibraryLoader.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 C"" 	DwsJ'?'? 	D
d""v'='I'Irw||CL'BBCCC$;;YYYY$BXYYYZZZt$$$bbbb$BabbbcccYYYY$BXYYYZZZZ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YYYY$BXYYYZZZ 	 	Dw~~d##  tr   c                 >   t           j                            |           }|ddddd}|                    |           }|rMt           j                            |          }t          rt          |           t          rt          |          }|S t          d| z            )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 %s.)rT   rc   rQ   rJ   rU   rV   rW   r/   rX   r,   rI   )r!   r_   
frameworksr   s       r   rH   z!MachOLibraryLoader.load_framework   s    {''-- <EKNN	 J >>$''D 	+))$//C d )#C((J4t;<<<r   N)r   r(   r)   r   rQ   rh   rH   r*   r   r   rj   rj      sN        7 7 701 1 1f = = \= = =r   rj   c                   8    e Zd ZdZdZed             Zd Zd ZdS )LinuxLibraryLoaderNc                 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compilerq   listdirmatchr_   rv   grouprY   )directoriescachelib_re	directoryfiler   r_   r0   s           r   
_find_libszLinuxLibraryLoader._find_libs  s    233$ 	 	IJy11 
2 
2D"LL..E 2!w||It<<u,,*.E$K"'++a.."%//-1E'N
2    s   A5B
BBc                    g }	 |                     t          j        d                             d                     n# t          $ r Y nw xY w	 t          d          5 }|                     d |D                        d d d            n# 1 swxY w Y   n# t          $ r Y nw xY w|                     ddg           |                     |          | _        d S )Nrl   rm   z/etc/ld.so.confc                 6    g | ]}|                                 S r*   )strip)r   dirs     r   r   z:LinuxLibraryLoader._create_ld_so_cache.<locals>.<listcomp>A  s     #?#?#?CCIIKK#?#?#?r   z/librp   )	rS   rq   rr   rs   KeyErroropenIOErrorr   _ld_so_cache)r   r   fids      r   _create_ld_so_cachez&LinuxLibraryLoader._create_ld_so_cache1  sJ    	rz*;<BB3GGHHHH 	 	 	D		'(( AC""#?#?3#?#?#?@@@A A A A A A A A A A A A A A A 	 	 	D	 	FJ/000 OOK88sE   8= 
A
	A
B  B	=B 	BB BB 
B"!B"c                 8   t           r<| j        s|                     t                     | _        || j        v r| j        |         S t          j                            |          }|r|S | j        |                                  | j                            |          S r   )	ru   _local_libs_cacher   rT   rc   rQ   r   r   rJ   )r   r_   results      r   rQ   zLinuxLibraryLoader.find_libraryI  s      	4) K)-9I)J)J&t----d33 ))$// 	M$$$&&& $$T***r   )	r   r(   r)   r   r   rh   r   r   rQ   r*   r   r   r   r     sV        L  \(9 9 90+ + + + +r   r   rC   rD   ) r=   rq   r   r   rT   ctypes.utilrf   optionsrW   rX   r   rF   resourceget_script_homescript_pathgetcwdcwdr_   rv   ru   rg   rr   pathsepr   r,   r4   r?   rj   r   loaderrP   ra   r*   r   r   <module>r      s  F 
 
			 				 



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

6bj2:??;K+L+LLL) ) ) ) ) ) ) )"                DE DE DE DE DE DE DE DENb= b= b= b= b= b= b= b=JF+ F+ F+ F+ F+ F+ F+ F+R 
X%%!!FF&&w// !!FF]__F"r   