a
    
d[                     @   s"  d dl Zd dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZ dd Zdd Ze	dgd	d
dgddd Ze	dgd	d
dddd Ze	dgd	d
dddd Ze	dgd	d
ddd Ze	dgd	d
dddd Ze	d gd	d
ddd!d" Ze	d#gd	d
d$dd%d& Zd'd( Zd)d* Zd+d, ZdS )-    N)assert_array_almost_equal)image_comparisonc                  C   sJ   t jddddddf \} }d|d  |  }d| | d  }|| ||fS )N   y              Y@y              i@      )npZmgrid)YXUV r   i/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/matplotlib/tests/test_streamplot.pyvelocity_field	   s    r   c                  C   sx   t ddd} t ddd}t | |\}}d}t ||  t ||  }t ||  t ||  }| |||fS )Ng      g      @   d   g?)r	   linspacemeshgridcossin)xyr   r
   ar   r   r   r   r   swirl_velocity_field   s    r   Zstreamplot_startpointsTZmpl20Zpng)remove_textstyle
extensionsc                  C   s~   t  \} }}}tt|  |  dt| | d\}}t| | g}tj	| ||||d t
||d d S )N   )start_pointsok)r   r	   r   r   minmaxZcolumn_stackZravelplt
streamplotZplot)r   r
   r   r   Zstart_xZstart_yr   r   r   r   test_startpoints   s    r%   Zstreamplot_colormapgI+?)r   r   Ztolc               
   C   s8   t  \} }}}tj| ||||ddtjjd t  d S )Ng333333?r   )colordensity	linewidthcmap)r   r#   r$   cmZautumnZcolorbar)r   r
   r   r   r   r   r   test_colormap%   s
    r+   Zstreamplot_linewidthgMb`?c               	   C   sV   t  \} }}}t||}d| |  }t  }|j| |||ddgd|d d S )Nr   g      ?r   k)r'   r&   r(   )r   r	   hypotr"   r#   figuresubplotsr$   )r   r
   r   r   speedZlwaxr   r   r   test_linewidth.   s
    r2   Zstreamplot_masks_and_nans)r   r   c               	   C   s   t  \} }}}tj|jtd}d|ddddf< tj|d dd df< tjj||d}t	 
 }tjd	d
* |j| ||||tjjd W d    n1 s0    Y  d S )N)Zdtyper   (   <   P   x      )maskignore)invalid)r&   r)   )r   r	   zerosshapeboolnanmaarrayr#   r.   r/   Zerrstater$   r*   ZBlues)r   r
   r   r   r8   r1   r   r   r   test_masks_and_nans8   s    rA   zstreamplot_maxlength.pnggS?c               
   C   sv   t  \} }}}t  }|j| |||dddggddd | d | d   kr^dksdn J |jdd	d
 d S )N      $@              ?r   )	maxlengthr   r(   r'   r   r   Ng\bw
@Ngi@ZxlimZylimr   r#   r.   r/   r$   Zget_xlimZget_ylimsetr   r   r   r   r1   r   r   r   test_maxlengthE   s    *rL   z"streamplot_maxlength_no_broken.pngc                  C   sx   t  \} }}}t  }|j| |||dddggdddd	 | d | d   kr`dksfn J |jd	d
d d S )NrB   rC   rD   r   F)rE   r   r(   r'   Zbroken_streamlinesr   r   rF   rG   rH   rI   rK   r   r   r   test_maxlength_no_brokenQ   s    *rM   zstreamplot_direction.pngg㥛 ?c                  C   s4   t  \} }}}tj| |||ddddggddd	 d S )NZbackwardrD   rC   r   )Zintegration_directionrE   r   r(   r'   )r   r#   r$   )r   r   r   r   r   r   r   test_direction]   s
    
rN   c                  C   s   t  } tddd}tddd}t||\}}t dd| j }t j	||t
|t||d t| jjd	d
d d S )N
   r7             )Z	transform)r7            r   )decimal)r#   Zaxesr	   r   r   mtransformsZAffine2D	translateZ	transDataZbarbsr   r   r   ZdataLimZbounds)r1   r   r   Ztransr   r   r   test_streamplot_limitsf   s     
r[   c                  C   sT  t d} t d}t ddgddgg}t ddgddgg}tjtdd  t||| | W d    n1 st0    Y  t ddgddgg}t ddgddgg}tjtdd  t||| | W d    n1 s0    Y  t ddgddgg}t ddgddgg}t||| | t ddg}t ddggg}tjtd	d  t||| | W d    n1 sz0    Y  t d
} t d
}t g d}t g d}tjtdd  t||| | W d    n1 s0    Y  t g d}t g d}tjtdd  t||| | W d    n1 sF0    Y  d S )N)r   r   rP   r7   rU   zThe rows of 'x' must be equal)matchz The columns of 'y' must be equalr   z$'y' can have at maximum 2 dimensionsr   r   )r   rP   r7   )r   rP   rU   z!'y' values must be equally spaced)r   r7   r3   )r   r7   rP   z'y' must be strictly increasing)	r	   Zonesr;   r@   pytestZraises
ValueErrorr#   r$   )uvr   r   r   r   r   test_streamplot_gridt   s6    

..0

0rb   c                	   C   sn   t jtdtdtdtjtdtjtjddd t tdtdtjddtjdd d S )Nr   r]   )r&   )	r#   r$   r	   Zarangefullr>   randomZrandranger   r   r   r   test_streamplot_inputs   s    rf   )numpyr	   Znumpy.testingr   r^   Zmatplotlib.pyplotZpyplotr#   Zmatplotlib.testing.decoratorsr   Zmatplotlib.transformsZ
transformsrY   r   r   r%   r+   r2   rA   rL   rM   rN   r[   rb   rf   r   r   r   r   <module>   sL   


	









.