Ë
    M/Åeˆ  ã                   ó‚  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 dd	lm
Z dd
lmZ  G d„ de	j                  «      Z G d„ de«      Z G d„ de«      Z G d„ de«      Ze	j$                  j'                  e«       e	j(                  j'                  e«       e	j*                  j'                  e«       y)z: apacheconfig implementation of the ParserNode interfaces é    )ÚAny)ÚIterable)ÚList)ÚOptional)ÚTuple)Ú
assertions)Ú
interfaces)Úparsernode_util)Ú
ParserNodec                   óR   ‡ — e Zd ZdZdeddfˆ fd„Zdeddfd„Zdeded    fd	„Z	ˆ xZ
S )
ÚApacheParserNodezæ apacheconfig implementation of ParserNode interface.

        Expects metadata `ac_ast` to be passed in, where `ac_ast` is the AST provided
        by parsing the equivalent configuration text using the apacheconfig library.
    ÚkwargsÚreturnNc                 ó¸   •— t        j                  |«      \  }}}}t        ‰| �  di |¤Ž || _        || _        || _        || _        | j                  d   | _        y )NÚac_ast© )	ÚutilÚparsernode_kwargsÚsuperÚ__init__ÚancestorÚfilepathÚdirtyÚmetadataÚ_raw)Úselfr   r   r   r   r   Ú	__class__s         €úG/usr/lib/python3/dist-packages/certbot_apache/_internal/apacheparser.pyr   zApacheParserNode.__init__   sX   ø€ ä.2×.DÑ.DÀVÓ.LÑ+ˆ�%˜ 8Ü‰ÑÑ"˜6Ò"Ø ˆŒØ ˆŒØˆŒ
Ø ˆŒØŸ™ xÑ0ˆ�	ó    Úmsgc                  ó   — y )Nr   )r   r    s     r   ÚsavezApacheParserNode.save   s   € Ør   Únamec                 óŒ   — t        t        j                  t        j                  | t        j                  | j                  ¬«      gS )z*Find ancestor BlockNodes with a given name©r#   Ú
parametersr   r   r   ©ÚApacheBlockNoder   ÚPASSr   )r   r#   s     r   Úfind_ancestorszApacheParserNode.find_ancestors"   ó2   € ä¤Z§_¡_Ü+5¯?©?Ø)-Ü)3¯©Ø)-¯©ô	8ð 9ð 	9r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ústrr"   r   r*   Ú__classcell__©r   s   @r   r   r      sG   ø„ ñð1 ð 1¨õ 1ð˜ð  ó ð9 3ð 9¨4Ð0BÑ+C÷ 9r   r   c                   ó<   ‡ — e Zd ZdZdeddfˆ fd„Zdedefd„Zˆ xZS )ÚApacheCommentNodez6 apacheconfig implementation of CommentNode interface r   r   Nc                 ób   •— t        j                  |«      \  }}t        ‰| �  di |¤Ž || _        y ©Nr   )r   Úcommentnode_kwargsr   r   Úcomment)r   r   r8   r   s      €r   r   zApacheCommentNode.__init__.   s.   ø€ Ü×1Ñ1°&Ó9‰ˆ�Ü‰ÑÑ"˜6Ò"Øˆ�r   Úotherc                 ó:  — t        || j                  «      r…| j                  |j                  k(  xrj | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j
                  |j
                  k(  xr | j                  |j                  k(  S y©NF)Ú
isinstancer   r8   r   r   r   r   ©r   r9   s     r   Ú__eq__zApacheCommentNode.__eq__3   s‚   € Ü�e˜TŸ^™^Ô,Ø—L‘L E§M¡MÑ1ò 4Ø—J‘J %§+¡+Ñ-ò4à—M‘M U§^¡^Ñ3ò4ð —M‘M U§^¡^Ñ3ò4ð —M‘M U§^¡^Ñ3ð	5ð
 r   )	r,   r-   r.   r/   r   r   Úboolr>   r1   r2   s   @r   r4   r4   +   s,   ø„ Ù@ð ð ¨õ ð
