
    ^j                        d Z ddlZddlZddlmZmZ ddlZddlZ	ddl
mZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZ ddlmZ ddlmZmZm Z!m"Z#m$Z%m&Z& d Z'd	 Z(d
 Z)d Z* e       d        Z+ e       d        Z,d Z- edgd      d        Z. edgdd      d        Z/ edgdd      d        Z0e	jb                  je                  d      d        Z3 edgdd      d        Z4d Z5 e       d        Z6d  Z7 ed!gdd ejp                         d"k(  rdnd#$      d%        Z9d& Z: ed'gdd      d(        Z; ed)gd      d*        Z< ed+gdd ejp                         d"k(  rdnd,-      d.        Z= e       d/        Z> e       d0        Z?d1 Z@d2 ZAd3 ZBd4 ZC e       d5        ZDd6 ZEd7 ZF ed8gd      d9        ZG ed:gd      d;        ZHd< ZIej                  j                  d=d>      d?        ZL ed@gd      dA        ZM ed@gd      dB        ZN ed@gd      dC        ZOdD ZPej                  j                  dEdF      dG        ZQdH ZRdI ZSdJ ZTe	jb                  je                  d      dK        ZUdL ZVdM ZW edNgdOdPgddQ      dR        ZX eg dST      dU        ZY eg dST      dV        ZZdW Z[ eg dXT      dY        Z\dZ Z]d[ Z^d\ Z_d] Z`d^ Zad_ Zbd` Zcda Zddb Zedc Zf eddgdd      de        Zgy)fz'
Tests specific to the patches module.
    N)assert_almost_equalassert_array_equal)	AnnulusEllipsePatchPolygon	RectangleFancyArrowPatch
FancyArrowBoxStyleArc)image_comparisoncheck_figures_equal)Bbox)collectionscolorspatchespath
transformsrcParamsc                     ddgddgddgg} | ddggz   }t        | d      }|j                         sJ t        |j                         |       |j	                  |        t        |j                         |       t        |d      }t        |j                         |        |j	                  |       t        |j                         |        t        | d      }|j                         rJ t        |j                         |        |j	                  |        t        |j                         |        t        |d      }t        |j                         |       |j	                  |       t        |j                         |       y )Nr      TclosedF)r   
get_closedr   get_xyset_xy)xyxyclosedps      h/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/matplotlib/tests/test_patches.pytest_Polygon_closer"      s.    a&1a&1a&	!BaVH}H 	4 A<<>>qxxz8,HHRLqxxz8, 	'Aqxxz2&HHXqxxz2& 	5!A||~qxxz2&HHRLqxxz2& 	&Aqxxz8,HHXqxxz8,    c                     ddg} d}d}d}t        | ||      }t        |j                         |       t        |j                         d       d}|j	                  d       t        |j                         |       t        |j                         d	       d
} t        j                         j                  g | t        j                  |       }|j                  |      }|j	                  |       t        |j                         |       | d   |dz  z   | d   |dz  z   g} t        | ||      }t        |j                         |       d}|j	                  d       t        |j                         |       t        |j                         |        d
} t        j                         j                  g | t        j                  |       }|j                  |      }|j	                  |       t        |j                         |       y )N
      r      )r%   r&   )   r&   )r)      )r%   r*   )g      %@   )r(   )r%   r+   )   r+   )r,   r&   Z   )	        4@!   r   ))      '@r/   )r1        5@)      #@r2   )r3   r/   )r	   r   get_corners
get_center	set_anglemtransformsAffine2Drotate_aroundnpdeg2rad	transformr   r   )	locwidthheightcornersrectcorners_rotthetatellipses	            r!   test_corner_centerrF   :   s   r(CEF 7GS%(Dt'')73t(*5 9KNN2t'');7t()4 E,,,EcE2::e3DEA++g&KNN5((*K8 q6EAIq6FQJ Cc5&)G w**,g6 IKbw**,k:w))+S1 E,,,EcE2::e3DEA++g&Ke++-{;r#   c            
      ~   t        dddd      } t        | j                         ddg       t        | j                         ddg       t        dddd      } t        | j                         | j                  d   | j
                  dz  t        j                  d	      z  z   | j                  d   | j
                  dz  z   f| j                  d   | j
                  dz  t        j                  d	      z  z
  | j                  d   | j
                  dz  z
  fg       t        | j                         | j                  d   | j                  dz  z
  | j                  d   | j                  dz  t        j                  d	      z  z   f| j                  d   | j                  dz  z   | j                  d   | j                  dz  t        j                  d	      z  z
  fg       t        j                  | j                               \  }}t        j                  j                  ||z   dz  | j                         t        j                  | j                               \  }}t        j                  j                  ||z   dz  | j                         t        d
ddd      } t        j                  | j                               \  }}t        j                  j                  ||z   dz  | j                         t        j                  | j                               \  }}t        j                  j                  ||z   dz  | j                         y )Nr   r   r   r   r>   r?   angle        rL   r'   r            )gjt@g+η%gQ@gGz?gR1Q@)r   r   get_verticesget_co_verticescenterr>   r:   sqrtr?   arraytesting)rE   v1v2s      r!   test_ellipse_verticesrX   j   s   q!<G	Z  !	Z 
 q"=G q!GMMA$5
$BBq!GMMA$55
 q!GMMA$5
