o
    j.                     @   s  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d Zejje  dkdd	d
d Zejje  dkdd	dd Zdd Zdd Zdd Zdd Ze	dgdd Ze	dgdd Ze	dgdddd  Zd!d" Ze	d#gddd$d% Ze	d&gddd'd( Ze	d)gddd*d+ Ze	d,gddd-d. Ze	d/gddd0d1 Zd2d3 Zd4d5 Zd6d7 Z e	d8gddd9d: Z!d;d< Z"d=d> Z#d?d@ Z$dAdB Z%dMdCdDZ&dMdEdFZ'ej(dGg dHe
dIgdJdKdL Z)dS )N    N)pyplot)image_comparison)check_figures_equalc                 K   s\   t t ddt j dt ddt j d\}}t |}t |}| j||fi |}|S )Nr         )npmeshgridarangepicossinquiver)axkwargsXYUVQ r   ]/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/matplotlib/tests/test_quiver.pydraw_quiver   s   

r   CPythonzRequires CPython)reasonc                  C   sD   t  \} }t|}|j}t|}|  ~t||k s J d S N)pltsubplotsr   r   sysgetrefcountremove)figr   r   ZttXorig_refcountr   r   r   test_quiver_memory_leak   s   
r"   c               	   C   sX   t  \} }t|}|j|dddddddid}t|}|  t||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!   r   r   r   test_quiver_key_memory_leak%   s   
r.   c               	   C   s   ddg} t jtdd t|  W d    n1 sw   Y  t jtdd t| | | | | |  W d    d S 1 s=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   r   r   r   test_quiver_number_of_args4   s   "r4   c                  C   s  ddg} g d}t jtdd t| || |  W d    n1 s"w   Y  t jtdd t| | ||  W d    n1 sAw   Y  t jtdd t| | | | W d    n1 s`w   Y  t jtdd t| | | | | W d    d S 1 sw   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.r/   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)r1   r2   
ValueErrorr   r   )ZX2ZX3r   r   r   test_quiver_arg_sizes@   s,   "r7   c                  C   sn   t  \} }ttdtd\}}t| }}tjddd d }|j|||||d | j	
  d S )N   
   r#      angles)r   r   r   r   r	   	ones_likerandomrandr   canvasdrawr    r   r   r   r   r   phir   r   r   test_no_warningsU   s   rD   c                  C   s^   t  \} }ttdtd\}}t|t|}}|j||ddd | j	  d S )Nr9   r   )Z
headlengthZheadaxislength)
r   r   r   r   r	   r   r   r   r@   rA   )r    r   r   r   r   r   r   r   r   test_zero_headlength^   s
   rE   zquiver_animated_test_image.pngc               	   C   s8   t  \} }t|dd}|j|ddddddd	id
 d S )NT)Zanimatedr#   r$   r   r%   r&   r'   r(   r)   )r   r   r   r,   r    r   r   r   r   r   test_quiver_animateh   s
   
rG   zquiver_with_key_test_image.pngc                  C   sD   t  \} }|d t|}|j|d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(   Zlarge)r'   size)anglecoordinatesr*   r+   )r   r   marginsr   r,   rF   r   r   r   test_quiver_with_keyq   s   

rN   zquiver_single_test_image.pngT)Zremove_textc                  C   s2   t  \} }|d |dgdgdgdg d S )NrH   r   r   )r   r   rM   r   r    r   r   r   r   test_quiver_single~   s   
rP   c                  C   sf   t  \} }ttdgtdgd}|dgdg|d |d }d|d d< |jd dks1J d S )N皙?g       @)uvr   rR   rS   r   )r   r   dictr   arrayr   r   )r    r   uvq0r   r   r   test_quiver_copy   s
   rX   zquiver_key_pivot.pngc                  C   s   t  \} }tjddtj dddtj df \}}|t|t|}|dd |	dd |j
|dddddd	 |j
|dddd
d
d	 |j
|dddddd	 |j
|dddddd	 d S )Nr   r   y              $@   r#   r   N)r*   ESr&   )r   r   r   Zmgridr
   r   r   r   set_xlimset_ylimr,   )r    r   rR   rS   qr   r   r   test_quiver_key_pivot   s   *ra   zquiver_key_xy.pngc                  C   s   t d} t d}| t jd  }t d| }|j}|j}td\}}t	|dD ]5\}}	|
dd |dd |j| |||d	d
ddd
|	d
}
t	ddD ]\}}|j|
|dd|ddd qNq*d S )N      y              ?r   )rV   xygɿ皙?middlerd   g?)pivotZunitswidthscalescale_unitsr<   )rf   r#   皙?)r   -   Z   rl   r    b)r   r   r   rK   labelcolor)r   r	   Zzerosr
   exprealimagr   r   zipr^   r_   r   r,   )r   r   r<   rV   r   r   r    Zaxsr   Z	angle_strr`   xrK   r   r   r   test_quiver_key_xy   s&   

