
    -e'                    (   d Z ddlmZ ddlZ ej        e          ZddlZddlZddl	m
Z
mZmZmZ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m Z  d	dl!m"Z" dZ# G d de          Z$ G d de          Z%d Z&d Z'd Z(dS )z Generate a gallery of Bokeh plots from a configuration file.

To enable this extension, add `"bokeh.sphinxext.bokeh_gallery"` to the
extensions list in your Sphinx configuration module.

    )annotationsN)abspathdirnameexistsgetmtimeisdirisfilejoin)PurePath)	TypedDict)SphinxError)	ensuredirstatus_iterator   )PARALLEL_SAFE)BokehDirective)GALLERY_DETAILGALLERY_PAGE)	_REPO_TOP)BokehGalleryDirectivesetupc                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )GalleryDetailstrnamepathrefrst_file_pathN)__name__
__module____qualname____annotations__     =lib/python3.11/site-packages/bokeh/sphinxext/bokeh_gallery.pyr   r   D   s9         IIIIIIHHHr$   r   c                      e Zd ZdZdZd ZdS )r   Tr   c                   t          | j                            | j        j                            }t	          |d          }t	          t          t          |                    d          }t          |          s$t          |          rt          d|d|          t          j	        t          |                    }g }| j        D ]}||         D ]}t          d          |z  |d         z  }d|v r|                    d          }	d}
n$t          |                    d	                    }	d }
|                    |	|
t          |                    d
                    |                    d          |j        |                    dd           d           ƌt%          j        |          }|                     |d          S )Nzgallery.jsongalleryzgallery dir z missing for gallery file examplesr   url_blankz.html altdesc)r*   targetimgr-   titler.   )optsz<bokeh-gallery>)r   envdoc2pathdocnamer
   r   r   r   jsonloadopencontentr   getr   with_suffixappendstemr   renderparse)selfdocdirgallery_filegallery_dirgallery_jsonr2   locationdetailr   r*   r/   rst_texts               r%   runzBokehGalleryDirective.runO   s   **48+;<<==FN3377<#8#8999EEk"" 	hu['9'9 	hf[ffVbffgggyl!3!344 	 	H&x0  
++h6GF?? **U++C%FFd..w7788C!F$t//3344!::e,,!Y"JJvt44     "  &D111zz($5666r$   N)r   r    r!   has_contentrequired_argumentsrH   r#   r$   r%   r   r   J   s.        K"7 "7 "7 "7 "7r$   r   c                D   t          | j        |j                  }t          | j        |j                  }| d}t	          |          s$t          |          rt          d|d|          t          |          }t          |           t          |           |j	        D ]}t          t          ||                      t          t          j        |                    }t          |           }t          |ddt          |          | j        d           }	|	D ]}
t          ||
d                   }||v r|                    |           t	          |          rt          |          |k    rTt%          |d	          5 }t'          t          | j        d
d
d
|
d                             }|                    t+          j        |
d         ||
d                              d d d            n# 1 swxY w Y   |D ]$}t          j        t          ||                     %d S )Nz.jsonzcould not find gallery file z for configured gallery dir z!creating gallery file entries... brownc                    | d         dz   S )Nr   .rstr#   )xs    r%   <lambda>z'config_inited_handler.<locals>.<lambda>   s'      QR  SY  QZ  ]c  Qc r$   )stringify_funcr   wz..r   r   r   )filenamesource_pathr   )r
   srcdirbokeh_gallery_dirbokeh_examples_dirr   r	   r   r   r   bokeh_example_subdirssetoslistdirget_detailsr   len	verbosityremover8   r   writer   r>   )appconfigrC   examples_dirrB   gallery_file_mtimesubdirextrasdetailsdetails_iterrF   detail_file_pathfrT   
extra_files                  r%   config_inited_handlerrl   t   s   sz6#;<<K
F$=>>L!(((L, vF<$8$8 vtttepttuuu!,//kl. . .$|V,,---- K(())F#G"7,OQXZ]^eZfZfhkhu  Gc  Gc  d  d  dL p pf_.EFFv%%MM*+++ "## 	1A(B(BEW(W(W"C(( 	pA!$sz4tVF^"T"TUUKGGN)6&>{`fgl`mnnnooo	p 	p 	p 	p 	p 	p 	p 	p 	p 	p 	p 	p 	p 	p 	p  1 1

	${J//00001 1s   ?A"G--G1	4G1	c                   g }| j         j        D ]}t          j        t	          t
          d|                    D ]}t	          d||          }|                    d          sq|                    d          r\|| j         j        vrN|	                    dd          }t	          || d          }d| d| d}||||d}|
                    |           |S )	Nr)   _z.pyr,   rN   z.. _example_:)r   r   r   r   )rb   rX   rZ   r[   r
   r   
startswithendswithbokeh_sampledata_xref_skiplistreplacer<   )ra   rg   re   r   r   r   r   rF   s           r%   r\   r\      s    G*2 ' 'JtIz6BBCC 	' 	'D
FD11D??3'' 'DMM%,@,@ 'TQTQ[QzEzEz||E2.. $V]]] ; ;5T55F55515tVclo(p(pv&&&	' Nr$   c                l   |                      dt          dd          d           |                      dt          dd          d           |                      dg d           |                      dg d           |                     d	t                     |                     d
t
                     t          S )z+ Required Sphinx extension setup function. rV   docsr(   htmlrW   r)   rX   rr   zconfig-initedzbokeh-gallery)add_config_valuer
   connectrl   add_directiver   r   )ra   s    r%   r   r      s    ,d69.E.EvNNN-tFJ/G/GPPP0"f===92vFFFKK!6777o'<===r$   ))__doc__
__future__r   logging	getLoggerr   logr6   rZ   os.pathr   r   r   r   r   r	   r
   pathlibr   typingr   sphinx.errorsr   sphinx.utilr   r   r,   r   bokeh_directiver   	templatesr   r   utilr   __all__r   r   rl   r\   r   r#   r$   r%   <module>r      s    # " " " " " g!!  				                              & % % % % % 2 2 2 2 2 2 2 2       + + + + + + 3 3 3 3 3 3 3 3          I   '7 '7 '7 '7 '7N '7 '7 '7T&1 &1 &1R  	 	 	 	 	r$   