$BBq!GMMA$55		
 ! q!GNNQ$66q!GNNQ$6$CC
 q!GNNQ$66q!GNNQ$6$CC		
 XXg**,-FBJJ""BGq='..AXXg--/0FBJJ""BGq='..A)t5QGXXg**,-FBJJ""BGq='..AXXg--/0FBJJ""BGq='..Ar#   c                     t        j                  ddg      } d}d}d}t        | |||      }t        | ||      }t         j                  |z  dz  }t        j                  t        j
                  |      t        j                  |       gt        j                  |      t        j
                  |      gg      }t        j                  ||j                         | z
        j                  | z   }t        |j                         |       y )N      ?       @r'   rO   g      >@rJ        f@)r:   asarrayr	   pirT   cossininner	get_vertsTr   )	r=   r>   r?   rJ   rect1rect2	angle_radrotation_matrix	new_vertss	            r!   test_rotate_rectrj      s    
**c3Z
 CEFE c5&6E c5&)E %Ihh	!2RVVI5F4F G!#	!2RVVI5F G I JO %//*;c*ABDDsJI )95r#   c                 r   | j                         }|j                         }d}d\  }}d}t        ||||      }|j                  |       |j                         |k(  sJ t        |||      }	|	j                         dk(  sJ |j                  |	       |	j	                  |       |	j                         |k(  sJ y )NrH   r   r   rM   r\   r   )add_subplotr	   	add_patch	get_angler6   )
fig_testfig_refax_testax_refr=   r>   r?   rJ   rect_ref	rect_tests
             r!   test_rotate_rect_drawrv      s    ""$G  "F
CME6EeV59H
X5((( #uf-I A%%%i  E)))r#   c           
      J   | j                         }|j                         }d}d\  }}t        |||dddddgf      }t        |||dddg d	f      }|j                         dddgfk(  sJ |j                         dg d	fk(  sJ |j                  |       |j                  |       t        |||dddddgf      }	t        |||dddddgf      }
|	j                         dddgfk(  sJ |
j                         dddgfk(  sJ |j                  |	       |j                  |
       y )
N皙?ry   )皙?rz   rO   br      )	linewidth	edgecolor	linestyler)r   r|   r|   r   )rm   r	   get_linestylern   )rp   rq   rr   rs   r=   r>   r?   rt   	rect_ref2ru   
rect_test2s              r!   test_dash_offset_patch_drawr      s^   ""$G  "F
CME6eVqC;<q!f+GH #ufS78,6GII!!#Aq6{222""$L(9999
X
Y #ufS?@1a&kKI3vc?@1a&kKJ""$QF333##%!aV444i j!r#   c                      t        ddd      j                         d d } t        ddd      j                         d d }t        t        j                  |dd      |        y )	N)rO   r'   rH   r   r   r   )r	   rc   r   r:   roll)pos_verticesneg_verticess     r!   test_negative_rectr      sW     Xq!,668"=LVR,668"=Lrww|Q2LAr#   zclip_to_bbox.pngmpl20)stylec                  *   t        j                         \  } }|j                  ddg       |j                  ddg       t        j
                  j                  d      j                         }|xj                  ddgz  c_        |xj                  ddgz  c_        t        j
                  j                         j                         }|xj                  ddgz  c_        |xj                  dd	gz  c_        t        j
                  j                  ||      }t        j                  |d
