
    zi>                       U d Z ddlmZ ddlZddlmZmZ ddlZddl	Zddl
ZddlmZmZ ddlmZ ddlmZmZ ddlmZ dd	lmZmZ er$dd
lmZ ddlmZmZmZmZ ddlmZ ddl m!Z! ddl"m#Z# ej$        ej%        ej&        ej'        ej$        ej(        ej'        ej'        ej$        ej&        d
Z) G d de          Z* G d de*          Z+ G d de          Z, G d de          Z- ej.        d          Z/ G d de          Z0 G d de0          Z1 ej.        d          Z2 ej.        d          Z3 G d d e          Z4 ej.        d!ej5                  Z6 G d" d#e          Z7	 d?d@d3Z8ej9        j:        j;        j<        ej9        j:        j;        j=        d4e8_>         e*ej?        5           e+d67           e,             e-             e0             e1             e4             e4             e7            d8	Z@d9eAd:<   dAd>ZBdS )Bz#Handlers for additional ReST roles.    )annotationsN)TYPE_CHECKINGAny)nodesutils)addnodes)___)ws_re)ReferenceRole
SphinxRole)Sequence)ElementNodeTextElementsystem_message)Sphinx)BuildEnvironment)RoleFunction)
commanddfnkbd
mailheadermakevarmanpagemimetype	newsgroupprogramregexpc                       e Zd ZU dZej        Zded<   ej	        Z
ded<   	 	 	 	 d%d& fdZd'dZd(dZd(dZd(dZd)dZd*d$Z xZS )+XRefRoleaA  
    A generic cross-referencing role.  To create a callable that can be used as
    a role function, create an instance of this class.

    The general features of this role are:

    * Automatic creation of a reference and a content node.
    * Optional separation of title and target with `title <target>`.
    * The implementation is a class rather than a function to make
      customization easier.

    Customization can be done in two ways:

    * Supplying constructor parameters:
      * `fix_parens` to normalize parentheses (strip from target, and add to
        title if configured)
      * `lowercase` to lowercase the target
      * `nodeclass` and `innernodeclass` select the node classes for
        the reference and the content node

    * Subclassing and overwriting `process_link()` and/or `result_nodes()`.
    ztype[Element]	nodeclassztype[TextElement]innernodeclassFN
fix_parensbool	lowercasetype[Element] | Nonetype[TextElement] | Nonewarn_danglingreturnNonec                    || _         || _        || _        ||| _        ||| _        t                                                       d S N)r$   r&   r)   r"   r#   super__init__)selfr$   r&   r"   r#   r)   	__class__s         W/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/sphinx/roles.pyr/   zXRefRole.__init__G   sR     %"* &DN%"0D    titlestrtargettuple[str, str]c                    | j         s0|                    d          r
|d d         }| j        j        r|dz  }|                    d          r
|d d         }||fS )Nz())has_explicit_titleendswithconfigadd_function_parentheses)r0   r4   r6   s      r2   update_title_and_targetz XRefRole.update_title_and_targetU   so    & 	~~d## #crc
{3 ??4   	!CRC[Ff}r3   'tuple[list[Node], list[system_message]]c                D   d| j         vr#d| j         c| _        | _        d| j        g| _        nF| j                             dd          \  | _        | _        d| j        | j         d| j         g| _        | j        r|                                 S |                                 S )N: xref   -)name	refdomainreftypeclassessplitdisabledcreate_non_xref_nodecreate_xref_node)r0   s    r2   runzXRefRole.runb   s    di+-ty(DNDL"DL1DLL+/9??3+B+B(DNDL"DNt~4V4V4V4VWDL= 	+,,...((***r3   c                &   t          j        | j        dd                    }| j        r d| _        |                     |d          \  }}|                     | j        || j                  }| 	                    | j
        j        | j        |d          S )NrD   FrB   rI   is_ref)r   unescapetextr$   r:   r>   r#   rawtextrI   result_nodesinlinerdocumentenv)r0   rT   r6   nodes       r2   rL   zXRefRole.create_non_xref_nodeo   s    ~dim,,? 	B&+D#77bAALD&""4<t|"LL  !6$u UUUr3   c                    | j         }| j        }| j        r|                                }| j        r|                     ||          \  }}| j        j        | j        | j	        | j
        | j        d} | j        | j        fi |}|                     |           |                     | j        || j
        ||          \  }}||d<   ||                     | j        || j                  z  }|                     | j        j        | j        |d          S )N)refdocrG   rH   refexplicitrefwarn	reftargetrP   TrQ   )r6   r4   r&   lowerr$   r>   rY   docnamerG   rH   r:   r)   r"   rU   set_source_infoprocess_linkr#   rI   rV   rW   rX   )r0   r6   r4   optionsrefnodes        r2   rM   zXRefRole.create_xref_nodex   s%   
