ó
öÀ„\c           @   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 r)d d l m Z m  Z  m! Z! m" Z" d d l# m$ Z$ n  e j% e& ƒ Z' d e f d „  ƒ  YZ( d „  Z) d S(   sÃ   
    sphinx.builders.changes
    ~~~~~~~~~~~~~~~~~~~~~~~

    Changelog builder.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
iÿÿÿÿN(   t   path(   t   cast(   t	   iteritems(   t   package_dir(   t   Builder(   t   ChangeSetDomain(   t   _t   __(   t   HTMLThemeFactory(   t   logging(   t   bold(   t   copy_asset_file(   t	   ensuredirt   os_path(   t
   htmlescape(   t   Anyt   Dictt   Listt   Tuple(   t   Sphinxt   ChangesBuilderc           B   sh   e  Z d  Z d Z e d ƒ Z d „  Z d „  Z i d d 6d d 6d	 d	 6Z d
 „  Z	 d „  Z
 d „  Z RS(   sC   
    Write a summary with all versionadded/changed directives.
    t   changess#   The overview file is in %(outdir)s.c         C   sE   |  j  ƒ  t |  j ƒ } | j d ƒ |  _ |  j j |  |  j ƒ d  S(   Nt   default(   t   create_template_bridgeR   t   appt   createt   themet	   templatest   init(   t   selft   theme_factory(    (    s6   lib/python2.7/site-packages/sphinx/builders/changes.pyR   -   s    
c         C   s   |  j  S(   N(   t   outdir(   R   (    (    s6   lib/python2.7/site-packages/sphinx/builders/changes.pyt   get_outdated_docs4   s    t   addedt   versionaddedt   changedt   versionchangedt
   deprecatedc            sa  |  j  j } t t |  j j d ƒ ƒ } i  } g  } i  } | |  j j k rl t j t	 t
 d ƒ | ƒ ƒ d  St j t	 d ƒ ƒ xÆ| j | ƒ D]µ} t | j t ƒ r· | j d } n	 | j } |  j | j }	 | j j d d ƒ }
 | rH| j j d ƒ rH|
 rd | |	 |
 f } n d	 | |	 f } | j | | j | j f ƒ q | sW| j rØ| j pit d
 ƒ } | st d ƒ } n  |
 rd | |	 |
 f } n d	 | |	 f } | j | g  ƒ j | | j | j f ƒ q |
 säq n  d |	 j ƒ  |
 f } |  j j | j j ƒ  } | j | j | f g  ƒ j | | j | j f ƒ q Wi	 |  j  j d 6| d 6|  j  j d 6|  j  j d 6t  t! | ƒ ƒ d 6t  | ƒ d 6t  t! | ƒ ƒ d 6|  j  j" d 6|  j  j# d 6} t$ j% t& j' |  j( d ƒ d d ƒ # } | j) |  j* j+ d | ƒ ƒ Wd  QXt$ j% t& j' |  j( d ƒ d d ƒ # } | j) |  j* j+ d | ƒ ƒ Wd  QXd | d | d | g ‰ ‡ f d †  ‰  t j t	 t
 d  ƒ ƒ ƒ x;|  j j, D]-} t$ j% |  j j- | ƒ d! |  j j  j. ƒ D } y | j/ ƒ  } Wn* t0 k
 rt j1 t
 d" ƒ | ƒ w«n XWd  QXt& j' |  j( d# t2 | ƒ ƒ d$ } t3 t& j4 | ƒ ƒ t$ j% | d d% ƒ k } d& j' ‡  f d' †  t5 | ƒ Dƒ ƒ } i |  j j- | d  ƒ d( 6| d) 6} | j) |  j* j+ d* | ƒ ƒ Wd  QXq«Wt7 d+ „  t! |  j8 j9 i  ƒ ƒ Dƒ ƒ } t: t& j' t; d, d- d. d/ ƒ |  j( d0 | d1 |  j* ƒt: t& j' t; d, d2 d. d3 ƒ |  j( ƒ d  S(4   Nt	   changesets   no changes in version %s.s   writing summary file...i    s   
