U
    d»{jW_  ã                   @   sF  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 dBdCdDdEdFg¡dGdH„ ƒZ'edIgd%d&dJd5�dKdL„ ƒZ(edMgd%d&dNd5�dOdP„ ƒZ)edQgdRgd%d&dS�dTdU„ ƒZ*ej dVdWdXdYg¡dZd[„ ƒZ+ej ,d\¡d]d^„ ƒZ-ed_gdRgd%d`�dadb„ ƒZ.dcdd„ Z/edegdRgd%d`�dfdg„ ƒZ0edhgdRgd%d`�didj„ ƒZ1dkdl„ Z2dmdn„ Z3e	j4 5do¡dpdq„ ƒZ6drds„ Z7dtdu„ Z8ej dvdwej9fdxej:fdyej;fdzej<fd{g¡d|d}„ ƒZ=ej d~dwdxdydzg¡dd€„ ƒZ>ed�gdRgd%d`�d‚dƒ„ ƒZ?d„d…„ Z@ej d†d‡dˆd‰dŠg¡d‹dŒ„ ƒZAej d†d‡dˆd‰dŠg¡d�dŽ„ ƒ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   ú\/var/www/html/bwave/python/venv/lib/python3.8/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   s:   t  ¡ \}}tjtt |¡d�� |j| Ž  W 5 Q R X 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   s^   t  d¡} t j d¡}t ¡ \}}t t¡�}|j| | |g d� W 5 Q R X t	|ƒdksZt
‚d S )Nr
   r   ©Úlevelsé   )r   r   r   r   r   r    ÚwarnsÚUserWarningr   ÚlenÚAssertionError©r   r   r   r   Úrecordr   r   r   Útest_contour_empty_levels@   s    
