�
Ϫ�f! � � � d Z ddlZddlZddlZddlZddlmZmZmZm Z ddl
mZmZ ddl
mZ ddlmZ ddlmZ ddlmZ G d � d
e� Z G d� d� Z G d
� d� Zd� Z ej4 Zd� Zdej: fd�Z e de�� Z ddee deej: dee fd�Z e Z!d� Z"ddgZ#y# e$ r dd�ZY �Qw xY w)zL
Plugin system for Twisted.
@author: Jp Calderone
@author: Glyph Lefkowitz
� N)�Iterable�Optional�Type�TypeVar)� Interface�
providedBy)�log)�getAdapterFactory)� getModule)�namedAnyc � � e Zd ZdZy)�IPluginz�
Interface that must be implemented by all plugins.
Only objects which implement this interface will be considered for return
by C{getPlugins}. To be useful, plugins should also implement some other
application-specific interface.
N)�__name__�
__module__�__qualname__�__doc__� � �0/usr/lib/python3/dist-packages/twisted/plugin.pyr r s � �r r c �0 � e Zd Zd� Zdefd�Zd� Zdd�ZeZy)�CachedPluginc � � || _ || _ || _ || _ | j j j | � y �N)�dropin�name�description�provided�plugins�append)�selfr r r r s r �__init__zCachedPlugin.__init__' |