
    hje                    t   d Z ddlmZ ddlmZ  ej        e          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Z e            Z G d dej        ej                  Z G d de          Z G d dej        ej                  Z G d de          Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$dS )a|   Include link from sampledata to gallery.

The ``bokeh-sampledata-xref`` directive can be used by supplying:

    .. bokeh-sampledata-xref:: sampledata_iris

This can be used to add links to all existing standalone examples in the
documentation.

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

    )annotations)loggingbasename)nodes)_   )PARALLEL_SAFE)BokehDirective)get_sphinx_resources)BokehSampledataXrefDirectivesetupc                       e Zd Z fdZ xZS )gallery_xrefsc                p    |                     dd           | _         t                      j        |i | d S )N	subfolder)popr   super__init__selfargskwargs	__class__s      Elib/python3.11/site-packages/bokeh/sphinxext/bokeh_sampledata_xref.pyr   zgallery_xrefs.__init__C   s:    K66$)&)))))    __name__
__module____qualname__r   __classcell__r   s   @r   r   r   A   8        * * * * * * * * *r   r   c                      e Zd ZdZdZd ZdS )BokehGalleryOverviewDirectiveFr	   c                <    t          d| j        d                   gS )N r   )r   )r   	argumentsr   s    r   runz!BokehGalleryOverviewDirective.runL   s    bDN1,=>>>??r   Nr   r   r    has_contentrequired_argumentsr*    r   r   r%   r%   G   s3        K@ @ @ @ @r   r%   c                       e Zd Z fdZ xZS )sampledata_listc                n    |                     d          | _         t                      j        |i | d S )Nsampledata_key)r   r2   r   r   r   s      r   r   zsampledata_list.__init__Q   s:    $jj)9::$)&)))))r   r   r"   s   @r   r0   r0   O   r#   r   r0   c                      e Zd ZdZdZd ZdS )r   Fr	   c                <    t          d| j        d                   gS )Nr'   r   )r2   )r0   r(   r)   s    r   r*   z BokehSampledataXrefDirective.runZ   s    4>!3DEEEFFr   Nr+   r.   r   r   r   r   U   s3        KG G G G Gr   r   c                   |                      t                     |                     dt                     |                     dt                     |                     dt                     |                     dt                     |                     dt                     |                     dt                     |                     dt                     |                     dt                     t          S )z+ Required Sphinx extension setup function. zbokeh-example-indexzbokeh-sampledata-xrefzdoctree-resolvedzenv-purge-doczenv-merge-info)add_noder0   add_directiver%   r   connectprocess_sampledata_xrefspurge_xrefsmerge_xrefsprocess_gallery_overviewpurge_gallery_xrefsmerge_gallery_xrefsr
   )apps    r   r   r   ^   s    LL!!!+-JKKK-/KLLLKK"$<===KK---KK +...KK"$<===KK!4555KK "5666r   c                \    t          |d          sd S fd|j        D             |_        d S )Nall_sampledata_xrefsc                ,    g | ]}|d          k    |S docnamer.   .0xrefrD   s     r   
