B
    .KcW                 @   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
deprecatedZaddedZ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    7lib/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nameZ	argumentsversionlabelslenZinline_textr   r   Z	paragraphappendr   Znested_parseZcontent_offsetversionlabel_classes
isinstanceZ	rawsourceZinlinesourcelineZchildrenZreplace_selfinsertr   ChangeSetDomainenvZ
get_domainnote_changeset)
selfnodetextZinodesmessagesZ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	   rA   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 )r8   zDomain for changesets.r,   changesinitial_data)r%   c             C   s   | j di S )NrC   )data
setdefault)r;   r    r    r!   
changesetsp   s    zChangeSetDomain.changesetsN)r<   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   )r9   Zref_contextgetZ	temp_datar   r   r6   ZastextrG   rF   r2   )r;   r<   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)rG   valuesr   remove)r;   r   rC   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 )NrC   )itemsrG   rF   r   r2   )r;   rM   rN   r&   ZotherchangesrC   r,   r    r    r!   merge_domaindata   s
    

z ChangeSetDomain.merge_domaindatar   )r9   r   r.   r%   c             C   s   d S )Nr    )r;   r9   r   r.   r    r    r!   process_doc   s    zChangeSetDomain.process_doc)r&   r%   c             C   s   | j |g S )N)rG   rI   )r;   r&   r    r    r!   get_changesets_for   s    z"ChangeSetDomain.get_changesets_for)r   r   r   rB   r/   ZlabelrD   r   r   propertyr   r   r   rG   r
   r*   r:   rL   rP   r   r.   rQ   rR   r    r    r    r!   r8   f   s   
r8   r   )appr%   c             C   s<   |  t | dt | dt | dt dddddS )Nr   r   r   Zbuiltinr#   T)r&   Zenv_versionZparallel_read_safeZparallel_write_safe)Z
add_domainr8   Zadd_directiver"   )rT   r    r    r!   setup   s    
rU   N)!rB   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   r0   r3   r   r"   r8   r   rU   r    r    r    r!   <module>   s*    	=+