
    
3j/                        S SK r S SKrS SKrS SKrS SKJr  S SKJ	r	  S SKJ
r
  S r\R                  R                  \ R                  " 5       S:g  SS9S	 5       r\R                  R                  \ R                  " 5       S:g  SS9S
 5       rS rS rS rS r\	" S/SS9S 5       r\	" S/SS9S 5       r\	" S/SSS9S 5       rS r\	" S/SSS9S 5       r\	" S/SSS9S 5       r\	" S/SSS9S  5       r\	" S!/SSS9S" 5       r\	" S#/SSS9S$ 5       rS% rS& rS' r \	" S(/SSS9S) 5       r!S* r"S+ r#S, r$S- r%S3S. jr&S3S/ jr'\R                  RQ                  S0/ S1Q5      \
" 5       S2 5       5       r)g)4    N)pyplot)image_comparison)check_figures_equalc                 R   [         R                  " [         R                  " SS[         R                  -  S5      [         R                  " SS[         R                  -  S5      5      u  p#[         R                  " U5      n[         R
                  " U5      nU R                  " XE40 UD6nU$ )Nr         )npmeshgridarangepicossinquiver)axkwargsXYUVQs          V/home/wildlama/miniconda3/lib/python3.13/site-packages/matplotlib/tests/test_quiver.pydraw_quiverr      ss    ;;ryyAIq1yyAIq13DA
q	A
q	A
		!!&!AH    CPythonzRequires CPython)reasonc                      [         R                  " 5       u  p[        U5      nUR                  n[        R
                  " U5      nUR                  5         A[        R
                  " U5      U:  d   eg N)pltsubplotsr   r   sysgetrefcountremove)figr   r   ttXorig_refcounts        r   test_quiver_memory_leakr&      sT     llnGCBA
##COOC(MHHJ	??3-///r   c            
          [         R                  " 5       u  p[        U5      nUR                  USSSSSSS0S9n[        R
                  " U5      nUR                  5         [        R
                  " U5      U:  d   eg )	N      ?gq=
ףp?r   $2 \frac{m}{s}$Wweightboldlabelposfontproperties)r   r   r   	quiverkeyr    r!   r"   )r#   r   r   qkr%   s        r   test_quiver_key_memory_leakr2   %   ss     llnGCBA	adA'9"&.%7 
 
9B OOB'MIIK??2...r   c            	      4   SS/n [         R                  " [        SS9   [        R                  " U 5        S S S 5        [         R                  " [        SS9   [        R                  " X X X 5        S S S 5        g ! , (       d  f       NI= f! , (       d  f       g = f)Nr   r   z7takes from 2 to 5 positional arguments but 1 were givenmatchz7takes from 2 to 5 positional arguments but 6 were given)pytestraises	TypeErrorr   r   )r   s    r   test_quiver_number_of_argsr9   4   s~    	
AA	K
M 	

1
M 
K
M 	

1q$
M 
M	
M 
M
M 
Ms   A8B	8
B	
Bc                  f   SS/n / SQn[         R                  " [        SS9   [        R                  " XX 5        S S S 5        [         R                  " [        SS9   [        R                  " X X5        S S S 5        [         R                  " [        SS9   [        R                  " X X5        S S S 5        [         R                  " [        SS9   [        R                  " X X U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nk= f! , (       d  f       g = f)	Nr   r   )r   r      z?X and Y must be the same size, but X.size is 2 and Y.size is 3.r4   zMArgument U has a size 3 which does not match 2, the number of arrow positionszMArgument V has a size 3 which does not match 2, the number of arrow positionszMArgument C has a size 3 which does not match 2, the number of arrow positions)r6   r7   
ValueErrorr   r   )X2X3s     r   test_quiver_arg_sizesr?   @   s   
QB	B	  >
@ 	

22"
@ 
  B
D 	

22"
D 
  B
D 	

22"
D 
  B
D 	

222&
D 
D
@ 
@
D 
D
D 
D
D 
Ds/   C/D DD"/
C= 
D
D"
D0c                     [         R                  " 5       u  p[        R                  " [        R                  " S5      [        R                  " S5      5      u  p#[        R
                  " U5      =pE[        R                  R                  SS5      S-
  S-  nUR                  X#XEUS9  U R                  R                  5         g )N   
   r(      angles)r   r   r	   r
   r   	ones_likerandomrandr   canvasdrawr#   r   r   r   r   r   phis          r   test_no_warningsrM   U   s    llnGC;;ryy}biim4DALLOA99>>"b!B&#
-CIIaAI%JJOOr   c                  `   [         R                  " 5       u  p[        R                  " [        R                  " S5      [        R                  " S5      5      u  p#[        R
                  " U5      [        R                  " U5      pTUR                  XESSS9  U R                  R                  5         g )NrB   r   )
headlengthheadaxislength)
r   r   r	   r
   r   r   r   r   rI   rJ   )r#   r   r   r   r   r   s         r   test_zero_headlengthrQ   ^   sj     llnGC;;ryy}biim4DA66!9bffQiqIIaqI3JJOOr   zquiver_animated_test_image.pngmpl20)stylec            
      t    [         R                  " 5       u  p[        USS9nUR                  USSSSSSS	0S
9  g )NT)animatedr(   g)\(?r   r)   r*   r+   r,   r-   )r   r   r   r0   r#   r   r   s      r   test_quiver_animaterW   h   sD     llnGCB&ALLCq"4x.@  Br   zquiver_with_key_test_image.pngc                      [         R                  " 5       u  pUR                  S5        [        U5      nUR	                  USSSSSSSS	S
S.S9	  g )N皙?r(   gffffff?r   z"$2\, \mathrm{m}\, \mathrm{s}^{-1}$ifigurer*   r,   large)r+   size)anglecoordinatesr.   r/   )r   r   marginsr   r0   rV   s      r   test_quiver_with_keyr`   q   sQ    llnGCJJsOBALLCq6%+17 C  Er   zquiver_single_test_image.pngT_classic_test)remove_textrS   c                      [         R                  " 5       u  pUR                  S5        UR                  S/S/S/S/5        g )NrY   r   r   )r   r   r_   r   r#   r   s     r   test_quiver_singlere   ~   s6     llnGCJJsOIIqcA3aS!r   c                     [         R                  " 5       u  p[        [        R                  " S/5      [        R                  " S/5      S9nUR                  S/S/US   US   5      nSUS   S'   UR                  S   S:X  d   eg )N皙?g       @)uvr   rh   ri   r   )r   r   dictr	   arrayr   r   )r#   r   uvq0s       r   test_quiver_copyrn      sp    llnGC	#288SE?	3B	A3RWbg	.BBsGAJ447c>>r   zquiver_key_pivot.pngc            	         [         R                  " 5       u  p[        R                  SS[        R                  -  S2SS[        R                  -  S24   u  p#UR                  [        R                  " U5      [        R                  " U5      5      nUR                  SS5        UR                  SS5        UR                  USSSSSS	9  UR                  USSSS
S
S	9  UR                  USSSSSS	9  UR                  USSSSSS	9  g )Nr   r   y              $@   r(   r   N)r.   ESr*   )r   r   r	   mgridr   r   r   r   set_xlimset_ylimr0   )r#   r   rh   ri   qs        r   test_quiver_key_pivotry      s    llnGC88AagcM1QruuWS=01DA
		"&&)RVVAY'AKKBKKBLLCAsSL1LLAsAsSL1LLCAsSL1LLAsAsSL1r   zquiver_key_xy.pngc                  
   [         R                  " S5      n [         R                  " S5      nU [         R                  S-  -  n[         R                  " SU-  5      nUR
                  nUR                  n[        R                  " S5      u  pg[        US5       Hh  u  pUR                  SS5        UR                  SS5        UR                  XXES	S
SSS
U	S9
n
[        SS5       H  u  pUR                  XSSUSSS9  M     Mj     g )N      y              ?r   )rl   xygɿ皙?middler}   g?)pivotunitswidthscalescale_unitsrE   )r   r(   皙?)r   -   Z   r   r    b)r   r   r   r]   labelcolor)r	   r   zerosr   exprealimagr   r   ziprv   rw   r   r0   )r   r   rE   rl   r   r   r#   axsr   	angle_strrx   xr]   s                r   test_quiver_key_xyr      s     			!A
A"%%!)_F	V	B
A
A||AHCS,/
B
D#IIaA 4&  ( O[9HALL3!5#LN : 0r   zbarbs_test_image.pngc                     [         R                  " SSS5      n [         R                  " X 5      u  pSU-  SU-  pC[        R                  " 5       u  pVUR                  XX4[         R                  " X45      SS[        SSSS	9S
S9	  g )N      TF      ?r   333333?	emptybarbspacingheightviridis)
fill_emptyroundingsizescmap)r	   linspacer
   r   r   barbshypotrj   r   r   r   r   r   r#   r   s          r   
