ó
öÀ„\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 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 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$ m% Z% e& rd d l' m( Z( d d l) m* Z* m+ Z+ m, Z, m- Z- m. Z. m/ Z/ n  e j0 e1 ƒ Z2 d Z3 d e f d „  ƒ  YZ4 d „  Z5 d S(   sÁ   
    sphinx.builders.texinfo
    ~~~~~~~~~~~~~~~~~~~~~~~

    Texinfo builder.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
iÿÿÿÿN(   t   path(   t   nodes(   t   OptionParser(   t
   FileOutput(   t   addnodes(   t   Builder(   t   NoUri(   t   ImageAdapter(   t   _t   __(   t   logging(   t   status_iterator(   t   boldt	   darkgreen(   t   new_document(   t   copy_asset_file(   t   inline_all_toctrees(   t   SEPt   make_filename(   t   TexinfoWritert   TexinfoTranslator(   t   Sphinx(   t   Anyt   Dictt   Iterablet   Listt   Tuplet   Unions©  # Makefile for Sphinx Texinfo output

infodir ?= /usr/share/info

MAKEINFO = makeinfo --no-split
MAKEINFO_html = makeinfo --no-split --html
MAKEINFO_plaintext = makeinfo --no-split --plaintext
TEXI2PDF = texi2pdf --batch --expand
INSTALL_INFO = install-info

ALLDOCS = $(basename $(wildcard *.texi))

all: info
info: $(addsuffix .info,$(ALLDOCS))
plaintext: $(addsuffix .txt,$(ALLDOCS))
html: $(addsuffix .html,$(ALLDOCS))
pdf: $(addsuffix .pdf,$(ALLDOCS))

install-info: info
	for f in *.info; do \
	  cp -t $(infodir) "$$f" && \
	  $(INSTALL_INFO) --info-dir=$(infodir) "$$f" ; \
	done

uninstall-info: info
	for f in *.info; do \
	  rm -f "$(infodir)/$$f"  ; \
	  $(INSTALL_INFO) --delete --info-dir=$(infodir) "$$f" ; \
	done

%.info: %.texi
	$(MAKEINFO) -o '$@' '$<'

%.txt: %.texi
	$(MAKEINFO_plaintext) -o '$@' '$<'

%.html: %.texi
	$(MAKEINFO_html) -o '$@' '$<'

%.pdf: %.texi
	-$(TEXI2PDF) '$<'
	-$(TEXI2PDF) '$<'
	-$(TEXI2PDF) '$<'

clean:
	rm -f *.info *.pdf *.txt *.html
	rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ky *.pg
	rm -f *.vr *.tp *.fn *.fns *.def *.defs *.cp *.cps *.ge *.ges *.mo

.PHONY: all info plaintext html pdf install-info uninstall-info clean
t   TexinfoBuilderc           B   s´   e  Z d  Z d Z d Z e d ƒ Z e j d k rF e e d ƒ 7Z n  d d d g Z e	 Z
 d „  Z d	 „  Z d d
 „ Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s=   
    Builds Texinfo output to create Info documentation.
    t   texinfos$   The Texinfo files are in %(outdir)s.t   posixsl   
Run 'make' in that directory to run these through makeinfo
(use 'make info' here to do that automatically).s	   image/pngs
   image/jpegs	   image/gifc         C   s   g  |  _  g  |  _ d  S(   N(   t   docnamest   document_data(   t   self(    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyt   inito   s    	c         C   s   d S(   Ns   all documents(    (   R!   (    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyt   get_outdated_docst   s    c         C   s$   | |  j  k r t ‚ n d | Sd  S(   Nt   %(   R   R   (   R!   t   docnamet   typ(    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyt   get_target_urix   s    	c         C   s   |  j  | | ƒ S(   N(   R'   (   R!   t   from_t   toR&   (    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyt   get_relative_uri   s    c         C   sâ   g  |  j  j D] } t | ƒ ^ q } | sB t j t d ƒ ƒ d  Sg  |  _ x | D]ˆ } | d } | |  j j k r t j t d ƒ | ƒ qR n  |  j	 j
 | ƒ | j t d ƒ rÀ | d  } n  |  j j
 | | d f ƒ qR Wd  S(   NsG   no "texinfo_documents" config value found; no documents will be writteni    s?   "texinfo_documents" config value references unknown document %st   indexiûÿÿÿi   (   t   configt   texinfo_documentst   listt   loggert   warningR	   t   titlest   envt   all_docsR    t   appendt   endswithR   (   R!   t   xt   preliminary_document_datat   entryR%   (    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyt   init_document_data„   s    %	
c         G   sô  |  j  ƒ  xã|  j D]Ø} | d  \ } } } } | d 7} d } } }	 t | ƒ d k rs | d d !\ } } }	 n  t }
 t | ƒ d k r˜ | d }
 n  t d t j |  j | ƒ d d ƒ } t j	 t
 d	 ƒ | d
 d ƒ|  j | |
 d |  j j pö g  ƒ} t j	 t
 d ƒ d
 d ƒ|  j | ƒ t |  ƒ } t d |  j j d | f d t ƒ j ƒ  } | | _ | | _ | d  d | _ |  j j | _ | p“d | _ |	 p¢d | _ | p±d | _ | | _ | | _ | j | | ƒ t j	 t
 d ƒ ƒ q Wd  S(   Ni   s   .texit    i   i   t   destination_patht   encodings   utf-8s   processing %s...t   nonli   t
   appendicess   writing... t   defaultst
   componentst   read_config_filesiûÿÿÿs   .infot   done(   R9   R    t   lent   FalseR   R    t   joint   outdirR/   t   infoR	   t   assemble_doctreeR,   t   texinfo_appendicest   post_process_imagesR   R   R2   t   settingst   Truet   get_default_valuest   authort   titlet   texinfo_filenamet   texinfo_elementst   texinfo_dir_entryt   texinfo_dir_categoryt   texinfo_dir_descriptionR%   t   write(   R!   t   ignoredR8   R%   t
   targetnameRO   RN   t   direntryt   descriptiont   categoryt   toctree_onlyt   destinationt   doctreet	   docwriterRK   (    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyRU   ˜   sF    

							c         C   s3  t  | g | ƒ |  _ t j t | ƒ d d d ƒ|  j j | ƒ } | | d <| r½ t d ƒ } t j	 ƒ  } | t j
 d d ƒ 7} | | 7} x$ | j t j ƒ D] } | | 7} q  W| } n  t |  |  j | | t | g ƒ } | | d <x7 | D]/ }	 |  j j |	 ƒ }
 |	 |
 d <| j |
 ƒ qï Wt j d ƒ t j t d ƒ ƒ |  j j | | |  ƒ xÔ | j t j ƒ D]À } | d	 }	 | d
 } t j | | ƒ g } x |  j D]v \ } } |	 j | ƒ r¤| j t j t d ƒ t d ƒ ƒ ƒ | j t j | | ƒ ƒ | j t j d d ƒ ƒ Pq¤q¤W| j | ƒ qkW| S(   Nt    R=   i   R%   s   <texinfo output>u   <Set title in conf.py>R:   s   resolving references...t
   refdocnamet   refsectnames    (in t   )(   t   setR   R/   RG   R   R2   t   get_doctreeR   R   t   sectionRO   t   traverseR   t   toctreeR   R4   R	   t   resolve_referencest   pending_xreft   emphasisR1   t
   startswitht   TextR   t   replace_self(   R!   t	   indexfileR[   R>   t   treet   new_treet   new_sectt   nodet	   largetreeR%   t   appendixt   pendingnodet   sectnamet   newnodest   subdirRO   (    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyRH   ¾   sF    


	



%c         C   sÆ   |  j  ƒ  t j t t d ƒ ƒ d t ƒt j |  j d ƒ } t j | d d ƒy) t	 | d ƒ  } | j
 t ƒ Wd  QXWn2 t t f k
 r® } t j t d ƒ | | ƒ n Xt j t d ƒ ƒ d  S(   Ns!   copying Texinfo support files... R=   t   Makefilei   t   ws   error writing file %s: %ss    done(   t   copy_image_filesR/   RG   R   R	   RL   R    RE   RF   t   openRU   t   TEXINFO_MAKEFILEt   IOErrort   OSErrorR0   (   R!   t   fnt   mkfilet   err(    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyt   finishé   s    
c         C   sà   |  j  rÜ t |  j j ƒ j } x» t |  j  t d ƒ d t |  j  ƒ |  j j d | ƒD]€ } |  j  | } y/ t	 t
 j |  j | ƒ t
 j |  j | ƒ ƒ WqU t k
 rÔ } t j t d ƒ t
 j |  j | ƒ | ƒ qU XqU Wn  d  S(   Ns   copying images... t   brownt   stringify_funcs   cannot copy image file %r: %s(   t   imagesR   t   appR2   t   get_original_image_uriR   R	   RC   t	   verbosityR   R    RE   t   srcdirRF   t	   ExceptionR/   R0   (   R!   R…   t   srct   destR‚   (    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyR{   ø   s    	N(   t   __name__t
   __module__t   __doc__t   namet   formatR	   t   epilogt   ost   supported_image_typesR   t   default_translator_classR"   R#   t   NoneR'   R*   R9   RU   RH   Rƒ   R{   (    (    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyR   _   s$   					&	+	c         C   s¡   |  j  t ƒ |  j d d „  d  ƒ |  j d g  d  ƒ |  j d i  d  ƒ |  j d t d  t g ƒ |  j d d d  ƒ |  j d t d  ƒ i d	 d
 6t d 6t d 6S(   NR-   c         S   sG   |  j  t |  j ƒ j ƒ  |  j d t |  j ƒ d t |  j ƒ d f g S(   NR:   s   The %s reference manual.t   Python(   t
   master_docR   t   projectt   lower(   R!   (    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyt   <lambda>  s   RI   RQ   t   texinfo_domain_indicest   texinfo_show_urlst   footnotet   texinfo_no_detailmenut   builtint   versiont   parallel_read_safet   parallel_write_safe(   t   add_builderR   t   add_config_valueR—   RL   R.   RD   (   R‡   (    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyt   setup  s    	(6   R   R”   R    t   docutilsR   t   docutils.frontendR   t   docutils.ioR   t   sphinxR   t   sphinx.buildersR   t   sphinx.environmentR   t!   sphinx.environment.adapters.assetR   t   sphinx.localeR   R	   t   sphinx.utilR
   R   t   sphinx.util.consoleR   R   t   sphinx.util.docutilsR   t   sphinx.util.fileutilR   t   sphinx.util.nodesR   t   sphinx.util.osutilR   R   t   sphinx.writers.texinfoR   R   RD   t   sphinx.applicationR   t   typingR   R   R   R   R   R   t	   getLoggerRŽ   R/   R}   R   R§   (    (    (    s6   lib/python2.7/site-packages/sphinx/builders/texinfo.pyt   <module>
   s2   15©