
    ^j/                        d dl Z d dlZd dlZd dlZd dlmZ d dlm	Z	 d dlm
Z
 d Zej                  j                   e j                         dk7  d      d	        Zej                  j                   e j                         dk7  d      d
        Zd Zd Zd Zd Z e	dgd      d        Z e	dgd      d        Z e	dgdd      d        Zd Z e	dgdd      d        Z e	dgdd      d        Z e	dgdd      d         Z e	d!gdd      d"        Z e	d#gdd      d$        Zd% Zd& Zd' Z  e	d(gdd      d)        Z!d* Z"d+ Z#d, Z$d- Z%d3d.Z&d3d/Z'ej                  jQ                  d0g d1       e
       d2               Z)y)4    N)pyplot)image_comparison)check_figures_equalc                 L   t        j                  t        j                  ddt         j                  z  d      t        j                  ddt         j                  z  d            \  }}t        j                  |      }t        j
                  |      } | j                  ||fi |}|S )Nr         )npmeshgridarangepicossinquiver)axkwargsXYUVQs          g/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/matplotlib/tests/test_quiver.pydraw_quiverr      sy    ;;ryyAIq1yyAIq13DAq
q	A
q	A		!Q!&!AH    CPythonzRequires CPython)reasonc                      t        j                         \  } }t        |      }|j                  }t	        j
                  |      }|j                          ~t	        j
                  |      |k  sJ y N)pltsubplotsr   r   sysgetrefcountremove)figr   r   ttXorig_refcounts        r   test_quiver_memory_leakr&      sV     llnGCBA
##COOC(MHHJ	??3-///r   c            
          t        j                         \  } }t        |      }|j                  |dddddddi      }t	        j
                  |      }|j                          t	        j
                  |      |k  sJ y )	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   %   su     llnGCBA	adA'9"&.%7 
 
9B OOB'MIIK??2...r   c            	      *   ddg} t        j                  t        d      5  t        j                  |        d d d        t        j                  t        d      5  t        j                  | | | | | |        d d d        y # 1 sw Y   HxY w# 1 sw Y   y xY w)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 
K
M % 	

1aAq!$% %	 % %s   A=B	=B	Bc                  V   ddg} g d}t        j                  t        d      5  t        j                  | || |        d d d        t        j                  t        d      5  t        j                  | | ||        d d d        t        j                  t        d      5  t        j                  | | | |       d d d        t        j                  t        d      5  t        j                  | | | | |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   _xY w# 1 sw Y   y xY w)	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	  >
@ # 	

2r2r"# 
  B
D # 	

2r2r"# 
  B
D # 	

2r2r"# 
  B
D ' 	

2r2r2&' '# ## ## #' 's/   C; DDD;DDDD(c                     t        j                         \  } }t        j                  t        j                  d      t        j                  d            \  }}t        j
                  |      x}}t        j                  j                  dd      dz
  dz  }|j                  |||||       | j                  j                          y )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4DAqLLOA99>>"b!B&#
-CIIaAqI%JJOOr   c                  b   t        j                         \  } }t        j                  t        j                  d      t        j                  d            \  }}t        j
                  |      t        j                  |      }}|j                  ||dd       | j                  j                          y )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   ^   sr     llnGC;;ryy}biim4DAq66!9bffQiqAIIaqI3JJOOr   zquiver_animated_test_image.pngmpl20)stylec            
          t        j                         \  } }t        |d      }|j                  |ddddddd	i
       y )NT)animatedr(   g)\(?r   r)   r*   r+   r,   r-   )r   r   r   r0   r#   r   r   s      r   test_quiver_animaterW   h   sF     llnGCB&ALLCq"4x.@  Br   zquiver_with_key_test_image.pngc                      t        j                         \  } }|j                  d       t        |      }|j	                  |dddddddd	d
d	       y )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   sS    llnGCJJsOBALLCq6%+17 C  Er   zquiver_single_test_image.pngT_classic_test)remove_textrS   c                      t        j                         \  } }|j                  d       |j                  dgdgdgdg       y )NrY   r   r   )r   r   r_   r   r#   r   s     r   test_quiver_singlere   ~   s8     llnGCJJsOIIqcA3aS!r   c                     t        j                         \  } }t        t        j                  dg      t        j                  dg            }|j                  dgdg|d   |d         }d|d   d<   |j                  d   dk(  sJ y )N皙?g       @)uvr   rh   ri   r   )r   r   dictr	   arrayr   r   )r#   r   uvq0s       r   test_quiver_copyrn      sr    llnGC	#288SE?	3B	A3RWbg	.BBsGAJ447c>>r   zquiver_key_pivot.pngc                  "   t        j                         \  } }t        j                  ddt        j                  z  dddt        j                  z  df   \  }}|j                  t        j                  |      t        j                  |            }|j                  dd       |j                  dd       |j                  |ddddd	       |j                  |dddd
d
	       |j                  |ddddd	       |j                  |ddddd	       y )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1DAq
		"&&)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                     t        j                  d      } t        j                  d      }| t         j                  dz  z  }t        j                  d|z        }|j
                  }|j                  }t        j                  d      \  }}t        |d      D ]p  \  }}	|j                  dd       |j                  dd       |j                  | |||d	d
ddd
|	
      }
