a
    s=icW_                     @   s4  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZ	d dl
mZ d dlmZmZ d dlmZmZ d dlZdd Zdd	 Zejd
edededfdfedededfdfedededfdfedededfdfedededfdfedededfdfedededfdfedededfdfd ggfdfd gd gd ggfdfg
dd Zdd Zdd Zd d! Zd"d# Zed$gd%d&d'd(d) Zed*gd%d+d,d- Zed.gd&d/d0d1 Z ed2gd%d&e! d3kr&d nd4d5d6d7 Z"ed8d9gd%d+d:d; Z#d<d= Z$d>d? Z%d@dA Z&ejdBg dCdDdE Z'edFgd%d&dGd5dHdI Z(edJgd%d&dKd5dLdM Z)edNgdOgd%d&dPdQdR Z*ejdSg dTdUdV Z+ej,dWdXdY Z-edZgdOgd%d[d\d] Z.d^d_ Z/ed`gdOgd%d[dadb Z0edcgdOgd%d[ddde Z1dfdg Z2dhdi Z3e	j45djdkdl Z6dmdn Z7dodp Z8ejdqdrej9fdsej:fdtej;fduej<fdvgdwdx Z=ejdyg dzd{d| Z>ed}gdOgd%d[d~d Z?dd Z@ejdg ddd ZAejdg ddd ZBdS )    N)assert_array_almost_equal)image_comparison)pyplot
rc_context)LogNorm
same_colorc                  C   s>   t d} t d}t jd}t \}}|| || d S N
   	   r
   r	   )nparangerandompltsubplotscontour)xyzfigax r   n/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_contour.pytest_contour_shape_1d_valid   s
    

r   c                  C   sN   t d} t d}t | |\}}t jd}t \}}|||| d S r   )r   r   meshgridr   r   r   r   )r   r   ZxgZygr   r   r   r   r   r   test_contour_shape_2d_valid   s    

r   zargs, messager
   r   z6Length of x (9) must match number of columns in z (10)r	   z3Length of y (10) must match number of rows in z (9))r	   r	   z4Number of dimensions of x (2) and y (1) do not matchz4Number of dimensions of x (1) and y (2) do not matchr
   r
   z-Shapes of x (9, 9) and z (9, 10) do not matchz-Shapes of y (9, 9) and z (9, 10) do not match)   r   r   z'Inputs x and y must be 1D or 2D, not 3DzInput z must be 2D, not 3DzDInput z must be at least a (2, 2) shaped array, but has shape (1, 1)c                 C   sN   t  \}}tjtt|d |j|   W d    n1 s@0    Y  d S )Nmatch)r   r   pytestraises	TypeErrorreescaper   )argsmessager   r   r   r   r   test_contour_shape_error$   s    r'   c                  C   sr   t d} t jd}t \}}tt"}|j| | |g d W d    n1 sT0    Y  t	|dksnJ d S )Nr
   r   levels   )