dd      }|j                  |       t        j                  ddgddgg      }|j!                  |      }t        j                  |d
ddd      }|j                  |       y )Nir&   ijd   r,   r%         i      ?coralnone)alpha	facecolorr~   ig     `S2   igreenrN   black)r   r   lwr~   )pltsubplotsset_xlimset_ylimmpathPathunit_regular_stardeepcopyverticesunit_circlemake_compound_pathmpatches	PathPatchrn   r7   r   clip_to_bbox)	figaxr   path2combinedpatchbboxresult_pathresult_patchs	            r!   test_clip_to_bboxr      sD   llnGCKKb	KKs::''*335DMMb#YMMMaWMJJ""$--/E	NNr3iN	NNr3iNzz,,T59Hw&BELLc5\B:67D''-K%%3'a7LL LLr#   patch_alpha_coloringT_classic_test)remove_textr   c                     t         j                  j                  d      } t         j                  j                         }t	        j
                  |j                  | j                  ddd   g      }t	        j
                  |j                  | j                  g      }t        j                  ||      }t        j                  |dz   |      }t        j                         }t        j                  |gdddd	      }|j                  |       t        j                  |dddd
      }|j                  |       |j!                  dd       |j#                  dd       y)z
    Test checks that the patch and collection are rendered with the specified
    alpha values in their facecolor and edgecolor.
    r|   Nr   r   r   dashdotr   r   r   r   r   r   r   g      ?r}   
linestylesr   r~   r}   r   r   r~   r'   r   r   r   r   r:   concatenater   codesr   axesmcollectionsPathCollectionadd_collectionr   r   rn   r   r   	starcirclevertsr   	cut_star1	cut_star2r   colr   s	            r!   test_patch_alpha_coloringr     s    ::''*DZZ##%FNNFOOT]]4R4-@ABENNFLL$**56E

5%(I

519e,I	B

%
%yk01i0>0?AC cy)*i)7)8:E LLKKAKKAr#   patch_alpha_overridec                     t         j                  j                  d      } t         j                  j                         }t	        j
                  |j                  | j                  d d d   g      }t	        j
                  |j                  | j                  g      }t        j                  ||      }t        j                  |dz   |      }t        j                         }t        j                  |gddddd	      }|j                  |       t        j                  |ddddd
      }|j                  |       |j!                  dd       |j#                  dd       y )Nr|   r   r   r   r         ?r   r   )r}   r   r   r   r~   )r}   r   r   r   r~   r'   r   r   s	            r!   test_patch_alpha_overrider   /  s   
 ::''*DZZ##%FNNFOOT]]4R4-@ABENNFLL$**56E

5%(I

519e,I	B

%
%yk01i,00>0?	AC
 cy)*i%))7)8	:E
 LLKKAKKAr#   defaultc                  f    t        j                  dddd      } | j                         d   dk(  sJ y )NrH   r   r   )r   r   r   )r   Circleget_facecolor)cs    r!   test_patch_color_noner   O  s2     	

61a8A??Q1$$$r#   patch_custom_linestylec                     t         j                  j                  d      } t         j                  j                         }t	        j
                  |j                  | j                  d d d   g      }t	        j
                  |j                  | j                  g      }t        j                  ||      }t        j                  |dz   |      }t        j                         }t        j                  |gddgdd      }|j                  |       t        j                  |dddd	      }|j                  |       |j!                  dd
       |j#                  dd
       y )Nr|   r   r   r   )r   )r      r%   r   r   r   r   r   r   r   r   r   r'   r   r   s	            r!   test_patch_custom_linestyler   W  s    ::''*DZZ##%FNNFOOT]]4R4-@ABENNFLL$**56E

5%(I

519e,I	B

%
%	!3 4y2C c1y2E LLKKAKKAr#   c                     t         j                  j                  d      } t         j                  j                         }t	        j
                  |j                  | j                  d d d   g      }t	        j
                  |j                  | j                  g      }g d}t        j                         \  }}t        |      D ]I  \  }}t        j                  ||z   |      } t        j                  | d|dd      }	|j                  |	       K |j                  ddz   g       |j                  d|dz   g       |j                   j#                          y )	Nr|   r   )----.:soliddashedr   dottedrO   r   r   r   r   )r   r   r   r   r:   r   r   r   r   r   	enumerater   r   rn   r   r   canvasdraw)
r   r   r   r   r   r   r   ilsr   s
             r!   test_patch_linestyle_accentsr   t  s    ::''*DZZ##%FNNFOOT]]4R4-@ABENNFLL$**56E:J llnGC:& 2zz%!)U+""4-."-6-68 	U KKQUKKQUJJOOr#   c                 `   t         j                  j                         }| j                         }|j                         }t	        g d      D ]  \  }}t        j                  |j
                  |z   |j                        }t        j                  |d|dd      }|j                  |       t        j                  |dddd      }|j                  |        |j                  dd	z   g       |j                  d|d	z   g       |j                  d|d	z   g       |j                  d|d	z   g       y )
N)r   None  rO   r   r   r   r   r   r   r   )r   r   r   rm   r   r   r   r   r   rn   r   r   )	rp   rq   r   rr   rs   r   r   r   r   s	            r!   test_patch_linestyle_noner     s   ZZ##%F""$G  "F45  2zz&//A-v||<""4-."-6-68 	% ""4-.#-6-35 	  b!a%[!b!a%[!
OORQK 
OORQK r#   c                  6   dddddd} | j                         D ci c]  \  }}||d    }}}t        j                  di |}| j                         D ]=  \  }\  }}}t        ||      |k(  sJ  t        ||      |       t        ||      |k(  r=J  y c c}}w )	N)rH   rl   
set_center)r   r,   
set_radius)r'   rO   	set_width)r   rM   
set_theta1)-   r   
set_theta2)rR   r   r>   theta1theta2r    )itemsr   Wedgegetattr)	
param_dictkv	init_argswattrold_vnew_vfuncs	            r!   test_wedge_movementr    s    :+.12	4J &0%5%5%78TQAaD8I8##A&0&6&6&8 )""ueTq$5(((4q$5((() 9s   Bwedge_rangex86_64g;On?)r   r   tolc            
      b   t        j                         } d}ddgddg||dz   gddgd	d
gddgddgddgddgg	}t        |      D ]G  \  }\  }}|dz  }|dz  }t        j                  |dz  |dz  fd||ddd      }| j                  |       I | j                  dd       | j                  dd       y )Ngo͂@g,(J@g 7
m@g,(J@gm7
m@r]   r   h  r-   i  iL   i|  r   .   rO   r   r   r   )r   r~   r   r   r,   r.   )r   r   r   r   r   
add_artistr   r   )	r   t1argsr   r   r   xywedges	            r!   test_wedge_ranger    s     
B	B,'!34eHN3KHHHD  ) FFEFAq1u~q&&)/31F 	e KKAKKAr#   c                  p   t        j                  dd      } t        |       dk(  sJ t        j                  dddd      } t        |       dk(  sJ t        j                  dddd      } t        |       d	k(  sJ t        j
                  ddddd
      } t        |       dk(  sJ t        j                  ddddd
d      } d}t        |       |k(  sJ t        j                  dddd      } d}t        |       |k(  sJ t        j                  ddd      } t        |       dk(  sJ t        j                  ddd      } t        |       dk(  sJ t        j                  ddd      } t        |       dk(  sJ t        j                  g dd      }t        j                  |      } t        |       dk(  sJ t        j                  t        j                   d             } t        |       d!k(  sJ ddgddgddgg}t        j                  |      } t        |       d"k(  sJ t        j"                  |#      } t        |       d$d% d&k(  sJ t        j"                  dd      } t        |       d'k(  sJ t        j$                  ddd(      } t        |       d)k(  sJ t        j&                  | dd      }t        |      d*k(  sJ y$)+z
    Check that patches have nice and working `str` representation.

    Note that the logic is that `__str__` is defined such that:
    str(eval(str(p))) == str(p)
    r   r'   rO   )r   radiuszCircle(xy=(1, 2), radius=3)rN   r   rI   z.Ellipse(xy=(1, 2), width=3, height=4, angle=5)z0Rectangle(xy=(1, 2), width=3, height=4, angle=5)r|   )rR   r   r   r   r>   z6Wedge(center=(1, 2), r=3, theta1=4, theta2=5, width=6)r   )r   r>   r?   rJ   r   r   z>Arc(xy=(1, 2), width=3, height=4, angle=5, theta1=6, theta2=7))rO   rN   r   r'   )r   r   r>   rJ   z.Annulus(xy=(1, 2), r=(3, 4), width=1, angle=2)r&   )r  z3RegularPolygon((1, 2), 20, radius=5, orientation=0))r   r  
