o
    ˆ‚¡e]€  ã                   @   sð  d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlm	Z	m
Z
mZ d dlZd dlmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d dlZdd„ 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&„ ƒZ&ej  d'd(d)g¡ed*gd)d+d,d-d.d/„ ƒƒZ'd0d1„ Z(ej  d'd(d)g¡ed2gd)d+d#gd3d4d5„ ƒƒZ)ej  d'd(d)g¡ed6gd)d7d8d9„ ƒƒZ*ej  d'd(d)g¡ed:gd+d(d;d<d=„ ƒƒZ+ej  d'd(d)g¡ed>gd+d?d@dA„ ƒƒZ,ej  d'd(d)g¡edBgd)d+dCd-dDdE„ ƒƒZ-dFdG„ Z.ej  d'd(d)g¡edHdIgd)dJdKdLdM„ ƒƒZ/dNdO„ Z0dPdQ„ Z1dRdS„ Z2ej  dTg dU¢¡dVdW„ ƒZ3dXdY„ Z4ej  d'd(d)g¡edZgd)d+d[d-d\d]„ ƒƒZ5ej  d'd(d)g¡ed^gd)d+e 6¡ d_v räd`ndad-dbdc„ ƒƒZ7ej  d'd(d)g¡eddgd#gd)d+dedfdg„ ƒƒZ8ej  dhg di¢¡djdk„ ƒZ9ej :dl¡dmdn„ ƒZ;ej  d'd(d)g¡edogd#gd)dpdqdr„ ƒƒZ<dsdt„ Z=ej  d'd(d)g¡edugd#gd)dvdwdxdy„ ƒƒZ>ej  d'd(d)g¡edzgd#gd)dpd{d|„ ƒƒZ?d}d~„ Z@dd€„ ZAejB Cd¡d‚dƒ„ ƒZDd„d…„ ZEd†d‡„ ZFej  dˆd‰ejGfdŠejHfd‹ejIfdŒejJfdg¡dŽd„ ƒZKej  dg d‘¢¡d’d“„ ƒZLej  d'd(d)g¡ed”gd#gd)d•dwd–d—„ ƒƒZMd˜d™„ ZNej  dšg d›¢¡dœd„ ƒZOej  dšg d›¢¡dždŸ„ ƒZPd d¡„ ZQd¢d£„ ZRd¤d¥„ ZSd¦d§„ ZTd¨d©„ ZUdªd«„ ZVd¬d­„ ZWdS )®é    N)Úmock)Úassert_array_almost_equalÚassert_array_almost_equal_nulpÚassert_array_equal)ÚpyplotÚ
rc_contextÚticker)ÚLogNormÚ
same_color)Úcheck_figures_equalÚimage_comparisonc                 C   s|   | sd S t tjt ¡ ƒD ]/}|jD ])}|jD ]#}t|tjj	ƒr9t
 tjj¡ |j W d   ƒ n1 s4w   Y  qqqd S ©N)ÚmapÚpltÚfigureÚget_fignumsÚaxesÚcollectionsÚ
isinstanceÚmplÚcontourÚ
ContourSetÚpytestÚwarnsÚ_apiÚMatplotlibDeprecationWarning)Údo_splitÚfigÚaxÚcoll© r    úL/var/www/myenv/lib/python3.10/site-packages/matplotlib/tests/test_contour.pyÚ_maybe_split_collections   s   

ÿ€þÿÿr"   c                  C   s>   t  d¡} t  d¡}t j d¡}t ¡ \}}| | ||¡ d S ©Né
   é	   ©r%   r$   )ÚnpÚarangeÚrandomr   Úsubplotsr   )ÚxÚyÚzr   r   r    r    r!   Ú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   

r2   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)é   r4   r4   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*   r   ÚraisesÚ	TypeErrorÚreÚescaper   )ÚargsÚmessager   r   r    r    r!   Útest_contour_shape_error4   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   r3   éd   z%1.2f)Úfmt)
r   r*   r   r'   r)   Úrandr(   ÚreshapeÚclabelÚones)r   r   Úcsr    r    r!   Útest_contour_no_valid_levelsP   s
   rH   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é   ©r4   é   é   é   r>   )	r'   r(   rD   r   r*   r   Úlenr?   Úall)r-   r   r   Úcs1Úcs2r    r    r!   Útest_contour_Nlevels\   s   rR   Úpng)Ú
extensionsc                 C   sF   |   ¡  ddgddgg¡}|  ¡  ddgddgg¡}| | ¡ ¡ d S )Nr   rM   é   )r*   r   Ú	set_pathsÚ	get_paths)Úfig_testÚfig_refÚcs_testÚcs_refr    r    r!   Útest_contour_set_pathsg   s   r\   Úsplit_collectionsFTÚcontour_manual_labelsÚmpl20g¤p=
×£Ð?)Úremove_textÚstyleÚtolc                 C   s¢   t  t  dd¡t  dd¡¡\}}t  t  t|ƒt|ƒg¡d¡}tjddd t |||¡}t	| ƒ t  
g d¢¡}tj||d t  
g d	¢¡}tj||d
dd d S )Nr   r$   rU   )é   rU   éÈ   )ÚfigsizeÚdpi))ç      ð?ç      @)rg   çš™™™™™@)rg   ç      @©Úmanual))ç       @rh   )rm   ri   )rm   rj   Úsmall)ÚrÚg)rl   ÚfontsizeÚcolors)r'   r/   r(   ÚmaxÚdstackÚabsr   r   r   r"   ÚarrayrE   )r]   r+   r,   r-   rG   Úptsr    r    r!   Útest_contour_manual_labelso   s    rx   c                  C   s‚   t  dd¡} t  dd¡}t  | |¡\}}|d d |d  d }tj|||ddgd}d}tj||gd	}|d  ¡ d
ks?J ‚d S )Niöÿÿÿr$   rU   rM   r   rA   r>   )gÍÌÌÌÌÌô?rM   rk   Ú0)r'   Úlinspacer/   r   r   rE   Úget_text)r+   r,   ÚXÚYÚZÚcontoursÚpointÚclabelsr    r    r!   Útest_contour_manual_moveto€   s   r‚   Úcontour_disconnected_segments)r`   ra   rT   c                 C   s¤   t jddd…ddd…f \}}dt  d|d d  |d  ¡ }|dt  d|d d  |d  ¡ 7 }t ¡  tj|||dgd}t| ƒ |jd	gd
 t| ƒ d S )NéÿÿÿÿrM   y              5@ç{®Gáz„?ç333333Ó?rU   é   r>   )çš™™™™™É?çš™™™™™¹?rk   )r'   ÚmgridÚsqrtr   r   r   r"   rE   )r]   r+   r,   r-   rG   r    r    r!   Ú-test_contour_label_with_disconnected_segments“   s   "&rŒ   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 ]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#t| ƒ d S )NFúpcolormesh.snaprU   rK   rI   r4   )ÚredÚyellowÚpinkÚblueÚblack)rU   rK   é   r$   ç        )ÚneitherÚminrs   Úboth)rs   r•   rM   )r–   r•   r„   )rr   r?   Úextend©r   )r   ÚrcParamsr*   r'   r(   rD   Ú	enumerateÚflatÚcontourfr   Úcolorbarr"   )r]   Ú_ÚaxsÚdatarr   r?   Úir   Úfilledr˜   Úfirst_colorÚ
last_colorÚcr    r    r!   Ú$test_given_colors_levels_and_extends¦   s&   
ÿÿr§   zcontour_log_locator.svg)ra   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
ƒ t| ƒ d S )NrA   ç      Àrh   ç       Àrm   rU   r$   é2   ©Úlocatorç      $@iúÿÿÿr4   r™   )r   r*   r'   rz   r/   Úexpr   r   Ú
LogLocatorr   r?   Úpowerr(   rž   r   Ú
get_yticksr"   )r]   r   r   ÚNr+   r,   r|   r}   ÚZ1ÚZ2r¡   r¦   Úcbr    r    r!   Útest_log_locator_levelsÈ   s    r¶   zcontour_datetime_axis.png)ra   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†t| ƒ d S )Ngš™™™™™Ù?g\Âõ(\ï?ç333333Ã?)ÚhspaceÚtopÚbottomiÝ  rM   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   r   Úsubplots_adjustr¼   r'   rv   Úranger(   r/   Úsubplotr   r   ÚrepeatÚnewaxisÚget_axesÚget_xticklabelsÚset_haÚset_rotationr"   )	r]   r   r+   r,   Úz1Úz2r-   r   Úlabelr    rÀ   r!   Útest_contour_datetime_axisà   s.   





