
    O&iy>                        U d Z ddlZddlmZmZmZmZmZ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mZ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 dd
lm Z  er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          Z0 G d de          Z1 G d de1          Z2 ej/        d          Z3 ej/        d          Z4 G d de          Z5 ej/        dej6                  Z7 G d  d!e          Z8i g fd"e9d#e9d$e9d%e:d&ej;        j<        j=        j>        d'ed(ee9         d)eee         ee         f         fd*Z?ej;        j<        j@        jA        ej;        j<        j@        jB        d+e?_C         e+ejD        ,           e,d-.           e-             e.             e1             e2             e5             e5             e8            d/	ZEee9e f         eFd0<   d1d2d)ee9ef         fd3ZGdS )4z#Handlers for additional ReST roles.    N)TYPE_CHECKINGAnyDictListOptionalTupleType)nodesutils)ElementNodeTextElementsystem_message)addnodes)___)ws_re)ReferenceRole
SphinxRole)RoleFunction)Sphinx)BuildEnvironment)
commanddfnkbd
mailheadermakevarmanpagemimetype	newsgroupprogramregexpc                       e Zd ZU dZej        Zee         e	d<   e
j        Zee         e	d<   	 	 	 	 ddededeee                  deee                  ded	df fd
Zdeded	eeef         fdZd	eee         ee         f         fdZd	eee         ee         f         fdZd	eee         ee         f         fdZdddedededed	eeef         fdZde
j        dddeded	eee         ee         f         f
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()`.
    	nodeclassinnernodeclassFN
fix_parens	lowercasewarn_danglingreturnc                     || _         || _        || _        ||| _        ||| _        t                                                       d S N)r'   r(   r)   r%   r&   super__init__)selfr'   r(   r%   r&   r)   	__class__s         Y/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/roles.pyr.   zXRefRole.__init__B   sR     %"* &DN%"0D    titletargetc                     | 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)r/   r3   r4   s      r1   update_title_and_targetz XRefRole.update_title_and_targetP   so    & 	~~d## #crc
{3 ??4   	!CRC[Ff}r2   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)r/   s    r1   runzXRefRole.run]   s    di+-ty(DNDL"DL1DLL+/9??3+B+B(DNDL"DNt~~~t||4\]DL= 	+,,...((***r2   c                 &   t          j        | j        dd                    }| j        r d| _        |                     |d          \  }}|                     | j        || j                  }| 	                    | j
        j        | j        |d          S )Nr@   Fr>   rE   is_ref)r   unescapetextr'   r7   r;   r&   rawtextrE   result_nodesinlinerdocumentenv)r/   rP   r4   nodes       r1   rH   zXRefRole.create_non_xref_nodej   s    ~dim,,? 	B&+D#77bAALD&""4<t|"LL  !6$u UUUr2   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)refdocrC   rD   refexplicitrefwarn	reftargetrL   TrM   )r4   r3   r(   lowerr'   r;   rU   docnamerC   rD   r7   r)   r%   rQ   set_source_infoprocess_linkr&   rE   rR   rS   rT   )r/   r4   r3   optionsrefnodes        r1   rI   zXRefRole.create_xref_nodes   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Wr2   rU   r   ra   r7   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)r/   rU   ra   r7   r3   r4   s         r1   r_   zXRefRole.process_link   s     eiV,,,,r2   rT   rV   rN   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).
         )r/   rT   rU   rV   rN   s        r1   rR   zXRefRole.result_nodes   s     vrzr2   )FFNNF)__name__
__module____qualname____doc__r   pending_xrefr%   r	   r   __annotations__r
   literalr&   r   boolr   r.   strr   r;   r   r   r   rJ   rH   rI   r_   rT   rR   __classcell__r0   s   @r1   r$   r$   '   s/         .  (4ItG}444(-ND%555CH6:?C', 4 D $T']3!)${*;!< !% 26     S # %S/    +U4:tN';;< + + + +VeDJ^8L,L&M V V V VX%T
D4H(H"I X X X X6- 2 -W -Z^ --),-16sCx- - - -U^ :L T[ !&+DJ^8L,L&M       r2   r$   c                   H     e Zd Zdddededededeeef         f fdZ xZS )	AnyXRefRolerU   r   ra   r7   r3   r4   r*   c                     t                                          |||||          }|j                            |j                   |S r,   )r-   r_   
attributesupdateref_context)r/   rU   ra   r7   r3   r4   resultr0   s          r1   r_   zAnyXRefRole.process_link   sA    %%c74FvVV!!#/222r2   )	rg   rh   ri   r   rn   ro   r   r_   rp   rq   s   @r1   rs   rs      st         2 W Z^ ),16sCx         r2   rs   c                   N    e Zd Zdeee         ee         f         fdZdefdZ	dS )PEPr*   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 %sr>   entriesidsFpepinternalrefurirE   zPEP zinvalid PEP number %sline)rU   new_serialnor   r4   r   r}   r
   rS   rT   note_explicit_target	build_uri	referencer7   strongr3   
ValueErrorreportererrorr   linenoproblematicrQ   
r/   	target_idr   r}   r4   r   r   r3   msgprbs
             r1   rJ   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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#r@      zpep-%04d/#%sr   z	pep-%04d/)rS   rT   settingspep_base_urlr4   rF   lenintr/   base_urlrets      r1   r   zPEP.build_uri   su    <(1>kQ''s88q==nCFSV/DDDDkCAKK777r2   N
rg   rh   ri   r   r   r   r   rJ   ro   r   rf   r2   r1   rz   rz      s]        .U4:tN';;< . . . .283 8 8 8 8 8 8r2   rz   c                   N    e Zd Zdeee         ee         f         fdZdefdZ	dS )RFCr*   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 %sr>   r   r   Frfcr   zRFC zinvalid RFC number %sr   )rU   r   r4   r   r}   r
   rS   rT   r   r   r   r7   r   r3   r   r   r   r   r   r   rQ   r   s
             r1   rJ   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*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   r@   r   r   )	rS   rT   r   rfc_base_urlr4   rF   r   rfc_urlr   r   s      r1   r   zRFC.build_uri   s    <(1>kQ''s88q==dl2SQ[[@@3FQOOdl2SQ[[@@@r2   Nr   rf   r2   r1   r   r      sd        .U4:tN';;< . . . .0A3 A A A A A Ar2   r   (?<!&)&(?![&\s])c                   b    e Zd Z ej        d          Zdeee         ee	         f         fdZ
dS )GUILabelr   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)rQ   rE   r   z&&&r>   acceleratorrL   r@   )
r
   inlinerQ   rB   amp_rerF   rP   Textpopreplace)r/   rV   spansspanletterr   s         r1   rJ   zGUILabel.run   s    |DL49+FFF!!$),,
599Q<<((( 	) 	)D<<c**DZQ((F,r2vOOOKKDEJtABBx(((DDvrzr2   N)rg   rh   ri   recompiler   r   r   r   r   rJ   rf   r2   r1   r   r      sT        RZ+,,FU4:tN';;<      r2   r   c                   P     e Zd ZdZdeee         ee         f         f fdZ xZ	S )MenuSelectionu   ‣r*   c                     | j                             d| j                  | _         t                                                      S )Nz-->)rP   r   BULLET_CHARACTERr-   rJ   )r/   r0   s    r1   rJ   zMenuSelection.run  s1    I%%eT-BCC	ww{{}}r2   )
rg   rh   ri   r   r   r   r   r   rJ   rp   rq   s   @r1   r   r     s]        .U4:tN';;<          r2   r   z	{([^}]+)}z(\\*{|\\*})c                   ~    e Zd Z ej        d          Zdeee         ee	         f         fdZ
dedee         fdZdS )EmphasizedLiteralz(\\\\|\\{|\\}|{|})r*   c                     |                      | j                  }t          j        | j        dg|R | j                                        | j        gd}|gg fS )Nr>   )rolerE   )parserP   r
   rm   rQ   rB   r\   )r/   childrenrV   s      r1   rJ   zEmphasizedLiteral.run  sk    ::di((}T\2 J J J"&)//"3"3di[J J J vrzr2   rP   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 )Nr>   z\\\{r   r6   }   r@   r   z\{z\})	parens_rerF   r   appendr
   r   emphasisjoin)r/   rP   rx   stackparts        r1   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**+++r2   N)rg   rh   ri   r   r   r   r   r   r   r   rJ   ro   r   rf   r2   r1   r   r     sz        
011IU4:tN';;<    %# %$t* % % % % % %r2   r   	\((.*)\)$c                   n    e Zd Z ej        dej                  Zdeee	         ee
         f         fdZdS )Abbreviationr   r*   c                 R   | j                                         }| j                            | j                  }|rL| j        d |                                                                         }|                    d          |d<   n| j        }t          j	        | j
        |fi |gg fS )Nr@   explanation)r`   copyabbr_researchrP   startstripgroupr
   abbreviationrQ   )r/   r`   matchedrP   s       r1   rJ   zAbbreviation.runH  s    ,##%%,%%di00 	9-gmmoo-.4466D%,]]1%5%5GM""9D"4<AAAABBFFr2   N)rg   rh   ri   r   r   Sr   r   r   r   r   rJ   rf   r2   r1   r   r   E  s^        bjrt,,G	GU4:tN';;< 	G 	G 	G 	G 	G 	Gr2   r   rB   rQ   rP   r   rS   r`   contentr*   c                    |                                 }t          j        j        j                            |           |                    dd          }dg}|r|                    d           d|v r|                    |d                    |r||vr|                    |           t          j
        ||||          }	|	gg fS )Nlanguager>   code	highlightrE   )rE   r   )r   docutilsparsersrstrolesset_classesgetr   extendr
   rm   )
