
    rbi.                        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                             e j                    dk    d          d	             Zej                             e j                    dk    d          d
             Zd Zd Zd Zd Z e	dg          d             Z e	dg          d             Z e	dgd          d             Zd Z e	dgd          d             Z e	dgd          d             Z e	dgd          d             Z e	dgd          d             Z e	d gd          d!             Zd" Zd# Zd$ Z  e	d%gd          d&             Z!d' Z"d( Z#d) Z$d* Z%d2d+Z&d2d,Z'ej        (                    d-g d.           e
d/g0          d1                         Z)dS )3    N)pyplot)image_comparison)check_figures_equalc                 (   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          l/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/matplotlib/tests/test_quiver.pydraw_quiverr      s~    ;ryAIq11yAIq113 3DAq
q		A
q		A	!Q!!&!!AH    CPythonzRequires CPython)reasonc                      t          j                    \  } }t          |          }|j        }t	          j        |          }|                                 ~t	          j        |          |k     sJ d S N)pltsubplotsr   r   sysgetrefcountremove)figr   r   ttXorig_refcounts        r   test_quiver_memory_leakr&      se     lnnGCBA
#COC((MHHJJJ	?3-//////r   c            
         t          j                    \  } }t          |          }|                    |dddddddi          }t	          j        |          }|                                 t	          j        |          |k     sJ d S )	N      ?q=
ף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_leakr3   %   s     lnnGCBA	adA'9"&.%7 
 
9 
9B OB''MIIKKK?2......r   c            	      6   ddg} t          j        t          d          5  t          j        |            d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        | | | | | |            d d d            d S # 1 swxY w Y   d S )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_argsr:   4   s1   	
AA	K
M 
M 
M   	
1               
K
M 
M 
M % % 	
1aAq!$$$% % % % % % % % % % % % % % % % % %s#   AAA'BBBc                  j   ddg} g d}t          j        t          d          5  t          j        | || |            d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        | | ||            d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        | | | |           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        | | | | |           d d d            d S # 1 swxY w Y   d S )	Nr   r   )r   r      z?X and Y must be the same size, but X.size is 2 and Y.size is 3.r5   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)r7   r8   
ValueErrorr   r   )X2X3s     r   test_quiver_arg_sizesr@   @   sj   
QB	B	  >
@ 
@ 
@ # # 	
2r2r"""# # # # # # # # # # # # # # # 
  B
D 
D 
D # # 	
2r2r"""# # # # # # # # # # # # # # # 
  B
