
    Be                        d Z ddlZddlZddlmZ ddlmZ ddlZddlZ	ej
        j        Z ee          j        d         dz  dz  Zej
                            e                                 d	          Z ee          j        d         d
z  ZdgZd  ee                    d                    D             Zej
                            e                                 d	          Zed             Zed             Zed             Zeej
                            ded eD                       d                         ZdS )z
The ref_available tests verify that all of the panes, layouts, and widgets defined by panel are
represented in the reference gallery.

The doc_available tests check that python in markdown files can be run top to bottom.

    N)isclass)Path   examples	referencez%folder 'examples/reference' not found)reasondocvtkc                 T    g | ]$t          fd t          D                       "%S )c              3   ^   K   | ]'}|t                                                    v V  (d S N)strlower).0igdfs     5lib/python3.11/site-packages/panel/tests/test_docs.py	<genexpr>z<listcomp>.<genexpr>   s7      ClCl^`B#b''--//DYClClClClClCl    )anyIGNORED)r   r   s    @r   
<listcomp>r      s<    mmmBClClClCldkClClCl@l@lmRmmmr   z*.mdzfolder 'doc' not foundc                      ddh} d t           dz                                  D             }d }t          t          |t	          t
          j                                      }|| z
  |z
  t                      k    sJ d S )N	ListPanelPanelc                 B    h | ]}|                     d           j        S  with_suffixnamer   fs     r   	<setcomp>z8test_layouts_are_in_reference_gallery.<locals>.<setcomp>    s'    MMMqAMM""MMMr   layoutsc                     t          t          j        |           }t          |          ot	          |t          j        j                  S r   )getattrpnlayoutr   
issubclassr   )attrr)   s     r   is_panel_layoutz>test_layouts_are_in_reference_gallery.<locals>.is_panel_layout"   s2    D))vF:fbio#F#FFr   )REF_PATHiterdirsetfilterdirr(   r)   )
exceptionsdocsr,   r%   s       r   %test_layouts_are_in_reference_galleryr4      s    w'JMMX	-A,J,J,L,LMMMDG G G &#bi..99::GZ$&#%%//////r   c                      h d} d dD             }d }t          t          |t          t          j                                      }|| z
  |z
  t                      k    sJ d S )N>   AceWidgetSpinnerNumberInputToggleGroupCompositeWidgetc                     h | ];}t           |z                                  D ]}|                    d           j        <S r   )r-   r.   r    r!   )r   gr#   s      r   r$   z8test_widgets_are_in_reference_gallery.<locals>.<setcomp>-   s^       Q,''))   	
b   r   )
indicatorswidgetsc                     t          t          j        |           }t          |          ot	          |t          j        j                  S r   )r'   r(   r?   r   r*   r7   )r+   widgets     r   is_panel_widgetz>test_widgets_are_in_reference_gallery.<locals>.is_panel_widget3   s3    T**vH:fbj6G#H#HHr   )r/   r0   r1   r(   r?   )r2   r3   rB   r?   s       r   %test_widgets_are_in_reference_galleryrC   *   s    ^^^J *  DI I I &#bj//::;;GZ$&#%%//////r   c                      h d} d t           dz                                  D             }d }t          t          |t	          t
          j                                      }|| z
  |z
  t                      k    sJ d S )N>   YTICOImageRGGPlotPaneBase
IPyLeafletInteractivec                 B    h | ]}|                     d           j        S r   r   r"   s     r   r$   z6test_panes_are_in_reference_gallery.<locals>.<setcomp>>   s'    KKKqAMM""KKKr   panesc                     t          t          j        |           }t          |          ot	          |t          j        j                  S r   )r'   r(   paner   r*   rI   )r+   rO   s     r   is_panel_panez:test_panes_are_in_reference_gallery.<locals>.is_panel_pane@   s3    rw%%t}}CD"'2B!C!CCr   )r-   r.   r/   r0   r1   r(   rO   )r2   r3   rP   rM   s       r   #test_panes_are_in_reference_galleryrQ   ;   s    [[[JKKX-?,H,H,J,JKKKDD D D }c"'ll3344E:$------r   filec                 \    g | ])}t          |                    t                              *S  )r   relative_toDOC_PATHr"   s     r   r   r   J   s,    LLLQCh 7 788LLLr   )idsc                 2   ddl m} d} |                                |                     d                    }d|D ]B}|j        dk    r5|j        .d|j                                        v rd	|j        vr
|j        z  Csd S t          j                   t          fd
|D                       rd S || j
         dz  }t          |dd          5 }|                               d d d            n# 1 swxY w Y   t          j        |           d S )Nr   )
MarkdownIt)awaitzpn.servedjangoraisezdisplay(zutf-8)encodingr   codepyodidez>>>c              3       K   | ]}|v V  	d S r   rT   )r   wliness     r   r   z+test_markdown_codeblocks.<locals>.<genexpr>]   s'      
*
*!1:
*
*
*
*
*
*r   z.pyra   )markdown_itrY   parse	read_texttaginfor   contentastr   stemopen
writelinesrunpyrun_path)	rR   tmp_pathrY   r2   md_astnmodr#   rb   s	           @r   test_markdown_codeblocksrs   H   s   
 '&&&&&EJZ\\ @ @AAFE ' '5F??qv1AFLLNN**	))QY&E Ie

*
*
*
*z
*
*
*** 
	&&&
&C	c3	)	)	) Q	U               
N3s   C88C<?C<)__doc__ri   rm   inspectr   pathlibr   pytestpanelr(   markr3   
pytestmark__file__parentsr-   skipifis_dirref_availablerV   r   sortedrglob	doc_filesdoc_availabler4   rC   rQ   parametrizers   rT   r   r   <module>r      s    


                  [
4>>!!$z1K?""x'8'8#8Ah"ii4>>!!$u,'mm&&!7!788mmm	""x'8'8#8AY"ZZ 	0 	0 	0 0 0 0  	. 	. 	. 
ILL)LLL        r   