þr×   z!contour_test_label_transforms.pnggš™™™™™ñ?c                 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¢}t| ƒ | 	¡  |D ]\}}|j
||dd d qq|D ]\}}|j
||ddd qt| ƒ d S )Nçš™™™™™™?r¨   rh   r©   rm   rU   rM   g      ø?ç      à?r­   ))éØ   é±   )ig  i"  )i	  i–  ))éþÿÿÿrÙ   )r   g      ø¿)gffffff@rM   T)ÚinlineÚ	transformF)r'   r(   r/   r®   Úpir   r*   r   r"   rE   Úadd_label_near)r]   Údeltar+   r,   r|   r}   r³   r´   r~   r   r   ÚCSÚ
disp_unitsÚ
data_unitsr    r    r!   Útest_labelsü   s(   &*ÿrå   c            
      C   s  t jdd\} }t tj d tjd d¡ }}t ||¡\}}dt d| ¡d  t d| ¡ }dt d| ¡ t d| ¡d d  }|| }| |||¡}t	j
j|d	|jd
}|jdd W d   ƒ n1 slw   Y  dd„ |jD ƒ}	d|	v sJ ‚d S )NrA   )rf   rU   rª   g      è?r“   rK   rÙ   Ú"_split_path_and_get_label_rotation)Úwrapsr%   )rq   c                 S   s   g | ]}|d  d ‘qS )r   rM   r    )r¾   Úcargsr    r    r!   rÂ   5  s    z,test_label_contour_start.<locals>.<listcomp>r   )r   r*   r'   rz   rß   r/   ÚsinÚcosr   r   ÚpatchÚobjectræ   rE   Úcall_args_list)
rŸ   r   ÚlatsÚlonsÚwaveÚmeanr¡   rG   Úmocked_splitterÚidxsr    r    r!   Útest_label_contour_start   s     $(þürô   zcontour_corner_mask_False.pngzcontour_corner_mask_True.pngg®Gázþ?)r`   rb   c           	      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 qIt| ƒ d S )Né<   çffffffî?rg   rM   r   rm   r‡   r“   ©Úmask)FT©Úcorner_mask)r'   r)   Úseedr/   rz   rê   ré   rC   Úmarv   r   r   r   r"   )	r]   ÚnÚ
mask_levelÚ	noise_ampr+   r,   r-   rø   rú   r    r    r!   Útest_corner_mask9  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 )Nr‰   r†   rÙ   çffffffæ?rg   r”   )r   r   r   r7   Ú
ValueErrorr   )r-   r    r    r!   Útest_contourf_decreasing_levelsM  s
   "ÿr  c                  C   sF   t  d¡ d¡} tjddd}tj| |d}t|jt  ddd¡ƒ d S )	NrI   rJ   rK   T)ÚnbinsÚ	symmetricr«   iôÿÿÿrL   )	r'   r(   rD   r   ÚMaxNLocatorr   r   r?   rz   )r-   r¬   rG   r    r    r!   Útest_contourf_symmetric_locatorU  s   r  c                  C   sT   t  t  ddd¡t  ddd¡¡\} }t  | |¡}t ¡  t | ||¡}t |¡ d S )NrÜ   rU   rK   )r'   r/   rz   Úhypotr   r   r   rE   )r+   r,   ro   rG   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$   rU   )Úncols)Úzorder)r  Úuse_clabeltext)r'   r/   r(   rs   rt   ru   r   r*   r   r   rE   Ú
get_zorder)r  Úcontour_zorderÚclabel_zorderr+   r,   r-   r   Úax1Úax2rG   Ú	cs_filledÚclabels1Úclabels2Úexpected_clabel_zorderrE   r    r    r!   Útest_clabel_zorderf  s"    ÿ
ÿr  c                  C   sn   t  ddd¡ } }t  | |¡\}}t  |d  |d  ¡}t ¡ \}}|j|||g d¢d}|j|dd d S )	Nr¨   g®Gáz@çš™™™™™©?rU   )r…   rˆ   rÙ   gš™™™™™é?r>   rA   )Úinline_spacing)r'   r(   r/   r®   r   r*   r   rE   )r+   r,   r|   r}   r~   r   r   Ú
contoursetr    r    r!   Útest_clabel_with_large_spacing  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}t| ƒ d S )NFr   rM   r4   )r$   rL   ©re   r  rö   )ÚleftrÉ   g      Àg      #@i°  r$   rÊ   é(   g      Àg      @r­   )ÚvminÚvmax)Únormr•   )r?   r"  r˜   r—   r™   )g:Œ0âŽyE>g    _ B)ç-Cëâ6?g    €„.A)r   rš   r*   rË   r'   rz   r°   rD   r(   r   r	   r–   rs   rž   r   Úget_ylimr   rv   r"   )r]   r   r  r  Úax3Údata_expr¡   Ú
levels_expr?   Úc1Úc2Úc3rµ   r    r    r!   Útest_contourf_log_extension’  s0   
ÿþþr+  zcontour_addlines.png)Úaarch64Úppc64leÚs390xr·   g¸…ëQ¸ž?c                 C   s‚   dt jd< t  ¡ \}}tj d¡ tj dd¡d }| |¡}| |d ¡}| 	|¡}| 
|¡ t|j ¡ ddgd	ƒ t| ƒ d S )
NFr   i,N,r$   i'  iè  gdÌ]KÈ“\@g6«>W'zÃ@r4   )r   rš   r*   r'   r)   rû   rC   Ú
pcolormeshr   rž   Ú	add_linesr   r   r$  r"   )r]   r   r   r|   ÚpcmÚcontrµ   r    r    r!   Útest_contour_addlines¹  s   
	


r3  Úcontour_uneven)Úbaseline_imagesrT   r`   ra   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 t| ƒ d S )NFr   é   rK   rc   rM   rU   r   )rU   rK   rc   r$   rÃ   r>   Úproportional)r   ÚspacingÚuniform)	r   rš   r'   r(   rD   r*   r   rž   r"   )r]   r-   r   r    r   rG   r    r    r!   Útest_contour_unevenÑ  s   
r:  zCrc_lines_linewidth, rc_contour_linewidth, call_linewidths, expected))ç®Gáz®ó?NNr;  )r;  çö(\Âõ@Nr<  )r;  r<  ç®Gáz@r=  c              	   C   sÌ   t | |dœdT t ¡ \}}t d¡ dd¡}|j||d}| ¡ d |ks)J ‚tj	t
jdd	 |jd d |ks=J ‚W d   ƒ n1 sGw   Y  W d   ƒ d S W d   ƒ d S 1 s_w   Y  d S )
N)zlines.linewidthzcontour.linewidth)ÚrcrI   rK   r4   )Ú
linewidthsr   Útlinewidthsr5   )r   r   r*   r'   r(   rD   r   Úget_linewidthsr   r   r   r   r@  )Úrc_lines_linewidthÚrc_contour_linewidthÚcall_linewidthsÚexpectedr   r   r|   rG   r    r    r!   Útest_contour_linewidthä  s   	ÿÿú"úrF  Úpdfc                   C   s    t  t  ddgddgg¡¡ d S )NrM   rU   r4   rK   )r   rE   r   r    r    r    r!   Útest_label_nonagg÷  s    rH  Úcontour_closed_line_loop)r5  rT   r`   c                 C   sf   g d¢g d¢g d¢g d¢g}t jdd\}}|j|dgdgdd	 | d
d¡ | d
d¡ t| ƒ d S )N)r   r   r   )r   rU   r   )rU   rM   rU   )rU   rU   r  rÙ   rÃ   r  )r?  Úalphagš™™™™™¹¿gÍÌÌÌÌÌ @gÍÌÌÌÌÌ@)r   r*   r   Úset_xlimÚset_ylimr"   )r]   r-   r   r   r    r    r!   Útest_contour_closed_line_loopý  s   rM  c                  C   sx   t  ddgddg¡\} }| | }t ¡ \}}| | ||¡}| | ||¡}|j|jks,J ‚| ||¡}|j|jks:J ‚d S )Nr”   rg   )r'   r/   r   r*   r   r   Ú_contour_generator)r+   r,   r-   r   r   Úqcs1Úqcs2Úqcs3r    r    r!   Útest_quadcontourset_reuse  s   rR  Úcontour_manualg{®Gázì?)r5  rT   r`   rb   c                 C   sz  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 t| ƒ d S )Nr   )r   ©rK   rK   r  ÚviridisrU   rM   r4   rK   ©r   rM   rU   T)r£   Úcmapro   Úk)r?  rr   r‡   rL   rc   )
rM   rU   rU   rU   éO   rM   rU   rU   rU   rY  )rr   r?  )Úmatplotlib.contourr   r   r*   r"   )r]   r   r   r   rW  Úlines0Úlines1Úfilled01Úfilled12ÚsegsÚkindsr    r    r!   Útest_contour_manual  s$    $ ÿÿ
ra  Ú!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}	| |	¡ t| ƒ d S )N)rc   rL   r  )r   rM   rU   r4   rK   rV  g333333ó?rU   rM   ©ÚdtypeT)rM   rM   )rM   r4   r÷   rù   rX  )rú   rr   )r   r*   r'   r/   Ú
zeros_likeÚboolrü   rv   r   rž   r   r0  r"   )
r]   r   r   r+   r,   r-   rø   r£   ÚcbarÚlinesr    r    r!   Ú&test_contour_line_start_on_corner_edge6  s   

