o
    Ni.                     @  s   d Z ddlm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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 er`ddlmZ ddlmZ ddlmZ e e!Z"G dd deZ#dddZ$dS )zChangelog builder.    )annotationsN)path)TYPE_CHECKING)package_dir)Builder)___)HTMLThemeFactory)logging)bold)copy_asset_file)	ensurediros_path)Set)Sphinx)ExtensionMetadatac                   @  s\   e Zd ZdZdZedZdddZdd	d
ZdddddZ	dddZ
dddZdddZdS )ChangesBuilderzV
    Write a summary with all versionadded/changed/deprecated/removed directives.
    changesz#The overview file is in %(outdir)s.returnNonec                 C  s2   |    t| j}|d| _| j| | j d S )Ndefault)create_template_bridger	   appcreatetheme	templatesinit)selftheme_factory r   K/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/builders/changes.pyr   #   s   
zChangesBuilder.initstrc                 C  s
   t | jS N)r!   outdirr   r   r   r    get_outdated_docs)   s   
z ChangesBuilder.get_outdated_docsaddedchanged
deprecatedremoved)versionaddedversionchangedr(   versionremoved	_docnamesSet[str]c              
     sX  | j j}| jjj}i }g }i }||}|s"ttt	d| d S ttt	d |D ]}t
|jtr;|jd }	n|j}	| j|j }
|jdd}|	ru|jdru|rad|	 d|
 d	| }n	d|	 d|
 d
}|||j|jf q-|	sz|jr|jptd}|	std}	|rd|	 d|
 d	| }n	d|	 d|
 d
}||g ||j|jf q-|sq-d|
  d	| }| jj|j  }||j|fg ||j|jf q-| j j|| j j| j jt| t|t| | j j | j j!d	}t"t#$| j%dddd}|&| j'(d| W d    n	1 sw   Y  t"t#$| j%dddd}|&| j'(d| W d    n	1 s>w   Y  d| d| d| d| gd7fdd  ttt	d! | jj)D ]}t"| j*|| jj j+d(}z|, }W n t-y   t.t	d"| Y W d    qiw W d    n	1 sw   Y  t#$| j%d#t/|d$ }t0t#1| t"|dd%d,}d&$ fd'd(t2|D }t3| j*|d)|d*}|&| j'(d+| W d    n	1 sw   Y  qid,d- | j45i  D }t6t#$t7d.d/d0d1| j%|| j'd2d3 t6t#$t7d.d4d0d5| j%d5 d2d6 d S )8Nzno changes in version %s.zwriting summary file...r   
 zc-apiz<b>z	</b>: <i>z:</i> z</i>.BuiltinszModule levelz<i>)	projectversion	docstitle
shorttitle
libchanges
apichangesotherchangesshow_copyrightshow_sphinxz
index.htmlwutf8)encodingzchanges/frameset.htmlzchanges.htmlzchanges/versionchanges.htmlz.. versionadded:: z.. versionchanged:: z.. deprecated:: z.. versionremoved:: nointliner!   r   c                   s6   d|  t | } D ]}||v rd| } |S q|S )Nz<a name="L%s"> </a>z<span class="hl">%s</span>)htmlescape)r>   r@   x)hltextr   r    hl{   s   z*ChangesBuilder.write_documents.<locals>.hlzcopying source files...z(could not read %r for changelog creationrstz.htmlzutf-8 c                 3  s"    | ]\}} |d  |V  qdS )   Nr   ).0ir@   )rE   r   r    	<genexpr>   s     z1ChangesBuilder.write_documents.<locals>.<genexpr>F)filenametextzchanges/rstsource.htmlc                 S  s   i | ]	\}}d | |qS )theme_r   )rI   keyvalr   r   r    
<dictcomp>   s    z2ChangesBuilder.write_documents.<locals>.<dictcomp>themesr   staticzdefault.css.jinjaT)contextrendererforcebasicz	basic.css)rV   )r>   r?   r@   r!   r   r!   )8configr3   envdomainschangeset_domainget_changesets_forloggerinfor   r   
isinstancedescnametupletypemaptypecontentreplacedocname
startswithappendlinenomoduler   
setdefault
capitalizetitlesastextr2   
html_titlehtml_short_titlesorteditemshtml_show_copyrighthtml_show_sphinxopenr   joinr#   writer   renderall_docsdoc2pathsource_encoding	readlinesUnicodeDecodeErrorwarningr   r   dirname	enumerater!   r   get_optionsr   r   )r   r-   r3   domainr6   r7   r8   
changesets	changesetr`   ttextrT   entryrj   titlectxfrf   linestargetfnrM   themectxr   )rE   rD   r    write_documents3   s   






zChangesBuilder.write_documentsrM   r3   c              	   C  s>   t |}dD ]}|d| d| d| d| d}q|S )N)r+   r*   r(   r,   z.. z:: z<b>.. z</b>)rA   rB   re   )r   rM   r3   	directiver   r   r    rE      s   
zChangesBuilder.hlc                 C  s   d S r"   r   r$   r   r   r    finish   s   zChangesBuilder.finishN)r   r   )r   r!   )r-   r.   r   r   )rM   r!   r3   r!   r   r!   )__name__
__module____qualname____doc__namer   epilogr   r%   rb   r   rE   r   r   r   r   r    r      s    



ur   r   r   r   r   c                 C  s   |  t ddddS )NbuiltinT)r3   parallel_read_safeparallel_write_safe)add_builderr   )r   r   r   r    setup   s
   
r   )r   r   r   r   )%r   
__future__r   rA   osr   typingr   sphinxr   sphinx.buildersr   sphinx.localer   r   sphinx.themingr	   sphinx.utilr
   sphinx.util.consoler   sphinx.util.fileutilr   sphinx.util.osutilr   r   collections.abcr   sphinx.applicationr   sphinx.util.typingr   	getLoggerr   r]   r   r   r   r   r   r    <module>   s*    
 