
    eF                     V   d dl Z d dlmZmZmZmZ d dl	Z
d dlmZ e j        d             Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d  Z)d! Z*d" Z+d# Z,d$ Z-d% Z.d& Z/d' Z0d( Z1d) Z2d* Z3d+ Z4d, Z5d- Z6d. Z7dS )/    N)DivSpacerTabPanelTabs)r   c                 b    t                      t                      }}t          d|fd|f          S )zSet up a tabs instanceTab1Tab2)r   r   )documentcommdiv1div2s       <lib/python3.11/site-packages/panel/tests/layout/test_tabs.pytabsr      s-     $D///    c                 n    | j         |j         u sJ | j        |j        k    sJ | j        |j        k    sJ dS )z"Helper function to check tab matchN)childnametitle)tab1tab2s     r   assert_tab_is_similarr      sG    :####9	!!!!:######r   c                 J   t          dd          }|                    | |          }t          |t                    sJ t	          |j                  dk    sJ t          d |j        D                       sJ |j        \  }}d|j        j        v sJ d|j        j        v sJ d S )Nplaintextr      c              3   @   K   | ]}t          |t                    V  d S N
isinstanceBkPanel.0cs     r   	<genexpr>z.test_tabs_basic_constructor.<locals>.<genexpr>#   ,      ::!z!W%%::::::r   )	r   get_rootr    BkTabslenr   allr   r   )r
   r   r   modelr   r   s         r   test_tabs_basic_constructorr,      s      DMM(M..EeV$$$$$uz??a::uz::::::::JD$djo%%%%TZ_$$$$$$r   c                    t                      }t                      }t          d|fd|f          }|                    | |          }t          |t                    sJ t          |j                  dk    sJ t          d |j        D                       sJ |j        \  }}|j        dk    sJ |j	        |u sJ |j        dk    sJ |j	        |u sJ d S )NDiv1Div2r   r   c              3   @   K   | ]}t          |t                    V  d S r   r   r"   s     r   r%   z(test_tabs_constructor.<locals>.<genexpr>3   r&   r   
r   r   r'   r    r(   r)   r   r*   r   r   )r
   r   r   r   r   r+   r   r   s           r   test_tabs_constructorr2   *   s    55D55D//DMM(M..EeV$$$$$uz??a::uz::::::::JD$::::r   c                 b   t                      t                      }}t          j        |d          }t          j        |d          }t          ||          }|                    | |          }t          |t                    sJ t          |j                  dk    sJ t          d |j        D                       sJ |j        \  }}	|j
        |j        cxk    r|j        cxk    rdk    sn J |j        |u sJ |	j
        |	j        cxk    r|j        cxk    rdk    sn J |	j        |u sJ d S )Nr.   r   r/   r   r   c              3   @   K   | ]}t          |t                    V  d S r   r   r"   s     r   r%   z1test_tabs_implicit_constructor.<locals>.<genexpr>F   r&   r   r   pnpanelr   r'   r    r(   r)   r   r*   r   r   r   