˜Cð  D÷ r   r4   c                   óR   ‡ — e Zd ZdZdeddfˆ fd„Zdedefd„Zdee	   ddfd	„Z
ˆ xZS )
ÚApacheDirectiveNodez8 apacheconfig implementation of DirectiveNode interface r   r   Nc                 ó�   •— t        j                  |«      \  }}}}t        ‰| �  di |¤Ž || _        || _        || _        d | _        y r6   )r   Údirectivenode_kwargsr   r   r#   r&   ÚenabledÚinclude)r   r   r#   r&   rD   r   s        €r   r   zApacheDirectiveNode.__init__@   sH   ø€ Ü,0×,EÑ,EÀfÓ,MÑ)ˆˆj˜' 6Ü‰ÑÑ"˜6Ò"ØˆŒ	Ø$ˆŒØˆŒØ&*ˆ�r   r9   c                 ó¦  — t        || j                  «      r»| j                  |j                  k(  xr  | j                  |j                  k(  xr… | j                  |j                  k(  xrj | j
                  |j
                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S yr;   )	r<   r   r#   r   r&   rD   r   r   r   r=   s     r   r>   zApacheDirectiveNode.__eq__H   s²   € Ü�e˜TŸ^™^Ô,Ø—I‘I §¡Ñ+ò 4Ø—M‘M U§^¡^Ñ3ò4à—O‘O u×'7Ñ'7Ñ7ò4ð —L‘L E§M¡MÑ1ò4ð —J‘J %§+¡+Ñ-ò	4ð
 —M‘M U§^¡^Ñ3ò4ð —M‘M U§^¡^Ñ3ð5ð r   Ú_parametersc                  ó   — y)z%Sets the parameters for DirectiveNodeNr   )r   rG   s     r   Úset_parametersz"ApacheDirectiveNode.set_parametersS   ó   € àr   )r,   r-   r.   r/   r   r   r?   r>   r   r0   rI   r1   r2   s   @r   rA   rA   =   sC   ø„ ÙBð+ ð +¨õ +ð	˜Cð 	 Dó 	ð¨(°3©-ð ¸D÷ r   rA   c            	       óL  ‡ — e Zd ZdZdeddfˆ fd„Zdedefd„Z	 	 dded	e	e
