
    -Ph                    R   d Z ddlmZ ddl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 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cast)nodes)pending_xref)Domain)__)SphinxTransform)logging)copy_source_infomake_refnode)Set)Any)Element)Sphinx)Builder)BuildEnvironment)ExtensionMetadatac                      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    W/var/www/html/test/jupyter/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_doc1   s    &*4>+?+?+A+A&B&B 	( 	("C""b'W}}N3'!$"4":":"<"<== 	) 	)MCG9$$&s++H$$(((		) 	)r#   r2   Set[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!   r2   r5   r.   r   r&   r'   s          r"   merge_domaindatazCitationDomain.merge_domaindata;   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!   r;   labelpaths       r"   note_citationzCitationDomain.note_citationF   s    Q  DN""8$$T^E%:1%=>>DNN@AA"     "&i$u+a.$) Lur#   r   c                    | j                             |d         t                                }|                    | j        j                   d S )N	reftarget)r&   r   r8   r9   rC   r'   )r!   r;   r2   s      r"   note_citation_referencez&CitationDomain.note_citation_referenceT   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&   rE   rF   r	   )r!   namer'   _labelidlinenos        r"   check_consistencyz CitationDomain.check_consistencyX   s|    151E1E1G1G 	 	-D-7Hf4---9::&%v.    	 	r#   rC   r   fromdocnamebuilderr   typtargetcontnoder   nodes.reference | Nonec                n    | j                             |d          \  }}	}
|sd S t          ||||	|          S )N) rZ   r   )r   getr   )r!   rC   rS   rT   rU   rV   r;   rW   r'   labelidrQ   s              r"   resolve_xrefzCitationDomain.resolve_xrefc   sE     $(>#5#5fk#J#J & 	4G['7HMMMr#   !list[tuple[str, nodes.reference]]c           	     J    |                      |||d|||          }|g S d|fgS )Nr   )r]   )r!   rC   rS   rT   rV   r;   rW   refnodes           r"   resolve_any_xrefzCitationDomain.resolve_any_xrefs   sB     ##gufdH
 
 ?IG$%%r#   N)r   r   )r   r$   )r'   r(   r   r)   )r2   r4   r5   r6   r   r)   )r;   r<   r   r)   )r;   r   r   r)   )r   r)   )rC   r   rS   r(   rT   r   rU   r(   rV   r(   r;   r   rW   r   r   rX   )rC   r   rS   r(   rT   r   rV   r(   r;   r   rW   r   r   r^   )__name__
__module____qualname____doc__rO   rH   dangling_warningspropertyr   r&   r3   r:   rJ   rM   rR   r]   ra    r#   r"   r   r      s       DE 	/ 5 5 5 X5 9 9 9 X9) ) ) )	/ 	/ 	/ 	/M M M M' ' ' '	 	 	 	N N N N & & & & & &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                    | j         j        j        }| j                            t
          j                  D ]A}| j         j        |d<   |                    |           t          d|d                   }d|d<   Bd S )Nr'   znodes.labelr   Fsupport_smartquotes)
rC   domainscitation_domaindocumentfindallr   r   r'   rJ   r   )r!   rl   domainr;   rH   s        r"   applyz!CitationDefinitionTransform.apply   s    !1M))%.99 	1 	1D"h.DO  &&& Q00E+0E'((	1 	1r#   Nrl   r   r   r)   rb   rc   rd   re   default_priorityrt   rh   r#   r"   rj   rj      s4        ==	1 	1 	1 	1 	1 	1r#   rj   c                      e Zd ZdZdZd	dZdS )
CitationReferenceTransformzwReplace citation references by pending_xref nodes before the default
    docutils transform tries to resolve them.
    rk   rl   r   r   r)   c                   | j         j        j        }| j                            t
          j                  D ]}|                                }t          |dd|dd|d         |	                    dg                     }|t          j
        |d|z            z  }t          ||           |                    |           |                    |           d S )	Nr   r   TFrA   classes)	refdomainreftyperL   refwarnrn   rA   r{   z[%s])rC   ro   rp   rq   rr   r   citation_referencerB   r   r[   inliner   replace_selfrM   )r!   rl   rs   r;   rV   r   s         r"   rt   z CitationReferenceTransform.apply   s    !1M))%*BCC 	0 	0D[[]]F$ $)KB//	 	 	C 5<888CT3'''c""" **3////#	0 	0r#   Nru   rv   rh   r#   r"   ry   ry      s:          0 0 0 0 0 0r#   ry   appr   r   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_transformrj   ry   )r   s    r"   setupr      s[    NN>"""12220111 "#	  r#   N)r   r   r   r   ))re   
__future__r   typingr   r   docutilsr   sphinx.addnodesr   sphinx.domainsr   sphinx.localer	   sphinx.transformsr
   sphinx.utilr   sphinx.util.nodesr   r   collections.abcr   r   docutils.nodesr   sphinx.applicationr   sphinx.buildersr   sphinx.environmentr   sphinx.util.typingr   	getLoggerrb   rE   r   rj   ry   r   rh   r#   r"   <module>r      s     " " " " " " & & & & & & & &       ( ( ( ( ( ( ! ! ! ! ! !       - - - - - -       < < < < < < < < 	5######&&&&&&))))))''''''333333444444 
	8	$	$c& c& c& c& c&V c& c& c&L1 1 1 1 1/ 1 1 1"0 0 0 0 0 0 0 0:
 
 
 
 
 
r#   