resolutionz.CirclePolygon((1, 2), radius=5, resolution=20))r>   r?   z)FancyBboxPatch((1, 2), width=3, height=4))r  r'   r'   r  Tr   zPathPatch3((1, 2) ...)r   r'   z
Polygon0()zPolygon3((1, 2) ...))r   N   zFancyArrowPatch(Path(array(zFancyArrowPatch((1, 2)->(3, 4))datazConnectionPatch((1, 2), (3, 4))z'Shadow(ConnectionPatch((1, 2), (3, 4))))r   r   strr   r	   r   r   r   RegularPolygonCirclePolygonFancyBboxPatchr   r   r   r   r:   emptyr
   ConnectionPatchShadow)r    expectedr   r  ss        r!   test_patch_strr%    s    	6!,Aq62222F!AQ?Aq6EEEEfAaqAAq6GGGGf!AQGAq6MMMMa1QOAOHq6XFfAQ?A?Hq6X15Aq6JJJJ&rBAq6EEEEa:Aq6@@@@ ::.t<D4 Aq6----&)*Aq6\!!!FQFQF#DAq6++++  d+Aq6#2;7777  0Aq66666  8Aq666661a Aq6>>>>r#   multi_color_hatchc            	      .   t        j                         \  } }|j                  t        d      t        dd            }t	        |      D ];  \  }}|j                  d       |j                  d|        |j                  d       = |j                          |j                  d       t        d      D ]U  }t        j                  j                  dd| i      5  t        |d	z
  dfd
ddd      }d d d        |j                         W y # 1 sw Y   xY w)Nr   r   r|   r   C/Fhatch.color皙?rz   //)hatchfc)r   r   barranger   set_facecolorset_edgecolor	set_hatchautoscale_view	autoscalemplr   contextr	   rn   )r   r   rectsr   rA   r   s         r!   test_multi_color_hatchr9    s    llnGCFF58U1a[)EU# 46"Qqc7#s
 LL1X YY1#w78 	I1v:q/2qHA	I
Q	I 	Is   DD	zunits_rectangle.pngc                     dd l mc m}  | j                          t	        j
                  d| j                  z  d| j                  z  fd| j                  z  d| j                  z        }t        j                         \  }}|j                  |       |j                  d| j                  z  d| j                  z  g       |j                  d| j                  z  d| j                  z  g       y )	Nr   r   r|   r   r'   rN   r   r.   )matplotlib.testing.jpl_unitsrU   	jpl_unitsregisterr   r	   kmr   r   rn   r   r   )Ur    r   r   s       r!   test_units_rectangler@  )  s    ,,JJLAaddFAaddF+QqttVQqttV<AllnGCLLOKK144144 !KK144144 !r#   zconnection_patch.pngg~jt?)r   r   r  c            	         t        j                  dd      \  } \  }}t        j                  dddd||d      }|j	                  |       d}d	}d
}|j                         }t        j                  ||||d      }|j	                  |       y )Nr   r'   rx   )?rB  r  ->)xyAxyBcoordsAcoordsBaxesAaxesB
arrowstyle)333333?rZ   )rL   皙?zaxes fractionr   )rD  rE  rF  rG  rJ  )r   r   r   r!  r  get_yaxis_transform)r   ax1ax2conrD  rE  rF  rG  s           r!   test_connection_patchrQ  6  s     ll1a(OC#s

"
"zz+16),C.24C NN3
C
CG%%'G

"
"sW+2sDCNN3r#   c           	         | j                  dd      \  }}t        j                  dd|dddd	      }| j                  |       |j                  dd      \  }}|j                  }t
        j                  d
   t
        j                  d<   t        j                  dd||j                  dz
  |j                  dz
  fddd	      }|j                  |       y )Nr   r'   333333?rL  r  iifigure pixelsrC  r   rD  rF  rH  rE  rG  rJ  shrinkB
figure.dpisavefig.dpirM   r&   )	r   r   r!  r  r   r   r   r>   r?   )rp   rq   rN  rO  rP  bbs         r!   test_connection_patch_figr\  J  s    
   A&HC

"
"fC$C 1%HC	B"%,,|"<CLL

"
"fCXX]BIIN+_$C sr#   c           	         d}d}| j                  dd      \  }}t        j                  |d||ddd	      }| j                  |       t        j
                  d
   t        j
                  d<   |j                  dd      \  }}|d   |j                  dz  z  |d   |j                  dz  z  f}|d   |j                  dz  z  |d   |j                  dz  z  f}t        j                  |d||ddd	      }|j                  |       y )NrS  rU  r   r'   zaxes pointszfigure pointsrC  r   rW  rY  rZ  r   H   zaxes pixelsrV  )r   r   r!  r  r   r   dpi)	rp   rq   xyA_ptsxyB_ptsrN  rO  rP  xyA_pixxyB_pixs	            r!   "test_connection_patch_pixel_pointsrd  a  s   GG  A&HC

