HEX
Server: Apache/2.4.67 (Debian)
System: Linux vps-b2547eb4 6.1.0-41-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.158-1 (2025-11-09) x86_64
User: root (0)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/certbot/_internal/plugins/__pycache__/disco.cpython-311.pyc
�

E��c�)��j�dZddlZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	ddlm
Z
dd	lmZdd
lmZddlm
Z
ddlmZddlZdd
lmZddlmZddlmZddlmZddlmZddlmZeje��ZejejejgZ 	Gd�d��Z!Gd�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)�Errorc��eZdZdZdZdejddfd�Zdee	de
fd�Zedejde	fd���Z
ede	fd	���Zede	fd
���Zede	fd���Zede
fd���Zd
eede
fd�Zede
fd���Zddeejdejfd�Zede
fd���Zdee
effd�Zede
fd���Z edee!fd���Z"ede
fd���Z#de	fd�Z$de	fd�Z%dS)�PluginEntryPointzPlugin entry point.N�entry_point�returnc��|�|��|_|���|_||_d|_d|_d|_dS�N)�entry_point_to_plugin_name�name�load�
plugin_clsr�warning_message�_initialized�	_prepared)�selfrs  �A/usr/lib/python3/dist-packages/certbot/_internal/plugins/disco.py�__init__zPluginEntryPoint.__init__&sM���3�3�K�@�@��	�3>�3C�3C�3E�3E���&���.2���9=���7;�����rc� �||jkrdSdS)z(Check if the name refers to this plugin.TF�r�r rs  r!�
check_namezPluginEntryPoint.check_name.s���4�9����4��ur#c��|jS)z)Unique plugin name for an ``entry_point``r%)�clsrs  r!rz+PluginEntryPoint.entry_point_to_plugin_name4s
����r#c��|jjS)zDescription of the plugin.)r�description�r s r!r+zPluginEntryPoint.description9s����*�*r#c�B�d�|j|j��S)z$Description with name. Handy for UI.z	{0} ({1}))�formatr+rr,s r!�description_with_namez&PluginEntryPoint.description_with_name>s���!�!�$�"2�D�I�>�>�>r#c�8�t|jd|j��S)zLong description of the plugin.�long_description)�getattrrr+r,s r!r1z!PluginEntryPoint.long_descriptionCs���t��(:�D�<L�M�M�Mr#c�.�t|jdd��S)z%Should this plugin be hidden from UI?�hiddenF)r2rr,s r!r4zPluginEntryPoint.hiddenHs���t���%�8�8�8r#�
ifaces_groupsc�@��|pt�fd�|D����S)z2Does plugin implements specified interface groups?c3�N�K�|]}t�fd�|D����V�� dS)c3�B�K�|]}t�j|��V��dSr)�
issubclassr��.0�ifacer s  �r!�	<genexpr>z4PluginEntryPoint.ifaces.<locals>.<genexpr>.<genexpr>PsC�����%�%���4�?�E�2�2�%�%�%�%�%�%r#N)�all)r;�ifacesr s  �r!r=z*PluginEntryPoint.ifaces.<locals>.<genexpr>Osi�����()�()��
�%�%�%�%�#�%�%�%�
%�
%�()�()�()�()�()�()r#)�any�r r5s` r!r?zPluginEntryPoint.ifacesMsG��� � �)�C�()�()�()�()�(�()�()�()�%)�%)�	)r#c��|jduS)z(Has the plugin been initialized already?N)rr,s r!�initializedzPluginEntryPoint.initializedTs��� ��,�,r#�configc��|js9|j���|�||j��|_|jS)zMemoized plugin initialization.)rr�requirerr�r rDs  r!�initzPluginEntryPoint.initYsF��� �	C���$�$�&�&�&�!%�����	� B� B�D��� � r#c�X�|jst�d|��|jduS)z%Has the plugin been prepared already?z$.prepared called on uninitialized %rN)rC�logger�debugrr,s r!�preparedzPluginEntryPoint.preparedbs2����	G��L�L�?��F�F�F��~�T�)�)r#c�J�|j�td���|j��	|j���d|_n�#tj$r/}t�d||d���||_Yd}~n�d}~wtj$r/}t�d||d���||_Yd}~nDd}~wtj	$r/}t�d||d���||_Yd}~nd}~wwxYwttttf|j��S)zMemoized plugin preparation.NzPlugin is not initialized.TzMisconfigured %r: %s)�exc_infozNo installation (%r): %szOther error:(%r): %s)r�
ValueErrorr�preparer�MisconfigurationErrorrJrK�NoInstallationError�PluginErrorrr�boolr)r �errors  r!rPzPluginEntryPoint.prepareisJ����$��9�:�:�:��>�!�

