U
    ÂmœdHd  ã                   @   sx  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mZ d dl	Z
d dlmZ d dl	mZ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ed gd!d"d#�d$d%„ ƒZed&gd!d'�d(d)„ ƒZed*gd"d+d,�d-d.„ ƒZ ed/gd"d0�d1d2„ ƒZ!ed3gd!d"e "¡ d4k�r6d nd5d6�d7d8„ ƒZ#ed9d:gd!d'�d;d<„ ƒZ$d=d>„ Z%d?d@„ Z&dAdB„ Z'ej dCdDdEdFdGg¡dHdI„ ƒZ(edJgd!d"dKd6�dLdM„ ƒZ)edNgd!d"e "¡ dOk�rÊdPndQd6�dRdS„ ƒZ*edTgdUgd!d"dV�dWdX„ ƒZ+ej dYdZd[d\g¡d]d^„ ƒZ,ej -d_¡d`da„ ƒZ.edbgdUgd!dc�ddde„ ƒZ/dfdg„ Z0edhgdUgd!dc�didj„ ƒZ1edkgdUgd!dc�dldm„ ƒZ2dndo„ Z3dpdq„ Z4e
j5 6dr¡dsdt„ ƒZ7dudv„ Z8dwdx„ Z9ej dydzej:fd{ej;fd|ej<fd}ej=fd~g¡dd€„ ƒZ>ej d�dzd{d|d}g¡d‚dƒ„ ƒZ?ed„gdUgd!dc�d…d†„ ƒZ@d‡dˆ„ ZAej d‰dŠd‹dŒd�g¡dŽd�„ ƒZBej d‰dŠd‹dŒd�g¡d�d‘„ ƒZCd’d“„ ZDd”d•„ ZEdS )–é    N)Úassert_array_almost_equalÚassert_array_almost_equal_nulp)Úimage_comparison)ÚpyplotÚ
rc_contextÚticker)Ú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   úV/home/sam/Atlas/atlas_env/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   sf   t  ¡ \} }|jtj dd¡g d� |jt d¡ d¡dgd�}|j|ddid� | t 	d¡¡ d S )Nr   ©ÚlevelséQ   r   éd   z%1.2f)Úfmt)
r   r   r   r   r   Úrandr   ÚreshapeÚclabelZones)r   r   Úcsr   r   r   Útest_contour_no_valid_levelsA   s
    r3   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   r0   r   r   r   Úlenr+   ÚAssertionErrorÚall)r   r   r   Zcs1Zcs2r   r   r   Útest_contour_NlevelsM   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   é   )é   r?   éÈ   )ÚfigsizeZdpi)ç      ð?ç      @)rC   çš™™™™™@)rC   ç      @)Úmanual)ç       @rD   )rH   rE   )rH   rF   Zsmall)ÚrÚg)rG   ÚfontsizeÚcolors)r   r   r   ÚmaxÚdstackÚabsr   Úfigurer   Úarrayr1   )r   r   r   r2   Zptsr   r   r   Útest_contour_manual_labelsX   s     rR   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.snapr?   r6   r4   r   ÚredÚyellowZpinkÚblueÚblacké   r   ç        ÚneitherÚminrM   Úboth)rM   rZ   r8   )r[   rZ   éÿÿÿÿ)rL   r+   Úextend©r   )r   ÚrcParamsr   r   r   r0   Ú	enumerateZflatÚcontourfr   Úcolorbar)Ú_ÚaxsÚdatarL   r+   Úir   Úfilledr^   Zfirst_colorZ
last_colorÚcr   r   r   Ú$test_given_colors_levels_and_extendse   s(    
 ÿ ÿrj   zcontour_log_locator.svgF)r>   r=   c               	   C   sÒ   t  ¡ \} }d}t dd|¡}t dd|¡}t ||¡\}}t |d  |d  ¡}t |d d  |d d  ¡}|d|  }	|j|	t ¡ d	�}
