o
    îÇhn.  ã                   @   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   úp/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/matplotlib/tests/test_quiver.pyÚdraw_quiver   s   ÿ

r   Ú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   Ú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   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_args3   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   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   )ÚX2ÚX3r   r   r   Útest_quiver_arg_sizes?   s,   ÿýÿýÿýÿ"ýr8   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_warningsT   s   rE   c                  C   s^   t  ¡ \} }t t d¡t d¡¡\}}t |¡t |¡}}|j||ddd | j 	¡  d S )Nr:   r   )Ú
headlengthÚheadaxislength)
r   r   r   r   r	   r   r   r   rA   rB   )r   r   r   r   r   r   r   r   r   Útest_zero_headlength]   s
   rH   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)Úanimatedr"   r#   r   r$   r%   r&   r'   r(   )r   r   r   r,   ©r   r   r   r   r   r   Útest_quiver_animateg   s
   
ÿrK   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'   Úlarge)r&   Úsize)ÚangleÚcoordinatesr)   r*   )r   r   Úmarginsr   r,   rJ   r   r   r   Útest_quiver_with_keyp   s   

ûrS   zquiver_single_test_image.pngT)Úremove_textc                  C   s2   t  ¡ \} }| d¡ | dgdgdgdg¡ d S )NrL   r   r   )r   r   rR   r   ©r   r   r   r   r   Útest_quiver_single}   s   
rV   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   rX   rY   r   )r   r   Údictr   Úarrayr   r   )r   r   ÚuvÚq0r   r   r   Útest_quiver_copy„   s
   r^   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   Úmgridr
   r   r   r   Úset_xlimÚset_ylimr,   )r   r   rX   rY   Úqr   r   r   Útest_quiver_key_pivotŒ   s   *rh   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   )r\   Úxyéÿÿÿÿgš™™™™™É¿çš™™™™™É?Úmiddlerk   gš™™™™™©?)ÚpivotÚunitsÚwidthÚscaleÚscale_unitsr=   )rm   r"   çš™™™™™é?)r   é-   éZ   rt   r   Ú Úb)r   r   r   rP   ÚlabelÚcolor)r   r	   Úzerosr
   ÚexpÚrealÚimagr   r   Úzipre   rf   r   r,   )r   r   r=   r\   r   r   r   Úaxsr   Ú	angle_strrg   ÚxrP   r   r   r   Útest_quiver_key_xy›   s&   

ýÿùrƒ   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ç      Ð?rm   ç333333Ó?©Ú	emptybarbÚspacingÚheightÚviridis)Ú
fill_emptyÚroundingÚsizesÚcmap)r   Úlinspacer   r   r   ÚbarbsÚhypotrZ   ©r‚   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 )Nr„   r…   r†   TFç333333û?r‡   rm   rˆ   r‰   )rŽ   r   ro   r   é1   Úblack)ÚsÚc)r   r’   r   r   r   r“   rZ   Ú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.r„   r…   r†   TFr—   r‡   rm   rˆ   r‰   r   )rŽ   r   ro   r   Ú	flip_barbN)r   r’   r   r   r   r“   rZ   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 )NrW   gš™™™™™@r   r   )r   r   r   r[   r“   rX   rY   )r   r   rX   rY   Ú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      .@)rj   r   N)r   r	   Úmar[   Úonesr>   Úmaskedr   r   r1   r2   r5   r“   )r‚   ÚyrX   rY   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 )Nr9   r:   r"   r;   rk   ©r=   rs   )	r   r   r   r   r	   r>   r?   r@   r   rC   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)Úaspect)Ú
subplot_kwr   r   rk   )r=   rs   rr   rW   )r   r   rZ   r   re   rf   ÚgridrU   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,   rA   rB   ÚlenÚverts)	r   r   r   r   r   r   r=   rg   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=   rk   r§   rs   r`   é   Úaitoff)Ú
projectionr   r   ú1 units)r   r’   r
   r>   Ú
zeros_liker   rM   Úadd_subplotr   r,   rA   rB   r¯   r°   )
Úkwargs_listÚkwargs_dictr‚   r¥   ÚvxÚvyr   r   rg   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=   rk   r§   rs   )r   rl   r   )r   rl   r   )r   rl   r   rˆ   rW   r   zQuiver key, length = 1rb   )r   r   r   ry   r)   r   rµ   )r   r   r   r,   rA   rB   r¯   r°   )
r¸   r¹   r   r   r   r   r   r   rg   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   Úset_UVC)r   r   r   r   r   r   rg   r   r   r   Útest_quiver_setuvc_numbersG  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   rn   ©ro   r"   ç      @Nrj   é   Údatar   Úblue©rQ   ry   rz   r   é   r   rv   ©rQ   ry   rz   rP   )rQ   ry   rz   Úzorder)rQ   ry   rz   rP   rÉ   )r   r	   r   r   r   re   rf   r,   )
r   rÉ   r‚   r¥   r   r   r   r   r   rg   r   r   r   Údraw_quiverkey_zorder_argumentS  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À   rn   rÁ   r"   rÂ   rj   rÃ   rÄ   r   rÅ   rÆ   r   rÇ   r   rv   rÈ   N)	r   r	   r   r   r   re   rf   r,   Ú
set_zorder)r   rÉ   r‚   r¥   r   r   r   r   r   rg   Úqk1Úqk2r   r   r   Údraw_quiverkey_setzorderj  s$   ÿÿ
þrÎ   rÉ   )r   r   r…   NÚpng)Ú
extensionsc                 C   s   t | |d t||d d S )N)rÉ   )rÊ   rÎ   )Úfig_testÚfig_refrÉ   r   r   r   Útest_quiverkey_zorder~  s   rÓ   )N)*Úplatformr   Únumpyr   r1   Ú
matplotlibr   r   Úmatplotlib.testing.decoratorsr   r   r   ÚmarkÚskipifÚpython_implementationr!   r.   r4   r8   rE   rH   rK   rS   rV   r^   rh   rƒ   r–   r   rŸ   r¡   r¦   r¨   r­   r±   r¼   r½   r¿   rÊ   rÎ   ÚparametrizerÓ   r   r   r   r   Ú<module>   sf    
ÿ
ÿ
	

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



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