e      d
e	e   dd fd„Z	 	 dded	e	e
e      d
e	e   defd„Z	 dded	e	e   d
e	e   defd„Zddedede
d    fd„Zddedede
e   fd„Zddedede
e   fd„Zdeddfd„Zde
e   fd„Zde
e   fd„Zˆ xZS )r(   z4 apacheconfig implementation of BlockNode interface r   r   Nc                 ó2   •— t        ‰| �  di |¤Ž d| _        y r6   )r   r   Úchildren)r   r   r   s     €r   r   zApacheBlockNode.__init__[   s   ø€ Ü‰ÑÑ"˜6Ò"Ø68ˆ�r   r9   c                 óÜ  — t        || j                  «      rÖ| j                  |j                  k(  xr» | j                  |j                  k(  xr  | j                  |j                  k(  xr… | j
                  |j
                  k(  xrj | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S yr;   )
r<   r   r#   r   r&   rM   rD   r   r   r   r=   s     r   r>   zApacheBlockNode.__eq___   sÉ   € Ü�e˜TŸ^™^Ô,Ø—I‘I §¡Ñ+ò 4Ø—M‘M U§^¡^Ñ3ò4à—O‘O u×'7Ñ'7Ñ7ò4ð —M‘M U§^¡^Ñ3ò4ð —L‘L E§M¡MÑ1ò	4ð
 —J‘J %§+¡+Ñ-ò4ð —M‘M U§^¡^Ñ3ò4ð —M‘M U§^¡^Ñ3ð5ð r   r#   r&   Úpositionc                 óº   — t        t        j                  t        j                  | t        j                  | j                  ¬«      }| xj                  |fz  c_        |S )z0Adds a new BlockNode to the sequence of childrenr%   )r(   r   r)   r   rM   )r   r#   r&   rO   Ú	new_blocks        r   Úadd_child_blockzApacheBlockNode.add_child_blockl   sD   € ô $¬¯©Ü/9¯©Ø-1Ü-7¯_©_Ø-1¯]©]ô	<ˆ	ð
 	�Š˜)˜Ñ%�ØÐr   c                 óº   — t        t        j                  t        j                  | t        j                  | j                  ¬«      }| xj                  |fz  c_        |S )z4Adds a new DirectiveNode to the sequence of childrenr%   )rA   r   r)   r   rM   )r   r#   r&   rO   Únew_dirs        r   Úadd_child_directivez#ApacheBlockNode.add_child_directivex   sC   € ô &¬:¯?©?Ü1;·±Ø/3Ü/9¯©Ø/3¯}©}ô	>ˆð
 	�Š˜'˜Ñ#�Øˆr   c                 óœ   — t        t        j                  | t        j                  | j                  ¬«      }| xj                  |fz  c_        |S )z2Adds a new CommentNode to the sequence of children©r8   r   r   r   )r4   r   r)   r   rM   )r   r#   r&   rO   Únew_comments        r   Úadd_child_commentz!ApacheBlockNode.add_child_comment…   s>   € ô
 (´
·±Ø15Ü1;·±Ø15·±ô@ˆð 	�Š˜+˜Ñ'�ØÐr   Úexcludec                 óŒ   — t        t        j                  t        j                  | t        j                  | j                  ¬«      gS )z<Recursive search of BlockNodes from the sequence of childrenr%   r'   ©r   r#   rZ   s      r   Úfind_blockszApacheBlockNode.find_blocks‘   r+   r   c                 óŒ   — t        t        j                  t        j                  | t        j                  | j                  ¬«      gS )ú@Recursive search of DirectiveNodes from the sequence of childrenr%   )rA   r   r)   r   r\   s      r   Úfind_directiveszApacheBlockNode.find_directives™   s2   € ä#¬¯©Ü/9¯©Ø-1Ü-7¯_©_Ø-1¯]©]ô	<ð =ð 	=r   r8   Úexactc                 ón   — t        t        j                  | t        j                  | j                  ¬«      gS )r_   rW   )r4   r   r)   r   )r   r8   ra   s      r   Úfind_commentszApacheBlockNode.find_comments¢   s+   € ä!¬*¯/©/Ø+/Ü+5¯?©?Ø+/¯=©=ô:ð ;ð 	;r   Úchildc                  ó   — y)z2Deletes a ParserNode from the sequence of childrenNr   )r   rd   s     r   Údelete_childzApacheBlockNode.delete_child©   rJ   r   c                 ó$   — t         j                  gS )z#Returns a list of unsaved filepaths©r   r)   ©r   s    r   Úunsaved_fileszApacheBlockNode.unsaved_files­   ó   € ä—‘Ð Ð r   c                 ó$   — t         j                  gS )z1Returns a list of parsed configuration file pathsrh   ri   s    r   Úparsed_pathszApacheBlockNode.parsed_paths±   rk   r   )NN)T)F)r,   r-   r.   r/   r   r   r?   r>   r0   r   r   ÚintrR   rA   rU   r4   rY   r]   r`   rc   r   rf   rj   rm   r1   r2   s   @r   r(   r(   X   sg  ø„ Ù>ð9 ð 9¨õ 9ð
˜Cð 
 Dó 
ð LPØ26ñ	 Cð 	°X¸dÀ3¹iÑ5Hð 	Ø"*¨3¡-ð	Ø;Ló	ð PTØ6:ñ
¨ð 
¸À$ÀsÁ)Ñ9Lð 
Ø&.¨s¡mð
à	ó
ð VZñ
Øð
Ø%-¨c¡]ð
ØEMÈcÁ]ð
à	ó
ñ9 ð 9¨dð 9¸dÐCTÑ>Uó 9ñ= Cð =°$ð =À$ÐGZÑB[ó =ñ; Sð ;°ð ;À$ÐGXÑBYó ;ð *ð °ó ð!˜t C™yó !ð!˜d 3™i÷ !r   r(   N)r/   Útypingr   r   r   r   r   Úcertbot_apache._internalr   r	   r
   r   Ú#certbot_apache._internal.interfacesr   r   r4   rA   r(   ÚCommentNodeÚregisterÚDirectiveNodeÚ	BlockNoder   r   r   ú<module>rv      sŸ   ðÙ @Ý Ý Ý Ý Ý å /Ý /Ý <Ý :ô9�z×,Ñ,ô 9ô:Ð(ô ô$Ð*ô ô6[!Ð)ô [!ð| × Ñ × Ñ Ð 1Ô 2Ø 
× Ñ × !Ñ !Ð"5Ô 6Ø 
× Ñ × Ñ ˜oÕ .r   