&��!�)�)�+�+�+�"&������/�
'�
'�
'����3�T�5�4��P�P�P�!&�������������-�
'�
'�
'����.��e�d��L�L�L�!&�������������%�
'�
'�
'����3�T�5�4��P�P�P�!&������������
'�����E�$��+�&���7�7�7s/�A�C6�%A9�9C6�%B5�5C6�%C1�1C6c�@�t|jtj��S)zIs plugin misconfigured?)�
isinstancerrrQr,s r!�
misconfiguredzPluginEntryPoint.misconfigureds���$�.�&�*F�G�G�Gr#c�H�t|jt��r|jSdS)zGReturn the Exception raised during plugin setup, or None if all is wellN)rWr�	Exceptionr,s r!�problemzPluginEntryPoint.problem�s%���d�n�i�0�0�	"��>�!��tr#c�"�|jdup|jS)z4Is plugin available, i.e. prepared or misconfigured?T)rrXr,s r!�	availablezPluginEntryPoint.available�s���~��%�;��);�;r#c�6�d�|j��S)NzPluginEntryPoint#{0})r.rr,s r!�__repr__zPluginEntryPoint.__repr__�s��%�,�,�T�Y�7�7�7r#c�F��d��j��d��jj��d�d��fd�t
D������d��j��g}�jr{|�d���	�������j
r:|�d���������d	�|��S)
Nz* {0}zDescription: {0}zInterfaces: {0}z, c3�P�K�|] }t�j|���|jV��!dSr)r9r�__name__r:s  �r!r=z+PluginEntryPoint.__str__.<locals>.<genexpr>�sK�����/�/�#(��d�o�u�5�5�/���/�/�/�/�/�/r#zEntry point: {0}zInitialized: {0}z	Prep: {0}�
)r.rrr+�join�PLUGIN_INTERFACESrrC�appendrHrLrP)r �liness` r!�__str__zPluginEntryPoint.__str__�s����N�N�4�9�%�%��%�%�d�o�&A�B�B��$�$�T�Y�Y�/�/�/�/�,=�/�/�/�&�&�
�
�
�%�%�d�&6�7�7�
����	A��L�L�+�2�2�4�9�9�;�;�?�?�@�@�@��}�
A����[�/�/������?�?�@�@�@��y�y����r#r)&rb�
__module__�__qualname__�__doc__�__hash__�
pkg_resources�
EntryPointr"r
�strrTr'�classmethodr�propertyr+r/r1r4rrr?rCr
�NamespaceConfigr�PluginrHrLrrrPrXrZr[r]r_rh�r#r!rr s����������H�<�M�$<�<��<�<�<�<��x��}�������� �]�5M� �RU� � � ��[� ��+�S�+�+�+��X�+��?�s�?�?�?��X�?��N�#�N�N�N��X�N��9��9�9�9��X�9�)�X�d�^�)��)�)�)�)��-�T�-�-�-��X�-�!�!�8�M�$A�B�!�j�N_�!�!�!�!��*�$�*�*�*��X�*�8��t�U�{�+�8�8�8�8�,�H�t�H�H�H��X�H����)�,�����X���<�4�<�<�<��X�<�8�#�8�8�8�8� �� � � � � � r#rc��eZdZdZdeeefddfd�Zedd���Z	ede
jdeeefddfd���Z
d	edefd
�Zdeefd�Zdefd�Zd
ejdeejfd�Zdeegefddfd�Zdd�Zdeeddfd�Zdee ee!ffd�Z"dd�Z#dejde$efd�Z%defd�Z&defd�Z'dS)�PluginsRegistryzPlugins registry.�pluginsrNc�l�tt|�������|_dSr)�dict�sorted�items�_plugins)r rws  r!r"zPluginsRegistry.__init__�s'��
�V�G�M�M�O�O�4�4�5�5��
�
�
r#c���i}tjd��}|r|�d��ng}tj�|��|D]!}tj�|���"tj
t
jtj
��t
jtj����}|D]}|�||���||��S)z+Find plugins using setuptools entry points.�CERTBOT_PLUGIN_PATH�:)r�getenv�split�sys�path�extendrm�working_set�	add_entry�	itertools�chain�iter_entry_pointsr�SETUPTOOLS_PLUGINS_ENTRY_POINT�"OLD_SETUPTOOLS_PLUGINS_ENTRY_POINT�_load_entry_point)r)rw�plugin_paths_string�plugin_paths�plugin_path�entry_pointsrs       r!�find_allzPluginsRegistry.find_all�s���02�� �i�(=�>�>��9L�T�*�0�0��5�5�5�RT�������%�%�%�'�	=�	=�K��%�/�/��<�<�<�<� ���+��8�
:�
:��+��<�
>�
>�@�@��
(�	8�	8�K��!�!�+�w�7�7�7�7��s�7�|�|�r#rc��t|��}|j|vrt||j}|jjr|jjjnd}|jjr|jjjnd}td�|j||�����t|jtj
��r|||j<dSt�d|��dS)N�unknownz+Duplicate plugin name {0} from {1} and {2}.z)%r does not inherit from Plugin, skipping)
rrr�dist�keyrZr.r9rrrsrJ�warning)r)rrw�	plugin_ep�other_ep�plugin1�plugin2s       r!r�z!PluginsRegistry._load_entry_point�s���%�[�1�1�	��>�W�$�$��y�~�.�H�8A�8M�8R�a�i�+�0�4�4�Xa�G�7?�7K�7P�_�h�*�/�3�3�V_�G��I�P�P�����2�2�3�3�
3��i�*�J�,=�>�>�	H�&/�G�I�N�#�#�#��N�N�;�Y�
H�
H�
H�
H�
Hr#rc��|j|Sr)r|r&s  r!�__getitem__zPluginsRegistry.__getitem__�s���}�T�"�"r#c�*�t|j��Sr)�iterr|r,s r!�__iter__zPluginsRegistry.__iter__�s���D�M�"�"�"r#c�*�t|j��Sr)�lenr|r,s r!�__len__zPluginsRegistry.__len__�s���4�=�!�!�!r#rDc�N���fd�|j���D��S)z'Initialize all plugins in the registry.c�:��g|]}|������Srt)rH)r;r�rDs  �r!�
<listcomp>z(PluginsRegistry.init.<locals>.<listcomp>�s1���+�+�+�9�	���v�&�&�+�+�+r#�r|�valuesrGs `r!rHzPluginsRegistry.init�s<���+�+�+�+��=�'�'�)�)�+�+�+�	+r#�predc�z��t|���fd�|j���D����S)z"Filter plugins based on predicate.c�2��i|]\}}�|���||��Srtrt)r;rr�r�s   �r!�
<dictcomp>z*PluginsRegistry.filter.<locals>.<dictcomp>�sB���H�H�H��t�Y�7;�t�I���H�4��H�H�Hr#)�typer|r{)r r�s `r!�filterzPluginsRegistry.filter�s[����t�D�z�z�H�H�H�H�"�m�1�1�3�3�H�H�H�I�I�	Ir#c�.�|�d���S)z#Filter plugins based on visibility.c��|jSr)r4)r�s r!�<lambda>z)PluginsRegistry.visible.<locals>.<lambda>�s���1A�-A�r#�r�r,s r!�visiblezPluginsRegistry.visible�s���{�{�A�A�B�B�Br#r5c�4��|��fd���S)z#Filter plugins based on interfaces.c���|j��Sr)r?)�p_epr5s �r!r�z(PluginsRegistry.ifaces.<locals>.<lambda>�s������]�(C�r#r�rAs `r!r?zPluginsRegistry.ifaces�s����{�{�C�C�C�C�D�D�Dr#c�H�d�|j���D��S)z$Prepare all plugins in the registry.c�6�g|]}|�����Srt)rP)r;r�s  r!r�z+PluginsRegistry.prepare.<locals>.<listcomp>�s$��L�L�L�	�	�!�!�#�#�L�L�Lr#r�r,s r!rPzPluginsRegistry.prepare�s$��L�L�T�]�5I�5I�5K�5K�L�L�L�Lr#c�.�|�d���S)z%Filter plugins based on availability.c��|jSr)r])r�s r!r�z+PluginsRegistry.available.<locals>.<lambda>�s����r#r�r,s r!r]zPluginsRegistry.available�s���{�{�6�6�7�7�7r#�pluginc����fd�|j���D��}t|��dksJ�|r|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.

        c�N��g|]!}|jr|����u�|��"Srt)rCrH)r;r�r�s  �r!r�z-PluginsRegistry.find_init.<locals>.<listcomp>sF���O�O�O�I�"�.�O�3<�>�>�3C�3C�v�3M�3M� �3M�3M�3Mr#�rN)r|r�r�)r r��
