�
Ϫ�f! � �� � d Z ddlmZmZ ddlmZmZmZ ddlm Z ddl
mZmZ ddl
mZ G d� de� Z G d � d
e� Z eee� G d� d� � Zd
ee fd�Zded
e fd�Zy)zT
Plugin-based system for enumerating available reactors and installing one of
them.
� )�Iterable�cast)� Attribute� Interface�implementer)�IReactorCore)�IPlugin�
getPlugins)�namedAnyc �8 � e Zd ZdZ ed� Z ed� Zdd�Zy)�IReactorInstallerzB
Definition of a reactor which can probably be installed.
zE
A brief string giving the user-facing name of this reactor.
zK
A longer string giving a user-facing description of this reactor.
Nc � � y)z'
Install this reactor.
N� r � �>/usr/lib/python3/dist-packages/twisted/application/reactors.py�installzIReactorInstaller.install# s � r ��returnN)�__name__�
__module__�__qualname__�__doc__r � shortName�descriptionr r r r r
r
s. � �� � ��I� � ��K�r r
c � � e Zd ZdZy)�
NoSuchReactorzT
Raised when an attempt is made to install a reactor which cannot be found.
N)r r r r r r r r r , s � �r r c �, � e Zd ZdZdededefd�Zdd�Zy) �Reactorz|
@ivar moduleName: The fully-qualified Python name of the module of which
the install callable is an attribute.
r �
moduleNamer c �. � || _ || _ || _ y �N)r r r )�selfr r r s r �__init__zReactor.__init__9 s � �"���$���&��r Nc �J � t | j � j � y r! )r r r )r" |