B
    dW                 @   s  d Z ddlmZmZ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eeef dddZ dS )zThe changeset domain.    )TYPE_CHECKINGAnyDictList
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 eed< eed< eed< eed< eed< eed< dS )	ChangeSettypedocnamelinenomoduleZdescnamecontentN)__name__
__module____qualname__str__annotations__int r"   r"   e/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/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e	e
d< ee dddZdS )	VersionChangezT
    Directive to describe a change/addition/deprecation in a specific version.
    T   option_spec)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#   run3   sN    



 

zVersionChange.runN)r   r   r   __doc__Zhas_contentZrequired_argumentsZoptional_argumentsZfinal_argument_whitespacer&   r   r    r   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eed< e	ee
ee f dddZejdd	d
dZe
ddddZee
 eddddZde
ejddddZe
ee dddZdS )r=   zDomain for changesets.r.   changesinitial_data)r'   c             C   s   | j di S )NrJ   )data
setdefault)r@   r"   r"   r#   
changesetsp   s    zChangeSetDomain.changesetsN)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astextrN   rM   r5   )r@   rA   r(   r   Zobjnamer.   r"   r"   r#   r?   t   s    zChangeSetDomain.note_changeset)r   r'   c             C   sB   x<| j  D ].}x(|d d  D ]}|j|kr|| qW qW d S )N)rN   valuesr   remove)r@   r   rJ   r.   r"   r"   r#   	clear_doc|   s    
zChangeSetDomain.clear_doc)docnames	otherdatar'   c             C   sN   xH|d   D ]8\}}| j|g }x |D ]}|j|kr*|| q*W qW d S )NrJ   )itemsrN   rM   r   r5   )r@   rT   rU   r(   ZotherchangesrJ   r.   r"   r"   r#   merge_domaindata   s
    

z ChangeSetDomain.merge_domaindatar   )r>   r   r0   r'   c             C   s   d S )Nr"   )r@   r>   r   r0   r"   r"   r#   process_doc   s    zChangeSetDomain.process_doc)r(   r'   c             C   s   | j |g S )N)rN   rP   )r@   r(   r"   r"   r#   get_changesets_for   s    z"ChangeSetDomain.get_changesets_for)r   r   r   rI   r1   labelrK   r   r    propertyr   r   r   rN   r
   r,   r?   rS   rW   r   r0   rX   rY   r"   r"   r"   r#   r=   f   s   
r=   r   )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    
r^   N)!rI   typingr   r   r   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=   r   r^   r"   r"   r"   r#   <module>   s*    	=+