a
}|g, @ s0 d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z dd lm
Z
dd
lmZ ddlmZ ddlm
Z
dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ejdkrddlmZ nddlZeeZejej ej!gZ"G dd dZ#G dd de
Z$dS )z.Utilities for plugins discovery and selection. N)Callable)cast)Dict)Iterable)Iterator)List)Mapping)Optional)Type)Union)
configuration)errors)
interfaces) constants)os)Error)
c @ sV e Zd ZdZdZejddddZee e
dddZeeje dd d
Z
ee ddd
Zee dddZee dddZee
dddZee e
dddZee
dddZd*eej ejdddZee
dddZee
ef dddZee
dd d!Z eee! dd"d#Z"ee
dd$d%Z#e dd&d'Z$e dd(d)Z%dS )+PluginEntryPointzPlugin entry point.N)entry_pointreturnc C s2 | || _| | _|| _d | _d | _d | _d S N)entry_point_to_plugin_namenameload
plugin_clsr Zwarning_message_initialized _prepared)selfr r C/usr/lib/python3.9/site-packages/certbot/_internal/plugins/disco.py__init__( s
zPluginEntryPoint.__init__r r c C s || j krdS dS )z(Check if the name refers to this plugin.TFr r r r r r
check_name0 s
zPluginEntryPoint.check_namec C s |j S )z)Unique plugin name for an ``entry_point``r# )clsr r r r r 6 s z+PluginEntryPoint.entry_point_to_plugin_namer c C s | j jS )zDescription of the plugin.)r descriptionr r r r r( ; s zPluginEntryPoint.descriptionc C s d | j| jS )z$Description with name. Handy for UI.z {0} ({1}))formatr( r r) r r r description_with_name@ s z&PluginEntryPoint.description_with_namec C s t | jd| jS )zLong description of the plugin.long_description)getattrr r( r) r r r r, E s z!PluginEntryPoint.long_descriptionc C s t | jddS )z%Should this plugin be hidden from UI?hiddenF)r- r r) r r r r. J s zPluginEntryPoint.hidden
ifaces_groupsr c s | pt fdd|D S )z1Does plugin implement specified interface groups?c 3 s$ | ]}t fd d|D V qdS )c 3 s | ]}t j|V qd S r )
issubclassr .0Zifacer) r r