t	|
j
t d
t dd¡¡ƒ | j|
|d�}t	|j ¡ |
j
ƒ d S )Nr-   ç      ÀrD   ç       ÀrH   r?   r   é2   ©Úlocatorç      $@iúÿÿÿr   r_   )r   r   r   Úlinspacer   Úexprb   r   Z
LogLocatorr   r+   Úpowerr   rc   r   Z
get_yticks)r   r   ÚNr   r   ÚXÚYÚZ1ÚZ2rf   ri   Úcbr   r   r   Útest_log_locator_levels„   s     rz   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\�Âõ(\ï?ç333333Ã?)ZhspaceÚtopÚbottomiÝ  r8   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   rP   Úsubplots_adjustr   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   rƒ   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çš™™™™™™?rk   rD   rl   rH   r?   r8   g      ø?ç      à?rp   )éØ   é±   )ig  i"  )i	  i–  )éþÿÿÿr”   )r   g      ø¿)gffffff@r8   T)ÚinlineZ	transformF)
r   r   r   rr   Úpir   r   r   r1   Zadd_label_near)Údeltar   r   ru   rv   rw   rx   Ú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î?rC   r8   r   rH   é   rX   ©Úmask)FT©Úcorner_mask)r   r   Úseedr   rq   ÚcosÚsinr/   ÚmarQ   r   rP   rb   )Ú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æ?rC   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 )	Nr4   r5   r6   T)ZnbinsZ	symmetricrn   iôÿÿÿr7   )	r   r   r0   r   ZMaxNLocatorrb   r   r+   rq   )r   ro   r2   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?   r6   )r   r   rq   Úhypotr   rP   r   r1   )r   r   rI   r2   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   r?   )Úncols)Úzorder)r´   Úuse_clabeltext)r   r   r   rM   rN   rO   r   r   r   rb   r1   Z
get_zorderr:   )rµ   Zcontour_zorderZclabel_zorderr   r   r   r   Úax1Úax2r2   Z	cs_filledZclabels1Zclabels2Zexpected_clabel_zorderr1   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�}t|j ¡ t d¡ƒ t j|
|d�}d S )NFrS   r8   r   )r   r7   ©rB   gš™™™™™©?rŸ   )Úleftr‹   g      Àg      #@i°  r   rŒ   é(   g      Àg      @rp   )ZvminZvmax)ÚnormrZ   )r+   r¼   r^   r\   r_   )g:Œ0âŽyE>g    _ B)ç-Cëâ6?g    €„.A)r   r`   r   r�   r   rq   rs   r0   r   rb   r   r[   rM   rc   r   Úget_ylimr:   r   rQ   )r   r¶   r·   Úax3Zdata_exprf   Z
levels_expr+   Úc1Úc2Úc3ry   r   r   r   Útest_contourf_log_extension  s.    
ÿþþrÃ   zcontour_addlines.png)Úaarch64Úppc64leÚs390xr{   g¸…ë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   ru   ZpcmÚcontry   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 )NFrS   é   r6   r@   r8   r?   r   r   r†   r*   Zproportional)r   ÚspacingÚuniform)r   r`   r   r   r0   r   rb   rc   )r   r   re   r   r2   r   r   r   Útest_contour_unevenR  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)Úrcr4   r6   r   )Ú
linewidthsr   )	r   r   r   r   r   r0   r   Ztlinewidthsr:   )Zrc_lines_linewidthZrc_contour_linewidthZcall_linewidthsÚexpectedr   r   ru   r2   r   r   r   Útest_contour_linewidthb  s    	ÿrÖ   Zpdfc                   C   s    t  t  ddgddgg¡¡ d S )Nr8   r?   r   r6   )r   r1   r   r   r   r   r   Útest_label_nonaggs  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   r?   r8   )r?   r?   r¹   r”   r†   r«   )rÔ   Úalphagš™™™™™¹¿gÍÌÌÌÌÌ @gÍÌÌÌÌÌ@)r   r   r   Zset_xlimZset_ylim)r   r   r   r   r   r   Útest_contour_closed_line_loopy  s
    $rÙ   c                  C   sx   t  ddgddg¡\} }| | }t ¡ \}}| | ||¡}| | ||¡}|j|jksXt‚| ||¡}|j|jkstt‚d S )NrY   rC   )r   r   r   r   rb   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©r6   r6   r¹   Zviridisr?   r8   r   r6   T)rh   ÚcmaprI   Úk)rÔ   rL   r    r7   r@   éO   )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 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)r@   r7   r¹   r   r8   r?   r   r6   g333333ó?©ZdtypeT)r8   r8   )r8   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é   r7   r?   r   ç      9@r   r8   F©Úpixel)r8   r   é!   çYÄ°Ã˜tÿ?rî   gbž•´âÛý?rX   )r8   r   r7   gŸ‘�`3@gDl°p’fù?gö—Ý“‡…á?)r   r   é   gÍ°QÖo&þ?g�hW!å@g|ïoÐ^}Œ?©r7   r    ©Úindicesrì   )r7   r   é   gA*ÅŽ@g      @g÷�ð½¿AÙ?)	r   rò   rr   r™   Úsumr   r   Úfind_nearest_contourr   )ÚxyÚimgr2   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è   r7   r?   r   rê   r   z(Method does not support filled contours.r    r8   Frë   rð   rñ   )r?   r    T)r   rò   rr   r™   rô   r   rb   r"   r#   r¬   rõ   )rö   r÷   r2   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½   r-   r   gñhãˆµøÄ>gñhãˆµøä>gñhãˆµø?r*   c                 S   s   h | ]}|  ¡ ’qS r   )Zget_text)r�   Útextr   r   r   Ú	<setcomp>î  s     z<test_contour_autolabel_beyond_powerlimits.<locals>.<setcomp>z0.25z1.00z4.00)
