o
    l’×iHd  ã                   @   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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rd nd5d6d7d8„ ƒZ#ed9d:gd!d'd;d<„ ƒZ$d=d>„ Z%d?d@„ Z&dAdB„ Z'ej dCg dD¢¡dEdF„ ƒZ(edGgd!d"dHd6dIdJ„ ƒZ)edKgd!d"e "¡ dLv rcdMndNd6dOdP„ ƒZ*edQgdRgd!d"dSdTdU„ ƒZ+ej dVg dW¢¡dXdY„ ƒZ,ej -dZ¡d[d\„ ƒZ.ed]gdRgd!d^d_d`„ ƒZ/dadb„ Z0edcgdRgd!d^ddde„ ƒZ1edfgdRgd!d^dgdh„ ƒZ2didj„ Z3dkdl„ Z4e
j5 6dm¡dndo„ ƒZ7dpdq„ Z8drds„ Z9ej dtduej:fdvej;fdwej<fdxej=fdyg¡dzd{„ ƒZ>ej d|g d}¢¡d~d„ ƒZ?ed€gdRgd!d^dd‚„ ƒZ@dƒd„„ ZAej d…g d†¢¡d‡dˆ„ ƒZBej d…g d†¢¡d‰dŠ„ ƒZCd‹dŒ„ ZDddŽ„ 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   ú[/home/ubuntu/SoloSpeech/.venv/lib/python3.10/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   ÚxgÚ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   sP   t  ¡ \}}tjtt |¡d |j| Ž  W d   ƒ d S 1 s!w   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   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ÚclabelÚones)r   r   Úcsr   r   r   Útest_contour_no_valid_levelsA   s
   r6   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   r2   r   r   r   Úlenr-   Úall)r   r   r   Úcs1Úcs2r   r   r   Útest_contour_NlevelsM   s   r@   Úcontour_manual_labelsTÚ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   é   )é   rE   éÈ   )ÚfigsizeÚdpi))ç      ð?ç      @)rJ   çš™™™™™@)rJ   ç      @)Úmanual))ç       @rK   )rO   rL   )rO   rM   Úsmall)ÚrÚg)rN   ÚfontsizeÚcolors)r   r   r   ÚmaxÚdstackÚabsr   Úfigurer   Úarrayr3   )r   r   r   r5   Úptsr   r   r   Útest_contour_manual_labelsX   s    r[   z$contour_manual_colors_and_levels.png)rC   c                  C   sØ   dt jd< t  dd¡\} }t d¡ dd¡}g d¢}g d¢}t|jƒD ]F\}}|d d	k}g d
¢|d  }|rU|dv r=dnd }	|dv rEdnd }
|j|||	|
… ||d}n|j	||d d… ||d}t j
||d q#d S )NFúpcolormesh.snaprE   r9   r7   r!   )ÚredÚyellowÚpinkÚblueÚblack)rE   r9   é   r   ç        )ÚneitherÚminrU   Úboth)rU   rd   r;   )re   rd   éÿÿÿÿ)rT   r-   Úextend©r   )r   ÚrcParamsr   r   r   r2   Ú	enumerateÚflatÚcontourfr   Úcolorbar)Ú_ÚaxsÚdatarT   r-   Úir   Úfilledrh   Úfirst_colorÚ
last_colorÚcr   r   r   Ú$test_given_colors_levels_and_extendse   s&   
ÿÿðrw   zcontour_log_locator.svgF)rD   rC   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/   ç      ÀrK   ç       ÀrO   rE   r   é2   ©Úlocatorç      $@iúÿÿÿr!   ri   )r   r   r   Úlinspacer   Úexprm   r   Ú
LogLocatorr   r-   Úpowerr   rn   r   Ú
get_yticks)r   r   ÚNr   r   ÚXÚYÚZ1ÚZ2rq   rv   Úcbr   r   r   Útest_log_locator_levels„   s    r‰   zcontour_datetime_axis.png)rD   c                     s8  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Ã?)Ú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   )Úaxiséß   éà   Úrighté   )r   rX   Úsubplots_adjustr   r   rY   Úranger   r   Úsubplotr   rm   ÚrepeatÚnewaxisÚget_axesÚget_xticklabelsÚset_haÚset_rotation)r   r   r   Úz1Úz2r   r   Úlabelr   r“   r   Útest_contour_datetime_axisš   s.   