r
   r   r   r   p1p2r   r+   r   r   s
             r   test_tabs_implicit_constructorr<   <   sZ   $D	$V	$	$	$B	$V	$	$	$BB<<DMM(M..EeV$$$$$uz??a::uz::::::::JD$:7777bg7777777777::7777bg7777777777:r   c                 n   t                      t                      }}t          j        |d          }t          j        |d          }t          d|fd|f          }|                    | |          }t          |t                    sJ t          |j                  dk    sJ t          d |j        D                       sJ |j        \  }}	|j
        dk    sJ |j        |j        cxk    rdk    sn J |j        |u sJ |	j
        dk    sJ |	j        |j        cxk    rdk    sn J |	j        |u sJ d S )	Nr.   r4   r/   r   r	   r   r   c              3   @   K   | ]}t          |t                    V  d S r   r   r"   s     r   r%   z;test_tabs_constructor_with_named_objects.<locals>.<genexpr>Y   r&   r   r6   r9   s
             r   (test_tabs_constructor_with_named_objectsr?   O   sj   $D	$V	$	$	$B	$V	$	$	$Bvrl++DMM(M..EeV$$$$$uz??a::uz::::::::JD$:9))))6))))))::9((((&((((((:r   c                     |                     | |          }|j        d         |j        v sJ |                    |           |j        d         |j        vsJ d S )Nr   id)r'   ref_panels_cleanup)r
   r   r   r+   s       r   test_tabs_cleanup_panelsrE   d   sa    MM(M..E9T?dl****MM%9T?$,......r   c                 x   t                      }t                      }t          d|fd|f          }t                      }t                      }t          d|fd|f          }||z   }|                    | |          }	t          |	t                    sJ t          |	j                  dk    sJ t          d |	j        D                       sJ |	j        \  }
}}}|
j        dk    sJ |
j	        |u sJ |j        dk    sJ |j	        |u sJ |j        dk    sJ |j	        |u sJ |j        dk    sJ |j	        |u sJ d S )Nr.   r/   Div3Div4r      c              3   @   K   | ]}t          |t                    V  d S r   r   r"   s     r   r%   z test_tabs_add.<locals>.<genexpr>z   r&   r   r1   )r
   r   r   r   tabs1div3div4tabs2combinedr+   r   r   tab3tab4s                 r   test_tabs_addrR   l   sw   55D55D&$&$00E55D55D&$&$00Eu}HhT22EeV$$$$$uz??a::uz::::::::"ZD$d::::::::r   c                 \   t                      }t                      }t          d|fd|f          }t                      }t                      }|d|fd|fgz   }|                    | |          }t          |t                    sJ t          |j                  dk    sJ t          d |j        D                       sJ |j        \  }	}
}}|	j        dk    sJ |	j	        |u sJ |
j        dk    sJ |
j	        |u sJ |j        dk    sJ |j	        |u sJ |j        dk    sJ |j	        |u sJ d S )Nr.   r/   rG   rH   r   rI   c              3   @   K   | ]}t          |t                    V  d S r   r   r"   s     r   r%   z%test_tabs_add_list.<locals>.<genexpr>   r&   r   r1   )r
   r   r   r   rK   rL   rM   rO   r+   r   r   rP   rQ   s                r   test_tabs_add_listrU      sn   55D55D&$&$00E55D55D77HhT22EeV$$$$$uz??a::uz::::::::"ZD$d::::::::r   c                 \   t                      }t                      }t          d|fd|f          }t                      }t                      }d|fd|fg|z   }|                    | |          }t          |t                    sJ t          |j                  dk    sJ t          d |j        D                       sJ |j        \  }	}
}}|j        dk    sJ |j	        |u sJ |j        dk    sJ |j	        |u sJ |	j        dk    sJ |	j	        |u sJ |
j        dk    sJ |
j	        |u sJ d S )Nr.   r/   rG   rH   r   rI   c              3   @   K   | ]}t          |t                    V  d S r   r   r"   s     r   r%   z&test_tabs_radd_list.<locals>.<genexpr>   r&   r   r1   )r
   r   r   r   rK   rL   rM   rO   r+   rP   rQ   r   r   s                r   test_tabs_radd_listrX      sn   55D55D&$&$00E55D55D/%7HhT22EeV$$$$$uz??a::uz::::::::"ZD$d::::::::r   c                 $   t                      t                      }}t          j        |d          }t          j        |d          }t          ||          }|                    | |          }t                      }t          j        |d          }	|||	g|_        t          |t                    sJ t          |j	                  dk    sJ t          d |j	        D                       sJ |j	        \  }
}}|
j        |
j        cxk    r|j        cxk    rdk    sn J |
j        |u sJ |j        |j        cxk    r|j        cxk    rdk    sn J |j        |u sJ |j        |j        cxk    r|	j        cxk    rdk    sn J |j        |u sJ d S )Nr.   r4   r/   r   rG      c              3   @   K   | ]}t          |t                    V  d S r   r   r"   s     r   r%   z&test_tabs_set_panes.<locals>.<genexpr>   r&   r   )r   r7   r8   r   r'   objectsr    r(   r)   r   r*   r   r   r   )r
   r   r   r   r:   r;   r   r+   rL   p3r   r   rP   s                r   test_tabs_set_panesr^      s   $D	$V	$	$	$B	$V	$	$	$BB<<DMM(M..E55D	$V	$	$	$BB<DLeV$$$$$uz??a::uz::::::::zD$:6666bg6666666666::6666bg6666666666::6666bg6666666666:r   c                    t                      t                      }}t          j        |d          }t          j        |d          }t          ||          }|                    | |          }|                                 |j        \  }}	|j        |u sJ |j        |j	        cxk    r|j	        cxk    rdk    sn J |	j        |u sJ |	j        |	j	        cxk    r|j	        cxk    rdk    sn J d S )Nr.   r4   r/   r   )