r1   c                  C   s`   t  d¡ d¡} t ¡ \}}| | d¡}t|jƒdks:t‚|j| dd�}|j|jk 	¡ s\t‚d S )Né   ©r   é   é   r*   r(   )
r   r   Úreshaper   r   r   r-   r)   r.   Úall)r   r   r   Zcs1Zcs2r   r   r   Útest_contour_NlevelsK   s    r8   c               	   C   st   t  d¡} t  d¡}t ¡ \}}ddi}t t¡�(}|j| | |dgd�}|j	||d� W 5 Q R X t
|ƒdkspt‚d S )Nr
   r   ç      ð?z%1.2fr(   )Úfmtr*   )r   r   Zzerosr   r   r    r+   r,   r   Úclabelr-   r.   )r   r   r   r   r:   r0   Úcsr   r   r   Útest_contour_badlevel_fmtV   s    

r=   c               	   C   sX   t  d¡} t  d¡}t ¡ \}}t t¡�}| | | |¡ W 5 Q R X t	|ƒdksTt
‚d S )Nr
   r   r*   )r   r   Zonesr   r   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  	ddd	g¡}tj
||d
� t  	dddg¡}tj
||ddd� d S )Nr   r	   é   )é   rA   éÈ   )ÚfigsizeZdpi)r9   ç      @)r9   çš™™™™™@)r9   ç      @)Úmanual)ç       @rE   )rI   rF   )rI   rG   Zsmall)ÚrÚg)rH   ÚfontsizeÚcolors)r   r   r   ÚmaxÚdstackÚabsr   Úfigurer   Úarrayr;   )r   r   r   r<   Zptsr   r   r   Útest_contour_manual_labelsq   s     rS   z$contour_manual_colors_and_levels.png)r?   c                  C   sæ   dt jd< t  dd¡\} }t d¡ dd¡}ddd	d
dg}ddddg}t|jƒD ]�\}}|d dk}ddddg|d  }|r¸|dkrˆdnd }	|dkr˜dnd }
|j|||	|
… ||d�}n|j	||d d… ||d�}t j
||d� qPd S )NFúpcolormesh.snaprA   r4   r2   r   ÚredÚyellowZpinkÚblueÚblacké   r	   ç        ÚneitherÚminrN   Úboth)rN   r[   r*   )r\   r[   éÿÿÿÿ)rM   r)   Úextend©r   )r   ÚrcParamsr   r   r   r6   Ú	enumerateZflatÚcontourfr   Úcolorbar)Ú_ÚaxsÚdatarM   r)   Úir   Úfilledr_   Zfirst_colorZ
last_colorÚcr   r   r   Ú$test_given_colors_levels_and_extends~   s(    
 ÿ ÿrk   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>¢   s     z.test_contour_datetime_axis.<locals>.<listcomp>é   éÝ   éÞ   r   )Zaxiséß   éà   Úrighté   )r   rQ   Úsubplots_adjustro   r   rR   Úranger   r   Zsubplotr   rc   ÚrepeatZnewaxisZget_axesZget_xticklabelsZset_haZset_rotation)r   r   r   Zz1Zz2r   r   Úlabelr   rs   r   Útest_contour_datetime_axis�   s*    





r�   z!contour_test_label_transforms.pngÚx86_64g{®Gáz´?)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¡\}}	|	 |||¡}
dddg}dddg}|
 ¡  |D ]\}}|
j	||dd d� qÞ|D ]\}}|
j	||ddd� qþd S )Nçš™™™™™™?ç      ÀrE   ç       ÀrI   rA   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� q’d S )Né<   çffffffî?r9   r*   r   rI   é   rY   ©Úmask)FT©Úcorner_mask)r   r   Úseedr   ÚlinspaceÚcosÚsinÚrandÚmarR   r   rQ   rc   )ÚnZ
mask_levelZ	noise_ampr   r   r   rš   rœ   r   r   r   Útest_corner_maskÕ   s    $.r¤   c               	   C   sB   ddgddgg} t  ¡  t t¡� t  | ddg¡ W 5 Q R X d S )Ngš™™™™™¹?g333333Ó?r†   çffffffæ?r9   rZ   )r   rQ   r    r!   Ú
ValueErrorrc   )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 )	Nr2   r3   r4   T)ZnbinsZ	symmetric)Úlocatoriôÿÿÿr5   )	r   r   r6   r   ZMaxNLocatorrc   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Š   rA   r4   )r   r   rž   Úhypotr   rQ   r   r;   )r   r   rJ   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 kr¤d| }n|}|D ]}| ¡ |ks¬t‚q¬|D ]}| ¡ |ksÆt‚qÆd S )Nr   r	   rA   )Úncols)Úzorder)r¯   Úuse_clabeltext)r   r   r   rN   rO   rP   r   r   r   rc   r;   Z
get_zorderr.   )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.pngg´Èv¾Ÿ÷?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sît‚t j|	|d�}|j ¡ dk�st‚t j|
|d�}d S )NFrT   r*   r   )r	   r5   ©rD   gš™™™™™©?r—   )Úleftr{   g      Àg      #@i°  r	   r|   é(   g      Àg      @r‡   )ZvminZvmax)Únormr[   )r)   r·   r_   r]   r`   )g:Œ0âŽyE>g    _ B)ç-Cëâ6?g    €„.A)r   ra   r   r}   r   rž   Úpowerr6   r   rc   r   r\   rN   rd   r   Úget_ylimr.   )r   r±   r²   Úax3Zdata_exprg   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 )
NFrT   i,N,r	   i'  iè  gdÌ]KÈ“\@g6«>W'zÃ@r   )r   ra   r   r   r   r�   r¡   Z
pcolormeshr   rd   Ú	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| dddd	d
gd�}|j||dd� |d }|j| dddd	d
gd�}|j||dd� d S )NFrT   é   r4   rB   r*   rA   r   r	   rv   r(   Zproportional)r   ÚspacingÚuniform)r   ra   r   r   r6   r   rc   rd   )r   r   rf   r   r<   r   r   r   Útest_contour_unevenS  s    
rÉ   zCrc_lines_linewidth, rc_contour_linewidth, call_linewidths, expected)ç®Gáz®ó?NNrÊ   )rÊ   çö(\�Âõ@NrË   )rÊ   rË   ç®Gáz@rÌ   c              	   C   sb   t | |dœd��H t ¡ \}}t d¡ dd¡}|j||d�}|jd d |ksTt‚W 5 Q R X d S )N)zlines.linewidthzcontour.linewidth)Úrcr2   r4   r   )Ú
linewidthsr   )	r   r   r   r   r   r6   r   Ztlinewidthsr.   )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*   rA   r   r4   )r   r;   r   r   r   r   r   Útest_label_nonaggt  s    rÑ   Zcontour_closed_line_loop)rÄ   rÅ   r?   c                  C   sf   dddgdddgdddgdddgg} t jdd�\}}|j| dgdgdd	� | d
d¡ | d
d¡ d S )Nr   rA   r*   )rA   rA   r´   r†   rv   r¥   )rÎ   Úalphagš™™™™™¹¿gÍÌÌÌÌÌ @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sXt‚| ||¡}|j|jkstt‚d S )NrZ   r9   )r   r   r   r   rc   r   Ú_contour_generatorr.   )r   r   r   r   r   Zqcs1Zqcs2Zqcs3r   r   r   Útest_quadcontourset_reuse†  s    rÕ   Zcontour_manualc            
      C   s„  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}| |dddg||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}ddddddddddg
