
    _e	                     |    d Z ddlZ ej                  e      Z G d de      Zd Z G d de      Z G d d	e      Z	y)
zFSimple plug-in mechanism to provide replacement for setuptools plugins    Nc                   R    e Zd ZdZdZd	dZd Zed        Zed        Z	ed        Z
y)
Pluginz#Base class for plugins to be loadedFNc                     || _         || _        || _        | j                  j	                  |        | j
                  j                  |       y)zRegister the plug-inN)nameimport_pathcheckregistryappend__dict__update)selfr   r   r   nameds        0/usr/lib/python3/dist-packages/OpenGL/plugins.py__init__zPlugin.__init__   s<    	&
d$e%    c                     	 t        | j                        S # t        $ r+}t        j	                  d| j                  |       Y d}~yd}~ww xY w)z*Attempt to load and return our entry pointzUnable to import %s: %sN)importByNamer   ImportErrorlogwarning)r   errs     r   loadzPlugin.load   sH    	!1!133 	KK)  
 	s    	A!AAc                      y)z7Match to return the plugin which is appropriate to loadN )clsargss     r   matchzPlugin.match   s    r   c                      | j                   dd S )z#Iterate over all registered pluginsN)r	   )r   s    r   allz
Plugin.all   s     ||Ar   c                 T    | j                         D ]  }|j                  |k(  s|c S  y N)r   r   )r   r   instances      r   by_namezPlugin.by_name!   s-    	 	 H}}$	  r   r!   )__name__
__module____qualname____doc__loadedr   r   classmethodr   r   r#   r   r   r   r   r      sP    -F&
 F F   r   r   c                     | j                  d      }|dd }|d   }t        dj                  |      i i |      }t        ||      S )zImport a class by name.N)split
__import__joingetattr)fullNamer   
moduleName	classNamemodules        r   r   r   (   sJ    >>#DcrJRI*-r2zBFFI''r   c                   $    e Zd ZdZg Zed        Zy)PlatformPluginz"Platform-level plugin registrationc                 x    |D ](  }| j                   D ]  }|j                  |k(  s|c c S  * t        d|      )zkDetermine 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   zPlatformPlugin.match4   sG      	"H,, ";;(*!M"	"
 CIJJr   Nr$   r%   r&   r'   r	   r)   r   r   r   r   r6   r6   1   s    ,H
K 
Kr   r6   c                   $    e Zd ZdZg Zed        Zy)FormatHandlerz Data-type storage-format handlerc                     |j                   d|j                  }| j                  D ]  }t        |dd      }|s||v s|c S  y)z2Lookup appropriate handler based on value (a type)r+   r   r   N)r%   r$   r	   r0   )r   valuer9   r;   sets        r   r   zFormatHandler.matchD   sL     ((%..:ll 	F67B/Cscz	 r   Nr<   r   r   r   r>   r>   A   s    *H r   r>   )
r'   logging	getLoggerr$   r   objectr   r   r6   r>   r   r   r   <module>rE      sI    L g!!f !F(Kf K V r   