"
"wS'..2A?C "%,,|"<CLL1%HCqz7;;r>*GAJB,GHGqz7;;r>*GAJB,GHG

"
"wS'..2A?C sr#   c                      ddl m } m}  | dddddd      } |d      }t        j                  |df|d      }t	        j
                         \  }}|j                  |       y )Nr   )datetime	timedelta  r      )seconds)rf  rg  r   r	   r   r   rn   )rf  rg  startdeltar   r   r   s          r!   test_datetime_rectanglerm  w  sV    ,T1aAq)Eb!Eqz5!4EllnGCLLr#   c                  Z   ddl m }   | dddddd      } | ddd      }t        j                  t              5  t	        j
                  |df|d       d d d        t        j                  t              5  t	        j
                  d|fd|       d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)Nr   rf  rh  r   i  r   )rf  pytestraises	TypeErrorr   r	   )rf  rk  dt_deltas      r!   test_datetime_datetime_failsrt    s    !T1aAq)Ea#H	y	! 4E1:x34 
y	! 4Au:q(34 44 44 4s   B2B!B!B*c            
         t        j                  ddd      } g d}| j                         }| j                         }| j	                  d       }t        j                  |D cg c]  }|j                  |||       c}      }t        j                  |D cg c]  }| j                  |       c}      }t        j                  ||k(        sJ y c c}w c c}w Nr   r   r   rZ   ))rL   r   )rL  r   )r   r   rw  )	r   r   get_pathget_transform_process_radiusr:   rT   contains_pointall)ellpointsr   r<   r  pointr#  results           r!   test_contains_pointr    s    


:sC
0C>F<<>D!!#I  &FxxBHJ9> ,,U-6-35 J KH XXfEUs))%0EFF66&H$%%%	J Fs    CCc                     t        j                  ddd      } g d}| j                         }| j                         }| j	                  d       }|j                  |||      }| j                  |      }t        j                  ||k(        sJ y rv  )r   r   rx  ry  rz  contains_pointsr:   r|  )r}  r~  r   r<   r  r#  r  s          r!   test_contains_pointsr    s    


:sC
0C>F<<>D!!#I  &F##FIv>H  (F66&H$%%%r#   c                 "   t        j                  ddg      }t        j                  ddg      }dt        j                  d<   | j	                         }t        j                  |dd      }t        j                  ||d   |d	   
      }|j                  |       |j                  |       |j	                         }t        j                  |dd      }t        j                  ||j                  dz  |z  z   ddt        j                  t        j                  |j                                     dz  t        j                  t        j                  |j                                     dz  d      }|j                  |       |j                  |       y )NrL  rT  ry   figurerZ  r   )r   r>   r?   r   r   )oxoyr^  )r   r>   r?   r.  ecr   )r:   rT   r   r   r   r   r	   r"  rn   r_  r^   mcolorsto_rgbr   )rp   rq   r   dxya1rA   shadowa2s           r!   test_shadowr    s9   	2r(	B
((B8
C #+CLL				B2b9D__Tc!fQ8FLLLL				B2b9Db 3&&b::gnnT%7%7%9:;b@::gnnT%7%7%9:;b@	F
 LLLLr#   c                  r    ddl m }   | ddd      }t        j                         \  }}t        d|fd|f      }y )Nr   ro  i  r   {Gz?)rf  r   r   r
   )rf  dtimer   r   arrows        r!   test_fancyarrow_unitsr    s6    !T1a EllnGCQJu6Er#   c                     t        j                         \  } }|j                  ddddddd      }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g      }t        j
                  |t        j                  |j                  d            sJ 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g      }|j                  ddddddd       t        j
                  |t        j                  |j                  d            sJ y )Nr   r%   r   r   r   )head_length
head_widthr>   gGz+@g33333$@gL#@g\(\$@gp=
ף#@g
ףp=
?g
ףp=
ǿr'   g(\µ0@gGz.@g\(\?g(\?   )r  r  dxdyr>   r  r  )	r   r   r  r:   rT   allcloseroundr   set_datar   r   r  	expected1	expected2s        r!   test_fancyarrow_setdatar    s/   llnGCHHQ2rqQbHIEu~~~e}~e}e}u~	I ;;y"((5;;":;;;u~u~u~t}t}u~u~u~	I 
NN
qRBaA1   ;;y"((5;;":;;;r#   zlarge_arc.svgc                  r   t        j                  dd      \  } \  }}d}d}d}||fD ]F  }t        ||f||dd      }|j                  |       |j	                          |j                  d       H |j                  d	d
       |j                  dd       |j                  dd       |j                  dd       y )Nr   r'      ii  r   )r   colorequalr   r,   r   r|   iXiPF  ii  )r   r   r   rn   set_axis_off