rB   rQ   rP   r   rS   r`   r   r   rE   rV   s
             r1   	code_roler   l  s     llnnG**7333{{:r**HhG ${###Gwy)*** !HG++x   =$(KKKD62:r2   )classr   )r%   T)r)   )	downloadanyr   r   guilabelmenuselectionfilesampabbrspecific_docrolesappr   c                    ddl m} t                                          D ]K\  }}|                    ||          }|                    ||d|gi          }|                    ||           Lt                                          D ]\  }}|                    ||           |                    dt                     ddddS )Nr   )r   rE   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          r1   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 "#  r2   )Hrj   r   typingr   r   r   r   r   r   r	   docutils.parsers.rst.directivesr   docutils.parsers.rst.rolesdocutils.parsers.rst.statesr
   r   docutils.nodesr   r   r   r   sphinxr   sphinx.localer   r   sphinx.utilr   sphinx.util.docutilsr   r   sphinx.util.typingr   sphinx.applicationr   sphinx.environmentr   literal_strongr   rm   literal_emphasisr   r   r$   rs   rz   r   r   _amp_rer   r   
_litvar_rer   r   r   _abbr_rer   ro   r   r   r   statesInlinerr   
directivesclass_option	unchangedr`   download_referencer   rl   r  rf   r2   r1   <module>r     s   ) ) ) 				 H H H H H H H H H H H H H H H H H H & & & & ! ! ! ! " " " " ! ! ! ! ! ! ! ! E E E E E E E E E E E E                     : : : : : : : : + + + + + + 4))))))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 !r C # S # '+2:+/9 dT.%99:   , !,9 $/9 	  8#>???;T***355355

"]__LNN. . 4\)*    x DcN      r2   