<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
À<×e  ã               @   s4   d dl Zd dlZdgZejjƒ ZG dd„ deƒZdS )é    NÚPluginLoaderc                   sF   e Zd ZdddgZdd„ Z‡ fdd„Zdd	„ Zd
d„ Zdd„ Z‡  Z	S )r   Ú
_namespaceÚ_prefixÚ
_interfacec             C   s
   t ƒ ‚dS )z~
		This method has to be implemented in child class and should
		set _namespace, _prefix, and _interface member attributes.
		N)ÚNotImplementedError)Úself© r   ú#/usr/lib/python3.6/plugin_loader.pyÚ_set_loader_parameters   s    z#PluginLoader._set_loader_parametersc                sn   t t| ƒjƒ  d | _d | _d | _| jƒ  t| jƒtks:t	‚t| jƒtksLt	‚t| jƒtkrft
| jtƒsjt	‚d S )N)Úsuperr   Ú__init__r   r   r   r
   ÚtypeÚstrÚAssertionErrorÚ
issubclassÚobject)r   )Ú	__class__r   r	   r      s    zPluginLoader.__init__c             C   s,   t |ƒtkst‚d| j| j|f }| j|ƒS )Nz%s.%s%s)r   r   r   r   r   Ú
_get_class)r   Zplugin_nameÚmodule_namer   r   r	   Úload_plugin   s    zPluginLoader.load_pluginc             C   sŽ   t jd| ƒ t|ƒ}|jdƒ}|jdƒ x t|ƒdkrJt||jdƒƒ}q,W x4|jD ]*}t||ƒ}t|ƒtkrTt	|| j
ƒrT|S qTW tdƒ‚d S )Nzloading module %sÚ.r   zCannot find the plugin class.)ÚlogÚdebugÚ
__import__ÚsplitÚpopÚlenÚgetattrÚ__dict__r   r   r   ÚImportError)r   r   ÚmoduleÚpathÚnameÚclsr   r   r	   r   "   s    


zPluginLoader._get_classc             C   sŠ   t | jƒ}g }xvtj|jjd ƒD ]`}yFtjj|ƒd }|jdƒsDw"| j	d| j|f ƒ}||krj|j
|ƒ W q" tk
r€   Y q"X q"W |S )Nr   Zplugin_z%s.%s)r   r   ÚosÚlistdirZpluginsÚ__path__r!   ÚsplitextÚ
startswithr   Úappendr   )r   Zplugins_packageZplugin_clssr   Zplugin_classr   r   r	   Úload_all_plugins2   s    


zPluginLoader.load_all_plugins)
Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r
   r   r   r   r*   Ú__classcell__r   r   )r   r	   r      s   
)	Z
tuned.logsZtunedr$   Ú__all__ZlogsÚgetr   r   r   r   r   r   r	   Ú<module>   s   