set_aspectr   r   )r   rN  rO  r  r  diameterr   as           r!   test_large_arcr    s    ll1a(OC#sAAHCj A(q<
Q

g	 LLALLA LLLLr#   zall_quadrants_arcs.svgc                     t        j                  dddd      \  } }d}d}d}d}t        |j                         |      D ]>  \  }\  }}d	}	t        d
d
t	        j
                  d      z  f||f      D ]  \  }
}t        ||	      D ]w  \  }\  }}t        ||z  |
z  ||z  |
z  f||z  ||z  dd| d|z   t	        j                  t	        j                  ||            dz  d| d| 	      }|j                  |       y dz   }	 |j                  | dz  |dz         |j                  | dz  |dz         |j                  d	d       |j                  d	d       |j                          |j!                  d       A y )Nr'   F)r%   r%   )squeezefigsizei ))r   r   )r   r   rl   )r   r   ))r   r   )r   r   )r   r   )r   r   )r  )r'   ry   )r'   r  )r'   gMbP?r   gH.?)rk  rN   r(  r   r
  zbig )r   r  zorderrJ   labelgidi  r   )r  r  )r   r   zipravelr:   rS   r   r   rad2degarctan2rn   r   r   axhlineaxvliner  r  )r   ax_arrscalediag_centerson_axis_centersskewsr   sxsyr   prescalecentersjx_signy_signr  s                   r!   test_rotated_arcsr    s   ,,q!UHEKCE7L8O9EFLLNE2 HR!$i)rwwqz1I%J'6&E"G 	Hg'0'B  ##FFe^h.e^h.0BJBJaS'q5**RZZ%?@3F *qc
 Q  !A#	$ 	UFTM54<0
UFTM54<0


1C
 


1C
 

g3r#   c                      t        j                  t        d      5  t        ddddd       d d d        y # 1 sw Y   y xY w)NzGot unknown shape: 'foo'matchr   rL  foo)shape)rp  rq  
ValueErrorr   r   r#   r!   test_fancyarrow_shape_errorr  "  s6    	z)C	D 01ac/0 0 0s   6?z
fmt, match))r  zUnknown style: 'foo')z	Round,fooz%Incorrect style argument: 'Round,foo'c                 z    t        j                  t        |      5  t        |        d d d        y # 1 sw Y   y xY w)Nr  )rp  rq  r  r   )fmtr  s     r!   test_boxstyle_errorsr  '  s.    
 
z	/   s   1:zannulus.pngc            
          t        j                         \  } }t        dddd      }t        ddddd	d
dd      }|j                  |       |j                  |       |j	                  d       y )Nrw  rL  皙?gr.  r   rT  ry   r   mr{   r   xxxr.  r  r   r-  r  )r   r   r   rn   r  r   r   cirr}  s       r!   test_annulusr  0  sb     llnGC
*c4C
0C
*j#rS5:CLLLLMM'r#   c            
      >   t        j                         \  } }t        dddd      }t        ddddd	d
dd      }|j                  |       |j                  |       |j	                  d       d|_        d|_        d|_        d|_        d|_        d|_        d|_        y )NrK   rL  r  r  r  r  ry   r   r  r{   r   r  r  r  rw  r  r  r   )	r   r   r   rn   r  rR   radiir>   rJ   r  s       r!   test_annulus_settersr  <  s     llnGC
(C#
.C
(FCS5:CLLLLMM'CJCICICJCICICIr#   c            
         t        j                         \  } }t        dddd      }t        ddddd	d
dd      }|j                  |       |j                  |       |j	                  d       d|_        |j                  d       |j                  d       |j                  dk(  sJ d|_	        d|_        |j                  d       |j                  d       |j                  dk(  sJ d|_	        d|_
        y )NrK   rL  r  r  r  r  ry   r   r  r{   r   r  r  r  rw  )rL  rL  r  rT  r  r   )r   r   r   rn   r  rR   set_semimajorset_semiminorr  r>   rJ   r  s       r!   test_annulus_setters2r  Q  s     llnGC
(C#
.C
(FCS5:CLLLLMM'CJcc99
"""CICJcc99
"""CICIr#   c                      ddg} t        | | g      j                  }t        j                  t	        | g      j                         j                  |k(        sJ y )Nr   )r   extentsr:   r|  r   get_extents)r  correct_extentss     r!   test_degenerate_polygonr  j  sL    FEE5>*22O66'5'"..088OKLLLr#   kwarg)r~   r   c                     t        j                  t        d      5  t        dddi| di d d d        y # 1 sw Y   y xY w)NzQSetting the 'color' property will override the edgecolor or facecolor properties.r  r  r   r   )rp  warnsUserWarningr   )r  s    r!   test_color_override_warningr  p  sC    	kE
F 1 	0G0w/01 1 1s   5>c                  j    t        t        j                  d            } | j                         g k(  sJ y )Nr  )r   r:   zerosrc   )polys    r!   test_empty_vertsr  x  s*    288F#$D>>r!!!r#   c                      t               } | j                  t        d           | j                         t        d    k(  sJ | j                  d        | j                         t        d   k(  sJ y )Nzpatch.antialiased)r   set_antialiasedr   get_antialiasedr   s    r!   test_default_antialiasedr  }  sk    GE	h':;;<  "84G+H'HIII	$  "h/B&CCCCr#   c                      t               } | j                  d       | j                  d        | j                         dk(  sJ y )Nr   r   )r   set_linestyler   r  s    r!   test_default_linestyler    s<    GE		 G+++r#   c            
          t        j                         \  } }|j                  t        dddddd             | j	                          y )NrH   r   Fr   r   )fillr}   r   )r   r   rn   r	   draw_without_rendering)r   r   s     r!   5test_patch_zero_linewidth_dashed_uses_solid_gc_dashesr    s>    llnGCLL15A? @ r#   c                  B    t               } | j                         dk(  sJ y )Nbutt)r   get_capstyler  s    r!   test_default_capstyler    s     GE6)))r#   c                  B    t               } | j                         dk(  sJ y )Nmiter)r   get_joinstyler  s    r!   test_default_joinstyler    s     GE G+++r#   autoscale_arcpngsvg)