r   r7   r8   r   r'   reverser   r   r   r   r9   s
             r   test_tabs_reversera      s   $D	$V	$	$	$B	$V	$	$	$BB<<DMM(M..ELLNNNJD$::7777bg7777777777::7777bg777777777777r   c                     |                     | |          }|j        \  }}t                      }|                    |           |j        \  }}}	t	          ||           t	          ||           |	j        |u sJ d S Nr   )r'   r   r   appendr   r   
r
   r   r   r+   tab1_beforetab2_beforerL   r   r   rP   s
             r   test_tabs_appendrh      s    MM(M..E$zK55DKKzD$+t,,,+t,,,:r   c                     t                      }|                    | |          }t                      }|                    d|f           t	          |j                  dk    sJ |j        d         j        dk    sJ d S )Nr   z
test title   r   )r   r'   r   rd   r)   r   r   )r
   r   r   r+   r   s        r   test_empty_tabs_appendrk      sy    66DMM(M..E55DKKt$%%%uz??a:a=,......r   c           
          |                     | |          }t          |j                  }|\  }}|                    | |j        d         |d d||j        d         g           t          |j                  dk    sJ |j        d         |u sJ d S Nr   rA   r   rj   r   )r'   listr   _comm_changerB   r)   r\   )r
   r   r   r+   old_tabs_r   s          r   test_tabs_close_tab_in_notebookrr      s    MM(M..EEJHGAth	$tVXPUPZ[\P]___t|!!!!<?d""""""r   c           
         |                     | |          }|\  }}|                    | |j        d         d d|j        |j        dd                     t	          |j                  dk    sJ |j        d         |u sJ d S rm   )r'   _server_changerB   r   r)   r\   )r
   r   r   r+   rq   r   s         r   test_tabs_close_tab_on_serverru     s    MM(M..EGAt%)D/4UZXYXZXZ^\\\t|!!!!<?d""""""r   c                 8   d|_         |                    | |          }|\  }}|j        \  }}|j        |j        u sJ t          |j        t                    sJ d|_        |j        \  }}t          |j        t                    sJ |j        |j        u sJ d|_         |j        \  }}|j        |j        u sJ |j        |j        u sJ |j        	                    dd           |j        \  }}|j        |j        u sJ t          |j        t                    sJ d S )NTr   rj   Fr   )dynamicactive)
rw   r'   r   r   objectr    BkSpacerrx   paramupdate)r
   r   r   r+   r   r   r   r   s           r   test_dynamic_tabsr}     s3   DLMM(M..EJD$JD$:$$$$dj(+++++DKJD$dj(+++++:$$$$DLJD$:$$$$:$$$$Jd1---JD$:$$$$dj(+++++++r   c                 t   |                     | |          }|j        \  }}t                      }t          j        |d          }|                    |           |j        \  }}	}
t          ||           t          ||	           |
j        |u sJ |
j        |
j	        cxk    r|j	        cxk    rdk    sn J d S )Nr   rG   r4   
r'   r   r   r7   r8   rd   r   r   r   r   r
   r   r   r+   rf   rg   rL   r]   r   r   rP   s              r   !test_tabs_append_uses_object_namer   .  s    MM(M..E$zK55D	$V	$	$	$BKKOOOzD$+t,,,+t,,,::7777bg777777777777r   c                    |                     | |          }|j        \  }}t                      }|                    d|f           |j        \  }}}	t	          ||           t	          ||           |	j        |u sJ |	j        dk    sJ d S )Nr   rG   )r'   r   r   rd   r   r   r   re   s
             r   0test_tabs_append_with_tuple_and_unnamed_contentsr   >  s    MM(M..E$zK55DKKzD$+t,,,+t,,,::r   c                 z   |                     | |          }|j        \  }}t                      }t          j        |d          }|                    d|f           |j        \  }}	}
