
    P/Ph/K                     H   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j                            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j                            d e#e!e"                    d             Z$ej                            de
j%        e
j&        g          d             Z'd  Z(d! Z) ed"gdd# e j*                    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 j*                    d$k    rd9nd :          d;             Z3d< Z4d= Z5d> Z6d? Z7ej                            d@ ej8        dA dBD                                 dC             Z9ej                            dD e:dEdFdG                    dH             Z;dI Z<dJ Z=dK Z>dS )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        t          j
                                        j                   d S )Nr      Tclosed)r   npzerosverticesshapecodesr   get_extentsextentsr   Bboxnullpaths    Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_path.pytest_empty_closed_pathr      s      ...D=&((((:t''))1!++--57 7 7 7 7    c                      t          j                    fd} t          j        t                    5   |              d d d            d S # 1 swxY w Y   d S )Nc                  &     j         dz   _         d S )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Ac                  `   t          j        d                              dd          } t          j        t
          t          j        d| j                             5  t          |            d d d            n# 1 swxY w Y   t          j        d                              ddd          }t          j        t
          t          j        d|j                             5  t          |           d d d            n# 1 swxY w Y   t          j        d                              dd          }t          j        d          }t          j        d|j         d	|j                   }t          j        t
          |          5  t          ||           d d d            d S # 1 swxY w Y   d S )
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   $   s`   2&&q!,,J	zY'FJ4D'F'FGG
I 
I 
I  Z               2&&q!Q//J	zY'FJ4D'F'FGG
I 
I 
I  Z               2&&q!,,J	!I
) C
0@ C C1:C C D DC	z	-	-	- $ $Z###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s6   A::A>A>#C??DDF##F'*F'c                      t          j        g d          } ddg}|                     |          }|j        dk    sJ t          j                            |ddg           d S )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   sk    ???@@D*%F


v
&
&C9J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                     t          g dd          }|                    |           |u sJ |                     |          |u sJ d S )NrS   Tr   )r   contains_path)
other_pathinsideinverted_insider   s       r   test_contains_pathr[   @   sa     888FFFDj))V3333##D))_<<<<<<r   c                      t          j                    } g d}|                     |d          }t          j                            |g d           d S )N))        r]   )rR   r]   )?r^   g      )radius)TFF)r   r!   rB   r   rD   rE   )r   rF   results      r   $test_contains_points_negative_radiusra   S   sX    D222F!!&!66FJF$8$8$89999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        |k              sJ d S )N)r   allr   r   )r   r   s     r   test_exact_extentsre   l   s4     6$""$$,78888888r   ignored_codec                     t          ddgddgddggt           j        t           j        | g          }t          j        |                                j        dk              sJ d S )Nr   r:   r   )r]   r]   rb   rb   )r   MOVETOr   rd   r   r   )rf   r   s     r   test_extents_with_ignored_codesri   z   so     !QQQ;\BD DD 6$""$$,0@@AAAA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          }|                    |          }t          |          dk    sJ |d         rJ d S 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8bfc]O$$D  &&Hx==A{r   c                     t          j                    \  } }|                    dd           |                    dd          }|                                                    |j                            d          |                                          sJ |                                                    |j                            d          |                                          rJ |                                                    |j                            d          |                                          rJ d S )	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      sB   lnnGCFF%fF%%%jjBG,,
w'')>)>)@)@B B B B B!!00
x(('*?*?*A*AC C C C C!!00
x(('*?*?*A*AC C C C C C Cr   zarrow_contains_point.pngmpl20arm64gS㥛?)remove_textstyletolc                     t          j                    \  } }|                    d           |                    d           t	          j        dddd          }|                    |           t	          j        ddd	d          }|                    |           t	          j        d
dddd          }|                    |           |||g}t          j        t          j	        ddd          t          j	        ddd                    \  }}t          t          |                                |                                                    D ]\  }\  }	}
|j                            |	|
g          \  }}t          d| j        ||          }t          |          D ]8\  }}|                    |          \  }}|r|                    |	|
dd           9d S )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    lnnGCKKKK #K/3357 7 7E LL$X{05468 8 8F LL$Z07*/468 8 8F LL66*L ;ryAs++yAs++- -DAqs17799aggii8899 - -	6Aq|--q!f55u/UEJJ!,// 	- 	-HAu..//KFC -

1a1
,,,		-- -r   zpath_clipping.svg)r   c            
         t          j        d          } t          g dg dg dg dg dg dg d	g          D ]\  }}|                     d
d|dz             }g d}|                    |d         |d         |d         z              |                    |d         |d         |d         z              |                    t          |ddd                     d S )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 A2 __Q1Q3''!!!
DGT!WtAw.///
DGT!WtAw.///
W&E$@ @ @ 	A 	A 	A 	A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                    \  }}|                    | |ddd	
           |                    dd           |                    d           d S )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      s    
	#rA	sAqDF|	b AlnnGCKK1dr3K777KKaGGDMMMMMr   c                  P   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 d S )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;&&&&8>T!!!!		 vh	7	7B;&&&&8>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 d S )Nr   r)   )r   rh   STOPr   r   sumr   )zeropathscompound_paths      r   test_make_compound_path_stopsr      si    q6DtT4L4;	":;;<<E+U3M 6-%233q888888r   zxkcd.pngc                  b   t           j                            d           t          j        ddt           j        z  d          } t          j        |           }t          j                    5  t          j                    \  }}|	                    | |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   )
r   randomseedlinspacepisinr{   xkcdr|   plotr   s       r   	test_xkcdr      s    INN1
Aq25y#&&A
q		A	  ,..R
1                 s   *-B$$B(+B(zxkcd_marker.pngc                     t           j                            d           t          j        ddd          } | }d| z
  }dt          j        d          z  }t          j                    5  t          j                    \  }}|                    | |dd           |                    | |dd           |                    | |d	d           d d d            d S # 1 swxY w Y   d S )
Nr   ry            @+rx   )mso^)	r   r   r   r   onesr{   r   r|   r   )r   y1y2y3r   r   s         r   test_xkcd_markerr     s   INN1
Aq!A	
B	
QB	rwqzz	B	 # #,..R
2sr"""
2sr"""
2sr"""	# # # # # # # # # # # # # # # # # #s   'A"CCCzmarker_paths.pdfc                      d} t          j        t          j        |           t          j        |           dz   t          j        |                      t          j        d|            t          j        dd           d S )N   r(   )r{   errorbarr   r,   r   xlimrw   )Ns    r   test_marker_paths_pdfr     sc    	AL1a   HROOOHROOOOOr   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                    \  }}|                    | d
           |                    |d
           d S )Nr   r   r(   ry   r+   r   	   rx   r'   r   )r   rm   r{   r|   r   )y0r   r   r   s       r   test_nan_isolated_pointsr    ss    
 RVQ1a	(B
&!RVQBFB	/BlnnGCGGBGGBr   c                  b   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          }|                    |                                          d,         }t          j	        |d/         |d0         k              sJ t          j	        |d0         |d,         k              sJ d S )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   8
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:tAAAqDz2335dCCCD"bB8 455I$$Y//;;==a@L6,r"l2&66777776,r"l1o56666666r   c                     ddgddgg} t          |           }t          |                    dd          g            t          |                    ddd          | g           t          |                                g            t          |                    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          |                    dd          |g           t          |                    ddd          | g           t          |                                |g           t          |                    d          | g           d S )	Nrx   r   r   )widthheightF)r  r  closed_only)r     )r   r   r  )datarp   closed_datas      r   test_path_to_polygonsr  M  sp   Hr2hDT

Aq}}2b}992>>>q}}2be}LLv  q}}+++q}}}77$@@@Hr2hR)D8b"XBx"b:KT

Aq}}2b}99K=IIIq}}2be}LLv  q}}666q}}}77$@@@@@r   c                  L   ddgddgg} t           j        t           j        g}t          |           }t          | |          }|                                }|                                }||usJ |j        |j        usJ ||usJ |j        |j        usJ |j        |j        usJ d S Nr   r:   )r   rh   LINETOdeepcopyr   r   vertsr   path1path2
path1_copy
path2_copys         r   test_path_deepcopyr)  b  s    VaVE[$+&EKKEE!!J!!J
"""">!44444
"""">!44444;j.......r   c                  L   ddgddgg} t           j        t           j        g}t          |           }t          | |          }|                                }|                                }||usJ |j        |j        u sJ ||usJ |j        |j        u sJ |j        |j        u sJ d S r   )r   rh   r!  copyr   r   r#  s         r   test_path_shallowcopyr,  q  s    VaVE[$+&EKKEEJJ
"""">Z00000
"""">Z00000;********r   phic                 @    g | ]}t          j        g d           |z   S ))
r   r   r  -   <   K   Z   i   x      )r   rl   ).0deltas     r   
<listcomp>r8    s>     0 0 0 H777885@0 0 0r   )r   r   r:   c                 2   g d}t          j                                        t          j        |                     }t          ddg          }|                    |          }|                    |          r|                    |          sJ t          ddg          }|                    |          }|                    |          r|                    |          sJ |                    t          ddg                    }|                    t          ddg                    }|                    |          r|                    |          sJ |                    t          ddg                    }|                    t          ddg                    }|                    |          r|                    |          sJ |                    |          sJ |                    t          dd	g                    }|                    t          d
dg                    }|                    |          r|                    |          sJ |                    t          ddg                    }|                    t          ddg                    }|                    |          s|                    |          rJ |                    t          ddg                    }|                    t          ddg                    }|                    |          s|                    |          rJ |D ]}|                    t          ddg                    }|                    t          d|z   dfd|z   dfg                    }|                    |          s|                    |          rJ |D ]{}|                    t          ddg                    }|                    t          dd|z   fdg                    }|                    |          s|                    |          rJ ||D ]{}|                    t          ddg                    }|                    t          dd|z
  fdg                    }|                    |          r|                    |          sJ ||                    t          ddg                    }|                    t          g d                    }|                    |          r|                    |          sJ |                    t          ddg                    }|                    t          ddg                    }|                    |          s|                    |          rJ |                    t          ddg                    }|                    t          ddg                    }|                    |          s|                    |          rJ d S )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   r:  )r:   r   )r   r   )r^   r:   )r]         )rb   r;  )rb         @)r]   r<  )r   Affine2Drotater   deg2radr   transform_pathintersects_path)r-  	eps_arrayr   abr  s         r   test_path_intersect_pathrE    s   
 +**I#%%,,RZ__==I 	gvA  ##AQ8A$5$5a$8$8888 	ffA  ##AQ8A$5$5a$8$8888 	  vv&6!7!788A  vv&6!7!788AQ8A$5$5a$8$8888 	  vv&6!7!788A  vv&6!7!788AQ8A$5$5a$8$8888 Q 	  vv&6!7!788A  vv&6!7!788AQ8A$5$5a$8$8888 	  vv&6!7!788A  vv&6!7!788A  ##@A,=,=a,@,@@@@ 	  vv&6!7!788A  vv&6!7!788A  ##@A,=,=a,@,@@@@  E E$$T66*:%;%;<<$$TAGQ<!c'1*F%G%GHH$$Q''D0A0A!0D0DDDDD  E E$$T66*:%;%;<<$$TAq3w<*@%A%ABB$$Q''D0A0A!0D0DDDDD  = =$$T66*:%;%;<<$$TAq3w<*@%A%ABB  ##<(9(9!(<(<<<<< 	  vv&6!7!788A  &>&>&>!?!?@@AQ8A$5$5a$8$8888 	  w&8!9!9::A  vx&8!9!9::A  ##@A,=,=a,@,@@@@ 	  y)&<!=!=>>A  x&:!;!;<<A  ##@A,=,=a,@,@@@@@@r   offseti0ii  r/  c                 *   | }d| z   }t          j        ||          }t          j        |j        d          }t          j        |j        d          }t          j                            |d           t          j                            |d           d S )Nih  r   )axisr   r:   )r   arcr   minr   maxrD   assert_allclose)rF  lowhighr   minsmaxss         r   test_full_arcrQ    s    
C<D8CD6$-a(((D6$-a(((DJtR(((J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        
                    }|                    |           rJ |                     |          rJ d S )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_typerA  	this_pathoutline_paths     r   !test_disjoint_zero_length_segmentrX    s   
=)=)=)=)=)+ 	, 	, 	!!!888: :I 
=)=)=)=)=)+ 	, 	, 	~	' 	' 	'( (L ++I66666((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                    }|                    |           sJ |                     |          sJ d S rk   )r   r   rl   rA  rU  s     r   "test_intersect_zero_length_segmentrZ    s    
FF
 	 	 I 
FHHF	
 	 	 L ''	22222$$\2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 ]J}|                    d          }t          |          dk    sJ |j        d         t           j	        k    sJ Kd S )NT)remove_nansr:   r   )
r   r   rm   rh   	CLOSEPOLYCURVE3cleanedrn   r   r   )r   rp   r_  s      r   test_cleanup_closepolyr`    s    	rvrv 01k4>*	, 	, 	rvrv 0122 	rvrv 026262Bvrv k4;T^D	F 	FE  - -)))--7||q    }Q49,,,,,- -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   CURVE4r^  r!  _test_paths_test_path_extentsr   re   r]  r   ri   rs   r   machiner   r   r   r   r   r   r   r   r  r  r  r)  r,  concatenaterE  rangerQ  rX  rZ  r`   r   r   <module>rt     s{    				     , , , , , ,                    & & & & & & : : : : : :       ! ! ! ! ! ! / / / / / /7 7 7  $ $ $&0 0 0 )
dQQQ  u&
dWWW  &
d 9 9 9  ' dQQQ  '
d333DAAA5%P
d333DAAA5%P
RS S= =S S=: : : 	D1a&1a&1a&1a&	)Kdk4;?A A 	D1a&1a&1a&	!DKdk#JKKD1a&1a&	DK566D1a&DK=!!
( ( (  ##k;M*N*NOO
9 
9 PO
9 $.$))DEEB B FEB  	C 	C 	C -.D/x/11W<<ee!E E E"- "-E E"-J &'T:::A A ;:A& +,G<<<  =<
" 
" 
"9 9 9 :,D111  21 $%4888# # 98# %&D999  :9 :,iT999/x/11W<<ee!E E E E E 7  7  7FA A A*/ / /+ + +  0 00 0 0 ! !  NA NA NAb 55sB#7#788( ( 98(7 7 703 3 3&- - - - -r   