
    N&iV                     |   d Z dZddlZddlZddlmZmZ ddlmZm	Z	  G d de	          Z
 G d d	e	          Z G d
 de	          Z G d de	          Z G d de	          Z G d de	          Z G d de          Z G d de	          Z G d de	          Z G d de	          Z G d dej                  ZdS )z&
Transforms for resolving references.
reStructuredText    N)nodesutils)TransformError	Transformc                       e Zd ZdZdZd ZdS )PropagateTargetsa}  
    Propagate empty internal targets to the next element.

    Given the following nodes::

        <target ids="internal1" names="internal1">
        <target anonymous="1" ids="id1">
        <target ids="internal2" names="internal2">
        <paragraph>
            This is a test.

    PropagateTargets propagates the ids and names of the internal
    targets preceding the paragraph to the paragraph itself::

        <target refid="internal1">
        <target anonymous="1" refid="id1">
        <target refid="internal2">
        <paragraph ids="internal2 id1 internal1" names="internal2 internal1">
            This is a test.
    i  c                    | j                             t          j                  D ]T}t	          |j        t          j                  s?|                    d          s*|                    d          s|                    d          rbt          |          dk    s
J d            |	                    d          }t	          |t          j
                  r1|	                    dd	          }t	          |t          j
                  1|@t	          |t          j        t          j        f          rt	          |t          j                  s$|d
                             |d
                    |d                             |d                    t          |d          si |_        t          |d          si |_        |d
         D ]}|| j         j        |<   ||j        |<   |d         D ]}||j        |<   |j                            t%          |di                      |j                            t%          |di                      |d
         d         |d<   g |d
<   g |d<   | j                             |           Vd S )Nrefidrefurirefnamer   z&error: block-level target has childrenT)ascendF)r   descendidsnamesexpect_referenced_by_nameexpect_referenced_by_id)documentfindallr   target
isinstanceparentTextElementhasattrlen	next_nodesystem_message	Invisible
Targetableextendr   r   r   updategetattr
note_refid)selfr   r   idnames        k/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/docutils/transforms/references.pyapplyzPropagateTargets.apply+   s   m++EL99 -	- -	-F6=%*;<< ((,2NN8,D,D	** v;;!###%M###(((55IY(<== L%//tU/KK	 Y(<== L !i%/5;K)LMM ""9el;; " e##F5M222g%%fWo6669&ABB 968	39&?@@ 746	1Um ? ?(1!"% 9?	1"55w C C<B	3D99 /66 ;R@@B B B-44 92>>@ @ @ %UmA.F7O F5M F7OM$$V,,,,[-	- -	-    N__name__
__module____qualname____doc__default_priorityr(    r)   r'   r	   r	      s5         * .- .- .- .- .-r)   r	   c                       e Zd ZdZdZd ZdS )AnonymousHyperlinksa  
    Link anonymous references to targets.  Given::

        <paragraph>
            <reference anonymous="1">
                internal
            <reference anonymous="1">
                external
        <target anonymous="1" ids="id1">
        <target anonymous="1" ids="id2" refuri="http://external">

    Corresponding references are linked via "refid" or resolved via "refuri"::

        <paragraph>
            <reference anonymous="1" refid="id1">
                text
            <reference anonymous="1" refuri="http://external">
                external
        <target anonymous="1" ids="id1">
        <target anonymous="1" ids="id2" refuri="http://external">
    i  c                 D   g }g }| j                             t          j                  D ],}|                    d          r|                    |           -| j                             t          j                  D ],}|                    d          r|                    |           -t          |          t          |          k    r| j         j        	                    dt          |          dt          |          d          }| j         
                    |          }|D ]g}t          j        |j        |j        |          }| j         
                    |          }|                    |           |                    |           hd S t          ||          D ]\  }}	d|	_        	 |	                    d          r|	d         |d<   d|_        nM|	d	         s| j         j        |	d
                  }	J|	d	         d         |d
