U
    YSh                     @   s   d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	m
Z
 ddlmZmZ ddlmZ ddlmZmZmZmZ dd	lmZ dd
lmZ eeeZeedZdZ G dd deZ!G dd de!Z"G dd de!Z#e
ee$ef dddZ%dS )z
    sphinxcontrib.serializinghtml
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    :copyright: Copyright 2007-2019 by the Sphinx team, see README.
    :license: BSD, see LICENSE for details.
    N)path)AnyDict)ENV_PICKLE_FILENAMESphinx)	BuildInfoStandaloneHTMLBuilder)get_translation)SEPcopyfile	ensurediros_path)jsonimpl)__version__consoleZ
last_buildc                       s`   e Zd ZdZdZdZdZdZddddgZd	d
 Z	dddZ
dd ZdddZ fddZ  ZS )SerializingHTMLBuilderzA
    An abstract builder that serializes the generated HTML.
    NF zimage/svg+xmlz	image/pngz	image/gifz
image/jpegc                 C   sZ   t | j| j| _d| _d | _d | _d | _|   | 	  | 
  |   | dd| _d S )NZ_images	use_indexhtml)r   configtagsZ
build_infoZimagedirZcurrent_docnamethemeZ	templatesZinit_templatesZinit_highlighterZinit_css_filesZinit_js_filesZget_builder_configr   )selfr   r   Y/root/rtd-docs/venv/lib/python3.8/site-packages/sphinxcontrib/serializinghtml/__init__.pyinit5   s    zSerializingHTMLBuilder.initc                 C   s.   |dkrdS | td r&|d d S |t S )Nindex )endswithr
   )r   Zdocnametypr   r   r   get_target_uriB   s
    z%SerializingHTMLBuilder.get_target_uric              	   C   sh   | j r8t|ddd}| jj||f| j  W 5 Q R X n,t|d}| jj||f| j  W 5 Q R X d S )Nwzutf-8)encodingwb)implementation_dumps_unicodeopenimplementationdumpadditional_dump_args)r   contextfilenameftZfbr   r   r   dump_contextJ   s
    "z#SerializingHTMLBuilder.dump_context	page.htmlc                 C   s   ||d< |  || |s0t| jt|| j }| jd|||| t|D ]}t	|| t
jrL||= qLtt| | || |drt| jdt|d }tt| t| j|| d S )NZcurrent_page_namezhtml-page-contextZ
sourcenameZ_sources)Zadd_sidebarsr   joinoutdirr   
out_suffixappemitlist
isinstancetypesFunctionTyper   dirnamer,   getr   envZdoc2path)r   ZpagenamectxZtemplatenameoutfilenameZ	event_argkeyZsource_namer   r   r   handle_pageS   s$    


z"SerializingHTMLBuilder.handle_pagec                    sb   t | j| j}| | j| t   tt | j	t
t | jt
 tt | jtd  d S )Nr!   )r   r.   r/   globalcontext_filenamer,   Zglobalcontextsuperhandle_finishr   Z
doctreedirr   r%   LAST_BUILD_FILENAMEclose)r   r;   	__class__r   r   r@   q   s    
z$SerializingHTMLBuilder.handle_finish)N)r-   NN)__name__
__module____qualname____doc__r&   r$   r(   r>   Zsupported_image_typesr   r    r,   r=   r@   __classcell__r   r   rC   r   r   #   s"    
	    
r   c                   @   s@   e Zd ZdZdZedZeZdZ	ej
fZeZdZdZdZdZdS )	PickleHTMLBuilderzD
    A Builder that dumps the generated HTML into pickle files.
    picklez3You can now process the pickle files in %(outdir)s.Fz.fpicklezglobalcontext.picklezsearchindex.pickleN)rE   rF   rG   rH   name__epilogrK   r&   r$   HIGHEST_PROTOCOLr(   indexer_formatindexer_dumps_unicoder0   r>   searchindex_filenamer   r   r   r   rJ      s   rJ   c                   @   s8   e Zd ZdZdZedZeZdZ	eZ
dZdZdZdZdS )	JSONHTMLBuilderzB
    A builder that dumps the generated HTML into JSON files.
    jsonz1You can now process the JSON files in %(outdir)s.Tz.fjsonzglobalcontext.jsonzsearchindex.jsonN)rE   rF   rG   rH   rL   rM   rN   r   r&   r$   rP   rQ   r0   r>   rR   r   r   r   r   rS      s   rS   )r1   returnc                 C   s>   |  d | t | t | tttd t	dddS )Nzsphinx.builders.htmlZlocalesT)versionZparallel_read_safeZparallel_write_safe)
Zsetup_extensionZadd_builderrS   rJ   Zadd_message_catalogrE   r   r.   package_dirr   )r1   r   r   r   setup   s    


rX   )&rH   rK   r5   osr   typingr   r   Zsphinx.applicationr   r   Zsphinx.builders.htmlr   r   Zsphinx.localer	   Zsphinx.util.osutilr
   r   r   r   Zsphinxcontrib.serializinghtmlr   Z%sphinxcontrib.serializinghtml.versionr   Tupleabspathr7   __file__rW   rE   rM   rA   r   rJ   rS   strrX   r   r   r   r   <module>   s"   
a