
    3j	                     |    S r SSKr\R                  " \5      r " S S\5      rS r " S S\5      r " S S	\5      r	g)
zFSimple plug-in mechanism to provide replacement for setuptools plugins    Nc                   \    \ rS rSrSrSrSS jrS r\S 5       r	\S 5       r
\S	 5       rS
rg)Plugin   z#Base class for plugins to be loadedFNc                     Xl         X l        X0l        U R                  R	                  U 5        U R
                  R                  U5        g)zRegister the plug-inN)nameimport_pathcheckregistryappend__dict__update)selfr   r   r	   nameds        H/home/wildlama/miniconda3/lib/python3.13/site-packages/OpenGL/plugins.py__init__Plugin.__init__   s6    	&
d$e%    c                      [        U R                  5      $ ! [         a+  n[        R	                  SU R                  U5         SnAgSnAff = f)z*Attempt to load and return our entry pointzUnable to import %s: %sN)importByNamer   ImportErrorlogwarning)r   errs     r   loadPlugin.load   sH    	!1!133 	KK)  
 	s    
A!AAc                     g)z7Match to return the plugin which is appropriate to loadN )clsargss     r   matchPlugin.match   s    r   c                      U R                   SS $ )z#Iterate over all registered pluginsN)r
   )r   s    r   all
Plugin.all   s     ||Ar   c                 Z    U R                  5        H  nUR                  U:X  d  M  Us  $    g N)r#   r   )r   r   instances      r   by_namePlugin.by_name!   s(    	H}}$ " r   )r	   r   r   r&   )__name__
__module____qualname____firstlineno____doc__loadedr   r   classmethodr    r#   r(   __static_attributes__r   r   r   r   r      sP    -F&
 F F   r   r   c                     U R                  S5      nUSS nUS   n[        SR                  U5      0 0 U5      n[        XC5      $ )zImport a class by name.N)split
__import__joingetattr)fullNamer   
moduleName	classNamemodules        r   r   r   (   sH    >>#DcrJRI*-r2zBFF''r   c                   ,    \ rS rSrSr/ r\S 5       rSrg)PlatformPlugin1   z"Platform-level plugin registrationc                     U H,  nU R                    H  nUR                  U:X  d  M  Us  s  $    M.     [        SU< 35      e)zSDetermine what platform module to load

key -- (sys.platform,os.name) key to load 
z"No platform plugin registered for )r
   r   KeyError)r   keypossibleplugins       r   r    PlatformPlugin.match4   s=     H,,;;(*!M ' 
 CIJJr   r   N	r*   r+   r,   r-   r.   r
   r0   r    r1   r   r   r   r>   r>   1   s    ,H
K 
Kr   r>   c                   ,    \ rS rSrSr/ r\S 5       rSrg)FormatHandlerA   z Data-type storage-format handlerc                     UR                   < SUR                  < 3nU R                   H"  n[        USS5      nU(       d  M  X$;   d  M   Us  $    g)z2Lookup appropriate handler based on value (a type)r3   r	   r   N)r+   r*   r
   r8   )r   valuerB   rD   sets        r   r    FormatHandler.matchD   sG     ((%..:llF67B/Cssz # r   r   NrF   r   r   r   rH   rH   A   s    *H r   rH   )
r.   logging	getLoggerr*   r   objectr   r   r>   rH   r   r   r   <module>rQ      sG    L !!f !F(Kf K V r   