t    s   c-apis   <b>%s</b>: <i>%s:</i> %ss   <b>%s</b>: <i>%s</i>.t   Builtinss   Module levels   <i>%s:</i> %st   projectt   versiont	   docstitlet
   shorttitlet
   libchangest
   apichangest   otherchangest   show_copyrightt   show_sphinxs
   index.htmlt   wt   utf8s   changes/frameset.htmls   changes.htmls   changes/versionchanges.htmls   .. versionadded:: %ss   .. versionchanged:: %ss   .. deprecated:: %sc            sC   d |  t  | ƒ } x( ˆ  D]  } | | k r d | } Pq q W| S(   Ns   <a name="L%s"> </a>s   <span class="hl">%s</span>(   R   (   t   not   linet   x(   t   hltext(    s6   lib/python2.7/site-packages/sphinx/builders/changes.pyt   hl~   s    
s   copying source files...t   rs(   could not read %r for changelog creationt   rsts   .htmls   utf-8t    c         3   s(   |  ] \ } } ˆ  | d  | ƒ Vq d S(   i   N(    (   t   .0t   iR5   (   R8   (    s6   lib/python2.7/site-packages/sphinx/builders/changes.pys	   <genexpr>“   s    t   filenamet   texts   changes/rstsource.htmlc         s   s%   |  ] \ } } d  | | f Vq d S(   t   theme_N(    (   R<   t   keyt   val(    (    s6   lib/python2.7/site-packages/sphinx/builders/changes.pys	   <genexpr>™   s    t   themesR   t   statics   default.css_tt   contextt   renderert   basics	   basic.css(<   t   configR*   R   R   t   envt
   get_domaint   versionchangest   loggert   infoR
   R   t   get_changesets_fort
   isinstancet   descnamet   tuplet   typemapt   typet   contentt   replacet   docnamet
   startswitht   appendt   linenot   moduleR   t
   setdefaultt
   capitalizet   titlest   astextR)   t
   html_titlet   html_short_titlet   sortedR   t   html_show_copyrightt   html_show_sphinxt   codecst   openR    t   joinR   t   writeR   t   rendert   all_docst   doc2patht   source_encodingt	   readlinest   UnicodeDecodeErrort   warningR   R   t   dirnamet	   enumeratet   Nonet   dictR   t   get_optionsR   R   (   R   t   ignoredR*   t   domainR-   R.   R/   R&   RP   t   ttextRE   t   entryRZ   t   titlet   ctxt   fRV   t   linest   targetfnR?   t   themectx(    (   R8   R7   s6   lib/python2.7/site-packages/sphinx/builders/changes.pyRg   >   sœ    			'"'"	"%
&	c         C   sP   t  | ƒ } x= d d d g D], } | j d | | f d | | f ƒ } q W| S(   NR$   R"   R%   s
   .. %s:: %ss   <b>.. %s:: %s</b>(   R   RU   (   R   R?   R*   t	   directive(    (    s6   lib/python2.7/site-packages/sphinx/builders/changes.pyR8       s
    c         C   s   d  S(   N(    (   R   (    (    s6   lib/python2.7/site-packages/sphinx/builders/changes.pyt   finish¨   s    (   t   __name__t
   __module__t   __doc__t   nameR   t   epilogR   R    RR   Rg   R8   R   (    (    (    s6   lib/python2.7/site-packages/sphinx/builders/changes.pyR   &   s   		
	b	c         C   s&   |  j  t ƒ i d d 6t d 6t d 6S(   Nt   builtinR*   t   parallel_read_safet   parallel_write_safe(   t   add_builderR   t   True(   R   (    (    s6   lib/python2.7/site-packages/sphinx/builders/changes.pyt   setup­   s
    (*   R‚   Rd   t   osR    t   typingR   t   sixR   t   sphinxR   t   sphinx.buildersR   t   sphinx.domains.changesetR   t   sphinx.localeR   R   t   sphinx.themingR   t   sphinx.utilR	   t   sphinx.util.consoleR
   t   sphinx.util.fileutilR   t   sphinx.util.osutilR   R   t   sphinx.util.pycompatR   t   FalseR   R   R   R   t   sphinx.applicationR   t	   getLoggerR€   RL   R   RŠ   (    (    (    s6   lib/python2.7/site-packages/sphinx/builders/changes.pyt   <module>
   s(   "‡