t        dd      D ]  \  }}|j                  |
|dd|dd        r y )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,/ OI
B
D#IIaAq 4&  ( O[9 	OHAuLLa3!5#LN	OOr   zbarbs_test_image.pngc                     t        j                  ddd      } t        j                  | |       \  }}d|z  d|z  }}t        j                         \  }}|j                  ||||t        j                  ||      ddt        ddd	      d
	       y )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      s    
B1A;;q!DAqa4AqAllnGCHHQ1a!QD5$C@  r   zbarbs_pivot_test_image.pngc                     t        j                  ddd      } t        j                  | |       \  }}d|z  d|z  }}t        j                         \  }}|j                  ||||dddt        ddd	
             |j                  ||dd       y )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!DAqa4AqAllnGCHHQ1aD5$C@  BJJq!rWJ%r   zbarbs_test_flip.pngc                      t        j                  ddd      } t        j                  | |       \  }}d|z  d|z  }}t        j                         \  }}|j                  ||||dddt        ddd	
      |dk  	       y)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      s|     	B1A;;q!DAqa4AqAllnGCHHQ1aD5$C@1u  r   c                     t        j                         \  } }t        j                  dg      }t        j                  dg      }|j	                  dgdg||      }d|d<   |j
                  d   dk(  sJ d|d<   |j                  d   dk(  sJ y )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#sAq	!BAaD447c>>AaD447c>>r   c                  R   t        j                  d      } t        j                  d      }t         j                  j                  dt        j                  d      z        }t         j                  j                  dt        j
                  |      z        }t         j                  j                  |d<   t         j                  j                  |d<   t        j                         \  }}t        j                  t              5  |j                  | |||       ddd       y# 1 sw Y   yxY w)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	" 
Aq!  s   ?DD&c                  X   t        j                         \  } }t        j                  t        j                  d      t        j                  d            \  }}t        j
                  |      x}}t        j                  j                  dd      dz
  dz  }|j                  |||||d       y )NrA   rB   r(   rC   r}   rE   r   )	r   r   r	   r
   r   rF   rG   rH   r   rK   s          r   test_angles_and_scaler      s}    llnGC;;ryy}biim4DAqLLOA99>>"b!B&#
-CIIaAq$I7r   zquiver_xy.pngc            	          t        j                  t        d            \  } }|j                  ddddddd       |j	                  dd       |j                  dd       |j                          y )	Nequal)aspect)
subplot_kwr   r   r}   )rE   r   r   rg   )r   r   rj   r   rv   rw   gridrd   s     r   test_quiver_xyr      sZ     lld'&:;GCIIaAq4qIAKK3KK3GGIr   c                     t        j                         \  } }t        j                  t        j                  d      t        j                  d            \  }}t        j
                  |      x}x}}|j                  |||||      }|j                  |dddd      }| j                  j                          t        |j                  j                               dk(  sJ y )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\2DAq\\!_$A$F
		!Q1V	,A	aAq'	*BJJOOryy""$%***r   c                  b   ddidddddig} | D ]  }t        j                  t         j                   t         j                  d      }t        j                  |      t         j                  z  dz  }t        j                  |      }t        j                  |      }t        j                         }|j                  d      } |j                  ||||fi |}|j                  |d	d	d
d      }	|j                  j                          t        |	j                  j                               d
k(  rJ  y )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BIIaB2k2\\!Q1i0

299&&()Q.../r   c            	         ddidddddig} | D ]  }g d}g d}g d}g d}t        j                         \  }} |j                  ||||fi |}|j                  |dd	d
dd       |j                  |ddd
d      }	|j                  j                          t        |	j                  j                               d
k(  rJ  y )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 # /,,.RBIIaAq0K0
Q#3c 	 	C\\!Q1i0

299&&()Q.../r   c                  *   t        j                         \  } }t        j                  t        j                  d      t        j                  d            \  }}t        j
                  |      x}}|j                  ||||      }|j                  dd       y)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  sj     llnGC;;ryy|RYYq\2DAqLLOA
		!Q1AIIaOr   c                    t        j                  ddd      }t        j                  ddd      }t        j                  ||      \  }}d\  }}| j                         }|j	                  ||||d      }	|j                  dd       |j                  dd       |2|j                  |	d	d	d
ddd       |j                  |	ddddddd       y|j                  |	d	d	d
ddd|       |j                  |	ddddddd|	       y)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!DAqDAq	B
		!Q1H	-AKKSKKS~
Q1bff 	 	.
QQfB 	 	8 	Q1bffV 	 	=
QQfBv 	 	Gr   c           
         t        j                  ddd      }t        j                  ddd      }t        j                  ||      \  }}d\  }}| j                         }|j	                  ||||d      }	|j                  dd       |j                  dd       |j                  |	ddd	d
dd      }
|j                  |	dddd
ddd      }|#|
j                  |       |j                  |       yy)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!DAqDAq	B
		!Q1H	-AKKSKKS
,,q!Q   0C
,,q#q"& b  :Cvv r   r   )r   r   r   Nc                 8    t        | |       t        ||       y )N)r   )r   r   )fig_testfig_refr   s      r   test_quiverkey_zorderr     s     #8F;WV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      sI    
   $ : = 2H224	A-  /
0/
0 2H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   