o
    Ni%                     @  s"  d dl mZ d dlmZmZ erd dlmZmZ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 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! 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- G dd dZ.dS )    )annotations)TYPE_CHECKINGoverload)IterableIteratorMappingSet)AnyFinalLiteralNoReturn)nodes)Self)DomainCDomainChangeSetDomainCitationDomain	CPPDomainIndexDomainJavaScriptDomain
MathDomainPythonDomain
ReSTDomainStandardDomain)BuildEnvironment)DurationDomain)
TodoDomainc                      s  e Zd ZU dZdZeh dZded< ed~d
dZ	ed~ddZ
dd%d&Zdd'd(Zdd-d.Zdd/d0Zdd5d6Zdd7d8Zdd;d<Zdd?d@Zd fdBdCZd fdDdEZeddGdHZeddJdHZeddLdHZeddNdHZeddPdHZeddRdHZeddTdHZeddVdHZeddXdHZeddZdHZedd]dHZedd`dHZeddadHZddbdHZddddeZddfdgZddidjZddldmZdddqdrZddtduZddwdxZddzd{Zdd|d}Z  Z S )_DomainsContainera1  Container for domain instances.

    This class is private, including its name, constructor, and all methods.
    Any or all of these will change without notice or warning in any release.

    The public interface is restricted to:

    * the``domains.['<domain-name>']`` mapping interface
    * the ``domains.<core-domain-name>`` attributes for core domains.
    * the `.get()``, ``.keys()``, ``.items()``, and ``.values()`` methods.

    Additionally, this class supports ``iter`` and ``len``,
    and provides membership testing via the ``in`` operator.
    )_domain_instancesc_domainchangeset_domaincitation_domain
cpp_domainindex_domainjavascript_domainmath_domainpython_domainrestructuredtext_domainstandard_domain>
   cjspycpprststdmathindexcitation	changesetr
   _core_domainsenvr$   returnr   c                C  s:   |j jj}dd ||D  }r| di |S | j|dS )Nc                 S  s   i | ]}|j |qS  )name).0domainr@   r@   U/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/domains/_domains_container.py
<dictcomp>N   s    z7_DomainsContainer._from_environment.<locals>.<dictcomp>)r>   r@   )appregistrycreate_domains_from_environment_default)clsr>   rH   domainsr@   r@   rD   _from_environmentJ   s   
z#_DomainsContainer._from_environmentc                C  s   ddl m} ddlm} ddlm} ddlm} ddlm	} ddl
m} ddlm} dd	lm}	 dd
lm}
 ddlm} | |||||||||||||||	||
|||d
S )z7Return a default instance with every domain we require.r   r   r   r   r   r   r   r   r   r    r"   
r3   r<   r;   r6   r:   r4   r9   r5   r7   r8   )sphinx.domains.cr   sphinx.domains.changesetr   sphinx.domains.citationr   sphinx.domains.cppr   sphinx.domains.indexr   sphinx.domains.javascriptr   sphinx.domains.mathr   sphinx.domains.pythonr   sphinx.domains.rstr!   sphinx.domains.stdr#   )rJ   r>   r   r   r   r   r   r   r   r   r!   r#   r@   r@   rD   rI   S   s,   z+_DomainsContainer._from_environment_defaultr3   r   r6   r   r4   r   r5   r   r7   r!   r8   r#   r<   r   r;   r   r:   r   r9   r   rK   r   Nonec       
         K  s   |||||	||
|||d
|| _ || _|| _|| _|| _|| _|| _|| _|| _|	| _	|
| _
| j  D ]\}}||jkrLd|d|d|j}t|q3d S )NrM   zDomain name mismatch in z: z != )r(   r2   r)   r,   r.   r0   r1   r*   r+   r-   r/   itemsrA   
ValueError)selfr3   r6   r4   r5   r7   r8   r<   r;   r:   r9   rK   domain_namerC   msgr@   r@   rD   __init__n   s:   
z_DomainsContainer.__init__c                 C     | j  D ]}|  qd S N)r(   valuessetupr[   rC   r@   r@   rD   _setup      
z_DomainsContainer._setupdocnamestrdocumentnodes.documentc                 C  s"   | j  D ]	}|||| qd S r`   )r(   ra   process_doc)r[   r>   rf   rh   rC   r@   r@   rD   _process_doc   s   z_DomainsContainer._process_docc                 C  s   | j  D ]}|| qd S r`   )r(   ra   	clear_doc)r[   rf   rC   r@   r@   rD   
_clear_doc   s   z_DomainsContainer._clear_docdocnamesSet[str]domain_datadict[str, Any]c                 C  s(   | j  D ]\}}||||  qd S r`   )r(   rY   merge_domaindata)r[   rn   rp   r\   rC   r@   r@   rD   _merge_domain_data   s   z$_DomainsContainer._merge_domain_datac                 C  r_   r`   )r(   ra   check_consistencyrc   r@   r@   rD   _check_consistency   re   z$_DomainsContainer._check_consistencykeyboolc                 C  s
   || j v S r`   )r(   r[   rv   r@   r@   rD   __contains__      
z_DomainsContainer.__contains__otherobjectc                 C  s   t |tstS | j|jkS r`   )
isinstancer'   NotImplementedr(   )r[   r{   r@   r@   rD   __eq__   s   
z_DomainsContainer.__eq__valuec                   s6   || j v r| jjd|}t|t || d S )Nz' object does not support assignment to )r=   	__class____name__	TypeErrorsuper__setattr__r[   rv   r   r]   r   r@   rD   r      s   
z_DomainsContainer.__setattr__c                   s4   || j v r| jjd|}t|t | d S )Nz% object does not support deletion of )r=   r   r   r   r   __delattr__r[   rv   r]   r   r@   rD   r      s   
z_DomainsContainer.__delattr__Literal['c']c                 C     d S r`   r@   rx   r@   r@   rD   __getitem__      z_DomainsContainer.__getitem__Literal['cpp']c                 C  r   r`   r@   rx   r@   r@   rD   r      r   Literal['changeset']c                 C  r   r`   r@   rx   r@   r@   rD   r      r   Literal['citation']c                 C  r   r`   r@   rx   r@   r@   rD   r      r   Literal['index']c                 C  r   r`   r@   rx   r@   r@   rD   r      r   Literal['js']c                 C  r   r`   r@   rx   r@   r@   rD   r      r   Literal['math']c                 C  r   r`   r@   rx   r@   r@   rD   r      r   Literal['py']c                 C  r   r`   r@   rx   r@   r@   rD   r      r   Literal['rst']c                 C  r   r`   r@   rx   r@   r@   rD   r      r   Literal['std']c                 C  r   r`   r@   rx   r@   r@   rD   r      r   Literal['duration']r%   c                 C  r   r`   r@   rx   r@   r@   rD   r      r   Literal['todo']r&   c                 C  r   r`   r@   rx   r@   r@   rD   r      r   c                 C  r   r`   r@   rx   r@   r@   rD   r      r   c                 C  s   t | |d  }r
|S | j| S r`   )getattrr(   )r[   rv   rC   r@   r@   rD   r      s   
r   c                 C  s   | j jd}t|)Nz( object does not support item assignmentr   r   r   r   r@   r@   rD   __setitem__      z_DomainsContainer.__setitem__c                 C  s   | j jd}t|)Nz& object does not support item deletionr   r   r@   r@   rD   __delitem__  r   z_DomainsContainer.__delitem__Iterator[str]c                 C  s   t | j S r`   )iterr(   keysr[   r@   r@   rD   __iter__     z_DomainsContainer.__iter__intc                 C  s
   t | jS r`   )lenr(   r   r@   r@   rD   __len__  rz   z_DomainsContainer.__len__NdefaultDomain | Nonec                 C  s   | j ||S r`   )r(   get)r[   rv   r   r@   r@   rD   r     r   z_DomainsContainer.getIterable[str]c                 C  
   | j  S r`   )r(   r   r   r@   r@   rD   r     rz   z_DomainsContainer.keysIterable[tuple[str, Domain]]c                 C  r   r`   )r(   rY   r   r@   r@   rD   rY     rz   z_DomainsContainer.itemsIterable[Domain]c                 C  r   r`   )r(   ra   r   r@   r@   rD   ra     rz   z_DomainsContainer.valuesc                 c  s$    t | j D ]\}}|V  qd S r`   )sortedr(   rY   )r[   _domain_namerC   r@   r@   rD   r     s   z_DomainsContainer.sorted)r>   r$   r?   r   )r3   r   r6   r   r4   r   r5   r   r7   r!   r8   r#   r<   r   r;   r   r:   r   r9   r   rK   r   r?   rX   )r?   rX   )r>   r$   rf   rg   rh   ri   r?   rX   )rf   rg   r?   rX   )rn   ro   rp   rq   r?   rX   )rv   rg   r?   rw   )r{   r|   r?   rw   )rv   rg   r   r|   r?   rX   )rv   rg   r?   rX   )rv   r   r?   r   )rv   r   r?   r   )rv   r   r?   r   )rv   r   r?   r   )rv   r   r?   r   )rv   r   r?   r   )rv   r   r?   r   )rv   r   r?   r   )rv   r   r?   r!   )rv   r   r?   r#   )rv   r   r?   r%   )rv   r   r?   r&   )rv   rg   r?   r   )rv   rg   r   r   r?   r   )rv   rg   r?   r   )r?   r   )r?   r   r`   )rv   rg   r   r   r?   r   )r?   r   )r?   r   )r?   r   )!r   
__module____qualname____doc__	__slots__	frozensetr=   __annotations__classmethodrL   rI   r^   rd   rk   rm   rs   ru   ry   r   r   r   r   r   r   r   r   r   r   r   rY   ra   r   __classcell__r@   r@   r   rD   r'      sl   
 

1













r'   N)/
__future__r   typingr   r   collections.abcr   r   r   r   r	   r
   r   r   docutilsr   typing_extensionsr   sphinx.domainsr   rN   r   rO   r   rP   r   rQ   r   rR   r   rS   r   rT   r   rU   r   rV   r!   rW   r#   sphinx.environmentr$   sphinx.ext.durationr%   sphinx.ext.todor&   r'   r@   r@   r@   rD   <module>   s,    