þÿrª   z!contour_test_label_transforms.pngÚx86_64g{®Gáz´?)rC   rD   Ú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 qm|D ]\}}|
j	||ddd q}d S )Nçš™™™™™™?rx   rK   ry   rO   rE   r;   g      ø?ç      à?r}   ))éØ   é±   )ig  i"  )i	  i–  ))éþÿÿÿr®   )r   g      ø¿)gffffff@r;   T)ÚinlineÚ	transformF)
r   r   r   r   Úpir   r   r   r3   Úadd_label_near)Údeltar   r   r„   r…   r†   r‡   ÚZr   r   ÚCSÚ
disp_unitsÚ
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 qId S )Né<   çffffffî?rJ   r;   r   rO   é   rb   ©Úmask)FT©Úcorner_mask)r   r   Úseedr   r~   ÚcosÚsinr1   ÚmarY   r   rX   rm   )ÚnÚ
mask_levelÚ	noise_ampr   r   r   rÀ   rÂ   r   r   r   Útest_corner_maskÒ   s   $.þrÊ   c                  C   sX   ddgddgg} t  ¡  t t¡ t  | ddg¡ W d   ƒ d S 1 s%w   Y  d S )Ngš™™™™™¹?g333333Ó?r®   çffffffæ?rJ   rc   )r   rX   r$   r%   Ú
ValueErrorrm   )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 )	Nr7   r8   r9   T)ÚnbinsÚ	symmetricr{   iôÿÿÿr:   )	r   r   r2   r   ÚMaxNLocatorrm   r   r-   r~   )r   r|   r5   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±   rE   r9   )r   r   r~   Úhypotr   rX   r   r3   )r   r   rQ   r5   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 rRd| }n|}|D ]
}| ¡ |ks`J ‚qV|D ]
}| ¡ |ksmJ ‚qcd S )Nr   r   rE   )Úncols)Úzorder)r×   Úuse_clabeltext)r   r   r   rU   rV   rW   r   r   r   rm   r3   Ú
get_zorder)rØ   Úcontour_zorderÚclabel_zorderr   r   r   r   Úax1Úax2r5   Ú	cs_filledÚclabels1Úclabels2Úexpected_clabel_zorderr3   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swJ ‚t j|	|d}t|j ¡ t d¡ƒ t j|
|d}d S )NFr\   r;   r!   )r   r:   ©rH   gš™™™™™©?r½   )Úleftrœ   g      Àg      #@i°  r   r   é(   g      Àg      @r}   )ÚvminÚvmax)Únormrd   )r-   rè   rh   rf   ri   )g:Œ0âŽyE>g    _ B)ç-Cëâ6?g    €„.A)r   rj   r   rž   r   r~   r   r2   r   rm   r   re   rU   rn   r   Úget_ylimr   rY   )r   rÜ   rÝ   Úax3Údata_exprq   Ú
levels_expr-   Úc1Úc2Úc3rˆ   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 )
NFr\   i,N,r   i'  iè  gdÌ]KÈ“\@g6«>W'zÃ@r!   )r   rj   r   r   r   rÃ   r1   Ú
pcolormeshr   rn   Ú	add_linesr   r   rê   )r   r   r„   ÚpcmÚcontrˆ   r   r   r   Útest_contour_addlines=  s   



rù   Úcontour_unevenÚpng)Úbaseline_imagesÚ
extensionsrC   rD   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 )NFr\   é   r9   rF   r;   rE   r   )rE   r9   rF   r   r–   r,   Úproportional)r   ÚspacingÚuniform)r   rj   r   r   r2   r   rm   rn   )r   r   rp   r   r5   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   sx   t | |dœd* t ¡ \}}t d¡ dd¡}|j||d}|jd d |ks*J ‚W d   ƒ d S 1 s5w   Y  d S )N)zlines.linewidthzcontour.linewidth)Úrcr7   r9   r!   )Ú
linewidthsr   )r   r   r   r   r   r2   r   Útlinewidths)Úrc_lines_linewidthÚrc_contour_linewidthÚcall_linewidthsÚexpectedr   r   r„   r5   r   r   r   Útest_contour_linewidthb  s   	ÿ"ûr  Úpdfc                   C   s    t  t  ddgddgg¡¡ d S )Nr;   rE   r!   r9   )r   r3   r   r   r   r   r   Útest_label_nonaggs  s    r  Úcontour_closed_line_loop)rü   rý   rC   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   rE   r   )rE   r;   rE   )rE   rE   rã   r®   r–   rË   )r  Úalphagš™™™™™¹¿gÍÌÌÌÌÌ @gÍÌÌÌÌÌ@)r   r   r   Úset_xlimÚ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s,J ‚| ||¡}|j|jks:J ‚d S )Nrc   rJ   )r   r   r   r   rm   r   Ú_contour_generator)r   r   r   r   r   Úqcs1Úqcs2Úqcs3r   r   r   Útest_quadcontourset_reuse…  s   r  Ú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©r9   r9   rã   ÚviridisrE   r;   r!   r9   ©r   r;   rE   T)rs   ÚcmaprQ   Úk)r  rT   r¾   r:   rF   )
r;   rE   rE   rE   éO   r;   rE   rE   rE   r!  )rT   r  )Úmatplotlib.contourr  r   r   )
r  r   r   r  Úlines0Úlines1Úfilled01Úfilled12ÚsegsÚkindsr   r   r   Útest_contour_manual’  s"    $ ÿÿ
r)  Ú!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)rF   r:   rã   )r   r;   rE   r!   r9   r  g333333ó?rE   r;   ©ÚdtypeT)r;   r;   )r;   r!   r¿   rÁ   r   )rÂ   rT   )r   r   r   r   Ú
zeros_likeÚboolrÆ   rY   rm   rn   r   rö   )	r   r   r   r   r   rÀ   rs   ÚcbarÚlinesr   r   r   Ú&test_contour_line_start_on_corner_edge¬  s   
r1  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©é   r3  r:   rE   r   ç      9@r   r;   F©Úpixel)r;   r   é!   çYÄ°Ã˜tÿ?r8  gbž•´âÛý?rb   )r;   r   r:   gŸ‘`3@gDl°p’fù?gö—Ý“‡…á?)r!   r   é   gÍ°QÖo&þ?ghW!å@g|ïoÐ^}Œ?©r:   r¾   ©Úindicesr6  )r:   r   é   gA*ÅŽ@g      @g÷ð½¿AÙ?)	r   r<  r   r´   Úsumr   r   Úfind_nearest_contourr   )ÚxyÚimgr5   Únearest_contourÚexpected_nearestr   r   r   Útest_find_nearest_contour½  s$   
&