rx   zbarbs_test_image.pngc                  C   sn   t ddd} t | | \}}d| d| }}t \}}|j||||t ||ddtdddd	d
d	 d S )N      TF      ?rf   333333?Z	emptybarbspacingheightZviridis)
fill_emptyroundingsizesZcmap)r   linspacer   r   r   barbshypotrT   rw   r   r   r   r   r    r   r   r   r   
test_barbs   s   
r   zbarbs_pivot_test_image.pngc                  C   sv   t ddd} t | | \}}d| d| }}t \}}|j||||dddtddd	d
d |j||ddd d S )Nry   rz   r{   TF333333?r|   rf   r}   r~   )r   r   rh   r   1   black)sc)r   r   r   r   r   r   rT   Zscatterr   r   r   r   test_barbs_pivot   s   r   zbarbs_test_flip.pngc                  C   sj   t ddd} t | | \}}d| d| }}t \}}|j||||dddtddd	d
|dk d	 dS )z'Test barbs with an array for flip_barb.ry   rz   r{   TFr   r|   rf   r}   r~   r   )r   r   rh   r   Z	flip_barbN)r   r   r   r   r   r   rT   r   r   r   r   test_barbs_flip   s   
r   c                  C   sp   t  \} }tdg}tdg}|dgdg||}d|d< |jd dks)J d|d< |jd dks6J d S )NrQ   g@r   r   )r   r   r   rU   r   rR   rS   )r    r   rR   rS   Zb0r   r   r   test_barb_copy   s   r   c                  C   s   t d} t d}t jdt d }t jdt | }t jj|d< t jj|d< t \}}t	
t || ||| W d   dS 1 sKw   Y  dS )z=Test error handling when given differing sized masked arrays.r5   g      .@)rc   r   N)r   r	   marU   Zonesr=   Zmaskedr   r   r1   r2   r6   r   )rw   yrR   rS   r    r   r   r   r   test_bad_masked_sizes   s   

"r   c                  C   sf   t  \} }ttdtd\}}t| }}tjddd d }|j|||||dd d S )Nr8   r9   r#   r:   rd   r<   rk   )	r   r   r   r   r	   r=   r>   r?   r   rB   r   r   r   test_angles_and_scale   s
   r   zquiver_xy.pngc               	   C   sR   t jtddd\} }|jdddddddd |dd |dd |  d S )	Nequal)Zaspect)Z
subplot_kwr   r   rd   )r<   rk   rj   rQ   )r   r   rT   r   r^   r_   gridrO   r   r   r   test_quiver_xy   s
   r   c            	      C   s   t  \} }ttdtd\}}t| } }}|j|||||d}||dddd}| j	  t
|jdks>J d S )Nr   r;   r   Label)r   r   r   r   r	   r=   r   r,   r@   rA   lenverts)	r    r   r   r   r   r   r<   r`   r-   r   r   r   test_quiverkey_angles  s   
r   c            
      C   s   ddidddddig} | D ]M}t t j t jd}t |t j d }t |}t |}t }|jdd}|j||||fi |}|	|d	d	d
d}	|j
  t|	jd
ks[J qd S )Nr<   rd   r   rk   rZ      Zaitoff)Z
projectionr   r   1 units)r   r   r
   r=   Z
zeros_liker   rI   Zadd_subplotr   r,   r@   rA   r   r   )
kwargs_listkwargs_dictrw   r   ZvxZvyr    r   r`   r-   r   r   r   test_quiverkey_angles_xy_aitoff  s    


r   c            
   	   C   s   ddidddddig} | D ]F}g d}g d}g d}g d}t  \}}|j||||fi |}|j|dd	d
ddd ||ddd
d}	|j  t|	jd
ksTJ qd S )Nr<   rd   r   rk   )r   re   r   )r   re   r   )r   re   r   r}   rQ   r   zQuiver key, length = 1r\   )r   r   r   rq   r*   r   r   )r   r   r   r,   r@   rA   r   r   )
r   r   r   r   r   r   r    r   r`   r-   r   r   r   +test_quiverkey_angles_scale_units_cartesian-  s$   
r   c                  C   sV   t  \} }ttdtd\}}t| }}|||||}|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	   r=   r   Zset_UVC)r    r   r   r   r   r   r`   r   r   r   test_quiver_setuvc_numbersH  s
   r   c           
      C   s   t ddd}t ddd}t ||\}}d\}}|  }|j||||dd}	|dd |dd |du rS|j|	d	d	d
dddd |j|	dddddddd dS |j|	d	d	d
ddd|d |j|	ddddddd|d	 dS )z/Draw Quiver and QuiverKey using zorder argumentr   r   r   r   rg   rh   r#         @Nrc      datar   bluerL   rq   rr   r      r   rn   rL   rq   rr   rK   )rL   rq   rr   zorder)rL   rq   rr   rK   r   )r   r	   r   r   r   r^   r_   r,   )
r    r   rw   r   r   r   r   r   r   r`   r   r   r   draw_quiverkey_zorder_argumentT  s*   

r   c              
   C   s   t ddd}t ddd}t ||\}}d\}}|  }|j||||dd}	|dd |dd |j|	ddd	d
ddd}
|j|	dddd
dddd}|dur]|
| || dS dS )z*Draw Quiver and QuiverKey using set_zorderr   r   r   rg   r   r#   r   rc   r   r   r   r   r   r   r   r   rn   r   N)	r   r	   r   r   r   r^   r_   r,   Z
set_zorder)r    r   rw   r   r   r   r   r   r   r`   Zqk1Zqk2r   r   r   draw_quiverkey_setzorderk  s$   
r   r   )r   r   rz   NZpng)
extensionsc                 C   s   t | |d t||d d S )N)r   )r   r   )Zfig_testZfig_refr   r   r   r   test_quiverkey_zorder  s   r   r   )*platformr   numpyr   r1   Z
matplotlibr   r   Zmatplotlib.testing.decoratorsr   r   r   markZskipifpython_implementationr"   r.   r4   r7   rD   rE   rG   rN   rP   rX   ra   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   Zparametrizer   r   r   r   r   <module>   sf    


	










	
	


