
    zi1                    2   d Z ddlmZ ddl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mZ erddlmZ 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Z$dS )zThe citation domain.    )annotations)TYPE_CHECKINGAnycast)nodes)pending_xref)Domain)__)SphinxTransform)logging)copy_source_infomake_refnode)Element)Sphinx)Builder)BuildEnvironmentc                      e Zd ZdZdZdZddiZed'd            Zed(d	            Z	d)dZ
d*dZd+dZd,dZd-dZd.d#Zd/d%Zd&S )0CitationDomainzDomain for citations.citationrefzcitation not found: %(target)sreturndict[str, tuple[str, str, int]]c                8    | j                             di           S )N	citationsdata
setdefaultselfs    b/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/sphinx/domains/citation.pyr   zCitationDomain.citations%   s    y##K444    dict[str, set[str]]c                8    | j                             di           S )Ncitation_refsr   r   s    r    r$   zCitationDomain.citation_refs)   s    y##OR888r!   docnamestrNonec                ,   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   	list[str]	otherdatadict[str, Any]c                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   r3   r,   r   r$   r%   s          r    merge_domaindatazCitationDomain.merge_domaindata7   s    ";/5577 	+ 	+ICAw(""&*s#"?399;; 	/ 	/IC .99#suuEEM / /h&&!%%g.../	/ 	/r!   nodenodes.citationc                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   r9   labelpaths       r    note_citationzCitationDomain.note_citationB   s    Q  DN""8$$T^E%:1%=>>DNN2KLLeUY$(uj  J J J!%i$u+a.$) Lur!   r   c                    | j                             |d         t                                }|                    | j        j                   d S )N	reftarget)r$   r   r6   r7   rA   r%   )r   r9   r0   s      r    note_citation_referencez&CitationDomain.note_citation_referenceJ   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>   r<   )r   r*   r$   rC   rD   r
   )r   namer%   _labelidlinenos        r    check_consistencyz CitationDomain.check_consistencyN   s    151E1E1G1G 	[ 	[-D-7Hf4---r"DEEt$):RXHY  [ [ [	[ 	[r!   rA   r   fromdocnamebuilderr   typtargetcontnoder   Element | Nonec                n    | j                             |d          \  }}	}
|sd S t          ||||	|          S )N) rX   r   )r   getr   )r   rA   rQ   rR   rS   rT   r9   rU   r%   labelidrO   s              r    resolve_xrefzCitationDomain.resolve_xrefT   sL     $(>#5#5fk#J#J & 	4G['#X/ / 	/r!   list[tuple[str, Element]]c           	     J    |                      |||d|||          }|g S d|fgS )Nr   )r[   )r   rA   rQ   rR   rT   r9   rU   refnodes           r    resolve_any_xrefzCitationDomain.resolve_any_xref^   s<     ##CgufdT\]]?IG$%%r!   N)r   r   )r   r"   )r%   r&   r   r'   )r0   r2   r3   r4   r   r'   )r9   r:   r   r'   )r9   r   r   r'   )r   r'   )rA   r   rQ   r&   rR   r   rS   r&   rT   r&   r9   r   rU   r   r   rV   )rA   r   rQ   r&   rR   r   rT   r&   r9   r   rU   r   r   r\   )__name__
__module____qualname____doc__rM   rF   dangling_warningspropertyr   r$   r1   r8   rH   rK   rP   r[   r_    r!   r    r   r      s       DE 	/ 5 5 5 X5 9 9 9 X9) ) ) )	/ 	/ 	/ 	/M M M M' ' ' '[ [ [ [/ / / /& & & & & &r!   r   c                      e Zd ZdZdZd	dZdS )
CitationDefinitionTransformz3Mark citation definition labels as not smartquoted.k  kwargsr   r   r'   c                @   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   rA   
get_domaindocumentfindallr   r   r%   rH   rF   )r   rj   domainr9   rF   s        r    applyz!CitationDefinitionTransform.applyl   s    ndh&9&9*&E&EFFM))%.99 	1 	1D"h.DO  &&& d1g..E+0E'((	1 	1r!   Nrj   r   r   r'   r`   ra   rb   rc   default_priorityrq   rf   r!   r    rh   rh   h   s4        ==	1 	1 	1 	1 	1 	1r!   rh   c                      e Zd ZdZdZd	dZdS )
CitationReferenceTransformz|
    Replace citation references by pending_xref nodes before the default
    docutils transform tries to resolve them.
    ri   rj   r   r   r'   c                   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reftyperJ   refwarnrl   r?   rx   z[%s])r   r   rA   rm   rn   ro   r   citation_referencer@   r   rY   inliner   replace_selfrK   )r   rj   rp   r9   rT   r   s         r    rq   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!   Nrr   rs   rf   r!   r    rv   rv   x   s:          0 0 0 0 0 0r!   rv   appr   r   r4   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_transformrh   rv   )r   s    r    setupr      s[    NN>"""12220111 "#	  r!   N)r   r   r   r4   )%rc   
__future__r   typingr   r   r   docutilsr   sphinx.addnodesr   sphinx.domainsr	   sphinx.localer
   sphinx.transformsr   sphinx.utilr   sphinx.util.nodesr   r   docutils.nodesr   sphinx.applicationr   sphinx.buildersr   sphinx.environmentr   	getLoggerr`   rC   r   rh   rv   r   rf   r!   r    <module>r      s     " " " " " " + + + + + + + + + +       ( ( ( ( ( ( ! ! ! ! ! !       - - - - - -       < < < < < < < < 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
 
 
 
 
 
r!   