þrD  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 s8w   Y  tjt	dd |j
d	ddd
d W d   ƒ n1 sXw   Y  tjt	dd |j
ddddd W d   ƒ d S 1 syw   Y  d S )Nr2  r:   rE   r   r4  r   z(Method does not support filled contours.r"   r;   Fr5  r:  r;  )rE   r¾   T)r   r<  r   r´   r>  r   rm   r$   r%   rÌ   r?  )r@  rA  r5   r   r   r   Ú#test_find_nearest_contour_no_filledÕ  s$   
&ÿþÿþÿ"þrE  Údefaultc                  C   sZ   t  ¡  ¡ } t jt ddd¡ dd¡g d¢d}|  |¡ dd„ | jD ƒh d	£ks+J ‚d S )
Ngíµ ÷Æ°>ré   r/   r   )gñhãˆµøÄ>gñhãˆµøä>gñhãˆµø?r,   c                 S   s   h | ]}|  ¡ ’qS r   )Úget_text)r‘   Útextr   r   r   Ú	<setcomp>î  s    z<test_contour_autolabel_beyond_powerlimits.<locals>.<setcomp>>   ú0.25ú1.00ú4.00)	r   rX   Úadd_subplotr   r   Ú	geomspacer2   r3   Útexts)r   r5   r   r   r   Ú)test_contour_autolabel_beyond_powerlimitsç  s   ÿ
 rP  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sAJ ‚d}t‡ fdd„|D ƒƒsPJ ‚tdd„ t||ƒD ƒƒs^J ‚d S )Nr   ©Ú	Rectangler;   r   rg   ©r   r   rz   )ú#FFFF00ú#FF00FFz#00FFFFrf   ©r-   rT   rh   r]   r`   )z$x \leq -1e+250s$z$10.0 < x \leq 30.0$z$30.0 < x \leq 50.0$z$x > 1e+250s$)r`   rT  rU  r]   c                 3   ó    | ]}t |ˆ ƒV  qd S ©N©Ú