test_barbsr      sr    
B1A;;qDAa4AqllnGCHHQ1!D5$C@  r   zbarbs_pivot_test_image.pngc                      [         R                  " SSS5      n [         R                  " X 5      u  pSU-  SU-  pC[        R                  " 5       u  pVUR                  XX4SSS[        SSS	S
9S9  UR                  XSSS9  g )Nr   r   r   TF333333?r   r   r   r   )r   r   r   r   1   black)sc)r	   r   r
   r   r   r   rj   scatterr   s          r   test_barbs_pivotr      s|     	B1A;;qDAa4AqllnGCHHQ1D5$C@  BJJqrWJ%r   zbarbs_test_flip.pngc                      [         R                  " SSS5      n [         R                  " X 5      u  pSU-  SU-  pC[        R                  " 5       u  pVUR                  XX4SSS[        SSS	S
9US:  S9	  g)z'Test barbs with an array for flip_barb.r   r   r   TFr   r   r   r   r   r   )r   r   r   r   	flip_barbN)r	   r   r
   r   r   r   rj   r   s          r   test_barbs_flipr      sp     	B1A;;qDAa4AqllnGCHHQ1D5$C@1u  r   c                      [         R                  " 5       u  p[        R                  " S/5      n[        R                  " S/5      nUR	                  S/S/X#5      nSUS'   UR
                  S   S:X  d   eSUS'   UR                  S   S:X  d   eg )Nrg   g@r   r   )r   r   r	   rk   r   rh   ri   )r#   r   rh   ri   b0s        r   test_barb_copyr      s}    llnGC
#A
#A	1#sA	!BAaD447c>>AaD447c>>r   c                  b   [         R                  " S5      n [         R                  " S5      n[         R                  R                  S[         R                  " S5      -  5      n[         R                  R                  S[         R
                  " U5      -  5      n[         R                  R                  US'   [         R                  R                  US'   [        R                  " 5       u  pE[        R                  " [        5         UR                  XX#5        SSS5        g! , (       d  f       g= f)z=Test error handling when given differing sized masked arrays.r;   g      .@)r|   r   N)r	   r   mark   onesrF   maskedr   r   r6   r7   r<   r   )r   yrh   ri   r#   r   s         r   test_bad_masked_sizesr      s    
		!A
		!A
C"''$-'(A
C",,q/)*A55<<AaD55<<AaDllnGC	z	"
q 
#	"	"s   D  
D.c            	      R   [         R                  " 5       u  p[        R                  " [        R                  " S5      [        R                  " S5      5      u  p#[        R
                  " U5      =pE[        R                  R                  SS5      S-
  S-  nUR                  X#XEUSS9  g )NrA   rB   r(   rC   r}   rE   r   )	r   r   r	   r
   r   rF   rG   rH   r   rK   s          r   test_angles_and_scaler      ss    llnGC;;ryy}biim4DALLOA99>>"b!B&#
-CIIaA$I7r   zquiver_xy.pngc            
          [         R                  " [        SS9S9u  pUR                  SSSSSSSS9  UR	                  SS5        UR                  SS5        UR                  5         g )	Nequal)aspect)
subplot_kwr   r   r}   )rE   r   r   rg   )r   r   rj   r   rv   rw   gridrd   s     r   test_quiver_xyr      sX     lld'&:;GCIIaAq4qIAKK3KK3GGIr   c                     [         R                  " 5       u  p[        R                  " [        R                  " S5      [        R                  " S5      5      u  p#[        R
                  " U5      =n=pVUR                  X#XEUS9nUR                  USSSS5      nU R                  R                  5         [        UR                  R                  5       5      S:X  d   eg )Nr   rD   r   Label)r   r   r	   r
   r   rF   r   r0   rI   rJ   lenvector	get_paths)	r#   r   r   r   r   r   rE   rx   r1   s	            r   test_quiverkey_anglesr     s     llnGC;;ryy|RYYq\2DA\\!_$A$
		!V	,A	aAq'	*BJJOOryy""$%***r   c                  h   SS0SSS.SS0/n U  GH  n[         R                  " [         R                  * [         R                  S5      n[         R                  " U5      [         R                  -  S-  n[         R                  " U5      n[         R                  " U5      n[
        R                  " 5       nUR                  SS9nUR                  " X#XE40 UD6nUR                  US	S	S
S5      n	UR                  R                  5         [        U	R                  R                  5       5      S
:X  a  GM    e   g )NrE   r}   r   r   rq      aitoff)
projectionr   r   1 units)r	   r   r   rF   
zeros_liker   rZ   add_subplotr   r0   rI   rJ   r   r   r   )
kwargs_listkwargs_dictr   r   vxvyr#   r   rx   r1   s
             r   test_quiverkey_angles_xy_aitoffr     s     