g}	| |ddg|g|	gd
|d� | |dg|g|	gddd� d S )Nr   )Ú
ContourSet)r4   r4   r´   ZviridisrA   r*   r   r4   T)ri   ÚcmaprJ   Úk)rÎ   rM   r˜   r5   rB   éO   )rM   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 dddddgdddg¡\}}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)rB   r5   r´   r   r*   rA   r   r4   g333333ó?©ZdtypeT)r*   r*   )r*   r   r™   r›   rØ   )rœ   rM   )r   r   r   r   Ú
zeros_likeÚboolr¢   rR   rc   rd   r   rÁ   )	r   r   r   r   r   rš   ri   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â   r5   rA   r   ç      9@r	   r*   F©Úpixel)r*   r   é!   çYÄ°Ã˜tÿ?rç   gbž•´âÛý?rY   )r*   r   r5   gŸ‘�`3@gDl°p’fù?gö—Ý“‡…á?)r   r   é   gÍ°QÖo&þ?g�hW!å@g|ïoÐ^}Œ?©r5   r˜   ©Úindicesrå   )r5   r   é   gA*ÅŽ@g      @g÷�ð½¿AÙ?)	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 5 Q R X tjt	dd�� |j
d	ddd
d� W 5 Q R X tjt	dd�� |j
ddddd� W 5 Q R X d S )Nrá   r5   rA   r   rã   r	   z(Method does not support filled contours.r   r*   Frä   ré   rê   )rA   r˜   T)r   rë   rŒ   r�   rí   r   rc   r    r!   r¦   rî   )rï   rð   r<   r   r   r   Ú#test_find_nearest_contour_no_filledÖ  s    
&ÿÿÿrò   Údefaultc                  C   s^   t  ¡  ¡ } t jt ddd¡ dd¡dddgd�}|  |¡ d	d
„ | jD ƒdddhksZt	‚d S )Ng�íµ ÷Æ°>r¸   éd   r	   gñhãˆµøÄ>gñhãˆµøä>gñhãˆµø?r(   c                 S   s   h | ]}|  ¡ ’qS r   )Zget_text)rq   Útextr   r   r   Ú	<setcomp>ï  s     z<test_contour_autolabel_beyond_powerlimits.<locals>.<setcomp>z0.25z1.00z4.00)
r   rQ   Zadd_subplotr   r   Z	geomspacer6   r;   Ztextsr.   )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|dddgdd	d
gdd�}|j d¡ |j 	d¡ | 
¡  | ¡ \}}|ddddgksŠt‚d}t‡ fdd„|D ƒƒs¨t‚tdd„ t||ƒD ƒƒsÄt‚d S )Nr   ©Ú	Rectangler*   r	   r^   r|   é2   ú#FFFF00ú#FF00FFz#00FFFFr]   ©r)   rM   r_   rU   rW   z$x \leq -1e+250s$z$10.0 < x \leq 30.0$z$30.0 < x \leq 50.0$z$x > 1e+250s$)rW   rû   rü   rU   c                 3   s   | ]}t |ˆ ƒV  qd S ©N©Ú
isinstance©rq   Úarø   r   r   Ú	<genexpr>  s     z0test_contourf_legend_elements.<locals>.<genexpr>c                 s   s    | ]\}}t | ¡ |ƒV  qd S rþ   )r   Zget_facecolor©rq   r  rj   r   r   r   r    s   ÿ)Zmatplotlib.patchesrù   r   r   r6   r   rc   r×   Zset_overZ	set_underÚchangedÚlegend_elementsr.   r7   Ú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¡}| | }dddg}tj|dd	d
g|dd�}| ¡ \}}|dddgkslt‚t	‡ fdd„|D ƒƒs†t‚t	dd„ t
||ƒD ƒƒs¢t‚d S )Nr   ©ÚLineCollectionr*   r	   r^   rW   z#00FF00rU   r|   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    s     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   r6   r   r   r  r.   r7   r  )r   r   r  rM   r<   r	  r
  r   r  r   Útest_contour_legend_elements	  s    
þÿr  zalgorithm, klassÚmpl2005Úmpl2014ÚserialÚthreaded)ÚinvalidNc              	   C   sf   t  ddgddgg¡}|d k	r>tj|| d�}t|j|ƒsbt‚n$t t	¡� tj|| d� W 5 Q R X d S )Nr9   rI   rE   ç      @©Ú	algorithm)
r   rR   r   rc   r   rÔ   r.   r    r!   r¦   )r  Úklassr   r<   r   r   r   Útest_algorithm_name  s    r  r  c              	   C   sj   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 5 Q R X d S )	Nr9   rI   rE   r  F)r  rœ   r  T)r   rR   r   rc   r    r!   r¦   )r  r   r   r   r   Ú#test_algorithm_supports_corner_mask+  s    r  Zcontour_all_algorithmsc            
      C   sè   ddddg} 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� | |	¡ qªd S )Nr  r  r  r  i¥  rZ   r9   r	   rB   râ   r†   )rB   r	   )ÚscaleÚsizerÜ   T)r   r˜   r™   rA   r  rØ   )r  rM   )r   r   Zdefault_rngr   rž   r    rŸ   ÚnormalrÝ   rÞ   r¢   rR   r   r   r  Zravelrc   r   Ú	set_title)
Z
algorithmsÚrngr   r   r   rš   re   rf   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¡ qŽd S )Nrƒ   r„   rE   r…   rI   rA   r*   )Znrowsr®   Tr	   )r‹   rL   zSimplest default with labels)r   r   r   rŒ   r   rQ   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 ks¼t
‚t ¡ \}}|j|||dd	| d�}|j|ddd� | d| › �¡ |j	| k�st
‚t ¡ \}}|j|||dd	| dd�}|j|ddd� | d| › �¡ |j	| k�sbt
‚d S )Nrƒ   r„   rE   r…   rI   rA   r*   rB   rØ   ©rM   r
   T©rL   r‹   z0Single color - positive contours solid (default))rM   Ú
linestylesz!Single color - positive contours r$  ©rM   r'  Únegative_linestyles)r   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     
ÿr0  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s¼t
‚| tjd< t ¡ \}}|j|||dd	d
�}|j|ddd� | d| › d�¡ |j	| k�st
‚t ¡ \}}|j|||dd	| d�}|j|ddd� | d| › �¡ |j	| k�sjt
‚t ¡ \}}|j|||dd	d| d�}|j|ddd� | d| › �¡ |j	| k�s¾t
‚d S )Nrƒ   r„   rE   r…   rI   rA   r*   rB   rØ   r%  r
   Tr&  z1Single color - negative contours dashed (default)r#  zcontour.negative_linestylez!Single color - negative contours z(using rcParams))rM   r)  r$  r(  )r   r   r   rŒ   r   r   r   r;   r  r)  r.   ra   )r@   rŽ   r   r   r�   r�   r‘   r’   r“   r*  r±   r+  r,  r²   r-  r.  r»   r/  Zfig4Zax4ZCS4r   r   r   Útest_negative_linestyles„  s<     

ÿr1  )Cro   Ú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'   r1   r8   r=   r>   rS   rk   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"  r0  r1  r   r   r   r   Ú<module>   s<  
ÿÿÿÿÿÿÿÿÿÿí



 þ
ÿþ
	 ÿÿ
 þ
!  ÿ
  ÿ
ýÿ


 ÿ

 ÿ
 ÿ


	üþ

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