> 	$\\^^F? 	H 88GGME6 "X- $"l"&"9"0	2 2
 !$.9999W%%% ))$(GT=T*/9 9v%4&&t|UDL&QQQ  !6'RV WWWr3   rY   r   re   r   r:   c                0    |t          j        d|          fS )zCalled after parsing title and target text, and creating the
        reference node (given in *refnode*).  This method can alter the
        reference node and must return a new (or the same) ``(title, target)``
        tuple.
         )r   sub)r0   rY   re   r:   r4   r6   s         r2   rc   zXRefRole.process_link   s     eiV,,,,r3   rX   nodes.documentrZ   rR   c                    |gg fS )a(  Called before returning the finished nodes.  *node* is the reference
        node if one was created (*is_ref* is then true), else the content node.
        This method can add other nodes and must return a ``(nodes, messages)``
        tuple (the usual return value of a role function).
         )r0   rX   rY   rZ   rR   s        r2   rV   zXRefRole.result_nodes   s     vrzr3   )FFNNF)r$   r%   r&   r%   r"   r'   r#   r(   r)   r%   r*   r+   )r4   r5   r6   r5   r*   r7   r*   r?   rY   r   re   r   r:   r%   r4   r5   r6   r5   r*   r7   )
rX   ri   rY   r   rZ   r   rR   r%   r*   r?   )__name__
__module____qualname____doc__r   pending_xrefr"   __annotations__r   literalr#   r/   r>   rN   rL   rM   rc   rV   __classcell__r1   s   @r2   r!   r!   ,   s         .  (4I4444(-N5555CH37<@',         + + + +V V V VX X X X6- - - -       r3   r!   c                        e Zd Zd fdZ xZS )AnyXRefRolerY   r   re   r   r:   r%   r4   r5   r6   r*   r7   c                    t                                          |||||          }|j                            |j                   |S r-   )r.   rc   
attributesupdateref_context)r0   rY   re   r:   r4   r6   resultr1   s          r2   rc   zAnyXRefRole.process_link   sA    %%c74FvVV!!#/222r3   rm   )rn   ro   rp   rc   ru   rv   s   @r2   rx   rx      s=                 r3   rx   c                      e Zd ZddZddZdS )	PEPr*   r?   c                   d| j                             d          z  }dt          d          | j        z  |dd fg}t	          j        |          }t          j        dd|g          }| j        j        	                    |           	 | 
                                }t          j        ddd|d	g
          }| j        r#|t          j        | j        | j                  z  }n"d| j        z   }|t          j        ||          z  }nw# t          $ rj | j        j                            t%          d          | j        z  | j                  }| j                            | j        | j        |          }	|	g|gfcY S w xY w|||gg fS )Nindex-%sindexsinglez$Python Enhancement Proposals; PEP %srB   entriesidsFpepinternalrefurirI   zPEP zinvalid PEP number %sline)rY   new_serialnor	   r6   r   r   r   rW   rX   note_explicit_target	build_uri	referencer:   strongr4   
ValueErrorreportererrorr
   linenoproblematicrU   