ri  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©é   rk  rL   rU   r   ç      9@r$   rM   F©Úpixel)rM   r   é!   çYÄ°Ã˜tÿ?rp  gbž•´âÛý?r“   )rM   r   rL   gŸ‘`3@gDl°p’fù?gö—Ý“‡…á?)r4   r   é   gÍ°QÖo&þ?ghW!å@g|ïoÐ^}Œ?©rL   r‡   ©Úindicesrn  )rL   r   é   gA*ÅŽ@g      @g÷ð½¿AÙ?)	r'   rt  r®   rß   Úsumr   r   Úfind_nearest_contourr   )ÚxyÚimgrG   Únearest_contourÚexpected_nearestr    r    r!   Útest_find_nearest_contourJ  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 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 )Nrj  rL   rU   r   rl  r$   z'Method does not support filled contoursr5   rM   Frm  rr  rs  )rU   r‡   T)r'   rt  r®   rß   rv  r   r   r   r7   r  rw  )rx  ry  rG   r    r    r!   Ú#test_find_nearest_contour_no_filled`  s   
&ÿÿ"ÿr}  Ú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#  rA   r$   )gñhãˆµøÄ>gñhãˆµøä>gñhãˆµø?r>   c                 S   s   h | ]}|  ¡ ’qS r    )r{   )r¾   Útextr    r    r!   Ú	<setcomp>v  ó    z<test_contour_autolabel_beyond_powerlimits.<locals>.<setcomp>>   ú0.25ú1.00ú4.00)	r   r   Úadd_subplotr   r'   Ú	geomspacerD   rE   Útexts)r   rG   r    r    r!   Ú)test_contour_autolabel_beyond_powerlimitso  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sAJ ‚d}t‡ fdd„|D ƒƒsPJ ‚tdd„ t||ƒD ƒƒs^J ‚d S )Nr   ©Ú	RectanglerM   r$   r„   ©r$   rÊ   rª   )ú#FFFF00ú#FF00FFz#00FFFFr—   ©r?   rr   r˜   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‘   rŒ  r  rŽ   c                 3   s    | ]}t |ˆ ƒV  qd S r   )r   ©r¾   Úar‰  r    r!   Ú	<genexpr>‹  s   € z0test_contourf_legend_elements.<locals>.<genexpr>c                 s   ó"    | ]\}}t | ¡ |ƒV  qd S r   )r
   Úget_facecolor©r¾   r  r¦   r    r    r!   r‘  Œ  ó   € ÿ)Úmatplotlib.patchesrŠ  r'   r(   rD   r   r   rW  Úset_overÚ	set_underÚchangedÚlegend_elementsrO   Úzip)r+   r,   ÚhrG   ÚartistsÚlabelsÚexpected_colorsr    r‰  r!   Útest_contourf_legend_elementsy  s$   þÿr   c                  C   s   t  dd¡} |  dd¡}| | }g d¢}tj|g d¢|dd}| ¡ \}}|g d¢ks-J ‚td	d
