JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/certbot/_internal/plugins/__pycache__/disco.cpython-39.pyc

a

}|�g�,�@s0dZddlZddlZddlmZddlmZddlmZddlmZddlmZddlm	Z	dd	lm
Z
dd
lmZddlmZddlm
Z
dd
lmZddlmZddlmZddlmZddlmZddlmZejdkr�ddlmZnddlZe�e�Zejej ej!gZ"Gdd�d�Z#Gdd�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@sVeZdZdZdZejdd�dd�Zee	e
d�dd�Zeeje	d�d	d
��Z
ee	d�dd
��Zee	d�dd��Zee	d�dd��Zee
d�dd��Zeee
d�dd�Zee
d�dd��Zd*eejejd�dd�Zee
d�dd��Zee
efd�dd�Zee
d�d d!��Z eee!d�d"d#��Z"ee
d�d$d%��Z#e	d�d&d'�Z$e	d�d(d)�Z%dS)+�PluginEntryPointzPlugin entry point.N)�entry_point�returncCs2|�|�|_|��|_||_d|_d|_d|_dS�N)�entry_point_to_plugin_name�name�load�
plugin_clsrZwarning_message�_initialized�	_prepared)�selfr�r�C/usr/lib/python3.9/site-packages/certbot/_internal/plugins/disco.py�__init__(s
zPluginEntryPoint.__init__�rrcCs||jkrdSdS)z(Check if the name refers to this plugin.TF�r�rrrrr �
check_name0s
zPluginEntryPoint.check_namecCs|jS)z)Unique plugin name for an ``entry_point``r#)�clsrrrr r6sz+PluginEntryPoint.entry_point_to_plugin_name�rcCs|jjS)zDescription of the plugin.)r�description�rrrr r(;szPluginEntryPoint.descriptioncCsd�|j|j�S)z$Description with name. Handy for UI.z	{0} ({1}))�formatr(rr)rrr �description_with_name@sz&PluginEntryPoint.description_with_namecCst|jd|j�S)zLong description of the plugin.�long_description)�getattrrr(r)rrr r,Esz!PluginEntryPoint.long_descriptioncCst|jdd�S)z%Should this plugin be hidden from UI?�hiddenF)r-rr)rrr r.JszPluginEntryPoint.hidden��
ifaces_groupsrcs|pt�fdd�|D��S)z1Does plugin implement specified interface groups?c3s$|]}t�fdd�|D��VqdS)c3s|]}t�j|�VqdSr)�
issubclassr��.0Zifacer)rr �	<genexpr>Rs�z4PluginEntryPoint.ifaces.<locals>.<genexpr>.<genexpr>N)�all)r3�ifacesr)rr r4Qs��z*PluginEntryPoint.ifaces.<locals>.<genexpr>)�any�rr0rr)r r6Os�zPluginEntryPoint.ifacescCs
|jduS)z(Has the plugin been initialized already?N)rr)rrr �initializedVszPluginEntryPoint.initialized��configrcCs|js|�||j�|_|jS)zMemoized plugin initialization.)rrr�rr;rrr �init[szPluginEntryPoint.initcCs|jst�d|�|jduS)z%Has the plugin been prepared already?z$.prepared called on uninitialized %rN)r9�logger�debugrr)rrr �preparedcszPluginEntryPoint.preparedc
Cs�|jdurtd��|jdur�z|j��Wn�tjyh}z$tjd||dd�||_WYd}~n�d}~0tjy�}z$tjd||dd�||_WYd}~nLd}~0tj	y�}z$tjd||dd�||_WYd}~nd}~00d|_t
ttt
f|j�S)zMemoized plugin preparation.NzPlugin is not initialized.zMisconfigured %r: %sT)�exc_infozNo installation (%r): %szOther error:(%r): %s)r�
ValueErrorr�preparer
�MisconfigurationErrorr>r?ZNoInstallationError�PluginErrorrr�boolr)r�errorrrr rCjs$

�zPluginEntryPoint.preparecCst|jtj�S)zIs plugin misconfigured?)�
isinstancerr
rDr)rrr �
misconfigured�szPluginEntryPoint.misconfiguredcCst|jt�r|jSdS)zGReturn the Exception raised during plugin setup, or None if all is wellN)rHr�	Exceptionr)rrr �problem�szPluginEntryPoint.problemcCs|jdup|jS)z4Is plugin available, i.e. prepared or misconfigured?T)rrIr)rrr �	available�szPluginEntryPoint.availablecCsd�|j�S)NzPluginEntryPoint#{0})r*rr)rrr �__repr__�szPluginEntryPoint.__repr__c	s~d��j�d��jj�d�d��fdd�tD���d��j�g}�jrt|�d���	����j
rt|�d	������d
�|�S)Nz* {0}zDescription: {0}zInterfaces: {0}z, c3s |]}t�j|�r|jVqdSr)r1r�__name__r2r)rr r4�s�z+PluginEntryPoint.__str__.<locals>.<genexpr>zEntry point: {0}zInitialized: {0}z	Prep: {0}�
)r*rrr(�join�PLUGIN_INTERFACESrr9�appendr=r@rC)r�linesrr)r �__str__�s
�
�
zPluginEntryPoint.__str__)N)&rN�
__module__�__qualname__�__doc__�__hash__�importlib_metadata�
EntryPointr!r	�strrFr%�classmethodr�propertyr(r+r,r.rr
r6r9r�NamespaceConfigr�Pluginr=r@rrrCrIrJrKrLrMrTrrrr r"s:rc@s8eZdZdZeeefdd�dd�Zedd�dd��Z	ee
jeeefdd	�d
d��Z
eed�d
d�Zeed�dd�Zed�dd�Zejeejd�dd�Zeegefdd�dd�Zdd�dd�Zeedd�dd�Zee ee!fd�dd�Z"dd�d d!�Z#eje$ed"�d#d$�Z%ed�d%d&�Z&ed�d'd(�Z'dS))�PluginsRegistryzPlugins registry.N)�pluginsrcCstt|����|_dSr)�dict�sorted�items�_plugins)rrarrr r!�szPluginsRegistry.__init__r'cCs�i}t�d�}|r|�d�ng}tj�|�ttjt	j
d��}ttjt	jd��}||D]V}z|�||�WqXt
y�}z(t�d|j�d|�d��|�WYd}~qXd}~00qX||�S)z�Find plugins using Python package entry points.

        See https://packaging.python.org/en/latest/specifications/entry-points/ for more info on
        entry points.

        ZCERTBOT_PLUGIN_PATH�:)�groupzThe 'z ' plugin errored while loading: z�. You may need to remove or update this plugin. The Certbot log will contain the full error details and this should be reported to the plugin developer.N)r�getenv�split�sys�path�extend�listrY�entry_pointsrZSETUPTOOLS_PLUGINS_ENTRY_POINTZ"OLD_SETUPTOOLS_PLUGINS_ENTRY_POINT�_load_entry_pointrJr
