
    daf                     >   d Z ddlZddlmZ ddlmZ ddl 	 ddlmZ g dZ
ej                  j                  d	      d
ddgZej                  j                  d      dddgZd ZddZddZddZddZddZddZddZddZddZddZddZy# e	$ r d ZY |w xY w)z
dyld emulation
    N)framework_info)
dylib_info)*) _dyld_shared_cache_contains_pathc                      t         N)NotImplementedError)argss    //root/Python-3.12.4/Lib/ctypes/macholib/dyld.pyr   r      s    !!    )	dyld_findframework_findr   r   z~/Library/Frameworksz/Library/Frameworksz/Network/Library/Frameworksz/System/Library/Frameworksz~/libz/usr/local/libz/libz/usr/libc                 r    | t         j                  } | j                  |      }|g S |j                  d      S )N:)osenvirongetsplit)envvarrvals      r   dyld_envr   $   s5    
{jj773<D|	::c?r   c                 H    | t         j                  } | j                  d      S )NDYLD_IMAGE_SUFFIX)r   r   r   r   s    r   dyld_image_suffixr   ,   s     
{jj77&''r   c                     t        | d      S )NDYLD_FRAMEWORK_PATHr   r   s    r   dyld_framework_pathr    1   s    C.//r   c                     t        | d      S )NDYLD_LIBRARY_PATHr   r   s    r   dyld_library_pathr#   4   s    C,--r   c                     t        | d      S )NDYLD_FALLBACK_FRAMEWORK_PATHr   r   s    r   dyld_fallback_framework_pathr&   7   s    C788r   c                     t        | d      S )NDYLD_FALLBACK_LIBRARY_PATHr   r   s    r   dyld_fallback_library_pathr)   :   s    C566r   c                 :    t        |      }|| S | |fd} |       S )z>For a potential path iterator, add DYLD_IMAGE_SUFFIX semanticsc              3      K   | D ]6  }|j                  d      r|d t        d        |z   dz    n||z    | 8 y w)Nz.dylib)endswithlen)iteratorsuffixpaths      r   _injectz)dyld_image_suffix_search.<locals>._injectB   sM      	D}}X&?S]N+f4x??Vm#J	s   =?)r   )r.   r   r/   r1   s       r   dyld_image_suffix_searchr2   =   s*    s#F~!&  9r   c              #   .  K   t        |       }|5t        |      D ]'  }t        j                  j	                  ||d          ) t        |      D ]A  }t        j                  j	                  |t        j                  j                  |              C y wNname)r   r    r   r0   joinr#   basename)r5   r   	frameworkr0   s       r   dyld_override_searchr9   K   s      t$I', 	8D'',,tYv%677	8
 "#& 9ggll4!1!1$!7889s   BBc              #      K   | j                  d      r2|/t        j                  j                  || t	        d      d         y y y w)Nz@executable_path/)
startswithr   r0   r6   r-   )r5   executable_paths     r   dyld_executable_path_searchr=   \   sF      *+0Kggll?D5H1I1J,KLL 1L+s   AAc              #   @  K   |  t        |       }|7t        |      }|D ]'  }t        j                  j	                  ||d          ) t        |      }|D ]A  }t        j                  j	                  |t        j                  j                  |              C |2s0t        D ]'  }t        j                  j	                  ||d          ) |sKt        D ]A  }t        j                  j	                  |t        j                  j                  |              C y y wr4   )	r   r&   r   r0   r6   r)   r7   DEFAULT_FRAMEWORK_FALLBACKDEFAULT_LIBRARY_FALLBACK)r5   r   r8   fallback_framework_pathr0   fallback_library_paths         r   dyld_default_searchrC   c   s     
Jt$I">s"C+ 	8D'',,tYv%677	8 7s;% 9ggll4!1!1$!7889 %<. 	8D'',,tYv%677	8 !, 	=D'',,tRWW%5%5d%;<<	= !s   DDc           
         t        t        t        | |      t        | |      t	        | |            |      D ]5  }t
        j                  j                  |      r|c S 	 t        |      r|c S 7 t        d| d      # t        $ r Y Rw xY w)z:
    Find a library or framework using dyld semantics
    zdylib z could not be found)r2   chainr9   r=   rC   r   r0   isfiler   r	   
ValueError)r5   r<   r   r0   s       r   r   r   y   s     )$T3/+D/B#D#.* 	  77>>$K	/5 6 d<
== # 		s   A==	B	B	c                 n   d}	 t        | ||      S # t        $ r}|}Y d}~nd}~ww xY w| j                  d      }|dk(  rt        |       }| dz  } t        j
                  j                  | t        j
                  j                  | d|             } 	 t        | ||      d}S # t        $ r |w xY w# d}w xY w)z
    Find a framework using dyld semantics in a very loose manner.

    Will take input such as:
        Python
        Python.framework
        Python.framework/Versions/Current
    N)r<   r   z
.framework)r   rG   rfindr-   r   r0   r6   r7   )fnr<   r   errore
fmwk_indexs         r   r   r      s     E_#FF ,'JRW

l	b"''**2kz?;	<B_#F    s(    	'"'B! !B--B0 0B4r   )NN)__doc__r   ctypes.macholib.frameworkr   ctypes.macholib.dylibr   	itertools_ctypesr   ImportError__all__r0   
expanduserr?   r@   r   r   r    r#   r&   r)   r2   r9   r=   rC   r   r    r   r   <module>rX      s    
 4 , "8
 GG-.! 	  GGw
	 (
0.979"M=,>(E  """s   B BB