„ |D ƒƒs8J ‚tdd
„ t||ƒD ƒƒsFJ ‚d S )NrM   r$   r„   )r‘   z#00FF00rŽ   r‹  r—   rŽ  )z
$x = 10.0$z
$x = 30.0$z
$x = 50.0$c                 s   s    | ]
}t |tjjƒV  qd S r   )r   r   rh  ÚLine2Dr  r    r    r!   r‘  ›  s   € z/test_contour_legend_elements.<locals>.<genexpr>c                 s   r’  r   )r
   Ú	get_colorr”  r    r    r!   r‘  œ  r•  )r'   r(   rD   r   r   rš  rO   r›  )r+   r,   rœ  rr   rG   r  rž  r    r    r!   Útest_contour_legend_elements  s   þÿr£  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 )Nrg   rm   rh   ç      @©Ú	algorithm)	r'   rv   r   r   r   rN  r   r7   r  )r«  Úklassr-   rG   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 d S t t¡ tj|| dd W d   ƒ d S 1 s:w   Y  d S )	Nrg   rm   rh   r©  F)r«  rú   r¤  T)r'   rv   r   r   r   r7   r  )r«  r-   r    r    r!   Ú#test_algorithm_supports_corner_mask±  s   "ÿr¯  Úcontour_all_algorithmsg¸…ëQ¸®?c                 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 |	 |