4-	K #KKr*LLObee#a']]1\\!_jjl___1IIaB2k2\\!Q1i0

299&&()Q... #r   c            
      |   SS0SSS.SS0/n U  H  n/ SQn/ SQn/ SQn/ SQn[         R                  " 5       u  pgUR                  " X#XE40 UD6nUR                  USS	S
SSS9  UR                  USSS
S5      n	UR                  R                  5         [        U	R                  R                  5       5      S
:X  a  M   e   g )NrE   r}   r   r   )r   r~   r   )r   r~   r   )r   r~   r   r   rg   r   zQuiver key, length = 1rs   )r   r   r   r   r.   r   r   )	r   r   r   r0   rI   rJ   r   r   r   )
r   r   r   r   r   r   r#   r   rx   r1   s
             r   +test_quiverkey_angles_scale_units_cartesianr   /  s     
4-	K #,,.IIaA0K0
Q#3c 	 	C\\!Q1i0

299&&()Q... #r   c                  *   [         R                  " 5       u  p[        R                  " [        R                  " S5      [        R                  " S5      5      u  p#[        R
                  " U5      =pEUR                  X#XE5      nUR                  SS5        g)zBCheck that it is possible to set all arrow UVC to the same numbersr   r   r   N)r   r   r	   r
   r   rF   r   set_UVC)r#   r   r   r   r   r   rx   s          r   test_quiver_setuvc_numbersr   J  s`     llnGC;;ryy|RYYq\2DALLOA
		!AIIaOr   c                    [         R                  " SSS5      n[         R                  " SSS5      n[         R                  " X#5      u  pESu  pgU R                  5       nUR	                  XEXgSS9n	UR                  SS5        UR                  SS5        Uc,  UR                  U	S	S	S
SSSS9  UR                  U	SSSSSSSS9  gUR                  U	S	S	S
SSSUS9  UR                  U	SSSSSSSUS9	  g)z/Draw Quiver and QuiverKey using zorder argumentr   r   r   r   r   r   r(         @Nr|      datar   bluer^   r   r   r      r   r   r^   r   r   r]   )r^   r   r   zorder)r^   r   r   r]   r   )r	   r   r
   r   r   rv   rw   r0   )
