o
    NiD                     @  s  d Z ddl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 erTd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dedededdZdddddZG dd deZG dd deZ G dd deZ!d$d!d"Z"d#S )%zThe changeset domain.    )annotations)TYPE_CHECKINGAnyClassVar
NamedTuple)nodes)addnodes)Domain)_)SphinxDirective)Set)Node)Sphinx)BuildEnvironment)ExtensionMetadata
OptionSpeczAdded in version %szChanged in version %szDeprecated since version %szRemoved in version %s)versionaddedversionchanged
deprecatedversionremovedaddedchangedr   removedc                   @  s>   e Zd ZU ded< ded< ded< ded< ded< ded	< d
S )	ChangeSetstrtypedocnameintlinenoz
str | NonemoduledescnamecontentN)__name__
__module____qualname____annotations__ r&   r&   L/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/domains/changeset.pyr   '   s   
 r   c                   @  s8   e Zd ZU dZdZdZdZdZi Zde	d< ddd	Z
d
S )VersionChangezT
    Directive to describe a change/addition/deprecation in a specific version.
    T   zClassVar[OptionSpec]option_specreturn
list[Node]c           
      C  s  t  }| jj|_| | | j|d< | jd |d< t| j | jd  }t| jdkrU| j	| jd | j
d d\}}tj| jd dg|R dd	i}| | || ng }| jr`||  7 }d
t| j g}t|dkrt|d tjr|d jrtj|d jdd}|d j|_|d j|_||d j7 }|d tjdd|d	d |d }|dtjdd| |d n4t|dkrtjddtjdd| |dd	d}|d| ntjddtjdd| |dd	d}|| | jjj}|| |g}	|	|7 }	|	S )Nr   r   version   r)   )r    translatableFversionmodifiedT)r0   z%s: )classesz%s.)r   r1   statedocumentset_source_infoname	argumentsversionlabelslenparse_inliner   r   	paragraphappendr!   parse_content_to_nodesversionlabel_classes
isinstance	rawsourceinlinesourcelinechildrenreplace_selfinsertenvdomainschangeset_domainnote_changeset)
selfnodetextinodesmessagesparar2   r!   domainretr&   r&   r'   run;   sP   


 




zVersionChange.runN)r+   r,   )r"   r#   r$   __doc__has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer*   r%   rS   r&   r&   r&   r'   r(   0   s   
 r(   c                   @  sj   e Zd ZU dZdZdZdi iZded< ed$dd	Z	d%ddZ
d&ddZd'ddZd(ddZd)d!d"Zd#S )*ChangeSetDomainzDomain for changesets.	changesetchangesz%dict[str, dict[str, list[ChangeSet]]]initial_datar+   dict[str, list[ChangeSet]]c                 C  s   | j di S Nr[   )data
setdefault)rK   r&   r&   r'   
changesetsw   s   zChangeSetDomain.changesetsrL   addnodes.versionmodifiedNonec                 C  s\   |d }| j jd}| j jd}t|d | j j|j||| }| j	|g 
| d S )Nr-   z	py:moduleobjectr   )rG   ref_contextget	temp_datar   r   rC   astextra   r`   r<   )rK   rL   r-   r   objnamerZ   r&   r&   r'   rJ   {   s   
zChangeSetDomain.note_changesetr   r   c                 C  s6   | j  D ]}| D ]}|j|kr|| qqd S N)ra   valuescopyr   remove)rK   r   r[   rZ   r&   r&   r'   	clear_doc   s   

zChangeSetDomain.clear_docdocnamesSet[str]	otherdatadict[str, Any]c                 C  sF   |d   D ]\}}| j|g }|D ]}|j|v r|| qqd S r^   )itemsra   r`   r   r<   )rK   ro   rq   r-   otherchangesr[   rZ   r&   r&   r'   merge_domaindata   s   

z ChangeSetDomain.merge_domaindatarG   r   r4   nodes.documentc                 C  s   d S rj   r&   )rK   rG   r   r4   r&   r&   r'   process_doc   s   zChangeSetDomain.process_docr-   list[ChangeSet]c                 C  s   | j |g S rj   )ra   rf   )rK   r-   r&   r&   r'   get_changesets_for   s   z"ChangeSetDomain.get_changesets_forN)r+   r]   )rL   rb   r+   rc   )r   r   r+   rc   )ro   rp   rq   rr   r+   rc   )rG   r   r   r   r4   rv   r+   rc   )r-   r   r+   rx   )r"   r#   r$   rT   r6   labelr\   r%   propertyra   rJ   rn   ru   rw   ry   r&   r&   r&   r'   rY   m   s   
 



rY   appr   r+   r   c                 C  sH   |  t | dt | dt | dt | dt dddddS )	Nr   r   r   r   builtinr)   T)r-   env_versionparallel_read_safeparallel_write_safe)
add_domainrY   add_directiver(   )r|   r&   r&   r'   setup   s   
r   N)r|   r   r+   r   )#rT   
__future__r   typingr   r   r   r   docutilsr   sphinxr   sphinx.domainsr	   sphinx.localer
   sphinx.util.docutilsr   collections.abcr   docutils.nodesr   sphinx.applicationr   sphinx.environmentr   sphinx.util.typingr   r   r8   r>   r   r(   rY   r   r&   r&   r&   r'   <module>   s8    	=-