U
    \Sh                     @  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 dd	lmZ dd
lmZ erddlmZ ddlmZ edededdZ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ddZdS ) zThe changeset domain.    )annotations)TYPE_CHECKINGAny
NamedTuplecast)nodes)Node)addnodes)Domain)_)SphinxDirective)
OptionSpec)Sphinx)BuildEnvironmentzNew in version %szChanged in version %szDeprecated since version %s)versionaddedversionchanged
deprecatedaddedchangedr   c                   @  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moduleZdescnamecontentN)__name__
__module____qualname____annotations__ r!   r!   K/root/rtd-docs/venv/lib/python3.8/site-packages/sphinx/domains/changeset.pyr   "   s   
r   c                   @  s<   e Zd ZU dZdZdZdZdZi Zde	d< dddd	Z
d
S )VersionChangezT
    Directive to describe a change/addition/deprecation in a specific version.
    T   r   option_specz
list[Node]returnc           
      C  s  t  }| jj|_| | | j|d< | jd |d< t| j | jd  }t| jdkr| j	| jd | j
d \}}tj| jd df|ddi}| | || ng }| jr| j| j| j| d	t| j g}t|dkr|t|d tjr||d jrVt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 njt|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}|| tt| jd}|| |g}	|	|7 }	|	S )Nr   r   version   r$    translatableFversionmodifiedT)r+   z%s: )classesz%s.	changeset)r	   r,   statedocumentZset_source_infoname	argumentsversionlabelslenZinline_textr   r   Z	paragraphappendr   Znested_parseZcontent_offsetversionlabel_classes
isinstanceZ	rawsourceinlinesourcelinechildrenZreplace_selfinsertr   ChangeSetDomainenvZ
get_domainnote_changeset)
selfnodetextinodesmessagesparar-   r   domainretr!   r!   r"   run5   sT    



 

zVersionChange.runN)r   r   r   __doc__Zhas_contentZrequired_argumentsZoptional_argumentsZfinal_argument_whitespacer%   r    rH   r!   r!   r!   r"   r#   +   s   
r#   c                   @  s   e Zd ZU dZdZdZdi iZded< edddd	Z	d
ddddZ
dddddZddddddZdddddddZdddddZd S )!r=   zDomain for changesets.r.   changesdict[str, Any]initial_datazdict[str, list[ChangeSet]]r&   c                 C  s   | j di S NrJ   )data
setdefault)r@   r!   r!   r"   
changesetsr   s    zChangeSetDomain.changesetszaddnodes.versionmodifiedNone)rA   r'   c                 C  s\   |d }| j jd}| j jd}t|d | j j|j||| }| j	|g 
| d S )Nr(   z	py:moduleobjectr   )r>   Zref_contextgetZ	temp_datar   r   r:   ZastextrP   rO   r5   )r@   rA   r(   r   Zobjnamer.   r!   r!   r"   r?   v   s      zChangeSetDomain.note_changesetr   )r   r'   c                 C  s:   | j  D ]*}|d d  D ]}|j|kr|| qq
d S N)rP   valuesr   remove)r@   r   rJ   r.   r!   r!   r"   	clear_doc~   s    
zChangeSetDomain.clear_docz	list[str])docnames	otherdatar'   c                 C  sF   |d   D ]4\}}| j|g }|D ]}|j|kr&|| q&qd S rM   )itemsrP   rO   r   r5   )r@   rX   rY   r(   ZotherchangesrJ   r.   r!   r!   r"   merge_domaindata   s
    
z ChangeSetDomain.merge_domaindatar   znodes.document)r>   r   r0   r'   c                 C  s   d S rT   r!   )r@   r>   r   r0   r!   r!   r"   process_doc   s    zChangeSetDomain.process_doczlist[ChangeSet])r(   r'   c                 C  s   | j |g S rT   )rP   rS   )r@   r(   r!   r!   r"   get_changesets_for   s    z"ChangeSetDomain.get_changesets_forN)r   r   r   rI   r1   labelrL   r    propertyrP   r?   rW   r[   r\   r]   r!   r!   r!   r"   r=   h   s   
 r=   r   rK   )appr'   c                 C  s<   |  t | dt | dt | dt dddddS )Nr   r   r   builtinr$   T)r(   Zenv_versionZparallel_read_safeZparallel_write_safe)Z
add_domainr=   Zadd_directiver#   )r`   r!   r!   r"   setup   s    
rb   N) rI   
__future__r   typingr   r   r   r   Zdocutilsr   Zdocutils.nodesr   Zsphinxr	   Zsphinx.domainsr
   Zsphinx.localer   Zsphinx.util.docutilsr   Zsphinx.util.typingr   Zsphinx.applicationr   Zsphinx.environmentr   r3   r6   r   r#   r=   rb   r!   r!   r!   r"   <module>   s0   	=-