<listcomp>zpurge_xrefs.<locals>.<listcomp>s   .          T)_5O5O5O5O5Or   )hasattrrA   r?   envrD   s     `r   r:   r:   o   O    3.//        1     Cr   c                    t          |d          sg |_        t          |d          r!|j                            |j                   d S d S )NrA   )rJ   rA   extendr?   rL   docnamesothers       r   r;   r;   w   ]    3.// &#% u,-- D ''(BCCCCCD Dr   c           	        | j         j        }t          |d          sg |_        |                    t
                    D ]
}g }|j        D ],}|d         |j        k    r||vr|                    |           -g }|rg }t          j	                    }	|	t          j
        dd          z  }	t          |          D ]f}
|
d         }||v r(|d|
d                             d          d          d	z  }|                    |           |	t          | ||
d         |          z  }	g|                    |	           |                    |           d S )
NrA   keywordExamplesr    (rD   /))builderrL   rJ   rA   traverser0   r2   appendr   	paragraphrubricsort_by_basenamesplitadd_bullet_pointreplace_self)r?   doctreefromdocnamerL   noderefsscontentlist_ref_namespararefref_names               r   r9   r9   ~   sy   
+/C3.// &#%   11 # #) 	 	A|t222q}}A 
	!N?$$DELZ888D'-- U Uz?~-- ES^%9%9#%>%>r%B E E EEH%%h///(k3y>8TTTNN4   '""""%# #r   c                \    t          |d          sd S fd|j        D             |_        d S )Nall_gallery_overviewc                ,    g | ]}|d          k    |S rC   r.   rE   s     r   rH   z'purge_gallery_xrefs.<locals>.<listcomp>   rI   r   )rJ   ro   rK   s     `r   r=   r=      rM   r   c                    t          |d          sg |_        t          |d          r!|j                            |j                   d S d S )Nro   )rJ   ro   rO   rP   s       r   r>   r>      rS   r   c           
        | j         j        }t          |d          sg |_        |                    t
                    D ]}i }|j        D ]}|d                             d          }|j        dk    s|d         |j        k    rP|d         d                                         }||v r&|||         vr||         	                    |           |g||<   g }	t          |                                          D ]\  }}
t          j                    }|t          j        t          |          t          |                    z  }t!          |
          D ][}|d         }t#          |          }|j        dk    r"|d|                    d          d          d	z  }|t%          | |||          z  }\|		                    |           |                    |	           d S )
Nro   rD   rX   allrY   r   rW   rZ   )r[   rL   rJ   ro   r\   r   ra   r   upperr]   sorteditemsr   r^   r_   r   r`   r   rb   rc   )r?   rd   re   rL   rf   ref_dictrh   spletterri   rg   rk   rl   rD   rm   s                  r   r<   r<      s   
+/C3.// &#%   // # #) 	+ 	+A9##C((B~&&"R&DN*B*BB**X%%!8F3C*C*CV$++A....()sHV$"8>>#3#344 		! 		!LFD?$$DEL!F))qyy:::D'-- N Ni.#G,,>U** >W]]3%7%7%; > > >>H(k7HMMMNN4    '""""/# #r   c                    d | D             } g }t          d | D                       D ]K}t          |           D ]9\  }}||d         k    r(|                    |                     |                     :L|S )Nc                J    g | ] }t          |d                    |d          d!S )rD   )r   rD   r   rF   rl   s     r   rH   z$sort_by_basename.<locals>.<listcomp>   s1    ]]]QTY00S^LL]]]r   c                8    g | ]}t          |d                    S r   r   r}   s     r   rH   z$sort_by_basename.<locals>.<listcomp>   s$    AAASxJ00AAAr   r   )rv   	enumerater]   r   )rg   sorted_refskeyivalues        r   r`   r`      s    ]]X\]]]DKAADAAABB 0 0!$ 	0 	0HAueJ'''""488A;;///	0 r   c                ^   t          j                    }|t          j        dd          z  }t          j        dd          }t          j        t          |          t          |                    }||d<   | j                            ||          |d<   |                    |           ||z  }|S )Nu     • r'   
refdocnamerefuri)	r   lineText	referenceemphasisr   r[   get_relative_urir]   )r?   re   rD   rm   r   newnode	innernodes          r   rb   rb      s    :<<DEJx)))Dob"%%Gq{{AhKK88I#GL44['JJGHNN9GODKr   N)%__doc__
__future__r   sphinx.utilr   	getLoggerr   logos.pathr   docutilsr   sphinx.localer   r'   r
   bokeh_directiver   utilr   __all__	RESOURCESGeneralElementr   r%   r0   r   r   r:   r;   r9   r=   r>   r<   r`   rb   r.   r   r   <module>r      s.   " # " " " " "       g!!                         + + + + + + & & & & & &
 ! ""	* * * * *EM5= * * *@ @ @ @ @N @ @ @* * * * *emU] * * *G G G G G> G G G  "  D D D# # #6  D D D# # #@  
 
 
 
 
r   