t          ||           t          ||	           |
j        |u sJ |
j        dk    sJ |
j	        |j	        cxk    rdk    sn J d S )Nr   rG   r4   Tab3r   r   s              r   .test_tabs_append_with_tuple_and_named_contentsr   M  s    MM(M..E$zK55D	$V	$	$	$BKKzD$+t,,,+t,,,::9))))6))))))))r   c                 2   |                     | |          }|j        \  }}t                      t                      }}|                    ||g           |j        \  }}	}
}t	          ||           t	          ||	           |
j        |u sJ |j        |u sJ d S rc   )r'   r   r   extendr   r   r
   r   r   r+   rf   rg   rL   rM   r   r   rP   rQ   s               r   test_tabs_extendr   ^  s    MM(M..E$zK$DKKt"ZD$d+t,,,+t,,,::r   c                    |                     | |          }|j        \  }}t                      t                      }}|||gz  }|j        \  }}	}
}t          ||           t          ||	           |
j        |u sJ |j        |u sJ d S rc   )r'   r   r   r   r   r   s               r   test_tabs_iaddr   m  s    MM(M..E$zK$DT4LD"ZD$d+t,,,+t,,,::r   c                    |                     | |          }|j        \  }}t                      t                      }}t          j        |d          t          j        |d          }	}|                    |	|g           |j        \  }
}}}t          ||
           t          ||           |j        |u sJ |j        |	j	        cxk    rdk    sn J |j        |u sJ |j        |j	        cxk    rdk    sn J d S )Nr   rG   r4   rH   
r'   r   r   r7   r8   r   r   r   r   r   r
   r   r   r+   rf   rg   rL   rM   r]   p4r   r   rP   rQ   s                 r   !test_tabs_extend_uses_object_namer   |  s   MM(M..E$zK$DXd((("(4f*E*E*EBKKR"ZD$d+t,,,+t,,,::****F******::"'++++V++++++++r   c                 n   |                     | |          }|j        \  }}t                      t                      }}|                    d|fd|fg           |j        \  }}	}
}t	          ||           t	          ||	           |
j        |u sJ |
j        dk    sJ |j        |u sJ |j        dk    sJ d S )Nr   rH   rG   )r'   r   r   r   r   r   r   r   s               r   0test_tabs_extend_with_tuple_and_unnamed_contentsr     s    MM(M..E$zK$DKK&$&$0111"ZD$d+t,,,+t,,,::::r   c                 2   |                     | |          }|j        \  }}t                      t                      }}t          j        |d          t          j        |d          }	}|                    d|	fd|fg           |j        \  }
}}}t          ||
           t          ||           |j        |u sJ |j        dk    sJ |j	        |	j	        cxk    rdk    sn J |j        |u sJ |j        dk    sJ |j	        |j	        cxk    rdk    sn J d S )Nr   rG   r4   rH   Tab4r   r   r   s                 r   .test_tabs_extend_with_tuple_and_named_contentsr     sN   MM(M..E$zK$DXd((("(4f*E*E*EBKK&"|,---"ZD$d+t,,,+t,,,::9))))6))))))::9))))6))))))))r   c                     |                     | |          }|j        \  }}t                      }|                    d|           |j        \  }}}	t	          ||           |j        |u sJ t	          ||	           d S Nr   rj   )r'   r   r   insertr   r   re   s
             r   test_tabs_insertr     s    MM(M..E$zK55DKK4zD$+t,,,:+t,,,,,r   c                 v   |                     | |          }|j        \  }}t                      }t          j        |d          }|                    d|           |j        \  }}	}
t          ||           |	j        |u sJ |	j        |	j	        cxk    r|j	        cxk    rdk    sn J t          ||
           d S )Nr   rG   r4   rj   