r0   	target_idr   r   r6   r   r   r4   msgprbs
             r2   rN   zPEP.run   s   !6!6w!?!??	a FGG$+Ur4) * w///b"9+666226:::	 ^^%%FBvX]W^___I& 8U\$*djAAA		+U\%777	 	  	  	 ,'--b1H.I.IDK.W37; . @ @C,**4<sKKC53%<		  vy)2--s   A:D A1E76E7r5   c                   | j         j        j        j        }| j                            dd          }t          |          dk    r#|dt          |d                   |d         fz  z   S |dt          |d                   z  z   S )N#rD      zpep-%04d/#%sr   z	pep-%04d/)rW   rX   settingspep_base_urlr6   rJ   lenintr0   base_urlrets      r2   r   zPEP.build_uri   su    <(1>kQ''s88q==nCFSV/DDDDkCAKK777r3   Nrl   r*   r5   rn   ro   rp   rN   r   rk   r3   r2   r   r      s<        . . . .28 8 8 8 8 8r3   r   c                      e Zd ZddZddZdS )	RFCr*   r?   c                   d| j                             d          z  }dd| j        z  |dd fg}t          j        |          }t          j        dd|g          }| j        j                            |           	 | 	                                }t          j
        ddd|d	g
          }| j        r#|t          j        | j        | j                  z  }n"d| j        z   }|t          j        ||          z  }nw# t          $ rj | j        j                            t#          d          | j        z  | j                  }| j                            | j        | j        |          }	|	g|gfcY S w xY w|||gg fS )Nr   r   r   zRFC; RFC %srB   r   r   Frfcr   zRFC zinvalid RFC number %sr   )rY   r   r6   r   r   r   rW   rX   r   r   r   r:   r   r4   r   r   r   r
   r   r   rU   r   s
             r2   rN   zRFC.run   s   !6!6w!?!??	mdk99b$OPw///b"9+666226:::	 ^^%%FBvX]W^___I& 8U\$*djAAA		+U\%777	 	  	  	 ,'--b1H.I.IDK.W37; . @ @C,**4<sKKC53%<		  vy)2--s   ;A:C6 6A1E*)E*r5   c                6   | j         j        j        j        }| j                            dd          }t          |          dk    r1|| j         j        t          |d                   z  z   dz   |d         z   S || j         j        t          |d                   z  z   S )Nr   rD   r   r   )	rW   rX   r   rfc_base_urlr6   rJ   r   rfc_urlr   r   s      r2   r   zRFC.build_uri   s    <(1>kQ''s88q==dl2SQ[[@@3FQOOdl2SQ[[@@@r3   Nrl   r   r   rk   r3   r2   r   r      sB        . . . .0A A A A A Ar3   r   (?<!&)&(?![&\s])c                  6    e Zd Z ej        d          ZddZdS )GUILabelr   r*   r?   c                   t          j        | j        | j        g          }| j                            | j                  }|t          j        |                    d                    z  }|D ]o}|	                    dd          }t          j        |d                   }t          j        dd|dg          }||z  }|t          j        |dd                    z  }p|gg fS )	N)rU   rI   r   z&&&rB   acceleratorrP   rD   )