<   | j                             |           	 d S )N	anonymouszAnonymous hyperlink mismatch: z references but z+ targets.
See "backrefs" attribute for IDs.r      Tr   r   r   r   )r   r   r   	referencegetappendr   r   reportererrorset_idproblematic	rawsourceadd_backrefreplace_selfzip
referencedr   resolvedr   r#   )
r$   anonymous_refsanonymous_targetsnodemsgmsgidrefprbprbidr   s
             r'   r(   zAnonymousHyperlinks.applyv   sH   M))%/:: 	, 	,Dxx$$ ,%%d+++M))%,77 	/ 	/Dxx$$ /!((...~&''( (-(... ((((#.?*@*@*@*@BC CC M((--E% & &'mS]%A A A,,S11&&&  %%%%F~/@AA 	 	KC !F>>(++ $*8$4CM#$CL!%= !!%!26'?!C #)%=#3CLM,,S111	 	r)   Nr*   r0   r)   r'   r2   r2   \   s5         , % % % % %r)   r2   c                   :    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	S )
IndirectHyperlinksaN  
    a) Indirect external references::

           <paragraph>
               <reference refname="indirect external">
                   indirect external
           <target id="id1" name="direct external"
               refuri="http://indirect">
           <target id="id2" name="indirect external"
               refname="direct external">

       The "refuri" attribute is migrated back to all indirect targets
       from the final direct target (i.e. a target not referring to
       another indirect target)::

           <paragraph>
               <reference refname="indirect external">
                   indirect external
           <target id="id1" name="direct external"
               refuri="http://indirect">
           <target id="id2" name="indirect external"
               refuri="http://indirect">

       Once the attribute is migrated, the preexisting "refname" attribute
       is dropped.

    b) Indirect internal references::

           <target id="id1" name="final target">
           <paragraph>
               <reference refname="indirect internal">
                   indirect internal
           <target id="id2" name="indirect internal 2"
               refname="final target">
           <target id="id3" name="indirect internal"
               refname="indirect internal 2">

       Targets which indirectly refer to an internal target become one-hop
       indirect (their "refid" attributes are directly set to the internal
       target's "id"). References which indirectly refer to an internal
       target become direct internal references::

           <target id="id1" name="final target">
           <paragraph>
               <reference refid="id1">
                   indirect internal
           <target id="id2" name="indirect internal 2" refid="id1">
           <target id="id3" name="indirect internal" refid="id1">
    i  c                     | j         j        D ]3}|j        s|                     |           |                     |           4d S N)r   indirect_targetsrC   resolve_indirect_targetresolve_indirect_referencesr$   r   s     r'   r(   zIndirectHyperlinks.apply   sU    m4 	5 	5F? 5,,V444,,V4444	5 	5r)   c                    |                     d          }|	|d         }nY| j        j                             |          }|s8| j        j        j        D ]} ||          r n|                     |           d S | j        j        |         }|                    |           t          |t          j
                  ra|j        sZ|                    d          rEt          |d          r|                     |           d S d|_        |                     |           |`|                    d          r|d         |d<   d|v r|d= nz|                    d          r&|d         |d<   | j                            |           n?|d         r ||d<   | j                            |           n|                     |           d S ||d= d|_        d S )Nr   r   r%   multiply_indirectr6   r   r   )r8   r   nameidstransformerunknown_reference_resolversnonexistent_indirect_targetr   note_referenced_byr   r   r   rC   r   circular_indirect_referencerV   rQ   r#   )r$   r   r   reftarget_idresolver_function	reftargets         r'   rQ   z*IndirectHyperlinks.resolve_indirect_target   s   **Y''?!'?LL=044W==L  1M= =%((00  44V<<<M%l3	$$$555i.. 		) )		).7.?.?	.J.J		)v233  00888'(F$((333(X&& 	(2F8&  7Ow'' 		'0F7OM$$V,,,, ".w((000000888y!r)   c                     |d         | j         j        v r|                     |d           d S |                     |d           d S )Nr   z>which is a duplicate, and cannot be used as a unique referencezwhich does not exist)r   rW   indirect_target_errorrS   s     r'   rZ   z.IndirectHyperlinks.nonexistent_indirect_target  se    ) 555&&v 0N O O O O O &&v/EFFFFFr)   c                 2    |                      |d           d S )Nzforming a circular reference)ra   rS   s     r'   r\   z.IndirectHyperlinks.circular_indirect_reference  s    ""6+IJJJJJr)   c           	         d}g }|d         rd|d         d         z  }|d         D ]5}|                     | j        j                            |g                      6|d         D ]5}|                     | j        j                            |g                      6|d         r|d|d         d         z  z  }| j        j                            d|d|d	         d
|d|          }| j                            |          }t          j	        |          D ]g}	t          j        |	j        |	j        |          }
| j                            |
          }|                    |           |	                    |
           hd|_        d S )N r   z"%s" r   r   z	(id="%s")zIndirect hyperlink target z refers to target "r   z", .	base_noder5   r6   )r    r   refnamesr8   refidsr:   r;   r<   r   uniqr   r=   r>   r?   r@   rC   )r$   r   explanationnamingreflistr&   r%   rG   rH   rI   rJ   rK   s               r'   ra   z(IndirectHyperlinks.indirect_target_error  s   '? 	2vgq11F7O 	A 	ADNN4=155dB??@@@@- 	= 	=BNN4=/33B;;<<<<%= 	5kF5M!$444Fm$***	***KKK9DJ + L L $$S)):g&& 	" 	"C#-e= = =CM((--EOOE"""S!!!!r)   c                    |                     d          rd}| j        j        }n|                     d          rd}d }nd S ||         }|d         D ]}| j        j                            |g           }|r|                    |           |D ]U}|j        r
|d= |||<   |r ||           d|_        t          |t          j	                  r| 
                    |           V|d         D ]}| j        j                            |g           }|r|                    |           |D ]U}|j        r
|d= |||<   |r ||           d|_        t          |t          j	                  r| 
                    |           Vd S )	Nr   r   r   r&   r   r6   r   rU   )r   r   r#   rh   r8   r[   rC   r   r   r   rR   ri   )	r$   r   attnamecall_methodattvalr&   rm   rI   r%   s	            r'   rR   z.IndirectHyperlinks.resolve_indirect_references(  s   >>'"" 	G-2KK^^H%% 	GKKF7O 	: 	:Dm,00r::G 5))t)444 	: 	:< 	N%G %K$$$ c5<00 :44S999	: - 	: 	:Bm*..r266G 1))R)000 	: 	:< L%G %K$$$ c5<00 :44S999	:		: 	:r)   N)r+   r,   r-   r.   r/   r(   rQ   rZ   r\   ra   rR   r0   r)   r'   rM   rM      s        0 0d 5 5 5+ + +ZG G GK K K  .%: %: %: %: %:r)   rM   c                       e Zd ZdZdZd ZdS )ExternalTargetsa  
    Given::

        <paragraph>
            <reference refname="direct external">
                direct external
        <target id="id1" name="direct external" refuri="http://direct">

    The "refname" attribute is replaced by the direct "refuri" attribute::

        <paragraph>
            <reference refuri="http://direct">
                direct external
        <target id="id1" name="direct external" refuri="http://direct">
    i  c                 L   | j                             t          j                  D ]~}|                    d          rg|d         }|d         D ]V}| j         j                            |g           }|r|                    |           |D ]}|j        r
|d= ||d<   d|_        Wd S )Nr   r   ro   r   r6   )	r   r   r   r   r   rh   r8   r[   rC   )r$   r   r   r&   rm   rI   s         r'   r(   zExternalTargets.applyd  s    m++EL99 	) 	)F~~h'' ))"7O 	) 	)D"m488rBBG =11t1<<<& ) )< %$	N(.H'()	) 	)r)   Nr*   r0   r)   r'   rt   rt   P  s5           ) ) ) ) )r)   rt   c                       e Zd ZdZd Zd ZdS )InternalTargetsi  c                     | j                             t          j                  D ]A}|                    d          s*|                    d          s|                     |           Bd S )Nr   r   )r   r   r   r   r   resolve_reference_idsrS   s     r'   r(   zInternalTargets.applyx  si    m++EL99 	3 	3F>>(++ 3FNN74K4K 3**6222	3 	3r)   c                    |d         D ]w}| j         j                            |          }| j         j                            |g           }|r|                    |           |D ]}|j        r
|r|d= ||d<   d|_        xdS )a  
        Given::

            <paragraph>
                <reference refname="direct internal">
                    direct internal
            <target id="id1" name="direct internal">

        The "refname" attribute is replaced by "refid" linking to the target's
        "id"::

            <paragraph>
                <reference refid="id1">
                    direct internal
            <target id="id1" name="direct internal">
        r   ro   r   r   r6   N)r   rW   r8   rh   r[   rC   )r$   r   r&   r   rm   rI   s         r'   ry   z%InternalTargets.resolve_reference_ids}  s    " 7O 	! 	!DM)--d33Em,00r::G 5))t)444 ! !<  )I#(CL !	! 	!r)   N)r+   r,   r-   r/   r(   ry   r0   r)   r'   rw   rw   t  s8        3 3 3
! ! ! ! !r)   rw   c                   H    e Zd ZdZdZdZ	 g dZd Zd Zd Z	d Z
d	 Zd
 ZdS )	Footnotesa  
    Assign numbers to autonumbered footnotes, and resolve links to footnotes,
    citations, and their references.

    Given the following ``document`` as input::

        <document>
            <paragraph>
                A labeled autonumbered footnote reference:
                <footnote_reference auto="1" id="id1" refname="footnote">
            <paragraph>
                An unlabeled autonumbered footnote reference:
                <footnote_reference auto="1" id="id2">
            <footnote auto="1" id="id3">
                <paragraph>
                    Unlabeled autonumbered footnote.
            <footnote auto="1" id="footnote" name="footnote">
                <paragraph>
                    Labeled autonumbered footnote.

    Auto-numbered footnotes have attribute ``auto="1"`` and no label.
    Auto-numbered footnote_references have no reference text (they're
    empty elements). When resolving the numbering, a ``label`` element
    is added to the beginning of the ``footnote``, and reference text
    to the ``footnote_reference``.

    The transformed result will be::

        <document>
            <paragraph>
                A labeled autonumbered footnote reference:
                <footnote_reference auto="1" id="id1" refid="footnote">
                    2
            <paragraph>
                An unlabeled autonumbered footnote reference:
                <footnote_reference auto="1" id="id2" refid="id3">
                    1
            <footnote auto="1" id="id3" backrefs="id2">
                <label>
                    1
                <paragraph>
                    Unlabeled autonumbered footnote.
            <footnote auto="1" id="footnote" name="footnote" backrefs="id1">
                <label>
                    2
                <paragraph>
                    Labeled autonumbered footnote.

    Note that the footnotes are not in the same order as the references.

    The labels and reference text are added to the auto-numbered ``footnote``
    and ``footnote_reference`` elements.  Footnote elements are backlinked to
    their references via "refids" attributes.  References are assigned "id"
    and "refid" attributes.

    After adding labels and reference text, the "auto" attributes can be
    ignored.
    il  N)
*u   †u   ‡   §   ¶#u   ♠u   ♥u   ♦u   ♣c                     g | _         | j        j        }|                     |          | j        _        |                     |           |                                  |                                  d S rO   )autofootnote_labelsr   autofootnote_startnumber_footnotesnumber_footnote_referencessymbolize_footnotesresolve_footnotes_and_citations)r$   startnums     r'   r(   zFootnotes.apply  sj    #% =3+/+@+@+J+J(''111  """,,.....r)   c                 L   | j         j        D ]}	 t          |          }|dz  }|| j         j        vrn$|                    dt          j        d|                     |d         D ]}| j         j                            |g           D ]}|t          j	        |          z  }|
                    d           t          |d                   t          |d                   cxk    rdk    sn J |d         d         |d<   |                    |d         d                    | j                             |           d|_        |d         sX|d	         sP|d                             |           | j                             ||           | j                            |           |S )
z
        Assign numbers to autonumbered footnotes.

        For labeled autonumbered footnotes, copy the number over to
        corresponding footnote references.
        Tr6   r   rd   r   r   r   r   dupnames)r   autofootnotesstrrW   insertr   labelfootnote_refsr8   Textdelattrr   r?   r#   rC   r9   note_explicit_targetr   )r$   r   footnoter   r&   rI   s         r'   r   zFootnotes.number_footnotes  s    3 	7 	7HHA 555	
 OOAu{2u55666 ) % %=6::4DD % %C5:e,,,CKK	***x//3s5z??GGGGaGGGGGG#+E?1#5CL((UA777M,,S111#$CLL% G$ 7Xj-A 7!((///228XFFF(//666r)   c                    d}| j         j        D ]}|j        s|                    d          r 	 | j        |         }n# t
          $ r | j         j                            dt          | j                  z  |          }| j         	                    |          }| j         j        |d         D ]}|j        s|                    d          rt          j        |j        |j        |          }| j         	                    |          }|                    |           |                    |           Y  dS w xY w|t          j        |          z  }| j         j        |         }	| j         j        |	         }
|	|d<   | j                             |           t          |d                   d	k    sJ |
                    |d         d                    d	|_        |d	z  }dS )
z3Assign numbers to autonumbered footnote references.r   r   zUToo many autonumbered footnote references: only %s corresponding footnotes available.rf   Nr   r5   r   r6   )r   autofootnote_refsrC   r   r   
IndexErrorr:   r;   r   r<   r   r=   r>   r?   r@   r   rW   r   r#   )r$   r   irI   r   rG   rH   rJ   rK   r%   r   s              r'   r   z$Footnotes.number_footnote_references  s   =2 	 	C| s{{733 03   m,22;D4556AD 3 F F ,,S11=:122> * *C| !s{{9'='= ! +-eE E EC M0055EOOE***$$S)))) 5:e$$$C&u-B}(,HCLM$$S)))s5z??a''''  UA///CLFAA9	 	s   >C3D65D6c                    g }| j         j        D ]}t          | j         j        t	          | j                            \  }}| j        |         |dz   z  }|                    |           |                    dt          j	        d|                     | j         xj        dz  c_        | j         
                    |           d}| j         j        D ]}	 |t          j        ||                   z  }n# t          $ r | j         j                            dt	          |          z  |          }| j         
                    |          }	| j         j        |d         D ]}|j        s|                    d          rt          j        |j        |j        |	          }
| j         
                    |
          }|                    |           |                    |
           Y  dS w xY w| j         j        |         }t	          |d	                   dk    sJ |d	         d         |d<   | j                             |           |                    |d	         d                    |dz  }dS )
z<Add symbols indexes to "[*]"-style footnotes and references.r6   r   rd   zOToo many symbol footnote references: only %s corresponding footnotes available.rf   Nr   r5   r   )r   symbol_footnotesdivmodsymbol_footnote_startr   symbolsr9   r   r   r   r<   symbol_footnote_refsr   r   r:   r;   rC   r   r=   r>   r?   r@   r#   )r$   labelsr   repsindex	labeltextr   rI   rG   rH   rJ   rK   s               r'   r   zFootnotes.symbolize_footnotes5  s   6 	+ 	+H !D!$T\!2!24 4KD%U+tax8IMM)$$$OOAu{2y99:::M//14//M  ****=5 	 	Cuz&),,,   m,22;=@[[I # 3 % % ,,S11==abbA * *C| !s{{7';'; ! +-eE E EC M0055EOOE***$$S)))) }5a8Hx''1,,,,#E?1-CLM$$S)))  UA///FAA/	 	s   C11C.G$#G$c                 F   | j         j        D ]C}|d         D ]8}|| j         j        v r(| j         j        |         }|                     ||           9D| j         j        D ]C}|d         D ]8}|| j         j        v r(| j         j        |         }|                     ||           9DdS )za
        Link manually-labeled footnotes and citations to/from their
        references.
        r   N)r   	footnotesr   resolve_references	citationscitation_refs)r$   r   r   rm   citations        r'   r   z)Footnotes.resolve_footnotes_and_citationsZ  s    
 / 	? 	?H!'* ? ?DM777"m9%@G++Hg>>>? / 	? 	?H!'* ? ?DM777"m9%@G++Hg>>>?	? 	?r)   c                 :   t          |d                   dk    sJ |d         d         }|D ]g}|j        r
|                    d           ||d<   t          |d                   dk    sJ |                    |d         d                    d|_        hd|_        d S )Nr   r6   r   r   r   )r   rC   r   r?   )r$   noterm   r%   rI   s        r'   r   zFootnotes.resolve_referencesj  s    4;1$$$$%[^ 	 	C| KK	"""CLs5z??a''''SZ]+++CLLr)   )r+   r,   r-   r.   r/   r   r   r(   r   r   r   r   r   r0   r)   r'   r|   r|     s        9 9v 9  G"/ / /  :  B# # #J? ? ?     r)   r|   c                       e Zd ZdS )#CircularSubstitutionDefinitionErrorN)r+   r,   r-   r0   r)   r'   r   r   x  s          r)   r   c                       e Zd ZdZdZ	 d ZdS )SubstitutionsaD  
    Given the following ``document`` as input::

        <document>
            <paragraph>
                The
                <substitution_reference refname="biohazard">
                    biohazard
                 symbol is deservedly scary-looking.
            <substitution_definition name="biohazard">
                <image alt="biohazard" uri="biohazard.png">

    The ``substitution_reference`` will simply be replaced by the
    contents of the corresponding ``substitution_definition``.

    The transformed result will be::

        <document>
            <paragraph>
                The
                <image alt="biohazard" uri="biohazard.png">
                 symbol is deservedly scary-looking.
            <substitution_definition name="biohazard">
                <image alt="biohazard" uri="biohazard.png">
       c           	      	   | j         j        }| j         j        }i }t          | j         j        dd          }t          | j                             t          j                            }|D ]}d}|d         }||v r|}	n*|	                                }
|
                    |
d           }	|	%| j         j                            d|z  |          }nO||	         }t          |                                          |k    r"| j         j                            d|	z            }|r| j                             |          }t          j        |j        |j        |          }| j                             |          }|                    |           |                    |           7|j        }|                    |          }d	|j        v s	d
|j        v rL|dk    rFt/          ||dz
           t          j                  r#||dz
                                           ||dz
  <   d|j        v s	d
|j        v r\t          |          |dz   k    rFt/          ||dz            t          j                  r#||dz                                            ||dz   <   |                                }	 |                    t          j                  D ]v}||d         	                                         }||                    |g           v rt:          ||                             |	           ||d<   |                    |           wne# t:          $ rW |j        }t/          |t          j                  r[| j         j                            dt          j         |j        |j                  |j!        |          }|                    |           n|}|"                    d          r|d         }|"                    d          | j         j                            d|z  |          }| j                             |          }t          j        |j        |j        |          }| j                             |          }|                    |           |                    |           Y -w xY w|                    |j#                   |j#        D ]:}t/          |t          j$                  rd|v r| j         %                    |           ;d S )Nline_length_limiti'  rd   r   z(Undefined substitution referenced: "%s".rf   z;Substitution definition "%s" exceeds the line-length-limit.r5   ltrimtrimr   r6   rtrimz
ref-originz*Circular substitution definition detected:)linerg   z2Circular substitution definition referenced: "%s".)&r   substitution_defssubstitution_namesr"   settingslistr   r   substitution_referencelowerr8   r:   r;   r   astextr<   r=   r>   r?   r@   r   r   
attributesr   r   rstriplstripdeepcopy
setdefaultr   r9   substitution_definitionliteral_blockr   r   childrenReferentialnote_refname)r$   defsnormednestedr   
subreflistrI   rG   r   keynormed_namesubdefrH   rJ   rK   r   r   subdef_copy
nested_refnested_name
ref_originrF   s                         r'   r(   zSubstitutions.apply  sK   }.1#DM$:$7@ @ $-//0LMMNN
 R	9 R	9CC)nG$%mmoojjd33{m,22@ +. 3 0 0 cv}}''*;;;-066258:; ;C  ,,S11'mS]%A A A,,S11&&&  %%%ZFLL%%EF---!222199F519,=,1J"8 "89(.uqy(9(@(@(B(BF519%F---!222[[519,,&veai'8%*EE -(.uqy(9(@(@(B(BF519% //++K!"-"5"54#6 #6 2 2J"(I)>)D)D)F)F"GK"f&7&7R&H&HHHAA;'..s333/2J|,%%j11112 7   fe&CDD *-066D+F,<,2,<> >#[F	 7 < <C
 '',,,, "%J$,,\:: >%/%=
 %,,\:: >-066 ")*5? 7 A AC !M0055E+s}EC C CC M0055EOOE***$$S)))/0 [1222 $, 9 9dE$566 9 !D((2248889[R	9 R	9s   BL55ERRNr*   r0   r)   r'   r   r   {  s?         4 >Z9 Z9 Z9 Z9 Z9r)   r   c                   *    e Zd ZdZdZ	 d Zd Zd ZdS )TargetNotesz
    Creates a footnote for each external target in the text, and corresponding
    footnote references after each reference.
    i  c                 t    t          j        | ||           |j                            dg           | _        d S )N)	startnodeclass)r   __init__detailsr8   classes)r$   r   r   s      r'   r   zTargetNotes.__init__  s8    4Y???? (,,Wb99r)   c                    i }g }| j                             t          j                  D ]}|                    d          s|d         }g }|D ]5}|                    | j         j                            |g                      6|s]|                     |d         ||          }|d         |vr |||d         <   |	                    |           | j                             t          j
                  D ]u}|                    d          s|                    d          rH|                     |d         |g|          }|d         |vr |||d         <   |	                    |           v| j                            |           d S )Nr   r   r4   )r   r   r   r   r   r    rh   r8   make_target_footnoter9   r7   r   r@   )	r$   notesnodelistr   r   refsr&   r   rI   s	            r'   r(   zTargetNotes.apply	  s   m++EL99 	* 	*F>>(++ 7OED B BDM266tR@@AAAA 001A4168 8Hhu,,*2fX&')))=((99 	. 	.C77;'' {{8$$ .44S]SE5:< <x=--+3E#h-(OOH---##H-----r)   c                 ,   ||v r2||         }t          |d                   dk    sJ |d         d         }nt          j                    }| j                            |          }d|z   }d|d<   |g|d<   t          j                    }|t          j        d||          z  }||z  }| j                            |           | j                            ||           |D ]5}t          |t          j
                  rt          j        |d          }	|	d	xx         | j        z  cc<   | j                            |	           | j                            |	           |j                            |          dz   }
|	g}t#          j        | j        j                  s_| j        r0|                    dt          j        d
| j                             n(|                    dt          j        d
                     |j                            |
|           7|S )Nr   r6   r   zTARGET_NOTE: autord   )r   )r   r   r    )textClasses)r   r   r   r   r<   	paragraphr7   note_autofootnoter   r   r   footnote_referencer   note_autofootnote_refnote_footnote_refr   r   r   get_trim_footnote_ref_spacer   r   inliner   )r$   r   r   r   r   footnote_namefootnote_idfootnote_paragraphrI   refnoder   rm   s               r'   r   z TargetNotes.make_target_footnote'  s   U??V}Hx())Q....$W-a0MM~''H-..x88K ,k9M HV!.HW!&!2!2%/"fV"L"L"LL**HM++H555M..xBBB 	. 	.C#u|,, .}1MMMGI$,.M//888M++G444J$$S))A-EiG4T]5KLL 7< 7NN1elT\&R&R&RSSSSNN1ejoo666JeW----r)   N)r+   r,   r-   r.   r/   r   r(   r   r0   r)   r'   r   r     sX         
 : : :
. . .<! ! ! ! !r)   r   c                       e Zd ZdZdZd ZdS )DanglingReferencesze
    Check for dangling references (incl. footnote & citation) and for
    unreferenced targets.
    iR  c                    t          | j        | j        j        j                  }| j                            |           | j                            t          j                  D ]y}|j        sp|	                    d          r|d         r|d         d         }n|d         r|d         d         }n|d         }| j        j
                            d|z  |           zd S )Nr4   r   r   r   r   z(Hyperlink target "%s" is not referenced.rf   )DanglingReferencesVisitorr   rX   rY   walkr   r   r   rB   r8   r:   info)r$   visitorr   rl   s       r'   r(   zDanglingReferences.applyT  s    +MM%AC C 	7### m++EL99 	0 	0F$ 0::k** 
 '? -#G_Q/FFE] -#E]1-FF $G_F&++>(. , 0 0 0!	0 	0r)   Nr*   r0   r)   r'   r   r   K  s5         
 0 0 0 0 0r)   r   c                   (    e Zd Zd Zd Zd ZexZZdS )r   c                 b    t           j                            | |           || _        || _        d S rO   )r   SparseNodeVisitorr   r   rY   )r$   r   rY   s      r'   r   z"DanglingReferencesVisitor.__init__r  s0    ((x888 +F(((r)   c                     d S rO   r0   )r$   rF   s     r'   unknown_visitz'DanglingReferencesVisitor.unknown_visitw  s    r)   c                 8   |j         s|                    d          sd S |d         }| j        j                            |          }|| j        D ]} ||          r d S || j        j        v r+| j        j                            d|d         z  |          }n*| j        j                            d|d         z  |          }| j                            |          }t          j
        |j        |j        |          }	 |d         d         }n*# t          $ r | j                            |          }Y nw xY w|                    |           |                    |           d S |d= ||d<   | j        j        |                             |	           d
|_         d S )Nr   zBDuplicate target name, cannot be used as a unique reference: "%s".rf   zUnknown target name: "%s".r5   r   r   r   rU   r6   )rC   r   r   rW   r8   rY   r:   r;   r<   r   r=   r>   r   r?   r@   r   r[   )	r$   rF   r   r%   r^   rG   rH   rJ   rK   s	            r'   visit_referencez)DanglingReferencesVisitor.visit_referencez  s   = 	Y 7 7 	Fy/]"&&w//:%)%E ' '!$$T** EE dm333-066+.29o?JN 7 P PCC -0664YH"& 7 ( (C ,,S11'ndnEC C C6 KNEE! 6 6 6 M0055EEE6&&&!!#&&&&&YDMMb!444;;;DMMMs    D $D65D6N)r+   r,   r-   r   r   r   visit_footnote_referencevisit_citation_referencer0   r)   r'   r   r   p  sP        G G G
    B ;JI777r)   r   )r.   __docformat__sysredocutilsr   r   docutils.transformsr   r   r	   r2   rM   rt   rw   r|   	Exceptionr   r   r   r   r   r   r0   r)   r'   <module>r     s`    # 



 				 ! ! ! ! ! ! ! ! 9 9 9 9 9 9 9 9G- G- G- G- G-y G- G- G-T? ? ? ? ?) ? ? ?Do: o: o: o: o: o: o: o:d!) !) !) !) !)i !) !) !)H%! %! %! %! %!i %! %! %!PY Y Y Y Y	 Y Y Yx ; : : : :) : : :z9 z9 z9 z9 z9I z9 z9 z9zP P P P P) P P Pf"0 "0 "0 "0 "0 "0 "0 "0J+J +J +J +J +J 7 +J +J +J +J +Jr)   