r   r   r   r   r   r    warnsUserWarningr   lenr   r   r   r   recordr   r   r   test_contour_empty_levels@   s    
0r0   c                  C   s`   t dd} t \}}|| d}t|jdks:J |j| dd}|j|jk s\J d S )N   r         r*   r(   )	r   r   reshaper   r   r   r-   r)   all)r   r   r   Zcs1Zcs2r   r   r   test_contour_NlevelsK   s    r7   c                  C   s   t d} t d}t \}}ddi}tt2}|j| | |dgd}|j	||d W d    n1 sj0    Y  t
|dksJ d S )Nr
   r         ?z%1.2fr(   )fmtr*   )r   r   Zzerosr   r   r    r+   r,   r   clabelr-   )r   r   r   r   r9   r/   csr   r   r   test_contour_badlevel_fmtV   s    

,r<   c                  C   sl   t d} t d}t \}}tt}|| | | W d    n1 sN0    Y  t	|dkshJ d S )Nr
   r   r*   )
r   r   Zonesr   r   r    r+   r,   r   r-   r.   r   r   r   test_contour_uniform_zf   s    

,r=   Zcontour_manual_labelsTZmpl20)remove_textstylec                  C   s   t t ddt dd\} }t t t| t|gd}tjddd t| ||}t 	g d}tj
||d t 	g d	}tj
||d
dd d S )Nr   r	      )   r@      )figsizeZdpi))r8         @)r8   皙@)r8         @)manual))       @rD   )rH   rE   )rH   rF   Zsmall)rg)rG   fontsizecolors)r   r   r   maxdstackabsr   figurer   arrayr:   )r   r   r   r;   Zptsr   r   r   test_contour_manual_labelsq   s     rR   z$contour_manual_colors_and_levels.png)r>   c                  C   s   dt jd< t dd\} }tddd}g d}g d}t|jD ]\}}|d d	k}g d
|d  }|r|dv rzdnd }	|dv rdnd }
|j|||	|
 ||d}n|j	||d d ||d}t j
||d qFd S )NFpcolormesh.snapr@   r3   r1   r   )redyellowZpinkblueblack)r@   r3      r	           )neitherminrM   both)rM   rZ   r*   )r[   rZ   )rL   r)   extendr   )r   rcParamsr   r   r   r5   	enumerateZflatcontourfr   colorbar)_axsdatarL   r)   ir   filledr^   Zfirst_colorZ
last_colorcr   r   r   $test_given_colors_levels_and_extends~   s$    
rj   zcontour_datetime_axis.png)r?   c                     s<  t  } | jdddd tddd t fddtd	D }td	}ttd	td	\}}|| }t 	d
 t 
||| t 	d t ||| tj|tj d	dd}tj|d d tjf d	dd}t 	d t 
||| t 	d t ||| |  D ]*}| D ]}|d |d qqd S )Ng?g\(\?g333333?)Zhspacetopbottomi  r*   c                    s   g | ]} t j|d  qS ))days)datetime	timedelta).0dbaser   r   
<listcomp>       z.test_contour_datetime_axis.<locals>.<listcomp>         r   )Zaxis      right   )r   rP   subplots_adjustrn   r   rQ   ranger   r   Zsubplotr   rb   repeatZnewaxisZget_axesZget_xticklabelsZset_haZset_rotation)r   r   r   Zz1Zz2r   r   labelr   rr   r   test_contour_datetime_axis   s*    





r   z!contour_test_label_transforms.pngx86_64g{Gz?)r>   r?   Ztolc                  C   s  d} t dd| }t dd| }t ||\}}t |d |d   d dt j  }t |d d d |d d	 d   d dt j d	 d  }d
||  }tdd\}}	|	|||}
g d}g d}|
  |D ]\}}|
j	||dd d q|D ]\}}|
j	||ddd qd S )N皙?      rD          rH   r@   r*   g      ?      ?      $@))      )ig  i"  )i	  i  ))r   )r   g      )gffffff@r*   T)inlineZ	transformF)
r   r   r   exppir   r   r   r:   Zadd_label_near)deltar   r   XYZ1Z2Zr   r   CSZ
disp_unitsZ
data_unitsr   r   r   test_labels   s$    &*r   zcontour_corner_mask_False.pngzcontour_corner_mask_True.pngc                  C   s   d} d}d}t jdg t t dd| t dd| \}}t d| t d|  |t j| |   }t j| | |k}t jj	||d	}d
D ]}t
  t
j||d qd S )N<   ffffff?r8   r*   r   rH      rX   mask)FTcorner_mask)r   r   seedr   linspacecossinrandmarQ   r   rP   rb   )nZ
mask_levelZ	noise_ampr   r   r   r   r   r   r   r   test_corner_mask   s    $.r   c                  C   sV   ddgddgg} t   tt  t | ddg W d    n1 sH0    Y  d S )Ng?g333333?r   ffffff?r8   rY   )r   rP   r    r!   
ValueErrorrb   )r   r   r   r   test_contourf_decreasing_levels   s    r   c                  C   sF   t dd} tjddd}tj| |d}t|jt ddd d S )	Nr1   r2   r3   T)ZnbinsZ	symmetric)locatorir4   )	r   r   r5   r   ZMaxNLocatorrb   r   r)   r   )r   r   r;   r   r   r   test_contourf_symmetric_locator   s    r   c                  C   sT   t t dddt ddd\} }t | |}t  t| ||}t| d S )Nr   r@   r3   )r   r   r   hypotr   rP   r   r:   )r   r   rI   r;   r   r   r   test_circular_contour_warning   s
    $r   z-use_clabeltext, contour_zorder, clabel_zorder))T{     )Fr   r   )Tr   N)Fr   Nc                 C   s   t t ddt dd\}}t t t|t|gd}tjdd\}\}}|j||||d}	|j	||||d}
|	j
|| d}|
j
|| d}|d u rd| }n|}|D ]}| |ksJ q|D ]}| |ksJ qd S )Nr   r	   r@   )ncols)zorder)r   use_clabeltext)r   r   r   rM   rN   rO   r   r   r   rb   r:   Z
get_zorder)r   Zcontour_zorderZclabel_zorderr   r   r   r   ax1ax2r;   Z	cs_filledZclabels1Zclabels2Zexpected_clabel_zorderr:   r   r   r   test_clabel_zorder   s      
r   zcontour_log_extension.pnggv?c                  C   s"  dt jd< t jdddd\} \}}}| jddd	 td
dd}td|dd}tdd}td|}|j	|t
| | dd}|j	||t
| | ddd}	|j	||t
| | ddd}
t j||d}|j dksJ t j|	|d}|j dksJ t j|
|d}d S )NFrS   r*   r   )r	   r4   rC   g?r   )leftr{   g      g      #@i  r	   r|   (   g      g      @r   )ZvminZvmax)normrZ   )r)   r   r^   r\   r_   )g:0yE>g    _B)-C6?g    .A)r   r`   r   r}   r   r   powerr5   r   rb   r   r[   rM   rc   r   get_ylim)r   r   r   ax3Zdata_exprf   Z
levels_expr)   c1c2c3cbr   r   r   test_contourf_log_extension  s.    
r   zcontour_addlines.pnggQ?c                  C   sz   dt jd< t  \} }tjd tjddd }||}||d }| 	|}|
| t|j ddgd	 d S )
NFrS   i,N,r	   i'  i  gd]Kȓ\@g6>W'z@r   )r   r`   r   r   r   r   r   Z
pcolormeshr   rc   	add_linesr   r   r   )r   r   r   Zpcmcontr   r   r   r   test_contour_addlines@  s    



r   Zcontour_unevenZpng)baseline_images
extensionsr>   r?   c                  C   s   dt jd< tddd} t dd\}}|d }|j| g d	d
}|j||dd |d }|j| g d	d
}|j||dd d S )NFrS      r3   rA   r*   r@   r   )r@   r3   rA   r	   rv   r(   Zproportional)r   spacinguniform)r   r`   r   r   r5   r   rb   rc   )r   r   re   r   r;   r   r   r   test_contour_unevenS  s    
r   zCrc_lines_linewidth, rc_contour_linewidth, call_linewidths, expected))Gz?NNr   )r   (\@Nr   )r   r   Gz@r   c                 C   sv   t | |ddR t \}}tddd}|j||d}|jd d |ksTJ W d    n1 sh0    Y  d S )N)zlines.linewidthzcontour.linewidth)rcr1   r3   r   )
linewidthsr   )r   r   r   r   r   r5   r   Ztlinewidths)Zrc_lines_linewidthZrc_contour_linewidthZcall_linewidthsexpectedr   r   r   r;   r   r   r   test_contour_linewidthc  s    	r   Zpdfc                   C   s    t t ddgddgg d S )Nr*   r@   r   r3   )r   r:   r   r   r   r   r   test_label_nonaggt  s    r   Zcontour_closed_line_loop)r   r   r>   c                  C   s^   g dg dg dg dg} t jdd\}}|j| dgdgdd	 |d
d |d
d d S )N)r   r   r   )r   r@   r   )r@   r*   r@   )r@   r@   r   r   rv   r   )r   alphagg @g@)r   r   r   Zset_xlimZset_ylim)r   r   r   r   r   r   test_contour_closed_line_loopz  s
    r   c                  C   sx   t ddgddg\} }| | }t \}}|| ||}|| ||}|j|jksXJ |||}|j|jkstJ d S )NrY   r8   )r   r   r   r   rb   r   _contour_generator)r   r   r   r   r   Zqcs1Zqcs2Zqcs3r   r   r   test_quadcontourset_reuse  s    r   Zcontour_manualc            
      C   sr  ddl m}  tjdd\}}d}ddgddgddggg}ddgddggddgdd	ggg}ddgdd	gddgddgddggg}ddgddgddgddgddggdd	gdd	gddggg}| |g d
