
    g*                     `   d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z
 d dlmZmZ d Zd Zd Zd Zej$                  j'                  dd	d
g      d        Zd Zd Zd Zd Z edg ej2                         dk(  rdnd       d        Zej$                  j'                  dd	d
g      ej$                  j'                  dd	d
g      ej$                  j'                  dd	d
g      ej$                  j'                  dd	d
g      d                             Zej$                  j'                  dddg      ej$                  j'                  dddg      d               Zd Zd Zej$                  j'                  ddg d g      ej$                  j'                  d!dd"d#gg       ed$g%      d&                      Zej$                  j'                  ddg d g      ej$                  j'                  d!dd"d#gg       ed$g%      d'                      Z ej$                  j'                  d(d)d*g      d+        Z!d, Z"y)-    N)AxesSubplotBase)check_figures_equalimage_comparisonc                 8   t        j                  t        |       t        |       t        t        d||g                  D ]Y  \  \  }}\  }}\  }\  }}	||k  r| d   j                  |   j                  ||      |	||f   k(  rDJ d|||	||f   rdnd|fz          y)z
    x_shared and y_shared are n x n boolean matrices; entry (i, j) indicates
    whether the x (or y) axes of subplots i and j should be shared.
    xyr   z,axes %i and %i incorrectly %ssharing %s axisznot  N)	itertoolsproduct	enumeratezip_shared_axesjoined)
axsx_sharedy_sharedi1ax1i2ax2i3nameshareds
             [/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_subplots.pycheck_sharedr      s    
 7@6G6GcNcNc$8 45678 @2	S9B2r>D& 81v""4(//S9VBF^K 	@:B&R.b$>@ @	@K@    c                    t        t        | ||            D ]  \  }\  }}}|j                         |j                  j                  gz   D ]"  }|j                         |k(  rJ d| d|         |j                         |j                  j                  gz   D ]"  }|j                         |k(  rJ d| d|         |s|j                         dk(  sJ |r|j                         dk(  rJ  y)z<Check that the x and y ticklabel visibility is as specified.zVisibility of x axis #z is incorrectly zVisibility of y axis #r	   N)
r   r   get_xticklabelsxaxis
offsetTextget_visibleget_yticklabelsyaxis
get_xlabel
get_ylabel)r   	x_visible	y_visibleiaxvxvyls           r   check_ticklabel_visibler-      s   $Si%CD )<BB##%)<)<(== 	EA==?b( E,QC/?tDE(	E ##%)<)<(== 	EA==?b( E,QC/?tDE(	E
 ==?b(((==?b((()r   c                 L   t        | |      D ]C  \  }}|j                  j                         D ]!  }|j                  j	                         |k(  r!J  E t        | |      D ]C  \  }}|j
                  j                         D ]!  }|j                  j	                         k(  r!J  E y)z
    Check that the x and y tick visibility is as specified.

    Note: This only checks the tick1line, i.e. bottom / left ticks.
    N)r   r   get_major_ticks	tick1liner!   r#   )r   r&   r'   r)   visibleticks         r   check_tick1_visibler3   -   s     C+ ;GHH,,. 	;D>>--/7:::	;; c9- ;IHH,,. 	;D>>--/7:::	;;r   c            
      ,   d} t        j                  | d d t              t        j                  | d d t              t        j                  g dg dg dg dg      t        j                  g dg dg dg dg      d}g d	g d	d
gdz  d
gdz  d
gdz  g d	dg dd
gdz  g dd
gdz  d
gdz  g ddd}|d   |d<   |d   |d
<   t        j                  dd      \  }\  \  }}\  }}||||g}t        ||d   |d          t        j                  |       g d}	|	D ]u  }
|	D ]n  }t        j                  dd|
|      \  }\  \  }}\  }}||||g}t        |||
   ||          t        ||d   |
   |d   |          t        j                  |       p w y )N)   r5      r6   )dtype)FTFF)TFFF)FFFT)FFTF)allnonerowcolFFTTTr5   )r8   r;   r:   r9   FTTFTF)xyr9   Fr8   )FTr8   r9   r:   r;   r      sharexshareyr>   r?   )
nponesboolzerosarraypltsubplotsr   closer-   )rdimsharer1   fa1a2a3a4r   opsxoyos               r   test_sharedrV   ;   s   D774840HHT"1XT288++++	- .
 88++++	- .E  21vz
vz0 2vz1
vz0G$ =E%L,E$K "ll1a0AR(2rr2r
CeFmU6]3IIaL ;C  	B&)ll1a2&N#A#R(2rr2r"CeBir3#Cb)973<;KLIIaL	r   remove_ticksTFc                 P   t        j                  dddd      \  }}|j                  D ]'  }|j                  dd       |j	                  |        ) t        |j                  g dg d	       | rt        |j                  g dg d	       y t        |j                  g d
g d
       y )Nr6   TrA   foobarxlabelylabel)remove_inner_ticksr<   r=   )TTTT)rI   rJ   flatsetlabel_outerr-   r3   )rW   rN   r   r)   s       r   test_label_outerrb   q   s    \\!QtD9FAshh 8
eE*
,78 ,.HJHH02L	N 	HH.0H	Jr   c                  x   t        j                         } | j                  dd      }| j                  |dddf         }| j                  |dddf         }| j                  |d         }| j                  |d         }| j                  D ]  }|j                           t        | j                  g dg d       y )	N   r   r6   r@   )r@   r6   )r6   r@   )FTFT)TTFF)rI   figureadd_gridspecadd_subplotaxesra   r-   )figgsrO   rP   rQ   rR   r)   s          r   test_label_outer_spanrk      s    
**,C			!Q	B 
AqsF	$B	AaCF	$B	D	"B	D	"Bhh 
,.HJr   c                  n    t        j                  d      } | j                          t        | gdgdg       y )Nr   r   r@   r@   T)rI   rh   ra   r-   )r)   s    r   test_label_outer_non_gridspecrn      s,    	,	BNNRD4&4&1r   c                  d   t        j                  ddd      \  } \  }}t        |gdgdg       |j                  j	                          t        |gdgdg       t        j                  ddd      \  } \  }}t        |gdgdg       |j
                  j                          t        |gdgdg       y )Nr@   r6   TrC   FrB   )rI   rJ   r-   r#   	tick_leftr   tick_bottom)rN   rO   rP   s      r   test_shared_and_movedrt      s     ,,q!D1KAxBRD4&5'2HHRD4&5'2,,q!D1KAxBRD5'D62HHRD5'D62r   c                     t        j                  t              5  t        j                  ddd       d d d        t        j                  t              5  t        j                  ddd       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nr6   blahrq   rp   )pytestraises
ValueErrorrI   rJ    r   r   test_exceptionsr{      si    	z	" *Q&)*	z	" *Q&)* ** ** *s   A6B6A?Bsubplots_offset_textarm64gy&1?)tolc                  F   t        j                  ddd      } t        j                  ddd      dz   }t        j                  dddd	
      \  }}|d   j	                  | |        |d   j	                  | |        |d   j	                  ||        |d   j	                  ||        y )Nr   g    _Bg    eAd   
   g     @r6   r;   r8   rA   )r   r   )r@   r   )r   r@   )r@   r@   )rD   arangerI   rJ   plot)r>   r?   ri   r   s       r   test_subplots_offsettextr      s     			!T3A
		!S"c!A||Aqu=HCINN1aINN1aINN1aINN1ar   topbottomleftrightc                 (   t        j                  | |||d      5  t        j                         j                  dddd      }d d d        t	        j
                        D ]  \  \  }}}|j                  j                  d   }|j                  j                  d   }	|j                  j                  d   }
|j                  j                  d   }|| xr |dk(  k(  sJ |	|xr |dk(  k(  sJ |
|xr |dk(  k(  sJ ||xr |dk(  k(  rJ  y # 1 sw Y   xY w)	N)zxtick.labeltopzxtick.labelbottomzytick.labelleftzytick.labelrightrd   TrA   label2Onlabel1Onr   r6   )	rI   
rc_contextre   rJ   rD   ndenumerater   _major_tick_kwr#   )r   r   r   r   r   r(   jr)   xtopxbottomyleftyrights               r   test_subplots_hide_ticklabelsr      s$    
3V,0eM 
N Djjl##Aqd#CD nnS) ,
Axx&&z2(())*5''
3((4Q'''6,a1f---!q&)))%*AF+++,D Ds   (DDxlabel_positionylabel_positionc                    t        j                         j                  dddd      }t        j                  |      D ]  \  \  }}}|j                  dd       |j                  j                  |        |j                  j                  |       |j                          t        |j                               | dk(  xr |dk(  xs | d	k(  xr |d
k(  k(  sJ t        |j                               |dk(  xr |d
k(  xs |dk(  xr |dk(  k(  rJ  y )Nrd   TrA   rY   rZ   r[   r   r6   r   r   r   r   )rI   re   rJ   rD   r   r`   r   set_label_positionr#   ra   rF   r$   r%   )r   r   r   r(   r   r)   s         r   test_subplots_hide_axislabelsr      s    **,

1T$

?CnnS) 
6
A
eE*
##O4
##O4
BMMO$x'2AF 3%'2AF4 	4 4 BMMO$v%0!q& 5')4a1f6 	6 6
6r   c                      t        j                         \  } }|j                         j                         |j                         k(  sJ y )N)rI   rJ   get_subplotspecget_gridspec)ri   r)   s     r   test_get_gridspecr      s8    llnGC,,."//2CCCCr   c                  x    ddi} dddgi}t        j                  dd| |      \  }}| ddik(  sJ |dddgik(  sJ y )NrB   r8   width_ratiosr@   r6   )
subplot_kwgridspec_kw)rI   rJ   )r   r   ri   r)   s       r   test_dont_mutate_kwargsr      s_    E"J!Aq6*Kll1aJ'24GC(E****>Aq62222r   r   )r@   rd   r6   height_ratiosr@   r6   png)
extensionsc                 \    | j                  dd||       |j                  dd||d       y )Nr6   rd   r   r   r   )rJ   )fig_testfig_refr   r   s       r   test_width_and_height_ratiosr      s@    
 a-#/  1Q&3%1(3 4r   c                 h    g dg dg}| j                  |||       |j                  |||d       y )N)ABr   )r   CDr   r   )subplot_mosaic)r   r   r   r   mosaic_specs        r   #test_width_and_height_ratios_mosaicr      sF    
 #O4KK})5  7;,9+759 :r   zmethod,args)rJ   )r6   rd   )r   )zabc;defc                 8   t        j                  t        d      5   t        t        |       |ddgdddgid d d d        t        j                  t        d      5   t        t        |       |g ddg did d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)	Nr   )matchr@   r6   )r   r   r   )r@   r6   rd   )r   r   )rw   rx   ry   getattrrI   )methodargss     r   test_ratio_overlapping_kwsr     s     
z	9 DVd1a&*9Aq6)B	DD 
z	8 FVd*8))D	FF FD DF Fs   BBBBc                  4   t        j                         } t        | j                         t              sJ t        | j                  g d      t              rJ t        j                  t              5  t        | g dg d       d d d        y # 1 sw Y   y xY w)Nrm   )rect)
rI   re   
isinstancerg   r   add_axesrw   rx   	TypeErrorr   )ri   s    r   test_old_subplot_compatr     sl    
**,Ccoo'555#,,L,9;GGG	y	! 3S,\23 3 3s   2BB)#r
   platformnumpyrD   rw   matplotlib.axesr   r   matplotlib.pyplotpyplotrI   matplotlib.testing.decoratorsr   r   r   r-   r3   rV   markparametrizerb   rk   rn   rt   r{   machiner   r   r   r   r   r   r   r   r   rz   r   r   <module>r      sh       -  O@ )";3l $7J 8JJ(23* )*/x//1W<e!EE u.D%=1$/4-0, 1 0 2 /,$ *Xu,=>*VW,=>6 ? ?6D3 $	):;4!Q.9(4 ) : <4 $	):;4!Q.9(: ) : <: %) 
F
F3r   