extensionsr   r   c                  p   t        j                  ddd      \  } }t        ddddd      gt        d	d
ddd      gt        d	d
ddd      t        d	dddd      t        d	dddd      t        d	dddd      gf}t        ||      D ]-  \  }}|D ]  }|j	                  |        |j                          / y )Nr   rO   )rN   r   )r  rH   r   r-   )r   r   rw        ?r   r%   r&   g      @n   x         @r     g      @i6  i@  )r   r   r   r  rn   r5  )r   axs	arc_listsr   arcsarcs         r!   test_autoscale_arcr    s     ||Aq&1HC	VQ!B	/0	Zc"R	89	Zc"R	8	Zc#c	:	Zc#c	:	Zc#c	:	<=I Y' D 	CLL	
r#   )r  r  pdfeps)r  c                 "   t        ddgddddd      }t        ddgddddd      }t        j                  |gdd	      }|j                         }|j	                  |       |j                          | j                         j                  |       y )
Nr   r   r   <   r&   r   r   rJ   r   r   )r   
facecolors
edgecolors)r   r   PatchCollectionr   rn   r4  r   )rp   rq   arc1arc2r   rs   s         r!   test_arc_in_collectionr    s    BxQq2>DBxQq2>D

&
&v&257CF
T
&&s+r#   c                    t        ddgddddd      }t        ddgddddd      }|j                         j                  |       | j                         j                  |       |j                  d       |j	                  d       y )	Nr   r   r   r  r&   r  r  r%   )r   r   rn   r   r6   )rp   rq   r  r  s       r!   test_modifying_arcr    sx    BxQq2>DBxa"B?D  &!!$'NN2NN2r#   c                  <   t        j                         \  } }t        j                  j	                  dddd      }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g      }t        j                  |t        j                  |j                         d            sJ 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g      }|j                  dddd       t        j                  |t        j                  |j                         d            sJ y )Nr'   r   r%   gffffff?rL   g @g       g       @gffffff@r[   g      $@g333333?g(\?g{Gz?gQ?g{GzgGz@gq=
ףp@gQ	@gGz@r  g{Gz@gQ@gRQ@g(\@r   rO   r,   g333333?)r  r  r  r>   )r   r   r6  r   Arrowr:   rT   r  r  rc   r  r  s        r!   test_arrow_set_datar!    s%   llnGCKKaAr*E	r
	c
	b		b		S		b		b		b		I ;;y"((5??+<a"@AAA




r


		I 
NNRA!3N/;;y"((5??+<a"@AAAr#   )r  r  r  r  c           	         | j                         }|j                         }d}t        j                  d|i      5  |j                  t	        j
                  dddd             d d d        |j                  t	        j
                  dddd             |j                  d   j                  |       |j                  d   j                         |k(  sJ |j                  d   j                         |k(  sJ y # 1 sw Y   xY w)Nr[   zhatch.linewidthrH   r   r  r-  r   )	rm   r   
rc_contextrn   r   r	   r   set_hatch_linewidthget_hatch_linewidth)rp   rq   rr   rs   r   s        r!    test_set_and_get_hatch_linewidthr'    s    ""$G  "F	B	*B/	0 F++FAqDEF h((ASABOOA**2.>>!002b888??1113r999F Fs   )C66C?c            	      T   t        j                  ddi      5  t        dddddd      } t        j                  | j                         d      sJ t        j                  | j                         d      sJ t        dddd	      } | j                  d
       t        j                  | j                         d
      sJ | j                  d       t        j                  | j                         d      sJ t        dddd	      } | j                  d       t        j                  | j                         d      sJ | j                  d       t        j                  | j                         d      sJ 	 d d d         j                  t        j                  d             y # 1 sw Y   .xY w)Nr*  edgerH   r   r,  redyellow)r-  r  
hatchcolorr#  orangecyanpurpler   rO   )r6  r$  r	   r  
same_colorget_edgecolorget_hatchcolorr2  set_hatchcolorr:   onesrA   s    r!   #test_patch_hatchcolor_inherit_logicr6    sq   	/	0 CATe$,.!!$"4"4"6>>>!!$"5"5"7BBB AT28$!!$"5"5"7BBBF#!!$"5"5"7@@@ AT2H%!!$"5"5"7BBB7#!!$"5"5"7BBB'C, 	
#-C Cs   EFF'c            	      F   t        ddddd      } t        j                  | j                         d      sJ t	        j
                  ddi      5  t        ddddd      } d d d        t        j                  | j                         d      sJ t	        j
                  ddi      5  t        dddddd	
      } d d d        t        j                  | j                         d      sJ t	        j
                  ddi      5  t        dddd      } d d d        t        j                  | j                         d      sJ t	        j
                  ddi      5  t        ddddd	      } d d d        t        j                  | j                         d      sJ t	        j
                  ddi      5  t        ddddd	      } d d d        t        j                  | j                         d	      sJ t        dddddd
      } t        j                  | j                         d      sJ t        dddd      } t        j                  | j                         t        j                  d         sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   +xY w# 1 sw Y   xY w)NrH   r   r,  r   )r-  r,  r*  bluer+  r*  )r-  r,  r~   r#  )r-  r~   r)  r-  patch.edgecolor)r	   r  r0  r2  r6  r$  r   r5  s    r!   $test_patch_hatchcolor_fallback_logicr:    sk   VQ'BDd113W=== 