rE�module)r&raZplugin_paths_stringZplugin_pathsrnZold_entry_pointsr�errr �find_all�s(
����zPluginsRegistry.find_all)rrarc	Cs�t|�}|j|vrd||j}|jj}|jj}|r:|j��nd}|rL|j��nd}td�|j||���t|jt	j
�r~|||j<nt�d|�dS)N�unknownz+Duplicate plugin name {0} from {1} and {2}.z)%r does not inherit from Plugin, skipping)
rrrZdist�lowerrJr*r1rrr_r>Zwarning)	r&rra�	plugin_epZother_epZplugin1_distZplugin2_distZplugin1Zplugin2rrr ro�s

��z!PluginsRegistry._load_entry_pointr"cCs
|j|Sr)rer$rrr �__getitem__�szPluginsRegistry.__getitem__cCs
t|j�Sr)�iterrer)rrr �__iter__�szPluginsRegistry.__iter__cCs
t|j�Sr)�lenrer)rrr �__len__�szPluginsRegistry.__len__r:cs�fdd�|j��D�S)z'Initialize all plugins in the registry.csg|]}|����qSr)r=�r3ru�r;rr �
<listcomp>��z(PluginsRegistry.init.<locals>.<listcomp>�re�valuesr<rr|r r=�s
�zPluginsRegistry.init)�predrcs t|��fdd�|j��D��S)z"Filter plugins based on predicate.csi|]\}}�|�r||�qSrr)r3rru�r�rr �
<dictcomp>�s�z*PluginsRegistry.filter.<locals>.<dictcomp>)�typererd)rr�rr�r �filter�s�zPluginsRegistry.filtercCs|�dd��S)z#Filter plugins based on visibility.cSs|jSr)r.)rurrr �<lambda>�r~z)PluginsRegistry.visible.<locals>.<lambda>�r�r)rrr �visible�szPluginsRegistry.visibler/cs|��fdd��S)z#Filter plugins based on interfaces.cs
|j��Sr)r6��p_ep�r0rr r��r~z(PluginsRegistry.ifaces.<locals>.<lambda>r�r8rr�r r6�szPluginsRegistry.ifacescCsdd�|j��D�S)z$Prepare all plugins in the registry.cSsg|]}|���qSr)rCr{rrr r}�r~z+PluginsRegistry.prepare.<locals>.<listcomp>rr)rrr rC�szPluginsRegistry.preparecCs|�dd��S)z%Filter plugins based on availability.cSs|jSr)rLr�rrr r�r~z+PluginsRegistry.available.<locals>.<lambda>r�r)rrr rL�szPluginsRegistry.available)�pluginrcs8�fdd�|j��D�}t|�dks(J�|r4|dSdS)aMFind an initialized plugin.

        This is particularly useful for finding a name for the plugin::

          # plugin is an instance providing Plugin, initialized
          # somewhere else in the code
          plugin_registry.find_init(plugin).name

        Returns ``None`` if ``plugin`` is not found in the registry.

        cs"g|]}|jr|���ur|�qSr)r9r=r{�r�rr r}s�z-PluginsRegistry.find_init.<locals>.<listcomp>�rN)rer�ry)rr�Z
candidatesrr�r �	find_inits

zPluginsRegistry.find_initcCs&d�|jjd�dd�|j��D���S)Nz{0}({1})�,css|]}t|�VqdSr)�repr�r3r�rrr r4sz+PluginsRegistry.__repr__.<locals>.<genexpr>)r*�	__class__rNrPrer�r)rrr rMs
��zPluginsRegistry.__repr__cCs$|js
dSd�dd�|j��D��S)Nz
No pluginsz

css|]}t|�VqdSr)r[r�rrr r4 r~z*PluginsRegistry.__str__.<locals>.<genexpr>)rerPr�r)rrr rTszPluginsRegistry.__str__)(rNrUrVrWrr[rr!r\rrrYrZrrorvrrx�intrzrr^rrr_r=rrFr�r�rr
r6rrrCrLr	r�rMrTrrrr r`�s(�r`)%rWZloggingrj�typingrrrrrrrr	r
rZcertbotrr
rZcertbot._internalrZcertbot.compatrZcertbot.errorsr�version_info�importlib.metadata�metadatarYZ	getLoggerrNr>Z
AuthenticatorZ	Installerr_rQrr`rrrr �<module>s4


Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg