
    g/K                     R   d dl Z d dlZd dlZd dlmZ d dl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 dlmZ d	 Zd
 Zd Zd Zej2                  j5                  d e
g dd      ddf e
g dd      ddf e
g dd      ddf e
g dd      ddf e
g dd      ddf e
g dd      ddfg      d        Zd Z e
d d gdd gddgd dgge
j:                  e
j<                  e
j<                  e
j<                  g       e
d d gd dgdd gge
j:                  e
j>                  e
j>                  g       e
d dgddgge
j:                  e
j@                  g       e
ddgge
j:                  g      gZ!g dZ"ej2                  j5                  d e#e!e"            d        Z$ej2                  j5                  de
jJ                  e
jL                  g      d        Z'd  Z(d! Z) ed"gdd# e jT                         d$k(  rd%nd &      d'        Z+ ed(gd)      d*        Z, ed+gd#,      d-        Z-d. Z.d/ Z/ ed0gd)      d1        Z0 ed2gd)      d3        Z1 ed4gd)      d5        Z2 ed6gd7dg d8 e jT                         d$k(  rd9nd :      d;        Z3d< Z4d= Z5d> Z6d? Z7ej2                  j5                  d@ ejp                  dAD  cg c]  }  ejr                  g dB      | z    c}             dC        Z:ej2                  j5                  dD e;dEdFdG            dH        Z<dI Z=dJ Z>dK Z?yc c} w )L    N)assert_array_equal)patches)Path)Polygon)image_comparison)
transforms)
MouseEventc                  *   t        t        j                  d      d      } | j                  j                  dk(  sJ | j
                  J t        | j                         j                  t        j                  j                         j                         y )Nr      Tclosed)r   npzerosverticesshapecodesr   get_extentsextentsr   Bboxnullpaths    W/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_path.pytest_empty_closed_pathr      sn     .D==&(((::t'')11!++-557    c                      t        j                         fd} t        j                  t              5   |         d d d        y # 1 sw Y   y xY w)Nc                  .     j                   dz   _         y )N       @)r   r   s   r   modify_verticesz+test_readonly_path.<locals>.modify_vertices   s    +r   )r   unit_circlepytestraisesAttributeError)r    r   s    @r   test_readonly_pathr%      s?    D, 
~	&   s   AAc                  R   t        j                  d      j                  dd      } t        j                  t
        t        j                  d| j                               5  t        |        d d d        t        j                  d      j                  ddd      }t        j                  t
        t        j                  d|j                               5  t        |       d d d        t        j                  d      j                  dd      }t        j                  d      }t        j                  d|j                   d	|j                         }t        j                  t
        |      5  t        ||       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
N         z
has shape )matchr      zYour vertices have shape z but your codes have shape )
r   arangereshaper"   r#   
ValueErrorreescaper   r   )
bad_verts1
bad_verts2
good_verts	bad_codesmsgs        r   test_path_exceptionsr6   $   sT   2&&q!,J	zYYJ4D4D3E'FG
I Z 2&&q!Q/J	zYYJ4D4D3E'FG
I Z 2&&q!,J		!I
))/
0@0@/A B11:0AC DC	z	- $Z#$ $ 
 $ $s$   !FF.FFFF&c                      t        j                  g d      } ddg}| j                  |      }|j                  dk(  sJ t        j
                  j                  |ddg       y )N)r   r   r      r:   r:   r:   r         ?r>   )      ?r>   boolTF)r   _create_closedcontains_pointsdtyper   testingassert_equal)r   pointsrets      r   test_point_in_pathrH   7   sW    ?@D*%F


v
&C99JJC$/r   z#other_path, inside, inverted_inside)      ?rJ   )rJ         ?)rK   rK   )rK   rJ   rI   Tr   F)      пrM   rM         ?rO   rO   rO   rM   rL   )rL   rN   r=   rP   rQ   rL   )rI   )rJ         ?)rR   rR   )rR   rJ   rI   r8   r9   r;   r<   r8   )r   r   )r   r)   r)   r)   )r)   r   rT   c                 v    t        g dd      }|j                  |       |u sJ | j                  |      |u sJ y )NrS   Tr   )r   contains_path)
other_pathinsideinverted_insider   s       r   test_contains_pathr[   @   sC     8FDj)V333##D)_<<<r   c                      t        j                         } g d}| j                  |d      }t        j                  j                  |g d       y )N))        r]   )rR   r]   )?r^   g      )radius)TFF)r   r!   rB   r   rD   rE   )r   rF   results      r   $test_contains_points_negative_radiusra   S   s?    D2F!!&!6FJJF$89r   r:   r   ))r]   r]   rK         ?)r]   r]   rb   r>   )r]   rb   rb   rb   )rb   r   rb   r   zpath, extentsc                 h    t        j                  | j                         j                  |k(        sJ y )N)r   allr   r   )r   r   s     r   test_exact_extentsre   l   s*     66$""$,,7888r   ignored_codec                     t        ddgddgddggt         j                  t         j                  | g      }t        j                  |j	                         j
                  dk(        sJ y )Nr   r:   r   )r]   r]   rb   rb   )r   MOVETOr   rd   r   r   )rf   r   s     r   test_extents_with_ignored_codesri   z   sc     !QQQ;;\BDD 66$""$,,0@@AAAr   c                      t        j                  ddgddgddgddgddgg      } t        |       }t        j                  t         j                  dgg      }|j	                  |      }t        |      dk(  sJ |d   rJ y Nr   r:   r>   )r   arrayr   nanrB   len)boxptestcontainss       r   test_point_in_path_nanrs      s    
((QFQFQFQFQF;
<CS	A88bffc]O$D  &Hx=A{?{r   c                  2   t        j                         \  } }|j                  dd       |j                  dd      }|j	                         j                  |j                  j                  d      |j                               sJ |j	                         j                  |j                  j                  d      |j                               rJ |j	                         j                  |j                  j                  d      |j                               rJ y )	Nlogr9   )xscaleylimr:   
   )   r>   r=   )2   r>   )	pltsubplotssetaxvspanget_pathcontains_point	transData	transformget_transform)figaxpolygons      r   test_nonlinear_containmentr      s    llnGCFF%fF%jjBG,,
w')>)>)@B B B!00
x('*?*?*AC C C!00
x('*?*?*AC C C Cr   zarrow_contains_point.pngmpl20arm64gS㥛?)remove_textstyletolc                  j   t        j                         \  } }|j                  d       |j                  d       t	        j
                  dddd      }|j                  |       t	        j
                  ddd	d      }|j                  |       t	        j
                  d
dddd      }|j                  |       |||g}t        j                  t        j                  ddd      t        j                  ddd            \  }}t        t        |j                         |j                                     D ]  \  }\  }	}
|j                  j                  |	|
g      \  }}t        d| j                   ||      }t        |      D ]1  \  }}|j#                  |      \  }}|s|j%                  |	|
dd       3  y )Nr   )r>   rJ   )r?   rK   z->(   )
arrowstylemutation_scale)r>   r:   )r?   rR   z]-[)r>   r?   )r?   rO   fancyF)r   fillr   r   r   g?button_press_eventry   r)sc)r{   r|   set_xlimset_ylimr   FancyArrowPatch	add_patchr   meshgridr,   	enumeratezipravelr   r   r	   canvasrr   scatter)r   r   arrowarrow1arrow2patches_listXYkxyxdispydispeventmpatchrY   ress                     r   test_arrow_contains_pointr      s    llnGCKKKK ##K/3357E LL$$X{05468F LL$$Z07*/468F LL66*L ;;ryyAs+yyAs+-DAqs1779aggi89 -	6Aq||--q!f5u/UEJ!,/ 	-HAu../KFC

1a1
,		--r   zpath_clipping.svg)r   c            
      h   t        j                  d      } t        g dg dg dg dg dg dg d	g      D ]y  \  }}| j                  d
d|dz         }g d}|j	                  |d   |d   |d   z          |j                  |d   |d   |d   z          |j                  t        |ddd             { y )N)g      @g@)figsize)   r   r   ^    r   )r   r   )r   r   r   r   d   )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      i  i  r   r)   noneredT)	facecolor	edgecolorr   )r{   figurer   add_subplotr   r   r   r   )r   ixyr   bboxs        r   test_path_clippingr      s    
**Z
(C<<<<<<<> ? A2 __Q1Q3'!
DGT!WtAw./
DGT!WtAw./
W&E$@ 	AAr   zsemi_log_with_zero.png)r   c                      t        j                  dd      } dd| dz  dz   z  z
  dz  }t        j                         \  }}|j	                  | |ddd	
       |j                  dd       |j                  d       y )Nirx   rb   r   r:      -o   r   )lwmarkeredgecolorgHz>T)r   r,   r{   r|   semilogyr   gridr   r   r   r   s       r   test_log_transform_with_zeror      sk    
		#rA	sAqDF|	b AllnGCKK1dr3K7KKaGGDMr   c                     t        j                         } | j                  j                  dk(  sJ t        j                  | |       }|j                  j                  dk(  sJ |j                  j                  dk(  sJ t        j                  t        dg      |       }|j                  j                  dk(  sJ |j                  j                  dk(  sJ y )Nr   )r   r8   )r:   r   )r:   )r   make_compound_pathr   r   r   )emptyr2r3s      r   test_make_compound_path_emptyr      s     ##%E>>6)))		 	 	.B;;&&&88>>T!!!		 	 vh	7B;;&&&88>>T!!!r   c                      ddg} dt        | | gt         j                  t         j                  g      gz  }t        j                  | }t	        j
                  |j                  t         j                  k(        dk(  sJ y )Nr   r)   )r   rh   STOPr   r   sumr   )zeropathscompound_paths      r   test_make_compound_path_stopsr      sh    q6DtT4L4;;		":;<<E++U3M 66-%%23q888r   zxkcd.pngc                  `   t         j                  j                  d       t        j                  ddt         j                  z  d      } t        j
                  |       }t        j                         5  t        j                         \  }}|j                  | |       d d d        y # 1 sw Y   y xY w)Nr   r   r   )
r   randomseedlinspacepisinr{   xkcdr|   plotr   s       r   	test_xkcdr      ss    IINN1
Aq255y#&A
q	A	 ,,.R
1  s   1*B$$B-zxkcd_marker.pngc                     t         j                  j                  d       t        j                  ddd      } | }d| z
  }dt        j                  d      z  }t        j                         5  t        j                         \  }}|j                  | |dd       |j                  | |dd       |j                  | |d	d       d d d        y # 1 sw Y   y xY w)
Nr   ry            @+rx   )mso^)	r   r   r   r   onesr{   r   r|   r   )r   y1y2y3r   r   s         r   test_xkcd_markerr     s    IINN1
Aq!A	
B	
QB	rwwqz	B	 #,,.R
2sr"
2sr"
2sr"	# # #s   *AC

Czmarker_paths.pdfc                     d} t        j                  t        j                  |       t        j                  |       dz   t        j                  |              t        j
                  d|        t        j                  dd       y )N   r(   )r{   errorbarr   r,   r   xlimrw   )Ns    r   test_marker_paths_pdfr     sS    	ALL1a HHROHHROr   nan_pathdefault)pdfsvgepspngg;On?)r   r   
extensionsr   c                  *   dt         j                  dt         j                  dddg} t         j                  dt         j                  ddt         j                  d	g}t        j                         \  }}|j	                  | d
       |j	                  |d
       y )Nr   r   r(   ry   r+   r   	   rx   r'   r   )r   rm   r{   r|   r   )y0r   r   r   s       r   test_nan_isolated_pointsr    sk    
 RVVQ1a	(B
&&!RVVQBFFB	/BllnGCGGBGGBr   c                  .   t        j                  ddgddgddgddgdd	gd
dgddgddgddgddgddgddgddgddgddgddgdd gd!d"gd#d"gd$d%gd&d'gd(d)gg      } d*\  }}}}t        t        j                  | d d d+f   | d d d,f   f      j                  d-.      }t        j                  ||g||gg      }|j                  |      j                         d,   }t        j                  |d/   |d0   k7        sJ t        j                  |d0   |d,   k(        sJ y )1NgmR?gDpTU?g     ?g_9?g     ?g      ?gUUu@gF^9?g      ?g$z|?g["8j@gUU@ga1?g["8@g}LRJ?gDpTU?gmR?g      @g=:r9?g["8@gAL0 @gUU@gy?gI?g9 @g["8
@g_9@g     @gB@gUU@gq1Pc1@g     @?ghs@gUU@gA!@gmR@g     @gbc@g     @?g9qa @gI?)rb   r?   g @r   r:   r   Tr   r   )
r   rl   r   vstackTr   r   clip_to_bboxto_polygonsrd   )handr0c0r1c1poly	clip_rectpoly_clippeds           r   (test_path_no_doubled_point_in_to_polygonr  *  s   88
j	!
g	
h	
	
f	
j	!
j	!
j	!
j	!
d	
Z	 
j	!
j	!
j	!
X	
j	!
h	
j	!
j	!
f	
X	
j	!+	#$D0 ,RR		41:tAqDz2355dCD"bB8 45I$$Y/;;=a@L66,r"l2&6677766,r"l1o5666r   c                  B   ddgddgg} t        |       }t        |j                  dd      g        t        |j                  ddd      | g       t        |j                         g        t        |j                  d      | g       ddgddgddgg} ddgddgddgddgg}t        |       }t        |j                  dd      |g       t        |j                  ddd      | g       t        |j                         |g       t        |j                  d      | g       y )	Nrx   r   r   )widthheightF)r  r  closed_only)r     )r   r   r  )datarp   closed_datas      r   test_path_to_polygonsr  M  s   Hr2hDT
Aq}}2b}92>q}}2be}Lvq}}+q}}}7$@Hr2hR)D8b"XBx"b:KT
Aq}}2b}9K=Iq}}2be}Lvq}}6q}}}7$@r   c                  v   ddgddgg} t         j                  t         j                  g}t        |       }t        | |      }|j                         }|j                         }||usJ |j                  |j                  usJ ||usJ |j                  |j                  usJ |j
                  |j
                  usJ y Nr   r:   )r   rh   LINETOdeepcopyr   r   vertsr   path1path2
path1_copy
path2_copys         r   test_path_deepcopyr)  b  s    VaVE[[$++&EKEE!J!J
""">>!4!4444
""">>!4!4444;;j.....r   c                  v   ddgddgg} t         j                  t         j                  g}t        |       }t        | |      }|j                         }|j                         }||usJ |j                  |j                  u sJ ||usJ |j                  |j                  u sJ |j
                  |j
                  u sJ y r   )r   rh   r!  copyr   r   r#  s         r   test_path_shallowcopyr,  q  s    VaVE[[$++&EKEEJJ
""">>Z00000
""">>Z00000;;******r   phi)r   r   r:   )
r   r   r  -   <   K   Z   i   x      c                 	   g d}t        j                         j                  t        j                  |             }t        ddg      }|j                  |      }|j                  |      r|j                  |      sJ t        ddg      }|j                  |      }|j                  |      r|j                  |      sJ |j                  t        ddg            }|j                  t        ddg            }|j                  |      r|j                  |      sJ |j                  t        ddg            }|j                  t        ddg            }|j                  |      r|j                  |      sJ |j                  |      sJ |j                  t        dd	g            }|j                  t        d
dg            }|j                  |      r|j                  |      sJ |j                  t        ddg            }|j                  t        ddg            }|j                  |      s|j                  |      rJ |j                  t        ddg            }|j                  t        ddg            }|j                  |      s|j                  |      rJ |D ]h  }|j                  t        ddg            }|j                  t        d|z   dfd|z   dfg            }|j                  |      s|j                  |      shJ  |D ]c  }|j                  t        ddg            }|j                  t        dd|z   fdg            }|j                  |      s|j                  |      scJ  |D ]c  }|j                  t        ddg            }|j                  t        dd|z
  fdg            }|j                  |      r|j                  |      rcJ  |j                  t        ddg            }|j                  t        g d            }|j                  |      r|j                  |      sJ |j                  t        ddg            }|j                  t        ddg            }|j                  |      s|j                  |      rJ |j                  t        ddg            }|j                  t        ddg            }|j                  |      s|j                  |      rJ y )N)gh㈵>g:0yE>g|=g-q=)r	  r   )r   r   r8   r9   )r   r)   )r:   r)   r   ry   )ry   ry   r;   rU   )r)   r   )r   r+   )r   r   r   r:   ry   )r9   r   r6  )r:   r   )r   r   )r^   r:   )r]         )rb   r7  )rb         @)r]   r8  )r   Affine2Drotater   deg2radr   transform_pathintersects_path)r-  	eps_arrayr   abr  s         r   test_path_intersect_pathrA    s   
 +I##%,,RZZ_=I 	gvA  #AQA$5$5a$888 	ffA  #AQA$5$5a$888 	  vv&6!78A  vv&6!78AQA$5$5a$888 	  vv&6!78A  vv&6!78AQA$5$5a$888 Q 	  vv&6!78A  vv&6!78AQA$5$5a$888 	  vv&6!78A  vv&6!78A  #A,=,=a,@@@ 	  vv&6!78A  vv&6!78A  #A,=,=a,@@@  E$$T66*:%;<$$TAGQ<!c'1*F%GH$$Q'0A0A!0DDDE  E$$T66*:%;<$$TAq3w<*@%AB$$Q'0A0A!0DDDE  =$$T66*:%;<$$TAq3w<*@%AB  #(9(9!(<<<= 	  vv&6!78A  &>!?@AQA$5$5a$888 	  w&8!9:A  vx&8!9:A  #A,=,=a,@@@ 	  y)&<!=>A  x&:!;<A  #A,=,=a,@@@,@r   offseti0ii  r.  c                 B   | }d| z   }t        j                  ||      }t        j                  |j                  d      }t        j
                  |j                  d      }t        j                  j                  |d       t        j                  j                  |d       y )Nih  r   )axisr   r:   )r   arcr   minr   maxrD   assert_allclose)rB  lowhighr   minsmaxss         r   test_full_arcrM    sp    
C<D88CD66$--a(D66$--a(DJJtR(JJtQ'r   c            
         t        t        j                  ddgddgddgddgddgg      t        j                  g d	t         j                  
            } t        t        j                  ddgddgddgddgddgg      t        j                  g dt         j                  
            }|j	                  |       rJ | j	                  |      rJ y )NgƉ@g퟇@gЅ@g@g`m$@g;E@g6[@gч61@)r:   r   r   r   O   )rC   g-Hߊ@gGN@g`؊@g{Kʠ@g
@)r:   r   r   r   r   )r   r   rl   	code_typer=  	this_pathoutline_paths     r   !test_disjoint_zero_length_segmentrT    s    
=)=)=)=)=)+ 	, 	!8:I 
=)=)=)=)=)+ 	, 	~~	'(L ++I666((6666r   c            	          t        t        j                  ddgddgg            } t        t        j                  ddgddgddgddgg            }|j                  |       sJ | j                  |      sJ y rk   )r   r   rl   r=  rQ  s     r   "test_intersect_zero_length_segmentrV    s    
FF
 	I 
FHHF	
 	L ''	222$$\222r   c            	         t        t        j                  t        j                  gt        j                  t        j                  ggt         j                  t         j                  g      t        t        j                  t        j                  gt        j                  t        j                  gg      t        t        j                  t        j                  gt        j                  t        j                  gt        j                  t        j                  gt        j                  t        j                  ggt         j                  t         j
                  t         j
                  t         j                  g      g} | D ]F  }|j                  d      }t        |      dk(  sJ |j                  d   t         j                  k(  rFJ  y )NT)remove_nansr:   r   )
r   r   rm   rh   	CLOSEPOLYCURVE3cleanedrn   r   r   )r   rp   r[  s      r   test_cleanup_closepolyr\    s$    	rvvrvv 01kk4>>*	, 	rvvrvv 012 	rvvrvv 02662662Bvvrvv kk4;;T^^D	FE  -)))-7|q   }}Q499,,,-r   )@platformr/   numpyr   numpy.testingr   r"   
matplotlibr   matplotlib.pathr   matplotlib.patchesr   matplotlib.testing.decoratorsr   matplotlib.pyplotpyplotr{   r   matplotlib.backend_basesr	   r   r%   r6   rH   markparametrizer[   ra   rh   CURVE4rZ  r!  _test_paths_test_path_extentsr   re   rY  r   ri   rs   r   machiner   r   r   r   r   r   r   r   r  r  r  r)  r,  concatenaterl   rA  rangerM  rT  rV  r\  )deltas   0r   <module>rp     s    	  ,     & :  ! /7$&0 )
Qu&
W&
 9' Q'
3DA5%P
3DA5%P
RS=S=: 	1a&1a&1a&1a&	)KKdkk4;;?A 	1a&1a&1a&	!DKKdkk#JK1a&1a&	DKK561a&DKK=!
(  #k;M*NO
9 P
9 $..$)))DEB FB	C -.D/x//1W<e!E"-E"-J &'T:A ;A& +,G< =
"9 :,D1 2 $%48# 9# %&D9 : :,iT9/x//1W<e!EE 7FA*/+ 0 BHH785@0 ! NANAb 5sB#78( 9(703&-W0s   L$