r'   r   r   r7   r8   r   r   r   r   r   r   s              r   !test_tabs_insert_uses_object_namer     s    MM(M..E$zK55D	$V	$	$	$BKK2zD$+t,,,::7777bg7777777777+t,,,,,r   c                    |                     | |          }|j        \  }}t                      }|                    dd|f           |j        \  }}}	t	          ||           |j        |u sJ |j        dk    sJ t	          ||	           d S )Nr   rj   rG   )r'   r   r   r   r   r   r   re   s
             r   0test_tabs_insert_with_tuple_and_unnamed_contentsr     s    MM(M..E$zK55DKKFD>"""zD$+t,,,::+t,,,,,r   c                 |   |                     | |          }|j        \  }}t                      }t          j        |d          }|                    dd|f           |j        \  }}	}
t          ||           |	j        |u sJ |	j        dk    sJ |	j	        |j	        cxk    rdk    sn J t          ||
           d S )Nr   rG   r4   rj   r   r   r   s              r   .test_tabs_insert_with_tuple_and_named_contentsr     s    MM(M..E$zK55D	$V	$	$	$BKKFB<   zD$+t,,,::9****F******+t,,,,,r   c                    t                      }t                      }t          ||          }|j        \  }}|                    | |          }|j        \  }}	|j        |j        d                  d         |j        u sJ t                      }
d|
f|d<   |j        \  }}	|j        |
u sJ |j        dk    sJ |	j        |u sJ |j        i k    sJ d S )Nr   rA   r   C)	r   r   r\   r'   r   _modelsrB   r   r   )r
   r   r   r   r   r:   r;   r+   r   r   rL   s              r   test_tabs_setitemr     s    55D55DdD\FBMM(M..EJD$:eio&q)TZ777755DDkDGJD$::::r   c                     t                      } t                      }t          t          j        |           t          j        |                    }|                                }d |j                                                                        D             d |j                                                                        D             k    sJ d S )Nc                 (    g | ]\  }}|d k    ||fS r4    r#   kvs      r   
<listcomp>z#test_tabs_clone.<locals>.<listcomp>  s%    KKK1qF{{aV{{{r   c                 (    g | ]\  }}|d k    ||fS r4   r   r   s      r   r   z#test_tabs_clone.<locals>.<listcomp>	  s%    LLL1VaVr   )r   r   r7   r8   cloner{   valuesitemsr   r   r   r   s       r   test_tabs_cloner     s    55D55D//DJJLLEKK
 1 1 3 3 9 9 ; ;KKKLL 2 2 4 4 : : < <LLLM M M M M Mr   c                  "   t                      } t                      }t          | |          }|                    ||           }|j        d         j        |j        d         j        u sJ |j        d         j        |j        d         j        u sJ d S )Nr   rj   )r   r   r   r\   ry   r   s       r   test_tabs_clone_argsr     s    55D55DdDJJtT""E<?!U]1%5%<<<<<<?!U]1%5%<<<<<<<r   c                      t                      } t                      }t          | |          }|                    dd          }|j        dk    sJ |j        dk    sJ d S )Ni  stretch_height)widthsizing_mode)r   r   r   r   r   r   s       r   test_tabs_clone_kwargsr     sg    55D55DdDJJS.>J??E;# 0000000r   c                    t                      }t                      }t          ||          }|                    | |           t                      }t          j        t
                    5  ||d<   d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r'   pytestraises
IndexErrorr
   r   r   r   layoutrL   s         r   test_tabs_setitem_out_of_boundsr      s    55D55D$F
OOH4O(((55D	z	"	"  q	                 s   +A>>BBc                    t                      }t                      }t          ||          }|j        \  }}|                    | |          }|j        |j        d                  d         |j        d         j        u sJ t                      }t                      }	d|fd|	fg|d d <   |j        \  }
}|
j        |u sJ |
j        dk    sJ |j        |	u sJ |j        dk    sJ |j        i k    sJ |j        i k    sJ d S )Nr   rA   r   Br   	r   r   r\   r'   r   rB   r   r   r   )r
   r   r   r   r   r:   r;   r+   rL   rM   r   r   s               r   test_tabs_setitem_replace_allr   +  s   55D55D$F^FBOOH4O00E:eio&q)UZ]-@@@@@55D55DtsDk*F111IJD$::::::r   c                    t                      }t                      }t          ||          }|                    | |           t                      }t          j        t
                    5  ||d d <   d d d            d S # 1 swxY w Y   d S rc   r   r   s         r   #test_tabs_setitem_replace_all_errorr   @  s    55D55D$F
OOH4O(((55D	z	"	"  qqq	                 s   +B  BBc                 \   t                      }t                      }t                      }t          d|fd|fd|f          }|j        \  }}}|                    | |          }	|j        |	j        d                  d         |	j        d         j        u sJ t                      }t                      }
d|fd|
fg|d	d <   |	j        \  }}}|j        |u sJ |j        dk    sJ |j        |u sJ |j        dk    sJ |j        |
u sJ |j        dk    sJ |j        i k    sJ |j        i k    sJ d S )
NAr   r   r   rA   r   DErj   r   )r
   r   r   r   rL   r   r:   r;   r]   r+   rM   r   r   rP   s                 r   test_tabs_setitem_replace_slicer   K  s`   55D55D55D3+T{S$K88FJBBOOH4O00E:eio&q)UZ]-@@@@@55D55D+T{+F122JzD$::::::::r   c                 :   t                      }t                      }t                      }t          |||          }|                    | |           t                      }t          j        t
                    5  |g|dd <   d d d            d S # 1 swxY w Y   d S r   r   r
   r   r   r   rL   r   s         r   %test_tabs_setitem_replace_slice_errorr   c  s    55D55D55D$d##F
OOH4O(((55D	z	"	"  Vqrr
                    :	BBBc                 :   t                      }t                      }t                      }t          |||          }|                    | |           t                      }t          j        t
                    5  |g|dd<   d d d            d S # 1 swxY w Y   d S )Nr   rZ   rI   r   r   s         r   -test_tabs_setitem_replace_slice_out_of_boundsr   o  s    55D55D55D$d##F
OOH4O(((55D	z	"	"  fqs                 r   c                    t                      }t                      }t          ||          }|j        \  }}|                    | |          }|j        d         }|j        |j        d                  d         |j        u sJ |                    d           t          |j                  dk    sJ |j        d         }|j        |u sJ |j        i k    sJ d S Nr   r   rA   rj   )
r   r   r\   r'   r   r   rB   r   popr)   	r
   r   r   r   r   r:   r;   r+   r   s	            r   test_tabs_popr   {  s    55D55DdD\FBMM(M..E:a=D:eio&q)TZ7777HHQKKKuz??a:a=D::r   c                    t                      }t                      }t          ||          }|j        \  }}|                    | |          }|j        d         }|j        |j        d                  d         |j        u sJ |                    |           t          |j                  dk    sJ |j        d         }|j        |u sJ |j        i k    sJ d S r   )
r   r   r\   r'   r   r   rB   r   remover)   r   s	            r   test_tabs_remover     s    55D55DdD\FBMM(M..E:a=D:eio&q)TZ7777KKOOOuz??a:a=D::r   c                 L   t                      }t                      }t          ||          }|j        \  }}|                    | |          }|                                 |j        g k    sJ t          |j                  dk    sJ |j        |j        cxk    ri k    sn J d S )Nr   r   )	r   r   r\   r'   clear_namesr)   r   r   )r
   r   r   r   r   r:   r;   r+   s           r   test_tabs_clearr     s    55D55DdD\FBMM(M..EJJLLL;"uz??a:))))r))))))))r   c                     t                      }t                      }t          ||          }|                    | |          }t                      }||d         _        |j        d         j        |u sJ d S r   )r   r   r'   ry   r   r   )r
   r   r   r   r   r+   new_divs          r   test_tabs_pane_updater     sl    55D55DdDMM(M..EeeGDGN:a='))))))r   )8r   bokeh.modelsr   r   rz   r   r!   r   r(   r8   r7   panel.layoutfixturer   r   r,   r2   r<   r?   rE   rR   rU   rX   r^   ra   rh   rk   rr   ru   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   <module>r      s
                         0 0 0$ $ $% % %  $  &  */ / /  6  4  4  28 8 8   / / /# # ## # #, , ,88 8 8      * * *"    , , ,$     "* * *(- - -- - - - - -- - -   &N N N= = =1 1 1    *    0	 	 		 	 	  "  "* * *	* 	* 	* 	* 	*r   