o $a@sdZddlZddlmZddlmZmZmZmZm Z ddl m Z ddl m Z ddlmZddlmZdd lmZmZdd lmZdd lmZdd lmZdd lmZddlmZmZe e!Z"GdddeZ#de dee$effddZ%dS)z sphinx.builders.changes ~~~~~~~~~~~~~~~~~~~~~~~ Changelog builder. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N)path)AnyDictListTuplecast) package_dir)Sphinx)Builder)ChangeSetDomain)___)HTMLThemeFactory)logging)bold)copy_asset_file) ensurediros_pathc@sreZdZdZdZedZdddZdefdd Z d d d d Z de ddfddZ dededefddZ dddZdS)ChangesBuilderzC Write a summary with all versionadded/changed directives. changesz#The overview file is in %(outdir)s.returnNcCs2|t|j}|d|_|j||jdS)Ndefault)create_template_bridgerappcreatetheme templatesinit)self theme_factoryr 9/usr/lib/python3/dist-packages/sphinx/builders/changes.pyr$s  zChangesBuilder.initcCs|jSN)outdirrr r r!get_outdated_docs*sz ChangesBuilder.get_outdated_docsaddedchanged deprecated) versionaddedversionchangedr(ignoredc s2|jj}tt|jd}i}g}i}||}|s'tt t d|dStt t d|D]}t |j t r@|j d} n|j } |j|j} |jdd} | rs|jdrs| rbd| | | f} nd | | f} || |j|jfq2| sx|jr|jp~td } | std } | rd| | | f} nd | | f} || g| |j|jfq2| sq2d | | f} |jj|j}||j|fg| |j|jfq2|jj||jj|jjt| t|t| |jj!|jj"d }t#t$%|j&dddd}|'|j()d|Wdn 1s wYt#t$%|j&dddd}|'|j()d|Wdn 1s3wYd|d|d|gdt*dt+dt+ffdd tt t d|jj,D]}t#|j-||jjj.d(}z|/}Wnt0yt1t d|YWdq]wWdn 1swYt$%|j&dt2|d }t3t$4|t#|dd!d*}d"%fd#d$t5|D}|j-|d|d%}|'|j()d&|Wdn 1swYq]d'd(|j67i D}t8t$%t9d)d*d+d,|j&||j(d-t8t$%t9d)d.d+d/|j&dS)0N changesetzno changes in version %s.zwriting summary file...r  zc-apiz%s: %s: %sz%s: %s.Builtinsz Module levelz %s: %s) projectversion docstitle shorttitle libchanges apichanges otherchangesshow_copyright show_sphinxz index.htmlwutf8)encodingzchanges/frameset.htmlz changes.htmlzchanges/versionchanges.htmlz.. versionadded:: %sz.. versionchanged:: %sz.. deprecated:: %snolinercs6d|t|}D] }||vrd|}|Sq |S)Nz z%s)htmlescape)r<r=x)hltextr r!hltsz ChangesBuilder.write..hlzcopying source files...z(could not read %r for changelog creationrstz.htmlzutf-8c3s"|] \}}|d|VqdS)Nr ).0ir=)rBr r! s z'ChangesBuilder.write..)filenametextzchanges/rstsource.htmlcSsi|] \}}d||qS)theme_r )rFkeyvalr r r! sz(ChangesBuilder.write..themesrstaticz default.css_t)contextrendererbasicz basic.css):configr1rr env get_domainget_changesets_forloggerinforr isinstancedescnametupletypemaptypecontentreplacedocname startswithappendlinenomoduler setdefault capitalizetitlesastextr0 html_titlehtml_short_titlesorteditemshtml_show_copyrighthtml_show_sphinxopenrjoinr#writerrenderintstrall_docsdoc2pathsource_encoding readlinesUnicodeDecodeErrorwarningrrdirname enumerater get_optionsrr)rr+r1domainr4r5r6 changesetsr,r[ttextrQentryretitlectxfralinestargetfnrJthemectxr )rBrAr!rr3s                zChangesBuilder.writerJr1cCs4t|}dD]}|d||fd||f}q|S)N)r*r)r(z .. %s:: %sz.. %s:: %s)r>r?r`)rrJr1 directiver r r!rBs  zChangesBuilder.hlcCsdSr"r r$r r r!finishszChangesBuilder.finish)rN)__name__ __module__ __qualname____doc__namer epilogrrur%r]rrrrBrr r r r!rs brrrcCs|tddddS)NbuiltinT)r1parallel_read_safeparallel_write_safe) add_builderr)rr r r!setups r)&rr>osrtypingrrrrrsphinxrsphinx.applicationr sphinx.buildersr sphinx.domains.changesetr sphinx.localer r sphinx.themingr sphinx.utilrsphinx.util.consolersphinx.util.fileutilrsphinx.util.osutilrr getLoggerrrXrrurr r r r!s$