D 
D 
D # # 	
2r2r"""# # # # # # # # # # # # # # # 
  B
D 
D 
D ' ' 	
2r2r2&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'sG   AAA.BBB8CC #C D((D,/D,c                     t          j                    \  } }t          j        t          j        d          t          j        d                    \  }}t          j        |          x}}t          j                            dd          dz
  dz  }|                    |||||           | j	        
                                 d S )N   
   r(      angles)r   r   r	   r
   r   	ones_likerandomrandr   canvasdrawr#   r   r   r   r   r   phis          r   test_no_warningsrN   U   s    lnnGC;ry}}bimm44DAqLOOA9>>"b!!B&#
-CIIaAqI%%%JOOr   c                  ^   t          j                    \  } }t          j        t          j        d          t          j        d                    \  }}t          j        |          t          j        |          }}|                    ||dd           | j        	                                 d S )NrC   r   )
headlengthheadaxislength)
r   r   r	   r
   r   r   r   r   rJ   rK   )r#   r   r   r   r   r   s         r   test_zero_headlengthrR   ^   s     lnnGC;ry}}bimm44DAq6!99bfQiiqAIIaqI333JOOr   zquiver_animated_test_image.pngc            
          t          j                    \  } }t          |d          }|                    |ddddddd	i
           d S )NT)animatedr(   r)   r   r*   r+   r,   r-   r.   )r   r   r   r1   r#   r   r   s      r   test_quiver_animaterV   h   sd     lnnGCB&&&ALLCq"4x.@  B B B B Br   zquiver_with_key_test_image.pngc                      t          j                    \  } }|                    d           t          |          }|                    |dddddddd	d
d	  	         d S )N皙?r(   gffffff?r   z"$2\, \mathrm{m}\, \mathrm{s}^{-1}$ifigurer+   r-   large)r,   size)anglecoordinatesr/   r0   )r   r   marginsr   r1   rU   s      r   test_quiver_with_keyr_   q   st    lnnGCJJsOOOBALLCq6%+17 C C  E E E E Er   zquiver_single_test_image.pngT)remove_textc                      t          j                    \  } }|                    d           |                    dgdgdgdg           d S )NrX   r   r   )r   r   r^   r   r#   r   s     r   test_quiver_singlerc   ~   sF    lnnGCJJsOOOIIqcA3aS!!!!!r   c                  (   t          j                    \  } }t          t          j        dg          t          j        dg                    }|                    dgdg|d         |d                   }d|d         d<   |j        d         dk    sJ d S )N皙?g       @)uvr   rf   rg   r   )r   r   dictr	   arrayr   r   )r#   r   uvq0s       r   test_quiver_copyrl      s~    lnnGC	#28SE??	3	3	3B	A3RWbg	.	.BBsGAJ47c>>>>>>r   zquiver_key_pivot.pngc                  D   t          j                    \  } }t          j        ddt          j        z  dddt          j        z  df         \  }}|                    t          j        |          t          j        |                    }|                    dd           |	                    dd           |
                    |ddddd	           |
                    |dddd
d
	           |
                    |ddddd	           |
                    |ddddd	           d S )Nr   r   y              $@   r(   r   N)r/   ESr+   )r   r   r	   mgridr   r   r   r   set_xlimset_ylimr1   )r#   r   rf   rg   qs        r   test_quiver_key_pivotrw      s   lnnGC8AagcM1QruWS=01DAq
		"&))RVAYY''AKKBKKBLLCAsSL111LLAsAsSL111LLCAsSL111LLAsAsSL1111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 ]\  }}	|
                    dd           |                    dd           |                    | |||d	d
ddd
|	
  
        }
t          dd          D ]!\  }}|                    |
|dd|dd           "d S )N      y              ?r   )rj   xygɿ皙?middler{   g?)pivotunitswidthscalescale_unitsrF   )r}   r(   皙?)r   -   Z   r   r    b)r   r   r   r\   labelcolor)r	   r   zerosr   exprealimagr   r   ziprt   ru   r   r1   )r   r   rF   rj   r   r   r#   axsr   	angle_strrv   xr\   s                r   test_quiver_key_xyr      s+    		!A
A"%!)_F	V		B
A
A|AHCS,// O OI
B
D#IIaAq 4&  ( ( O[99 	O 	OHAuLLa3!5#LNNNN	OO Or   zbarbs_test_image.pngc                  $   t          j        ddd          } t          j        | |           \  }}d|z  d|z  }}t          j                    \  }}|                    ||||t          j        ||          ddt          ddd	          d
	  	         d S )N      TF      ?r}   333333?	emptybarbspacingheightviridis)
fill_emptyroundingsizescmap)r	   linspacer
   r   r   barbshypotrh   r   r   r   r   r   r#   r   s          r   
test_barbsr      s    
B1A;q!DAqa4AqAlnnGC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                    \  }}|                    ||||dddt          ddd	
                     |                    ||dd           d S )Nr   r   r   TF333333?r   r}   r   r   )r   r   r   r   1   black)sc)r	   r   r
   r   r   r   rh   scatterr   s          r   test_barbs_pivotr      s    
B1A;q!DAqa4AqAlnnGCHHQ1aD5$C@@@  B B BJJq!rWJ%%%%%r   zbarbs_test_flip.pngc                     t          j        ddd          } t          j        | |           \  }}d|z  d|z  }}t          j                    \  }}|                    ||||dddt          ddd	
          |dk     	  	         dS )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   rh   r   s          r   test_barbs_flipr      s     	B1A;q!DAqa4AqAlnnGCHHQ1aD5$C@@@1u      r   c                     t          j                    \  } }t          j        dg          }t          j        dg          }|                    dgdg||          }d|d<   |j        d         dk    sJ d|d<   |j        d         dk    sJ d S )Nre   g@r   r   )r   r   r	   ri   r   rf   rg   )r#   r   rf   rg   b0s        r   test_barb_copyr      s    lnnGC
#A
#A	1#sAq	!	!BAaD47c>>>>AaD47c>>>>>>r   c                  6   t          j        d          } t          j        d          }t           j                            dt          j        d          z            }t           j                            dt          j        |          z            }t           j        j        |d<   t           j        j        |d<   t          j                    \  }}t          j
        t                    5  |                    | |||           ddd           dS # 1 swxY w Y   dS )z=Test error handling when given differing sized masked arrays.r<   g      .@)rz   r   N)r	   r   mari   onesrG   maskedr   r   r7   r8   r=   r   )r   yrf   rg   r#   r   s         r   test_bad_masked_sizesr      s   
	!A
	!A
C"'$--'((A
C",q//)**A5<AaD5<AaDlnnGC	z	"	"  
Aq!                 s   (DDDc                  X   t          j                    \  } }t          j        t          j        d          t          j        d                    \  }}t          j        |          x}}t          j                            dd          dz
  dz  }|                    |||||d           d S )NrB   rC   r(   rD   r{   rF   r   )	r   r   r	   r
   r   rG   rH   rI   r   rL   s          r   test_angles_and_scaler      s    lnnGC;ry}}bimm44DAqLOOA9>>"b!!B&#
-CIIaAq$I77777r   zquiver_xy.pngc            	      
   t          j        t          d                    \  } }|                    ddddddd           |                    dd           |                    dd           |                                 d S )	Nequal)aspect)
subplot_kwr   r   r{   )rF   r   r   re   )r   r   rh   r   rt   ru   gridrb   s     r   test_quiver_xyr      s~     ld'&:&:&:;;;GCIIaAq4qIAAAKK3KK3GGIIIIIr   c                     t          j                    \  } }t          j        t          j        d          t          j        d                    \  }}t          j        |          x}x}}|                    |||||          }|                    |dddd          }| j        	                                 t          |j                  dk    sJ d S )Nr   rE   r   Label)r   r   r	   r
   r   rG   r   r1   rJ   rK   lenverts)	r#   r   r   r   r   r   rF   rv   r2   s	            r   test_quiverkey_anglesr     s     lnnGC;ry||RYq\\22DAq\!__$A$F
		!Q1V	,,A	aAq'	*	*BJOOrx==Ar   c                  &   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                    }|                    d          } |j        ||||fi |}|	                    |d	d	d
d          }	|j
                                         t          |	j                  d
k    sJ d S )NrF   r{   r   r   ro      aitoff)
projectionr   r   1 units)r	   r   r   rG   
zeros_liker   rY   add_subplotr   r1   rJ   rK   r   r   )
kwargs_listkwargs_dictr   r   vxvyr#   r   rv   r2   s
             r   test_quiverkey_angles_xy_aitoffr     s    
4--	K # " "Kr**LOObe#a']1\!__jll___11BIaB22k22\\!Q1i00
28}}!!!!!" "r   c            	      d   ddidddddig} | D ]}g d}g d}g d}g d}t          j                    \  }} |j        ||||fi |}|                    |dd	d
dd           |                    |ddd
d          }	|j                                         t          |	j                  d
k    sJ d S )NrF   r{   r   r   )r   r|   r   )r   r|   r   )r   r|   r   r   re   r   zQuiver key, length = 1rq   )r   r   r   r   r/   r   r   )r   r   r   r1   rJ   rK   r   r   )
r   r   r   r   r   r   r#   r   rv   r2   s
             r   +test_quiverkey_angles_scale_units_cartesianr   -  s    
4--	K # " "JJJJJJJJ,..RBIaAq00K00
Q#3c 	 	C 	C 	C\\!Q1i00
28}}!!!!!" "r   c                  2   t          j                    \  } }t          j        t          j        d          t          j        d                    \  }}t          j        |          x}}|                    ||||          }|                    dd           dS )zBCheck that it is possible to set all arrow UVC to the same numbersr   r   r   N)r   r   r	   r
   r   rG   r   set_UVC)r#   r   r   r   r   r   rv   s          r   test_quiver_setuvc_numbersr   H  sv     lnnGC;ry||RYq\\22DAqLOOA
		!Q1AIIaOOOOOr   c                 <   t          j        ddd          }t          j        ddd          }t          j        ||          \  }}d\  }}|                                 }|                    ||||d          }	|                    dd           |                    dd           |;|                    |	d	d	d
ddd           |                    |	ddddddd           dS |                    |	d	d	d
ddd|           |                    |	ddddddd|	  	         dS )z/Draw Quiver and QuiverKey using zorder argumentr   r   r   r   r~   r   r(         @Nrz      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   rt   ru   r1   )
r#   r   r   r   r   r   r   r   r   rv   s
             r   draw_quiverkey_zorder_argumentr   T  sf   
	!QA
	!QA;q!DAqDAq	B
		!Q1H	--AKKSKKS~
Q1bff 	 	. 	. 	.
QQfB 	 	8 	8 	8 	8 	8 	Q1bffV 	 	= 	= 	=
QQfBv 	 	G 	G 	G 	G 	Gr   c           
         t          j        ddd          }t          j        ddd          }t          j        ||          \  }}d\  }}|                                 }|                    ||||d          }	|                    dd           |                    dd           |                    |	ddd	d
dd          }
|                    |	dddd
ddd          }|,|
                    |           |                    |           dS dS )z*Draw Quiver and QuiverKey using set_zorderr   r   r   r~   r   r(   r   rz   r   r   r   r   r   r   r   r   r   r   N)	r	   r   r
   r   r   rt   ru   r1   
set_zorder)r#   r   r   r   r   r   r   r   r   rv   qk1qk2s               r   draw_quiverkey_setzorderr   k  s   
	!QA
	!QA;q!DAqDAq	B
		!Q1H	--AKKSKKS
,,q!Q   0 0C
,,q#q"& b  : :Cvv r   r   )r   r   r   Npng)
extensionsc                 J    t          | |           t          ||           d S )N)r   )r   r   )fig_testfig_refr   s      r   test_quiverkey_zorderr     s0     #8F;;;;WV444444r   r   )*platformr    numpyr	   r7   
matplotlibr   r   matplotlib.testing.decoratorsr   r   r   markskipifpython_implementationr&   r3   r:   r@   rN   rR   rV   r_   rc   rl   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   parametrizer    r   r   <module>r      s    



      $ $ $ $ $ $ : : : : : : = = = = = =   2H244	A-  / /
0 
0/ /
0 2H244	A-  / /
/ 
// /
/	% 	% 	%' ' '*     3455B B 65B 3455	E 	E 65	E 12EEE" " FE"   )*===2 2 >=2 &'T:::O O ;:O. )*===  >= /0dCCC& & DC& ()t<<<  =<  
 
 
8 8 8 ?#666  76  " " ":" " "6	 	 	G G G G.   ( ???33(((5 5 )( 435 5 5r   