/	0 GATgFGd113W===	1	2 XATgQVWXd113W===
 
/	0 3AT23d113V<<<	/	0 DATUCDd113V<<< 
/	0 DATUCDd113U;;;VQ&HUDd113X>>> VQ.Dd113S\\BS5TUUU?G GX X3 3D DD Ds<   I#$I0;I=J
&J#I-0I:=J
JJ c                  ^    dt         d<   t        dddd      } | j                         dk(  sJ y )NFpatch.force_edgecolorrH   r   r   r   )rL   rL   rL   rL   r   r	   r1  r5  s    r!   )test_facecolor_none_force_edgecolor_falser?  9  s5    (-H$%VQV4D#7777r#   c                  ^    dt         d<   t        dddd      } | j                         dk(  sJ y )NTr<  rH   r   r   r=  )rL   rL   rL   r   r>  r5  s    r!   (test_facecolor_none_force_edgecolor_truerA  ?  s5    (,H$%VQV4D#5555r#   c                  <   dt         d<   dt         d<   t        dddd      } t        j                  | j	                         t         d         rJ d	t         d<   dt         d<   t        dddd      } t        j                  | j	                         t         d         sJ y )
NFr<  r*  r9  rH   r   r   r=  T)r   r	   r  r0  r1  r5  s    r!   -test_facecolor_none_edgecolor_force_edgecolorrC  E  s     ).H$%"'HVQV4D!!$"4"4"6AR8STTT )-H$%"'HVQV4Dd002H=N4OPPPr#   c                  b    t        j                         \  } }|j                  g g g g       }|J y )N)r   r   r  )r   r   r  s      r!   test_empty_fancyarrowrE  T  s1    llnGCHHRR$Er#   c                      t        ddd      } | j                         J | j                  d       t        j                  | j                         d      sJ | j                  d       | j                         J y)z0Test that edgegapcolor can be set and retrieved.rH   r   Nr*  )r	   get_edgegapcolorset_edgegapcolorr  r0  r  s    r!   %test_patch_edgegapcolor_getter_setterrI  Z  sy    fa#E!!#+++ 
5!e446>>> 
4 !!#+++r#   c                  n    t        dddd      } t        j                  | j                         d      sJ y)z1Test that edgegapcolor can be passed in __init__.rH   r   r8  edgegapcolorN)r	   r  r0  rG  r  s    r!   test_patch_edgegapcolor_initrM  i  s1    fa8Ee446???r#   c                  |   t        ddd      } | j                  d       | j                         rJ | j                  d       | j                         sJ | j                  d       | j                         sJ | j                  d       | j                         sJ | j                  d       | j                         sJ y)	z)Test _has_dashed_edge method for patches.rH   r   r   r   r   r   )r   )r'   r'   r%   r'   N)r	   r  _has_dashed_edger  s    r!   test_patch_has_dashed_edgerP  o  s    fa#E	 %%'''	!!###	!!###	!!### 
*+!!###r#   c                      t        dddd      } t        ddd      }|j                  |        t        j                  |j	                         d      sJ y)z0Test that edgegapcolor is copied in update_from.rH   r   r   rK  rl   r'   N)r	   update_fromr  r0  rG  )patch1patch2s     r!   #test_patch_edgegapcolor_update_fromrU    sM    vq!':Fvq!$F
vf557AAAr#   zpatch_edgegapcolor.pngc            
         t        j                         \  } }t        dddddddd      }|j                  |       t	        d	dd
ddddd      }|j                  |       t        ddgddgddggddddd      }|j                  |       |j                  dd       |j                  dd       |j                  d       y)z3Visual test for patch edgegapcolor (striped edges).rx   rT  Fr8  r-  r   rO   )r  r~   rL  r   r}   )gffffff?rT  rL  r*  r+  r   ry   rK  rB  r+  r   r/  r   r   r   r  N)	r   r   r	   rn   r   r   r   r   r  )r   r   rA   rE   polygons        r!   test_patch_edgegapcolor_visualrX    s     llnGC Zc &X $3D LL j#s!&X!$3G LL SzC:Sz:!(x!%4G LLKK1KK1MM'r#   )h__doc__platformnumpyr:   numpy.testingr   r   rp  
matplotlibr6  matplotlib.patchesr   r   r   r   r	   r
   r   r   r   matplotlib.testing.decoratorsr   r   matplotlib.transformsr   matplotlib.pyplotpyplotr   r   r   r   r  r   r   r   r   r   r7   r   r"   rF   rX   rj   rv   r   r   r   r   r   r   r7  r   r   r   r   r  machiner  r%  r9  r@  rQ  r\  rd  rm  rt  r  r  r  r  r  r  r  r  markparametrizer  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r'  r6  r:  r?  rA  rC  rE  rI  rM  rP  rU  rX  r   r#   r!   <module>rf     sy     A  L L L O & 8 8
"-J-<`0Bf60 * *( " "BB %&g6 76 )*OT U< )*OT U> 9% % +,$oV W84 ! !2)  =/t?+8++-9auFF8:?@ &'TK L$ ()9	" :	" )*'t+8++-9auFF$  ,  *	
4
&&  07<> ?#73 4& +,G<! =!H0
  ( 	
 =/1 2 =/1 2( =/1 20M "<=1 >1"
D, 7! !*
,
 ?#T33   <=, >,  <= >B:  <=: >: $4&VR86Q,@$(B +,$gN Or#   