o
    :aG!                     @   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 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d/d0 Zd1d2 Zd3d4 Zd5d6 Ze	d7gddd8d9 Z d:d; Z!d<d= Z"dS )>    N)pyplot)image_comparisonc                 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kwXYUVQ r   >/usr/lib/python3/dist-packages/matplotlib/tests/test_quiver.pydraw_quiver   s   

r   ZCPythonzRequires CPython)reasonc                  C   s:   t  \} }t|}|j}|  ~t|dksJ d S )Nr   )pltsubplotsr   r   removesysgetrefcount)figr   r   ZttXr   r   r   test_quiver_memory_leak   s   r   c               	   C   s`   t  \} }t|}|j|dddddddid}t|d	ks!J |  t|d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   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   z/takes 2-5 positional arguments but 1 were givenmatchz/takes 2-5 positional arguments but 6 were given)pytestraises	TypeErrorr   r   )r   r   r   r   test_quiver_number_of_args2   s   "r1   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   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)r.   r/   
ValueErrorr   r   )ZX2ZX3r   r   r   test_quiver_arg_sizes>   s,   "r3   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   Zphir   r   r   test_no_warningsS   s   r?   c                  C   s^   t  \} }ttdtd\}}t|t|}}|j||ddd | j	  d S )Nr5   r   )Z
headlengthZheadaxislength)
r   r   r   r   r   r
   r   r   r<   r=   )r   r   r   r   r   r   r   r   r   test_zero_headlength\   s
   r@   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_animatef   s
   
rB   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}$iZfigurer"   r$   Zlarge)r#   size)angleZcoordinatesr&   r'   )r   r   marginsr   r)   rA   r   r   r   test_quiver_with_keyo   s   

rG   zquiver_single_test_image.pngT)Zremove_textc                  C   s2   t  \} }|d |dgdgdgdg d S )NrC   r   r   )r   r   rF   r   r   r   r   r   r   test_quiver_single|   s   
rI   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   rK   rL   r   )r   r   dictr   arrayr   r   )r   r   uvZq0r   r   r   test_quiver_copy   s
   rP   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   rK   rL   qr   r   r   test_quiver_key_pivot   s   *rY   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   )rO   xygɿ皙?Zmiddler\   g?)pivotZunitswidthscalescale_unitsr8   )r^   r   皙?)r   -   Z   rc   r    b)r   r   r   rE   ZlabelZcolor)r   r   Zzerosr	   Zexprealimagr   r   ziprV   rW   r   r)   )r   r   r8   rO   r   r   r   Zaxsr   Z	angle_strrX   xrE   r   r   r   test_quiver_key_xy   s&   

rl   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      ?r^   333333?Z	emptybarbZspacingZheightZviridis)
fill_emptyroundingsizesZcmap)r   linspacer   r   r   barbsZhypotrM   rk   r   r   r   r   r   r   r   r   r   
test_barbs   s   
ry   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 )Nrm   rn   ro   TF333333?rp   r^   rq   rr   )rs   rt   r_   ru   1   Zblack)sc)r   rv   r   r   r   rw   rM   Zscatterrx   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.rm   rn   ro   TFrz   rp   r^   rq   rr   r   )rs   rt   r_   ru   Z	flip_barbN)r   rv   r   r   r   rw   rM   rx   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 )NrJ   g@r   r   )r   r   r   rN   rw   rK   rL   )r   r   rK   rL   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.r(   g      .@)r[   r   N)r   r   ZmarN   Zonesr9   Zmaskedr   r   r.   r/   r2   rw   )rk   yrK   rL   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 )Nr4   r5   r   r6   r\   )r8   rb   )	r   r   r   r   r   r9   r:   r;   r   r>   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 )	NZequal)Zaspect)Z
subplot_kwr   r   r\   )r8   rb   ra   rJ   )r   r   rM   r   rV   rW   ZgridrH   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   r7   r   ZLabel)r   r   r   r   r   r9   r   r)   r<   r=   lenZverts)	r   r   r   r   r   r   r8   rX   r*   r   r   r   test_quiverkey_angles   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   r9   r   Zset_UVC)r   r   r   r   r   r   rX   r   r   r   test_quiver_setuvc_numbers  s
   r   )#platformr   Znumpyr   r.   Z
matplotlibr   r   Zmatplotlib.testing.decoratorsr   r   ZmarkZskipifZpython_implementationr   r+   r1   r3   r?   r@   rB   rG   rI   rP   rY   rl   ry   r~   r   r   r   r   r   r   r   r   r   r   r   <module>   sV    


	

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



	
	