
    Fe                       d Z ddlmZ ddlZddlmZ ddl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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  ej@                  e!      Z" G d de      Z#ddZ$y)zChangelog builder.    )annotationsN)path)TYPE_CHECKINGAnycast)package_dir)Builder)ChangeSetDomain)___)HTMLThemeFactory)logging)bold)copy_asset_file)	ensurediros_path)Sphinxc                  X    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y)ChangesBuilderzC
    Write a summary with all versionadded/changed directives.
    changesz#The overview file is in %(outdir)s.c                    | j                          t        | j                        }|j                  d      | _        | j
                  j                  | | j                         y )Ndefault)create_template_bridger   appcreatetheme	templatesinit)selftheme_factorys     9/usr/lib/python3/dist-packages/sphinx/builders/changes.pyr   zChangesBuilder.init    sF    ##%(2")))4
D$**-    c                ,    t        | j                        S N)stroutdirr   s    r!   get_outdated_docsz ChangesBuilder.get_outdated_docs&   s    4;;r"   addedchanged
deprecated)versionaddedversionchangedr+   c           
     >   | j                   j                  }t        t        | j                  j                  d            }i }g }i }|j                  |      }|s+t        j                  t        t        d      |z               y t        j                  t        t        d                   |D ]  }t        |j                  t              r|j                  d   }	n|j                  }	| j                  |j                     }
|j                   j#                  dd      }|	r[|j$                  j'                  d      r@|rd|	 d	|
 d
| }n	d|	 d	|
 d}|j)                  ||j$                  |j*                  f       |	s|j,                  rw|j,                  xs t/        d      }|	st/        d      }	|rd|	 d	|
 d
| }n	d|	 d	|
 d}|j1                  |g       j)                  ||j$                  |j*                  f       Q|sUd|
j3                          d
| }| j                  j4                  |j$                     j7                         }|j1                  |j$                  |fg       j)                  ||j$                  |j*                  f        | j                   j8                  || j                   j:                  | j                   j<                  t?        |jA                               t?        |      t?        |jA                               | j                   jB                  | j                   jD                  d	}tG        tI        jJ                  | jL                  d      dd      5 }|jO                  | jP                  jS                  d|             d d d        tG        tI        jJ                  | jL                  d      dd      5 }|jO                  | jP                  jS                  d|             d d d        d|z  d|z  d|z  gd-fdt        j                  t        t        d                   | j                  jT                  D ]1  }tG        | j                  jW                  |      | j                  j                   jX                        5 }	 |j[                         }	 d d d        tI        jJ                  | jL                  dta        |            dz   }tc        tI        jd                  |             tG        |dd      5 }d jK                  fd!tg              D              }| j                  jW                  |d"      |d#}|jO                  | jP                  jS                  d$|             d d d        4 | jh                  jk                  i       jA                         D ci c]  \  }}d%|z   | }}}tm        tI        jJ                  tn        d&d'd(d)      | jL                  || jP                  *       tm        tI        jJ                  tn        d&d+d(d,      | jL                         y # 1 sw Y   xY w# 1 sw Y   LxY w# t\        $ r+ t        j_                  t        d      |       Y d d d        1w xY w# 1 sw Y   xY w# 1 sw Y   LxY wc c}}w ).N	changesetz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:: %sz.. versionchanged:: %sz.. deprecated:: %sc                d    d| z  t        j                  |      z   }D ]  }||v sd|z  } |S  |S )Nz<a name="L%s"> </a>z<span class="hl">%s</span>)htmlescape)nolinexhltexts      r!   hlz ChangesBuilder.write.<locals>.hln   sJ    (2-D0AAD 97$>DK	 Kr"   zcopying source files...z(could not read %r for changelog creationrstz.htmlzutf-8 c              3  <   K   | ]  \  }} |d z   |        yw)   N ).0irC   rF   s      r!   	<genexpr>z'ChangesBuilder.write.<locals>.<genexpr>   s     Q9Atr!a%Qs   F)filenametextzchanges/rstsource.htmltheme_themesr   staticzdefault.css_t)contextrendererbasicz	basic.css)rB   intrC   r%   returnr%   )8configr4   r   r
   env
get_domainget_changesets_forloggerinfor   r   
isinstancedescnametupletypemaptypecontentreplacedocname
startswithappendlinenomoduler   
setdefault
capitalizetitlesastextr3   
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   get_optionsr   r   )r   ignoredr4   domainr7   r8   r9   
changesetsr/   r`   ttextrT   entryrj   titlectxfrf   linestargetfnrP   keyvalthemectxrF   rE   s                           @@r!   rw   zChangesBuilder.write/   s   ++%%otxx':':;'GH<>
13
JL..w7
KKR ;<wFGHD5678# 	BI),,e4$--a0$--LL0E''//c:GI--88A!(9UG6'KE!(9UG5AE!!5)*;*;Y=M=M"NOY--")):Qz] 0H!(9UG6'KE!(9UG5AE%%fb188%ARAR:C:J:J:L M e..01yA	(9(9:AAC''):):E(BBGNNI--y/?/?@B9	B@ {{**//++66 !1!1!34 ,"<#5#5#78"kk==;;77

 $))DKK6fM 	IQRGGDNN))*A3GH	I$))DKK8#O 	OSTGGDNN))*GMN	O )72*W4&02	 	D5678xx(( 	NGdhh''0#xx>>@ CDKKME yyeWW5EFPHdll8,-hg6 N!wwQ	%@PQQ $ 1 1'5 A  --.FLMN N	N$ JJ**2.4468JS#HsNC' 8 8		+xHo^X	P		+x(KX	%O	I 	I	O 	O* * NN2&P#QSZ[ 	 N N8sU   %,X.,X;Y?YA.Z+Z.X8;Y(Y<0Y?;Y<<Y??Z		Z	c           	     |    t        j                  |      }dD ]!  }|j                  d| d| d| d| d      }# |S )N)r-   r,   r+   z.. z:: z<b>.. z</b>)r@   rA   re   )r   rP   r4   	directives       r!   rF   zChangesBuilder.hl   sX    {{4 I 	FI<<#i[G9 ="(3wit DFD	F r"   c                     y r$   rK   r'   s    r!   finishzChangesBuilder.finish   s    r"   N)rX   None)rX   r%   )r   r   rX   r   )rP   r%   r4   r%   rX   r%   )__name__
__module____qualname____doc__namer   epilogr   r(   rb   rw   rF   r   rK   r"   r!   r   r      sF     D56F.   #"G^%@r"   r   c                8    | j                  t               ddddS )NbuiltinT)r4   parallel_read_safeparallel_write_safe)add_builderr   )r   s    r!   setupr      s#    OON# "# r"   )r   r   rX   zdict[str, Any])%r   
__future__r   r@   osr   typingr   r   r   sphinxr   sphinx.buildersr	   sphinx.domains.changesetr
   sphinx.localer   r   sphinx.themingr   sphinx.utilr   sphinx.util.consoler   sphinx.util.fileutilr   sphinx.util.osutilr   r   sphinx.applicationr   	getLoggerr   r]   r   r   rK   r"   r!   <module>r      s^     "   + +  # 4  +  $ 0 1)			8	$~W ~Br"   