r   inlinerU   rF   amp_rerJ   rT   Textpopreplace)r0   rZ   spansspanletterr   s         r2   rN   zGUILabel.run   s    |DL49+FFF!!$),,
599Q<<((( 	) 	)D<<c**DZQ((F,r2vOOOKKDEJtABBx(((DDvrzr3   Nrl   )rn   ro   rp   recompiler   rN   rk   r3   r2   r   r      s:        RZ+,,F     r3   r   c                  $     e Zd ZdZd fdZ xZS )MenuSelectionu   ‣r*   r?   c                    | j                             d| j                  | _         t                                                      S )Nz-->)rT   r   BULLET_CHARACTERr.   rN   )r0   r1   s    r2   rN   zMenuSelection.run  s1    I%%eT-BCC	ww{{}}r3   rl   )rn   ro   rp   r   rN   ru   rv   s   @r2   r   r   	  sC        .         r3   r   z	{([^}]+)}z(\\*{|\\*})c                  >    e Zd Z ej        d          Zd
dZddZd	S )EmphasizedLiteralz(\\\\|\\{|\\}|{|})r*   r?   c                    |                      | j                  }t          j        | j        dg|R | j                                        | j        gd}|gg fS )NrB   )rolerI   )parserT   r   rt   rU   rF   r`   )r0   childrenrZ   s      r2   rN   zEmphasizedLiteral.run  sk    ::di((}T\2 J J J"&)//"3"3di[J J J vrzr3   rT   r5   
list[Node]c                   g }dg}| j                             |          D ]}|dk    r|dxx         dz  cc<   |dk    r[t          |          dk    r|d         dk    r|dxx         dz  cc<   P|                    d           |                    d           {|dk    rt          |          d	k    r|d
         dk    rt          |d                   dk    rn|d         r-|                    t	          j        |d                              |                    t	          j        |d         |d                              dg}'|                    d           d                    |          g}T|dk    r|dxx         dz  cc<   l|dk    r|dxx         dz  cc<   |dxx         |z  cc<   d                    |          r<d                    |          }|                    t	          j        |                     |S )NrB   z\\\{r   r9   }   rD   r   z\{z\})	parens_rerJ   r   appendr   r   emphasisjoin)r0   rT   r}   stackparts        r2   r   zEmphasizedLiteral.parse  s   N((.. 	" 	"Dv~~b			T!				u::??uRyC'7'7"III$IIII LL%%%LL$$$$u::??uQx33uQx==1;L;LQx <ejq&:&:;;;MM%.q58"D"DEEEDEE LL%%%WWU^^,EEb			S 				b			S 				b			T!				775>> 	,775>>DMM%*T**+++r3   Nrl   )rT   r5   r*   r   )rn   ro   rp   r   r   r   rN   r   rk   r3   r2   r   r     sN        
011I   % % % % % %r3   r   	\((.*)\)$c                  B    e Zd Z ej        dej                  ZddZdS )Abbreviationr   r*   r?   c                R   | j                                         }| j                            | j                  }|rL| j        d |                                                                         }|                    d          |d<   n| j        }t          j	        | j
        |fi |gg fS )NrD   explanation)rd   copyabbr_researchrT   startstripgroupr   abbreviationrU   )r0   rd   matchedrT   s       r2   rN   zAbbreviation.runM  s    ,##%%,%%di00 	9-gmmoo-.4466D%,]]1%5%5GM""9D"4<AAAABBFFr3   Nrl   )rn   ro   rp   r   r   Sr   rN   rk   r3   r2   r   r   J  sC        bjrt,,G	G 	G 	G 	G 	G 	Gr3   r   rk   rF   r5   rU   rT   r   r   rW   #docutils.parsers.rst.states.Inlinerrd   dict | NonecontentSequence[str]r*   r?   c                   |i }|                                 }t          j        j        j                            |           |                    dd          }dg}|r|                    d           d|v r|                    |d                    |r||vr|                    |           t          j
        ||||          }	|	gg fS )NlanguagerB   code	highlightrI   )rI   r   )r   docutilsparsersrstrolesset_classesgetr   extendr   rt   )
rF   rU   rT   r   rW   rd   r   r   rI   rZ   s
             r2   	code_roler   q  s     llnnG**7333{{:r**HhG ${###Gwy)*** !HG++x   =$(KKKD62:r3   )classr   )r"   T)r)   )	downloadanyr   r   guilabelmenuselectionfilesampabbrzdict[str, RoleFunction]specific_docrolesappr   dict[str, Any]c                   ddl m} t                                          D ]K\  }}|                    ||          }|                    ||d|gi          }|                    ||           Lt                                          D ]\  }}|                    ||           |                    dt                     ddddS )Nr   )r   rI   r   builtinT)versionparallel_read_safeparallel_write_safe)
docutils.parsers.rstr   generic_docrolesitemsGenericRole
CustomRoleregister_local_roler   register_canonical_roler   )r   r   rolenamer"   genericr   funcs          r2   setupr    s    ******/5577 2 2)##Hi88'Iz3JKK!!(D1111+1133 2 2$!!(D1111 
!!&)444 "#  r3   )Nrk   )rF   r5   rU   r5   rT   r5   r   r   rW   r   rd   r   r   r   r*   r?   )r   r   r*   r   )Crq   
__future__r   r   typingr   r   docutils.parsers.rst.directivesr   docutils.parsers.rst.rolesdocutils.parsers.rst.statesr   r   sphinxr   sphinx.localer	   r
   sphinx.utilr   sphinx.util.docutilsr   r   collections.abcr   docutils.nodesr   r   r   r   sphinx.applicationr   sphinx.environmentr   sphinx.util.typingr   literal_strongr   rt   literal_emphasisr   r  r!   rx   r   r   r   _amp_rer   r   
_litvar_rer   r   r   _abbr_rer   r   r   r   
directivesclass_option	unchangedrd   download_referencer   rs   r  rk   r3   r2   <module>r&     sA   ) ) ) " " " " " " 				 % % % % % % % % & & & & ! ! ! ! " " " " ! ! ! ! ! ! ! !                     : : : : : : : : 0((((((IIIIIIIIIIII))))))333333////// &>=+&)*&m   w w w w w} w w wt    (    8  8  8  8  8-  8  8  8FA A A A A- A A AD "*(
)
)    z   $    H    RZ$$
BJ~&&	/ / / / /
 / / /d 2:lBD))G G G G G: G G GR EG    0 !,9 $/9 	  8#>???;T***355355

"]__LNN. .           r3   