
    O&i+                     R   d Z ddlmZmZmZmZmZmZmZ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mZ erddlmZ ddlmZ ddlm Z   ej!        e"          Z# G d de          Z$ G d de          Z% G d de          Z&dddee'ef         fdZ(dS )zThe citation domain.    )TYPE_CHECKINGAnyDictListOptionalSetTuplecast)nodes)Element)pending_xref)Domain)__)SphinxTransform)logging)copy_source_infomake_refnode)Sphinx)Builder)BuildEnvironmentc                   n   e Zd ZdZdZdZddiZedee	e
e	e	ef         f         fd            Zedee	ee	         f         fd            Zde	dd	fd
Zdee	         dedd	fdZdej        dd	fdZdedd	fdZddZddde	ddde	de	dededee         fdZddde	ddde	dededee
e	ef                  fdZd	S )CitationDomainzDomain for citations.citationrefzcitation not found: %(target)sreturnc                 8    | j                             di           S )N	citationsdata
setdefaultselfs    d/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/domains/citation.pyr   zCitationDomain.citations"   s    y##K444    c                 8    | j                             di           S )Ncitation_refsr   r!   s    r#   r&   zCitationDomain.citation_refs&   s    y##OR888r$   docnameNc                 ,   t          | j                                                  D ]\  }\  }}}||k    r| j        |= t          | j                                                  D ].\  }}||hk    r	| j        |= ||v r|                    |           /d S )N)listr   itemsr&   remove)r"   r'   keyfn_l_linenodocnamess          r#   	clear_doczCitationDomain.clear_doc*   s    &*4>+?+?+A+A&B&B 	( 	("C""b'W}}N3'!$"4":":"<"<== 	) 	)MCG9$$&s++H$$(((		) 	)r$   r0   	otherdatac                 8   |d                                          D ]\  }}|d         |v r
|| j        |<   |d                                          D ]J\  }}| j                            |t	                                }|D ]}||v r|                    |           Kd S )Nr   r   r&   )r*   r   r&   r    setadd)r"   r0   r2   r,   r   r&   r'   s          r#   merge_domaindatazCitationDomain.merge_domaindata4   s    ";/5577 	+ 	+ICAw(""&*s#"?399;; 	/ 	/IC .99#suuEEM / /h&&!%%g.../	/ 	/r$   nodec                 D   |d                                          }|| j        v rX| j                            | j        |         d                   }t                              t          d          |||dd           |d         |d         d         |j        f| j        |<   d S )Nr   z+duplicate citation %s, other instance in %sr   r   )locationtypesubtyper'   ids)astextr   envdoc2pathloggerwarningr   line)r"   r7   labelpaths       r#   note_citationzCitationDomain.note_citation?   s    Q  DN""8$$T^E%:1%=>>DNN2KLLeUY$(uj  J J J!%i$u+a.$) Lur$   c                     | j                             |d         t                                }|                    | j        j                   d S )N	reftarget)r&   r    r4   r5   r>   r'   )r"   r7   r0   s      r#   note_citation_referencez&CitationDomain.note_citation_referenceG   s@    %00k1BCEEJJTX%&&&&&r$   c           	          | j                                         D ]@\  }\  }}}|| j        vr.t                              t          d          |dd||f           Ad S )Nz Citation [%s] is not referenced.r   r   )r:   r;   r9   )r   r*   r&   r@   rA   r   )r"   namer'   _labelidlinenos        r#   check_consistencyz CitationDomain.check_consistencyK   s    151E1E1G1G 	[ 	[-D-7Hf4---r"DEEt$):RXHY  [ [ [	[ 	[r$   r>   r   fromdocnamebuilderr   typtargetcontnodec                 n    | j                             |d          \  }}	}
|sd S t          ||||	|          S )N) rT   r   )r   getr   )r"   r>   rN   rO   rP   rQ   r7   rR   r'   labelidrL   s              r#   resolve_xrefzCitationDomain.resolve_xrefQ   sL     $(>#5#5fk#J#J & 	4G['#X/ / 	/r$   c           	      J    |                      |||d|||          }|g S d|fgS )Nr   )rW   )r"   r>   rN   rO   rQ   r7   rR   refnodes           r#   resolve_any_xrefzCitationDomain.resolve_any_xref[   s<     ##CgufdT\]]?IG$%%r$   )r   N)__name__
__module____qualname____doc__rJ   rC   dangling_warningspropertyr   strr	   intr   r   r&   r1   r   r6   r   r   rE   r   rH   rM   r   r   rW   rZ    r$   r#   r   r      s       DE 	/ 54U3S=%9 9: 5 5 5 X5 9tCSM2 9 9 9 X9) ) ) ) ) )	/c 	/t 	/ 	/ 	/ 	/ 	/M%. MT M M M M'L 'T ' ' ' '[ [ [ [/ 2 / /y //'*/2>/JQ/"7+/ / / /&$6 &S &S\ &!$&,8&DK&"5g#67& & & & & &r$   r   c                   &    e Zd ZdZdZdeddfdZdS )CitationDefinitionTransformz3Mark citation definition labels as not smartquoted.k  kwargsr   Nc                 @   t          t          | j                            d                    }| j                            t          j                  D ]K}| j        j        |d<   |	                    |           t          t          j
        |d                   }d|d<   Ld S )Nr   r'   r   Fsupport_smartquotes)r
   r   r>   