r#   r   r   r   r   r   r   r   r   rx   s
             r   draw_quiverkey_zorder_argumentr   V  s   
		!QA
		!QA;;qDADA	B
		!H	-AKKSKKS~
Q1bff 	 	.
QQfB 	 	8 	Q1bffV 	 	=
QQfBv 	 	Gr   c                    [         R                  " SSS5      n[         R                  " SSS5      n[         R                  " X#5      u  pESu  pgU R                  5       nUR	                  XEXgSS9n	UR                  SS5        UR                  SS5        UR                  U	SSS	S
SSS9n
UR                  U	SSSS
SSSS9nUb#  U
R                  U5        UR                  U5        gg)z*Draw Quiver and QuiverKey using set_zorderr   r   r   r   r   r(   r   r|   r   r   r   r   r   r   r   r   r   r   N)	r	   r   r
   r   r   rv   rw   r0   
set_zorder)r#   r   r   r   r   r   r   r   r   rx   qk1qk2s               r   draw_quiverkey_setzorderr   m  s    
		!QA
		!QA;;qDADA	B
		!H	-AKKSKKS
,,q!Q   0C
,,q#q"& b  :Cvv r   r   )r   r   r   Nc                 (    [        XS9  [        XS9  g )N)r   )r   r   )fig_testfig_refr   s      r   test_quiverkey_zorderr     s     #8;W4r   r   )*platformr    numpyr	   r6   
matplotlibr   r   matplotlib.testing.decoratorsr   r   r   markskipifpython_implementationr&   r2   r9   r?   rM   rQ   rW   r`   re   rn   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   parametrizer    r   r   <module>r      sC    
   $ : = H224	A-  /
0/
0 H224	A-  /
//
/	%'* 34GDB EB 34GD	E E	E 12')")" )*GL2 M2 &'TQO RO. )*OT U /0d')&)& ()t?S T
8 ?#_M N+/:/6	G.( ?35  45r   