||gd|d | |ddg||gdddgd d	dgddgddgd	dgd	dgddgddgddgddgddgg
g}g dg}	| |ddg|g|	gd|d | |dg|g|	gddd d S )Nr   )
ContourSet)r3   r3   r   Zviridisr@   r*   r   r3   r   r*   r@   T)rh   cmaprI   k)r   rL   r   r4   rA   )
r*   r@   r@   r@   O   r*   r@   r@   r@   r   )rL   r   )Zmatplotlib.contourr   r   r   )
r   r   r   r   Zlines0Zlines1Zfilled01Zfilled12Zsegskindsr   r   r   test_contour_manual  s"     $ 
r   Z!contour_line_start_on_corner_edgec            	      C   s   t jdd\} }tg dg d\}}d|d d  |d d  }tj|td}d	 |d
< |d< tjj||d}|j|||d	d}| 	|}|j
|||d	dd}|| d S )N)rA   r4   r   )r   r*   r@   r   r3   r   g333333?r@   r*   ZdtypeT)r*   r*   )r*   r   r   r   r   )r   rL   )r   r   r   r   
zeros_likeboolr   rQ   rb   rc   r   r   )	r   r   r   r   r   r   rh   Zcbarlinesr   r   r   &test_contour_line_start_on_corner_edge  s    
r   c                  C   s   t d} t t j t | d d dd  }t|d}|jdddd	}d
}t|| |jdddd	}d}t|| |jdddd	}d}t|| |jddddd}d}t|| d S )N   r   r4   r@   r         9@r	   r*   Fpixel)r*   r   !   YİØt?r   gb?rX   )r*   r   r4   g`3@gDlpf?gݓ?)r   r      gͰQo&?ghW!@g|o^}?r4   r   indicesr   )r4   r      gA*Ŏ@g      @gA?)	r   r   r   r   sumr   r   find_nearest_contourr   )xyimgr;   Znearest_contourZexpected_nearestr   r   r   test_find_nearest_contour  s$    
&


r   c                  C   s   t d} t t j t | d d dd  }t|d}tjt	dd  |j
d	d	d
d W d    n1 sp0    Y  tjt	dd" |j
d	ddd
d W d    n1 s0    Y  tjt	dd" |j
ddddd W d    n1 s0    Y  d S )Nr   r4   r@   r   r   r	   z(Method does not support filled contours.r   r*   Fr   r   r   )r@   r   T)r   r   r   r   r   r   rb   r    r!   r   r   )r   r   r;   r   r   r   #test_find_nearest_contour_no_filled  s    
&.0r   defaultc                  C   sZ   t   } t jtdddddg dd}| | dd | jD h d	ksVJ d S )
Ngư>r   d   r	   )gh㈵>gh㈵>gh㈵?r(   c                 S   s   h | ]}|  qS r   )Zget_text)rp   textr   r   r   	<setcomp>  ru   z<test_contour_autolabel_beyond_powerlimits.<locals>.<setcomp>>   z0.25z1.00z4.00)	r   rP   Zadd_subplotr   r   Z	geomspacer5   r:   Ztexts)r   r;   r   r   r   )test_contour_autolabel_beyond_powerlimits  s    
r   c                     s   ddl m  tdd} | dd}| | }tj|g dg ddd	}|jd
 |j	d |
  | \}}|g dksJ d}t fdd|D sJ tdd t||D sJ d S )Nr   	Rectangler*   r	   r]   r	   r|   2   )#FFFF00#FF00FFz#00FFFFr\   r)   rL   r^   rT   rV   )z$x \leq -1e+250s$z$10.0 < x \leq 30.0$z$30.0 < x \leq 50.0$z$x > 1e+250s$)rV   r   r   rT   c                 3   s   | ]}t | V  qd S N
isinstancerp   ar   r   r   	<genexpr>  ru   z0test_contourf_legend_elements.<locals>.<genexpr>c                 s   s    | ]\}}t | |V  qd S r   )r   Zget_facecolorrp   r  ri   r   r   r   r    s   )Zmatplotlib.patchesr   r   r   r5   r   rb   r   Zset_overZ	set_underchangedlegend_elementsr6   zip)r   r   hr;   artistslabelsZexpected_colorsr   r   r   test_contourf_legend_elements  s$    r  c                     s   ddl m  tdd} | dd}| | }g d}tj|g d|dd	}| \}}|g d
ksfJ t fdd|D sJ tdd t	||D sJ d S )Nr   LineCollectionr*   r	   r]   )rV   z#00FF00rT   r   r\   r   )z
$x = 10.0$z
$x = 30.0$z
$x = 50.0$c                 3   s   | ]}t | V  qd S r   r  r  r  r   r   r    ru   z/test_contour_legend_elements.<locals>.<genexpr>c                 s   s    | ]\}}t | |V  qd S r   )r   	get_colorr  r   r   r   r    s   )
Zmatplotlib.collectionsr  r   r   r5   r   r   r  r6   r	  )r   r   r
  rL   r;   r  r  r   r  r   test_contour_legend_elements	  s    r  zalgorithm, klassmpl2005mpl2014serialthreaded)invalidNc                 C   sz   t ddgddgg}|d ur>tj|| d}t|j|svJ n8tt tj|| d W d    n1 sl0    Y  d S )Nr8   rH   rD         @	algorithm)	r   rQ   r   rb   r  r   r    r!   r   )r  klassr   r;   r   r   r   test_algorithm_name  s    r  r  r  r  r  r  c                 C   s~   t ddgddgg}tj|| dd | dkr@tj|| dd n:tt  tj|| dd W d    n1 sp0    Y  d S )	Nr8   rH   rD   r  F)r  r   r  T)r   rQ   r   rb   r    r!   r   )r  r   r   r   r   #test_algorithm_supports_corner_mask+  s    r  Zcontour_all_algorithmsc            
      C   s   g d} t jd}t t dddt ddd\}}t d| t d|  |jdd	d
 }t j|t	d}d|d< t j
j||d}tdd\}}t| | D ]8\}}	|j||||	d |j||||	dd ||	 qd S )Nr  i  rY   r8   r	   rA   r   r   )rA   r	   )scalesizer   T)r   r   r   r@   r  r   )r  rL   )r   r   Zdefault_rngr   r   r   r   normalr   r   r   rQ   r   r   r	  Zravelrb   r   	set_title)
Z
algorithmsrngr   r   r   r   rd   re   r   r  r   r   r   test_all_algorithms;  s    $*r#  c                  C   s   d} t dd| }t dd| }t ||\}}t |d  |d  }t |d d  |d d  }|| d }t }|jddd}	|	D ]4}
|
 }||||}|j	|d	d
d |
d qd S )Nr   r   rD   r   rH   r@   r*   )Znrowsr   Tr	   )r   rK   zSimplest default with labels)r   r   r   r   r   rP   Z
subfiguresr   r   r:   r!  )r   r   r   r   r   r   r   r   r   Zfigsfr   r   r   r   r   test_subfigure_clabelN  s     r%  r?   )ZsoliddasheddashdotZdottedc              	   C   sf  d}t dd|}t dd|}t ||\}}t |d  |d  }t |d d  |d d  }|| d }t \}	}
|
j|||dd	d
}|
j|ddd |
d |j	d u sJ t \}}|j|||dd	| d}|j|ddd |d|   |j	| ksJ t \}}|j|||dd	| dd}|j|ddd |d|   |j	| ksbJ d S )Nr   r   rD   r   rH   r@   r*   rA   r   rL   r
   TrK   r   z0Single color - positive contours solid (default))rL   
linestylesz!Single color - positive contours r'  rL   r*  negative_linestyles)
r   r   r   r   r   r   r   r:   r!  r*  )r?   r   r   r   r   r   r   r   r   fig1r   CS1fig2r   CS2fig3r   CS3r   r   r   test_linestylesb  s0     
r3  c              	   C   s  d}t dd|}t dd|}t ||\}}t |d  |d  }t |d d  |d d  }|| d }t \}	}
|
j|||dd	d
}|
j|ddd |
d |j	dksJ | tj
d< t \}}|j|||dd	d
}|j|ddd |d|  d |j	| ksJ t \}}|j|||dd	| d}|j|ddd |d|   |j	| ksjJ t \}}|j|||dd	d| d}|j|ddd |d|   |j	| ksJ d S )Nr   r   rD   r   rH   r@   r*   rA   r   r(  r
   Tr)  z1Single color - negative contours dashed (default)r&  zcontour.negative_linestylez!Single color - negative contours z(using rcParams))rL   r,  r'  r+  )r   r   r   r   r   r   r   r:   r!  r,  r`   )r?   r   r   r   r   r   r   r   r   r-  r   r.  r/  r   r0  r1  r   r2  Zfig4Zax4ZCS4r   r   r   test_negative_linestyles  s<     

r4  )Crn   platformr#   Z	contourpynumpyr   Znumpy.testingr   Z
matplotlibZmplZmatplotlib.testing.decoratorsr   r   r   r   Zmatplotlib.colorsr   r   r    r   r   markZparametrizer   emptyr'   r0   r7   r<   r=   rR   rj   r   machiner   r   r   r   r   r   r   r   r   r   backendr   r   r   r   r   r   r   r?   contextr   r  r  ZMpl2005ContourGeneratorZMpl2014ContourGeneratorZSerialContourGeneratorZThreadedContourGeneratorr  r  r#  r%  r3  r4  r   r   r   r   <module>   s  






	

!










	




 