get_domaindocumentfindallr   r   r'   rE   rC   )r"   rg   domainr7   rC   s        r#   applyz!CitationDefinitionTransform.applyi   s    ndh&9&9*&E&EFFM))%.99 	1 	1D"h.DO  &&& d1g..E+0E'((	1 	1r$   r[   r\   r]   r^   default_priorityr   rn   rc   r$   r#   re   re   e   sB        ==	1c 	1d 	1 	1 	1 	1 	1 	1r$   re   c                   &    e Zd ZdZdZdeddfdZdS )CitationReferenceTransformz|
    Replace citation references by pending_xref nodes before the default
    docutils transform tries to resolve them.
    rf   rg   r   Nc                    t          t          | j                            d                    }| j                            t          j                  D ]}|                                }t          |dd|dd|d         |
                    dg                     }|t          j        |d|z            z  }t          ||           |                    |           |                    |           d S )	Nr   r   TFr<   classes)	refdomainreftyperG   refwarnri   r<   rt   z[%s])r
   r   r>   rj   rk   rl   r   citation_referencer=   r   rU   inliner   replace_selfrH   )r"   rg   rm   r7   rQ   r   s         r#   rn   z CitationReferenceTransform.apply|   s    ndh&9&9*&E&EFFM))%*BCC 	0 	0D[[]]FvU)/38#';'+xx	2'>'>	@ @ @C
 5<888CT3'''c""" **3////	0 	0r$   ro   rc   r$   r#   rr   rr   u   sH          0c 0d 0 0 0 0 0 0r$   rr   appr   r   c                     |                      t                     |                     t                     |                     t                     dddddS )Nbuiltin   T)versionenv_versionparallel_read_safeparallel_write_safe)
add_domainr   add_transformre   rr   )r{   s    r#   setupr      s[    NN>"""12220111 "#	  r$   N))r^   typingr   r   r   r   r   r   r	   r
   docutilsr   docutils.nodesr   sphinx.addnodesr   sphinx.domainsr   sphinx.localer   sphinx.transformsr   sphinx.utilr   sphinx.util.nodesr   r   sphinx.applicationr   sphinx.buildersr   sphinx.environmentr   	getLoggerr[   r@   r   re   rr   ra   r   rc   r$   r#   <module>r      s     M M M M M M M M M M M M M M M M M M M M       " " " " " " ( ( ( ( ( ( ! ! ! ! ! !       - - - - - -       < < < < < < < < 4))))))''''''333333 
	8	$	$J& J& J& J& J&V J& J& J&Z1 1 1 1 1/ 1 1 1 0 0 0 0 0 0 0 00
x 
DcN 
 
 
 
 
 
r$   