B
    \                 @   s   d Z ddl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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mZ ddlmZ eeZ G dd deZ!dd Z"dS )z
    sphinx.builders.changes
    ~~~~~~~~~~~~~~~~~~~~~~~

    Changelog builder.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)path)cast)	iteritems)package_dir)Builder)ChangeSetDomain)___)HTMLThemeFactory)logging)bold)copy_asset_file)	ensurediros_path)
htmlescapec               @   sP   e Zd ZdZdZedZdd Zdd Zdd	d
dZ	dd Z
dd Zdd ZdS )ChangesBuilderzC
    Write a summary with all versionadded/changed directives.
    Zchangesz#The overview file is in %(outdir)s.c             C   s2   |    t| j}|d| _| j| | j d S )Ndefault)Zcreate_template_bridger
   appZcreatetheme	templatesinit)selfZtheme_factory r   6lib/python3.7/site-packages/sphinx/builders/changes.pyr   -   s    
zChangesBuilder.initc             C   s   | j S )N)outdir)r   r   r   r   get_outdated_docs4   s    z ChangesBuilder.get_outdated_docsZaddedZchanged
deprecated)versionaddedversionchangedr   c          
      s  | j j}tt| jd}i }g }i }|| jjkrLtt	t
d|  d S tt	d xH||D ]8}t|jtr|jd }n|j}| j|j }	|jdd}
|r|jdr|
rd||	|
f }nd	||	f }|||j|jf qh|s|jrV|jptd
}|std}|
r,d||	|
f }nd	||	f }||g ||j|jf qh|
s^qhd|	 |
f }| jj|j  }||j|fg ||j|jf qhW | j j|| j j| j jt t!|t |t t!|| j j"| j j#d	}t$%t&'| j(ddd}|)| j*+d| W d Q R X t$%t&'| j(ddd}|)| j*+d| W d Q R X d| d| d| gfdd tt	t
d x| jj,D ]}t$%| j-|d| jj j.>}y|/ }W n* t0k
r   t1t
d| wY nX W d Q R X t&'| j(dt2|d }t3t&4| t$%|ddJ}d' fd d!t5|D }| j-|d |d"}|)| j*+d#| W d Q R X qW t6d$d! t!| j78i D }t9t&'t:d%d&d'd(| j(|| j*d) t9t&'t:d%d*d'd+| j( d S ),N	changesetzno changes in version %s.zwriting summary file...r   
 zc-apiz<b>%s</b>: <i>%s:</i> %sz<b>%s</b>: <i>%s</i>.ZBuiltinszModule levelz<i>%s:</i> %s)	projectversionZ	docstitleZ
shorttitle
libchanges
apichangesotherchangesZshow_copyrightZshow_sphinxz
index.htmlwutf8zchanges/frameset.htmlzchanges.htmlzchanges/versionchanges.htmlz.. versionadded:: %sz.. versionchanged:: %sz.. deprecated:: %sc                s4   d|  t | }x D ]}||krd| }P qW |S )Nz<a name="L%s"> </a>z<span class="hl">%s</span>)r   )Znolinex)hltextr   r   hl~   s    
z ChangesBuilder.write.<locals>.hlzcopying source files...rz(could not read %r for changelog creationZrstz.htmlzutf-8 c             3   s    | ]\}} |d  |V  qdS )   Nr   ).0ir)   )r,   r   r   	<genexpr>   s    z'ChangesBuilder.write.<locals>.<genexpr>)filenametextzchanges/rstsource.htmlc             s   s   | ]\}}d | |fV  qdS )Ztheme_Nr   )r0   keyvalr   r   r   r2      s    Zthemesr   Zstaticzdefault.css_t)contextZrendererZbasicz	basic.css);Zconfigr#   r   r   envZ
get_domainZversionchangesloggerinfor   r	   Zget_changesets_for
isinstancedescnametupletypemaptypeZcontentreplacedocname
startswithappendlinenomoduler   
setdefault
capitalizeZtitlesZastextr"   Z
html_titleZhtml_short_titlesortedr   Zhtml_show_copyrightZhtml_show_sphinxcodecsopenr   joinr   writer   ZrenderZall_docsZdoc2pathZsource_encoding	readlinesUnicodeDecodeErrorZwarningr   r   dirname	enumeratedictr   Zget_optionsr   r   )r   Zignoredr#   Zdomainr$   r%   r&   r   r<   Zttextr7   entryrE   titleZctxfrA   linesZtargetfnr4   Zthemectxr   )r,   r+   r   rL   >   s    




	$zChangesBuilder.writec             C   s6   t |}x(dD ] }|d||f d||f }qW |S )N)r   r   r   z
.. %s:: %sz<b>.. %s:: %s</b>)r   r@   )r   r4   r#   Z	directiver   r   r   r,      s
    
zChangesBuilder.hlc             C   s   d S )Nr   )r   r   r   r   finish   s    zChangesBuilder.finishN)__name__
__module____qualname____doc__namer	   Zepilogr   r   r>   rL   r,   rV   r   r   r   r   r   &   s   br   c             C   s   |  t ddddS )NZbuiltinT)r#   Zparallel_read_safeZparallel_write_safe)Zadd_builderr   )r   r   r   r   setup   s    
r\   )#rZ   rI   osr   typingr   Zsixr   Zsphinxr   Zsphinx.buildersr   Zsphinx.domains.changesetr   Zsphinx.localer   r	   Zsphinx.themingr
   Zsphinx.utilr   Zsphinx.util.consoler   Zsphinx.util.fileutilr   Zsphinx.util.osutilr   r   Zsphinx.util.pycompatr   Z	getLoggerrW   r9   r   r\   r   r   r   r   <module>
   s$   
 