o
    Mi                     @  s   d dl mZ d dlZd dlZd dl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 d dlmZ d dlmZmZmZmZ d d	lmZ er^d d
lmZ d dlmZmZ G dd deZdZd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'dddZ(dS )    )annotationsN)path)TYPE_CHECKING)ENV_PICKLE_FILENAMESphinx)	BuildInfoStandaloneHTMLBuilder)get_translation)SEPcopyfile	ensurediros_path)jsonimpl)Sequence)AnyProtocolc                   @  s4   e Zd Zddd	ZdddZdddZdddZdS )SerialisingImplementationobjr   fileargskwargsreturnNonec                 O     d S N )selfr   r   r   r   r   r   Z/home/ubuntu/.local/lib/python3.10/site-packages/sphinxcontrib/serializinghtml/__init__.pydump       zSerialisingImplementation.dumpstr | bytesc                 O  r   r   r   )r   r   r   r   r   r   r   dumps   r   zSerialisingImplementation.dumpsc                 O  r   r   r   )r   r   r   r   r   r   r   load   r   zSerialisingImplementation.loaddatac                 O  r   r   r   )r   r#   r   r   r   r   r   loads   r   zSerialisingImplementation.loadsN)
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r    )r   r   r   r   r   r   r   r   )r#   r   r   r   r   r   r   r   )__name__
__module____qualname__r   r!   r"   r$   r   r   r   r   r      s
    


r   z2.0.0)   r   r   console
last_buildc                      s   e Zd ZU dZded< dZdZded< dZd	ed
< g dZd'ddZ	d(d)ddZ
d*ddZ		d+d,d#d$Zd' fd%d&Z  ZS )-SerializingHTMLBuilderzA
    An abstract builder that serializes the generated HTML.
    r   implementationFr   zSequence[Any]additional_dump_args strglobalcontext_filename)zimage/svg+xmlz	image/pngz	image/gifz
image/jpegr   r   c                 C  sZ   t | j| j| _d| _d| _d | _d | _|   | 	  | 
  |   | dd| _d S )N_imagesr.   	use_indexhtml)r   configtags
build_infoimagedircurrent_docnametheme	templatesinit_templatesinit_highlighterinit_css_filesinit_js_filesget_builder_configr2   )r   r   r   r   init8   s   zSerializingHTMLBuilder.initNdocnametyp
str | Nonec                 C  s.   |dkrdS | td r|d d S |t S )Nindexr.   )endswithr
   )r   rA   rB   r   r   r   get_target_uriD   s
   z%SerializingHTMLBuilder.get_target_uricontextdict[str, Any]filenamestr | os.PathLike[str]c                 C  s   |  }d|v rdd |d D |d< d|v r"dd |d D |d< | jrKt|ddd}| jj||g| jR   W d    d S 1 sDw   Y  d S t|d	}| jj||g| jR   W d    d S 1 shw   Y  d S )
N	css_filesc                 S     g | ]}|j qS r   rJ   ).0cssr   r   r   
<listcomp>N       z7SerializingHTMLBuilder.dump_context.<locals>.<listcomp>script_filesc                 S  rM   r   rN   )rO   jsr   r   r   rQ   P   rR   wzutf-8)encodingwb)copyimplementation_dumps_unicodeopenr,   r   r-   )r   rH   rJ   ftfbr   r   r   dump_contextK   s   ""z#SerializingHTMLBuilder.dump_context	page.htmlpagenamectxtemplatenameoutfilename	event_argr   c                 C  s   ||d< | ddd  | || |s t| jt|| j }| jd|||| t	|D ]}t
|| tjr;||= q.tt| | || |drlt| jdt|d }tt| t| j|| d S d S )Ncurrent_page_namepathtoc                 S  s   | S r   r   )pr   r   r   <lambda>[   r   z4SerializingHTMLBuilder.handle_page.<locals>.<lambda>zhtml-page-context
sourcename_sources)
setdefaultadd_sidebarsr   joinoutdirr   
out_suffixappemitlist
isinstancetypesFunctionTyper   dirnamer]   getr   envdoc2path)r   r_   r`   ra   rb   rc   keysource_namer   r   r   handle_pageX   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 )NrU   )r   rl   rm   r0   r]   globalcontextsuperhandle_finishr   
doctreedirr   rZ   LAST_BUILD_FILENAMEclose)r   rb   	__class__r   r   r~   v   s   
z$SerializingHTMLBuilder.handle_finish)r   r   r   )rA   r/   rB   rC   r   r/   )rH   rI   rJ   rK   r   r   )r^   NN)r_   r/   r`   rI   ra   r/   rb   rC   rc   r   r   r   )r%   r&   r'   __doc____annotations__rY   r-   r0   supported_image_typesr@   rG   r]   r{   r~   __classcell__r   r   r   r   r+   &   s   
 

r+   c                   @  sJ   e Zd ZU dZdZedZeZdZ	ej
fZded< 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
tuple[Any]r-   z.fpicklezglobalcontext.picklezsearchindex.pickleN)r%   r&   r'   r   name__epilogr   r,   rY   HIGHEST_PROTOCOLr-   r   indexer_formatindexer_dumps_unicodern   r0   searchindex_filenamer   r   r   r   r      s   
 r   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)r%   r&   r'   r   r   r   r   r   r,   rY   r   r   rn   r0   r   r   r   r   r   r      s    r   ro   r   r   rI   c                 C  sH   |  d | d | t | t | ttt	d t
dddS )Nz5.0zsphinx.builders.htmllocalesT)versionparallel_read_safeparallel_write_safe)require_sphinxsetup_extensionadd_builderr   r   add_message_catalogr%   r   rl   package_dir__version__)ro   r   r   r   setup   s   



r   )ro   r   r   rI   ))
__future__r   osr   rs   r   typingr   sphinx.applicationr   r   sphinx.builders.htmlr   r   sphinx.localer	   sphinx.util.osutilr
   r   r   r   sphinxcontrib.serializinghtmlr   collections.abcr   r   r   r   r   __version_info__abspathru   __file__r   r%   r   r   r+   r   r   r   r   r   r   r   <module>   s0    
b