¡ qSt| ƒ d S )Nr®  i¥  r”   rg   r$   rc   rk  rÙ   )rc   r$   )ÚscaleÚsizerc  T)r4   r‡   r÷   rU   rª  rX  )r«  rr   )r'   r)   Údefault_rngr/   rz   ré   rê   Únormalre  rf  rü   rv   r   r*   r›  Úravelr   r   Ú	set_titler"   )r]   Ú
algorithmsÚrngr+   r,   r-   rø   rŸ   r    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 ]}
|
 ¡ }| |||¡}|j	|d	d
d | 
d¡ qGd S )NrØ   r¨   rh   r©   rm   rU   rM   )Únrowsr  Tr$   )rÝ   rq   zSimplest default with labels)r'   r(   r/   r®   r   r   Ú
subfiguresr*   r   rE   r¶  )rá   r+   r,   r|   r}   r³   r´   r~   r   ÚfigsÚfr   râ   r    r    r!   Útest_subfigure_clabel×  s    ür¾  ra   )Ú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Ø   r¨   rh   r©   rm   rU   rM   rc   rX  ©rr   r%   T©rq   rÝ   z0Single color - positive contours solid (default))rr   Ú
linestylesz!Single color - positive contours rÁ  ©rr   rÅ  Únegative_linestyles)
r'   r(   r/   r®   r   r*   r   rE   r¶  rÅ  )ra   rá   r+   r,   r|   r}   r³   r´   r~   Úfig1r  ÚCS1Úfig2r  ÚCS2Úfig3r%  ÚCS3r    r    r!   Útest_linestylesë  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Ø   r¨   rh   r©   rm   rU   rM   rc   rX  rÃ  r%   TrÄ  z1Single color - negative contours dashed (default)rÀ  zcontour.negative_linestylez!Single color - negative contours z(using rcParams))rr   rÇ  rÁ  rÆ  )r'   r(   r/   r®   r   r*   r   rE   r¶  rÇ  rš   )ra   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 )Nru  rT  )
r   r   r…  Úget_childrenr   r'   r(   rD   rE   Úremove)r   Úorig_childrenrG   r    r    r!   Útest_contour_remove8  s   rÖ  c                  C   s\   t  ¡ \} }ddgddgg}tjtdd |j|d W d   ƒ d S 1 s'w   Y  d S )Nr   rM   zcontour\(\) takes from 1 to 4r5   )r~   )r   r*   r   r7   r8   r   )r   r   r¡   r    r    r!   Útest_contour_no_argsB  s
   "ÿr×  c                  C   sT   t  ¡ \} }ddgddgg}tjddgd|jd}|j||d}| ¡ d us(J ‚d S )Nr   rM   rÙ   )rÞ   )Ú	clip_path)r   r*   ÚmpatchesÚCircleÚ	transAxesr   Úget_clip_path)r   r   r¡   ÚcirclerG   r    r    r!   Útest_contour_clip_pathI  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 )	NrU   r%   )r4   r4   )FFF)FTFrÙ   r÷   )r   rÙ   rM   )r'   r)   rC   r(   rD   Úastyperf  r   r   Útolistr?   rü   rv   r   rµ  Ú
