M/e,dZddlZddlZddlmZddlmZddlmZddlmZddlmZddlm Z dd lm Z dd lm Z dd lm Z dd lm Z dd lmZddlmZddlmZddlmZddlmZddlmZej0dk\rddlmZnddlZej8eZej>ej@ejBgZ" GddZ#Gdde Z$y)z.Utilities for plugins discovery and selection.N)Callable)cast)Dict)Iterable)Iterator)List)Mapping)Optional)Type)Union) configuration)errors) interfaces) constants)os)Error) ceZdZdZdZdej ddfdZdee de fdZ e dej de fdZ ede fd Zede fd Zede fd Zede fd Zd eede fdZede fdZddeej0dej4fdZede fdZdee effdZede fdZ edee!fdZ"ede fdZ#de fdZ$de fdZ%y)PluginEntryPointzPlugin entry point.N entry_pointreturnc|j||_|j|_||_d|_d|_d|_yN)entry_point_to_plugin_namenameload plugin_clsrwarning_message _initialized _prepared)selfrs A/usr/lib/python3/dist-packages/certbot/_internal/plugins/disco.py__init__zPluginEntryPoint.__init__(sC33K@ 3>3C3C3E&.29=7;rc$||jk(ryy)z(Check if the name refers to this plugin.TFrr"rs r# check_namezPluginEntryPoint.check_name0s 499 r%c|jS)z)Unique plugin name for an ``entry_point``r')clsrs r#rz+PluginEntryPoint.entry_point_to_plugin_name6sr%c.|jjS)zDescription of the plugin.)r descriptionr"s r#r-zPluginEntryPoint.description;s***r%cNdj|j|jS)z$Description with name. Handy for UI.z {0} ({1}))formatr-rr.s r#description_with_namez&PluginEntryPoint.description_with_name@s!!!$"2"2DII>>r%cDt|jd|jS)zLong description of the plugin.long_description)getattrrr-r.s r#r3z!PluginEntryPoint.long_descriptionEst(:D