isinstance©r‘   ÚarQ  r   r   Ú	<genexpr>  ó   € z0test_contourf_legend_elements.<locals>.<genexpr>c                 s   ó"    | ]\}}t | ¡ |ƒV  qd S rX  )r	   Úget_facecolor©r‘   r\  rv   r   r   r   r]    ó   € ÿ)Úmatplotlib.patchesrR  r   r   r2   r   rm   r  Úset_overÚ	set_underÚchangedÚlegend_elementsr=   Úzip)r   r   Úhr5   ÚartistsÚlabelsÚexpected_colorsr   rQ  r   Útest_contourf_legend_elementsñ  s$   þÿrm  c                     s    ddl m‰  t dd¡} |  dd¡}| | }g d¢}tj|g d¢|dd	}| ¡ \}}|g d
¢ks3J ‚t‡ fdd„|D ƒƒs@J ‚tdd„ t	||ƒD ƒƒsNJ ‚d S )Nr   ©ÚLineCollectionr;   r   rg   )r`   z#00FF00r]   rS  rf   rV  )z
$x = 10.0$z
$x = 30.0$z
$x = 50.0$c                 3   rW  rX  rY  r[  rn  r   r   r]    r^  z/test_contour_legend_elements.<locals>.<genexpr>c                 s   r_  rX  )r	   Ú	get_colorra  r   r   r   r]    rb  )
Úmatplotlib.collectionsro  r   r   r2   r   r   rg  r=   rh  )r   r   ri  rT   r5   rj  rk  r   rn  r   Útest_contour_legend_elements  s   þÿrr  zalgorithm, klassÚmpl2005Úmpl2014ÚserialÚthreaded)ÚinvalidNc                 C   s~   t  ddgddgg¡}|d ur tj|| d}t|j|ƒsJ ‚d S t t¡ tj|| d W d   ƒ d S 1 s8w   Y  d S )NrJ   rO   rK   ç      @©Ú	algorithm)	r   rY   r   rm   rZ  r  r$   r%   rÌ   )rz  Úklassr   r5   r   r   r   Útest_algorithm_name  s   "ÿr|  rz  ©rs  rt  ru  rv  c                 C   s‚   t  ddgddgg¡}tj|| dd | dkr!tj|| dd d S t t¡ tj|| dd W d   ƒ d S 1 s:w   Y  d S )	NrJ   rO   rK   rx  F)rz  rÂ   rs  T)r   rY   r   rm   r$   r%   rÌ   )rz  r   r   r   r   Ú#test_algorithm_supports_corner_mask*  s   "ÿr~  Ú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 ]\}}	|j||||	d |j||||	dd | |	¡ qSd S )Nr}  i¥  rc   rJ   r   rF   r3  r®   )rF   r   )ÚscaleÚsizer+  T)r!   r¾   r¿   rE   ry  r   )rz  rT   )r   r   Údefault_rngr   r~   rÅ   rÄ   Únormalr-  r.  rÆ   rY   r   r   rh  Úravelrm   r   Ú	set_title)
Ú
algorithmsÚrngr   r   r   rÀ   ro   rp   r   rz  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 ]}
|
 ¡ }| |||¡}|j	|d	d
d | 
d¡ qGd S )Nr­   rx   rK   ry   rO   rE   r;   )ÚnrowsrÖ   Tr   )r²   rS   zSimplest default with labels)r   r   r   r   r   rX   Ú
subfiguresr   r   r3   r…  )r¶   r   r   r„   r…   r†   r‡   r·   r   ÚfigsÚfr   r¸   r   r   r   Útest_subfigure_clabelM  s    ür  rD   )ÚsolidÚdashedÚdashdotÚdottedc              	   C   sb  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 s^J ‚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s¯J ‚d S )Nr­   rx   rK   ry   rO   rE   r;   rF   r   ©rT   r   T©rS   r²   z0Single color - positive contours solid (default))rT   Ú
linestylesz!Single color - positive contours r  ©rT   r”  Únegative_linestyles)
r   r   r   r   r   r   r   r3   r…  r”  )rD   r¶   r   r   r„   r…   r†   r‡   r·   Úfig1rÜ   ÚCS1Úfig2rÝ   ÚCS2Úfig3rë   ÚCS3r   r   r   Útest_linestylesa  s0    
ÿ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
}|
j|ddd |
 d¡ |j	dks^J ‚| 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s³J ‚t ¡ \}}|j|||dd	d| d}|j|ddd | d| › ¡ |j	| ksÜJ ‚d S )Nr­   rx   rK   ry   rO   rE   r;   rF   r   r’  r   Tr“  z1Single color - negative contours dashed (default)r  zcontour.negative_linestylez!Single color - negative contours z(using rcParams))rT   r–  r  r•  )r   r   r   r   r   r   r   r3   r…  r–  rj   )rD   r¶   r   r   r„   r…   r†   r‡   r·   r—  rÜ   r˜  r™  rÝ   rš  r›  rë   rœ  Úfig4Úax4ÚCS4r   r   r   Útest_negative_linestylesƒ  s<    

ÿr¡  c                  C   s^   t  ¡  ¡ } |  ¡ }|  t d¡ d¡¡}| ¡  |  ¡ |ks!J ‚| 	¡  |  ¡ |ks-J ‚d S )Nr=  r  )
r   rX   rM  Úget_childrenr   r   r   r2   r3   Úremove)r   Úorig_childrenr5   r   r   r   Útest_contour_remove®  s   r¥  c                  C   s”  t j dd¡\} }t  d¡d  d¡ t¡}g d¢g d¢g d¢g}t | 	¡ ¡j
 	¡ dgks0J ‚t |¡j
 	¡ dgks=J ‚t t jj||d¡j
 	¡ dgksPJ ‚t | 	¡ ¡j
 	¡ g d¢ks`J ‚t |¡j
 	¡ g d¢ksnJ ‚t t jj||d¡j
 	¡ g d¢ks‚J ‚| ¡ }t | || 	¡ ¡j
 	¡ dgks—J ‚t | ||¡j
 	¡ dgks¦J ‚t | || 	¡ ¡j
 	¡ g d¢ks¸J ‚t | ||¡j
 	¡ g d¢ksÈJ ‚d S )	NrE   r   )r!   r!   )FFF)FTFr®   r¿   )r   r®   r;   )r   r   r1   r   r2   Úastyper.  r   r   Útolistr-   rÆ   rY   rm   r„  Ú
tricontourÚtricontourf)r   r   r   Úmr   r   r   Útest_bool_autolevel¸  s   & ("$$r«  )Fr   Úplatformr'   Ú	contourpyÚnumpyr   Únumpy.testingr   r   Ú
matplotlibÚmplÚmatplotlib.testing.decoratorsr   r   r   r   r   Úmatplotlib.colorsr   r	   r$   r   r   ÚmarkÚparametrizer   Úemptyr+   r6   r@   r[   rw   r‰   rª   Úmachiner»   rÊ   rÍ   rÑ   rÓ   râ   rñ   rù   r  r  Úbackendr  r  r  r)  r1  rD  rE  rD   ÚcontextrP  rm  rr  ÚMpl2005ContourGeneratorÚMpl2014ContourGeneratorÚSerialContourGeneratorÚThreadedContourGeneratorr|  r~  rˆ  r  r  r¡  r¥  r«  r   r   r   r   Ú<module>   s"   
ÿÿÿÿÿÿÿÿÿÿí


ÿ

þ
ÿþ
	ÿ
þ
!ý
ÿ
ÿ


ÿ

ÿ
ÿ


	üþ

ÿ
ÿ
ÿ
 ÿ
)