candidatess ` r!�	find_initzPluginsRegistry.find_init�sm���O�O�O�O���1E�1E�1G�1G�O�O�O�
��:���!�#�#�#�#��	!��a�=� ��tr#c��d�|jjd�d�|j���D������S)Nz{0}({1})�,c3�4K�|]}t|��V��dSr)�repr�r;r�s  r!r=z+PluginsRegistry.__repr__.<locals>.<genexpr>s9����.?�.?�#��T�
�
�.?�.?�.?�.?�.?�.?r#)r.�	__class__rbrdr|r�r,s r!r_zPluginsRegistry.__repr__s_��� � ��N�#�S�X�X�.?�.?�'+�}�';�';�'=�'=�.?�.?�.?�&?�&?�@�@�	@r#c��|jsdSd�d�|j���D����S)Nz
No pluginsz

c3�4K�|]}t|��V��dSr)ror�s  r!r=z*PluginsRegistry.__str__.<locals>.<genexpr>s(����H�H��3�t�9�9�H�H�H�H�H�Hr#)r|rdr�r,s r!rhzPluginsRegistry.__str__s@���}�	 ��<��{�{�H�H���1E�1E�1G�1G�H�H�H�H�H�Hr#)rrv)(rbrirjrkr	rorr"rpr�rmrnrr�r�rr��intr�r
rrrrrsrHrrTr�r�rrr?rrrPr]r
r�r_rhrtr#r!rvrv�sh��������6���-=�(=� >�6�4�6�6�6�6������[��&�
H�M�,D�
H�#'��-=�(=�#>�
H�CG�
H�
H�
H��[�
H�#��#�(8�#�#�#�#�#�(�3�-�#�#�#�#�"��"�"�"�"�+�=�8�+�T�*�BS�=T�+�+�+�+�
I�8�%5�$6��$<�=�I�BS�I�I�I�I�
C�C�C�C�E�X�d�^�E�8I�E�E�E�E�M��e�D�%�K�0�1�M�M�M�M�8�8�8�8�
�
� 1��h�?O�6P�����(@�#�@�@�@�@�
I��I�I�I�I�I�Ir#rv)#rkr��loggingr��typingrrrrrrr	r
rrrm�certbotr
rr�certbot._internalr�certbot.compatr�certbot.errorsr�	getLoggerrbrJ�
Authenticator�	Installerrsrerrvrtr#r!�<module>r�s���4�4���������
�
�
�
�����������������������������������������������������������������!�!�!�!�!�!�������������'�'�'�'�'�'������� � � � � � �	��	�8�	$�	$�� �-�z�/C�Z�EV�W��B�C �C �C �C �C �C �C �C �LnI�nI�nI�nI�nI�g�nI�nI�nI�nI�nIr#