r   rP   Úadd_subplotr   r   Z	geomspacer0   r1   Ztextsr:   )r   r2   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   ©Ú	Rectangler8   r   r]   rŒ   rm   ú#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©r�   Úarÿ   r   r   Ú	<genexpr>  s     z0test_contourf_legend_elements.<locals>.<genexpr>c                 s   s    | ]\}}t | ¡ |ƒV  qd S r  )r	   Zget_facecolor©r�   r  ri   r   r   r   r	    s   ÿ)Zmatplotlib.patchesr   r   r   r0   r   rb   rÞ   Zset_overZ	set_underÚchangedÚlegend_elementsr:   r;   Úzip)r   r   Úhr2   Ú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   ©ÚLineCollectionr8   r   r]   rV   z#00FF00rT   rŒ   rm   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   r0   r   r   r  r:   r;   r  )r   r   r  rL   r2   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 )NrC   rH   rD   ç      @©Ú	algorithm)
r   rQ   r   rb   r  rÚ   r:   r"   r#   r¬   )r  Úklassr   r2   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 )	NrC   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è   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¥  rY   rC   r   r@   ré   r”   )r@   r   )ÚscaleÚsizerã   T)r   r    r¡   r?   r  rß   )r  rL   )r   r   Zdefault_rngr   rq   r§   r¦   Únormalrä   rå   r¨   rQ   r   r   r  Ú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¡ qŽd S )Nr“   rk   rD   rl   rH   r?   r8   )Znrowsr³   Tr   )r˜   rK   zSimplest default with labels)r   r   r   rr   r   rP   Z
subfiguresr   r   r1   r%  )rš   r   r   ru   rv   rw   rx   r›   r   ZfigsÚfr   rœ   r   r   r   Útest_subfigure_clabelM  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“   rk   rD   rl   rH   r?   r8   r@   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   rr   r   r   r   r1   r%  r.  r:   )r>   rš   r   r   ru   rv   rw   rx   r›   Úfig1r¶   ÚCS1Úfig2r·   ÚCS2Úfig3r¿   ÚCS3r   r   r   Útest_linestylesa  s0     
ÿr7  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“   rk   rD   rl   rH   r?   r8   r@   rß   r,  r   Tr-  z1Single color - negative contours dashed (default)r*  zcontour.negative_linestylez!Single color - negative contours z(using rcParams))rL   r0  r+  r/  )r   r   r   rr   r   r   r   r1   r%  r0  r:   r`   )r>   rš   r   r   ru   rv   rw   rx   r›   r1  r¶   r2  r3  r·   r4  r5  r¿   r6  Zfig4Zax4ZCS4r   r   r   Útest_negative_linestylesƒ  s<     

ÿr8  c                  C   s^   t  ¡  ¡ } |  ¡ }|  t d¡ d¡¡}| ¡  |  ¡ |ksBt	‚| 
¡  |  ¡ |ksZt	‚d S )Nró   rÝ   )r   rP   rý   Zget_childrenr   r   r   r0   r1   r:   Úremove)r   Zorig_childrenr2   r   r   r   Útest_contour_remove®  s    r:  c                  C   s®  t j dd¡\} }t  d¡d  d¡ t¡}dddgdddgdddgg}t | 	¡ ¡j
 	¡ dgksft‚t |¡j
 	¡ dgks€t‚t t jj||d�¡j
 	¡ dgks¦t‚t | 	¡ ¡j
 	¡ ddd	gksÈt‚t |¡j
 	¡ ddd	gksæt‚t t jj||d�¡j
 	¡ ddd	gk�st‚| ¡ }t | || 	¡ ¡j
 	¡ dgk�s>t‚t | ||¡j
 	¡ dgk�s^t‚t | || 	¡ ¡j
 	¡ ddd	gk�s†t‚t | ||¡j
 	¡ ddd	gk�sªt‚d S )
Nr?   r   )r   r   FTr”   r¡   r   r8   )r   r   r/   r   r0   Zastyperå   r   r   Útolistr+   r:   r¨   rQ   rb   r$  Z
tricontourZtricontourf)r   r   r   Úmr   r   r   Útest_bool_autolevel¸  s    &",$ (r=  )Fr   Úplatformr%   Z	contourpyÚnumpyr   Znumpy.testingr   r   Z
matplotlibZmplZmatplotlib.testing.decoratorsr   r   r   r   r   Zmatplotlib.colorsr   r	   r"   r   r   ÚmarkZparametrizer   Úemptyr)   r3   r<   rR   rj   rz   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)  r7  r8  r:  r=  r   r   r   r   Ú<module>   sH  
ÿÿÿÿÿÿÿÿÿÿí


ÿ

 þ
ÿþ
	 ÿÿ
 þ
!  ý
  ÿ
ýÿ


 ÿ

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

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