tricontourÚtricontourf)r+   r,   r-   Úmr    r    r!   Útest_bool_autolevelQ  s   & ("$$rä  c                  C   s8   t  t jt jgt jt jgg¡} tt | ¡jg d¢ƒ d S )N)	g‚vIhÂ%<½gá7ÎQ5½g‚vIhÂ%,½g [n‡½r”   g [n‡=g‚vIhÂ%,=gá7ÎQ5=g‚vIhÂ%<=)r'   rv   Únanr   r   r   r?   )r+   r    r    r!   Útest_all_nanb  s   ÿræ  c                  C   sœ   t  t  ddd¡t  ddd¡¡\} }t  | ¡t  |¡ }tj| ||ddgd}|j|jfD ]}t	|ƒdks7J ‚t	|d ƒdksAJ ‚t	|d ƒdksKJ ‚q-d S )	Nr   r$   rU   rÙ   r>   rL   rM   rK   )
r'   r/   r(   ré   rê   r   r   ÚallsegsÚallkindsrN   )r+   r,   r-   rG   Úresultr    r    r!   Útest_allsegs_allkindsi  s   $ýrê  c                  C   sŠ  t  t d¡ d¡¡} tjtjdd | j	}W d   ƒ n1 s!w   Y  tjtjdd t
| jdd„ |D ƒƒ W d   ƒ n1 sDw   Y  tjtjdd | jd	d„ |D ƒks^J ‚W d   ƒ n1 shw   Y  tjtjd
d | js{J ‚W d   ƒ n1 s…w   Y  tjtjd
d d| _W d   ƒ n1 s w   Y  tjtjd
d | jr³J ‚W d   ƒ d S 1 s¾w   Y  d S )Nru  rT  r   r5   Útcolorsc                 S   ó   g | ]}|  ¡ ‘qS r    )Úget_edgecolor©r¾   r¦   r    r    r!   rÂ   {  r  z(test_deprecated_apis.<locals>.<listcomp>r@  c                 S   rì  r    )Úget_linewidthrî  r    r    r!   rÂ   }  r  ÚantialiasedF)r   r   r'   r(   rD   r   r   r   r   r   r   rë  r@  rð  )rG   Úcollsr    r    r!   Útest_deprecated_apisv  s&   ÿÿÿÿÿ"ÿrò  )Xr¼   Úplatformr9   Úunittestr   Ú	contourpyÚnumpyr'   Únumpy.testingr   r   r   Ú
matplotlibr   r   r   r   r   Úmatplotlib.colorsr	   r
   r–  ÚpatchesrÙ  Úmatplotlib.testing.decoratorsr   r   r   r"   r.   r2   ÚmarkÚparametrizer(   Úemptyr=   rH   rR   r\   rx   r‚   rŒ   r§   r¶   r×   rå   rô   r   r  r  r	  r  r  r+  Úmachiner3  r:  rF  ÚbackendrH  rM  rR  ra  ri  r|  r}  ra   Úcontextrˆ  r   r£  ÚMpl2005ContourGeneratorÚMpl2014ContourGeneratorÚSerialContourGeneratorÚThreadedContourGeneratorr­  r¯  r¹  r¾  rÎ  rÒ  rÖ  r×  rÞ  rä  ræ  rê  rò  r    r    r    r!   Ú<module>   sV   
ÿÿÿÿÿÿÿÿÿÿí


ÿ ÿ!ÿ	ÿ
þ#ýÿÿ


ÿÿÿ

	üþ

ÿ
ÿÿ
 ÿ
)
