o
    îÇhQv  ã                   @   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
 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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d%gd&d'd(d)d*d+„ ƒZ%d,d-„ Z&ed.gd&d'd!gd/d0d1„ ƒZ'ed2gd&e (¡ d3kr#d nd4d5d6d7„ ƒZ)ed8gd&d'd!gd/d9d:„ ƒZ*ej d;g d<¢¡d=d>„ ƒZ+ed?gd'd@dAdBdC„ ƒZ,edDgd'dEdFdG„ ƒZ-edHgd&d'dId)dJdK„ ƒZ.dLdM„ Z/edNdOgd&dPd5dQdR„ ƒZ0dSdT„ Z1dUdV„ Z2dWdX„ Z3ej dYg dZ¢¡d[d\„ ƒZ4d]d^„ Z5ed_gd&d'd`d)dadb„ ƒZ6edcgd&d'e (¡ d3kr³ddnded)dfdg„ ƒZ7edhgd!gd&d'didjdk„ ƒZ8ej dlg dm¢¡dndo„ ƒZ9ej :dp¡dqdr„ ƒZ;edsgd!gd&dtdudv„ ƒZ<dwdx„ Z=edygd!gd&dzd{d|d}„ ƒZ>ed~gd!gd&dtdd€„ ƒZ?dd‚„ Z@dƒd„„ ZAejB Cd…¡d†d‡„ ƒZDdˆd‰„ ZEdŠd‹„ ZFej dŒdejGfdŽejHfdejIfdejJfd‘g¡d’d“„ ƒZKej d”g d•¢¡d–d—„ ƒZLed˜gd!gd&d™d{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S )°é    N)Úmock)Úassert_array_almost_equalÚassert_array_almost_equal_nulp)ÚpyplotÚ
rc_contextÚticker)ÚLogNormÚ
same_color)Úcheck_figures_equalÚimage_comparisonc                  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   úq/var/www/html/construction_image-detection-poc/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_levelsB   s
   r8   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   r4   r   r   r   Úlenr/   Úall)r   r   r   Úcs1Úcs2r   r   r   Útest_contour_NlevelsN   s   rB   Úpng)Ú
extensionsc                 C   sF   |   ¡  ddgddgg¡}|  ¡  ddgddgg¡}| | ¡ ¡ d S )Nr   r=   é   )r   r   Ú	set_pathsÚ	get_paths)Úfig_testÚfig_refÚcs_testÚcs_refr   r   r   Útest_contour_set_pathsY   s   rL   Úcontour_manual_labelsTÚ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  	g d¢¡}tj
||d t  	g d	¢¡}tj
||d
dd d S )Nr   r   rE   )é   rE   éÈ   )ÚfigsizeÚdpi))ç      ð?ç      @)rV   çš™™™™™@)rV   ç      @©Úmanual))ç       @rW   )r\   rX   )r\   rY   Úsmall)ÚrÚg)r[   ÚfontsizeÚcolors)r   r   r   ÚmaxÚdstackÚabsr   Úfigurer   Úarrayr5   )r   r   r   r7   Úptsr   r   r   Útest_contour_manual_labelsa   s    rh   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   rE   r=   r   r1   r.   )gÍÌÌÌÌÌô?r=   rZ   Ú0)r   Úlinspacer   r   r   r5   Úget_text)r   r   ÚXÚYÚZÚcontoursÚpointÚclabelsr   r   r   Útest_contour_manual_movetoo   s   rr   Úcontour_disconnected_segments)rO   rP   rD   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}|jd	gd
 d S )Néÿÿÿÿr=   y              5@ç{®Gáz„?ç333333Ó?rE   é   r.   )çš™™™™™É?çš™™™™™¹?rZ   )r   ÚmgridÚsqrtr   re   r   r5   )r   r   r   r7   r   r   r   Ú-test_contour_label_with_disconnected_segments‚   s   "&r|   z$contour_manual_colors_and_levels.pngÚx86_64g;ßO—n’?)rO   rQ   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   r;   r9   r#   )ÚredÚyellowÚpinkÚblueÚblack)rE   r;   é   r   ç        )ÚneitherÚminrb   Úboth)rb   r†   r=   )r‡   r†   rt   )ra   r/   Úextend©r   )r   ÚrcParamsr   r   r   r4   Ú	enumerateÚflatÚcontourfr   Úcolorbar)Ú_ÚaxsÚdatara   r/   Úir   Úfilledr‰   Úfirst_colorÚ
last_colorÚcr   r   r   Ú$test_given_colors_levels_and_extendsŽ   s&   
ÿÿðr˜   Úcontourf_hatch_colorsc                  C   s>   t  ¡ \} }|jddgddggg d¢dd}| g d¢¡ d S )Nr   r=   rE   )ú-ú/ú\z//Úgray)ÚhatchesÚcmap)r‚   Úgreyr€   r   )r   r   rŽ   Úset_edgecolors)r   r   Úcfr   r   r   Útest_hatch_colors®   s    r£   zcolor, extend))Údarkredr†   )r¤   rˆ   ))r^   ç      à?r†   ))ry   rx   r¥   rv   r†   c                 C   sV   ddgddgg}t  ¡ \}}g d¢}|j||| |d}| ¡ D ]	}t|| ƒs(J ‚qd S )Nr   r=   rE   )r¥   ç      è?r=   g      ô?ç      ø?©r/   ra   r‰   )r   r   r   Úget_edgecolorsr	   )Úcolorr‰   r   r   r   r/   r7   r—   r   r   r   Útest_single_color_and_extend¶   s   ÿr«   zcontour_log_locator.svgF)rP   rO   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 )Nr1   ç      ÀrW   ç       Àr\   rE   r   é2   ©Úlocatorç      $@iúÿÿÿr#   rŠ   )r   r   r   rj   r   ÚexprŽ   r   Ú
LogLocatorr   r/   Úpowerr   r   r   Ú
get_yticks)r   r   ÚNr   r   rl   rm   ÚZ1ÚZ2r’   r—   Úcbr   r   r   Útest_log_locator_levelsÄ   s    rº   zcontour_datetime_axis.png)rP   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   re   Úsubplots_adjustrÀ   r   rf   Úranger   r   Úsubplotr   rŽ   Ú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.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¢}|
 ¡  |D ]\}}|
j	||dd d qm|D ]\}}|
j	||ddd q}d S )Nçš™™™™™™?r¬   rW   r­   r\   rE   r=   r§   r¥   r±   ))éØ   é±   )ig  i"  )i	  i–  ))éþÿÿÿr¥   )r   g      ø¿)gffffff@r=   T)ÚinlineÚ	transformF)
r   r   r   r²   Úpir   r   r   r5   Úadd_label_near)Údeltar   r   rl   rm   r·   r¸   rn   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 )Nr1   )rU   rE   r®   r¦   r„   r;   r¥   Ú"_split_path_and_get_label_rotation)Úwrapsr   )r`   c                 S   s   g | ]}|d  d ‘qS )r   r=   r   )rÂ   Úcargsr   r   r   rÆ   %  s    z,test_label_contour_start.<locals>.<listcomp>r   )r   r   r   rj   râ   r   ÚsinÚcosr   r   ÚpatchÚobjectré   r5   Úcall_args_list)
r   r   ÚlatsÚlonsÚwaveÚmeanr’   r7   Úmocked_splitterÚidxsr   r   r   Útest_label_contour_start  s     $(þür÷   zcontour_corner_mask_False.pngzcontour_corner_mask_True.pngg®Gázþ?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 qId S )Né<   çffffffî?rV   r=   r   r\   rw   r„   ©Úmask)FT©Úcorner_mask)r   r   Úseedr   rj   rí   rì   r3   Úmarf   r   re   rŽ   )Ú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 )Nry   rv   r¥   çffffffæ?rV   r…   )r   re   r&   r'   Ú
ValueErrorrŽ   )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 )	Nr9   r:   r;   T)ÚnbinsÚ	symmetricr¯   iôÿÿÿr<   )	r   r   r4   r   ÚMaxNLocatorrŽ   r   r/   rj   )r   r°   r7   r   r   r   Útest_contourf_symmetric_locatorB  s   r
  c                  C   sT   t  t  ddd¡t  ddd¡¡\} }t  | |¡}t ¡  t | ||¡}t |¡ d S )Nrß   rE   r;   )r   r   rj   Úhypotr   re   r   r5   )r   r   r^   r7   r   r   r   Útest_circular_contour_warningJ  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   rb   rc   rd   r   r   r   rŽ   r5   Ú
get_zorder)r  Úcontour_zorderÚclabel_zorderr   r   r   r   Úax1Úax2r7   Ú	cs_filledÚclabels1Úclabels2Úexpected_clabel_zorderr5   r   r   r   Útest_clabel_zorderS  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@çš™™™™™©?rE   )ru   rx   r¥   gš™™™™™é?r.   r1   )Úinline_spacing)r   r   r   r²   r   r   r   r5   )r   r   rl   rm   rn   r   r   Ú
contoursetr   r   r   Útest_clabel_with_large_spacingl  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<   ©rT   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   rj   r´   r4   r   rŽ   r   r‡   rb   r   r   Úget_ylimr   rf   )r   r  r  Úax3Údata_expr’   Ú
levels_expr/   Úc1Úc2Úc3r¹   r   r   r   Útest_contourf_log_extension  s.   
ÿþþr.  zcontour_addlines.pngg¸…ëQ¸ž?r»   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   r‹   r   r   r   rþ   r3   Ú
pcolormeshr   r   Ú	add_linesr   r   r'  )r   r   rl   ÚpcmÚcontr¹   r   r   r   Útest_contour_addlines£  s   



r3  Úcontour_uneven)Úbaseline_imagesrD   rO   rP   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~   é   r;   rR   r=   rE   r   )rE   r;   rR   r   rÇ   r.   Úproportional)r   ÚspacingÚuniform)r   r‹   r   r   r4   r   rŽ   r   )r   r   r‘   r   r7   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   sv   t | |dœd) t ¡ \}}t d¡ dd¡}|j||d}| ¡ d |ks)J ‚W d   ƒ d S 1 s4w   Y  d S )N)zlines.linewidthzcontour.linewidth)Úrcr9   r;   r#   )Ú
linewidthsr   )r   r   r   r   r   r4   r   Úget_linewidths)Úrc_lines_linewidthÚrc_contour_linewidthÚcall_linewidthsÚexpectedr   r   rl   r7   r   r   r   Útest_contour_linewidthÆ  s   	ÿ"ûrE  Úpdfc                   C   s    t  t  ddgddgg¡¡ d S )Nr=   rE   r#   r;   )r   r5   r   r   r   r   r   Útest_label_nonagg×  s    rG  Úcontour_closed_line_loop)r5  rD   rO   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_loopÝ  s
   rL  c                  C   sx   t  ddgddg¡\} }| | }t ¡ \}}| | ||¡}| | ||¡}|j|jks,J ‚| ||¡}|j|jks:J ‚d S )Nr…   rV   )r   r   r   r   rŽ   r   Ú_contour_generator)r   r   r   r   r   Úqcs1Úqcs2Úqcs3r   r   r   Útest_quadcontourset_reuseé  s   rQ  Úcontour_manualg{®Gázì?)r5  rD   rO   rQ   c            
      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©r;   r;   r   ÚviridisrE   r=   r#   r;   ©r   r=   rE   T)r”   rŸ   r^   Úk)r?  ra   rw   r<   rR   )
r=   rE   rE   rE   éO   r=   rE   rE   rE   rX  )ra   r?  )Úmatplotlib.contourrS  r   r   )
rS  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)rR   r<   r   )r   r=   rE   r#   r;   rV  g333333ó?rE   r=   ©ÚdtypeT)r=   r=   )r=   r#   rú   rü   rW  )rý   ra   )r   r   r   r   Ú
zeros_likeÚboolrÿ   rf   rŽ   r   r   r0  )	r   r   r   r   r   rû   r”   ÚcbarÚlinesr   r   r   Ú&test_contour_line_start_on_corner_edge  s   
rh  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©é   rj  r<   rE   r   ç      9@r   r=   F©Úpixel)r=   r   é!   çYÄ°Ã˜tÿ?ro  gbž•´âÛý?r„   )r=   r   r<   gŸ‘`3@gDl°p’fù?gö—Ý“‡…á?)r#   r   é   gÍ°QÖo&þ?ghW!å@g|ïoÐ^}Œ?©r<   rw   ©Úindicesrm  )r<   r   é   gA*ÅŽ@g      @g÷ð½¿AÙ?)	r   rs  r²   râ   Úsumr   r   Úfind_nearest_contourr   )ÚxyÚimgr7   Únearest_contourÚexpected_nearestr   r   r   Útest_find_nearest_contour!  s   
&


r{  c                  C   s   t  d¡} t  t j t  | d d d¡d  ¡}t |d¡}tjt	dd |j
d	d	d
d W d   ƒ n1 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 )Nri  r<   rE   r   rk  r   z'Method does not support filled contoursr$   r=   Frl  rq  rr  )rE   rw   T)r   rs  r²   râ   ru  r   rŽ   r&   r'   r  rv  )rw  rx  r7   r   r   r   Ú#test_find_nearest_contour_no_filled7  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&  r1   r   )gñhãˆµøÄ>gñhãˆµøä>gñhãˆµø?r.   c                 S   s   h | ]}|  ¡ ’qS r   )rk   )rÂ   Útextr   r   r   Ú	<setcomp>M  s    z<test_contour_autolabel_beyond_powerlimits.<locals>.<setcomp>>   ú0.25ú1.00ú4.00)	r   re   Úadd_subplotr   r   Ú	geomspacer4   r5   Útexts)r   r7   r   r   r   Ú)test_contour_autolabel_beyond_powerlimitsF  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   ©Ú	Rectangler=   r   rt   ©r   rÎ   r®   )ú#FFFF00ú#FF00FFz#00FFFFrˆ   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 ©N)Ú
isinstance©rÂ   Úar‡  r   r   Ú	<genexpr>b  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  c  ó   € ÿ)Úmatplotlib.patchesrˆ  r   r   r4   r   rŽ   rŸ   Úset_overÚ	set_underÚchangedÚlegend_elementsr?   Úzip)r   r   Úhr7   ÚartistsÚlabelsÚexpected_colorsr   r‡  r   Útest_contourf_legend_elementsP  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 )Nr=   r   rt   )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  Úmplrg  ÚLine2DrŽ  r   r   r   r  r  s   € z/test_contour_legend_elements.<locals>.<genexpr>c                 s   r‘  rŒ  )r	   Ú	get_colorr“  r   r   r   r  s  r”  )r   r   r4   r   r   r™  r?   rš  )r   r   r›  ra   r7   rœ  r  r   r   r   Útest_contour_legend_elementsg  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 )NrV   r\   rW   ç      @©Ú	algorithm)	r   rf   r   rŽ   r  rM  r&   r'   r  )r«  Úklassr   r7   r   r   r   Útest_algorithm_namew  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 )	NrV   r\   rW   r©  F)r«  rý   r¤  T)r   rf   r   rŽ   r&   r'   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 | |	¡ qSd S )Nr®  i¥  r…   rV   r   rR   rj  r¥   )rR   r   )ÚscaleÚsizerb  T)r#   rw   rú   rE   rª  rW  )r«  ra   )r   r   Údefault_rngr   rj   rì   rí   Únormalrd  re  rÿ   rf   r   r   rš  ÚravelrŽ   r   Ú	set_title)
Ú
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¬   rW   r­   r\   rE   r=   )Únrowsr  Tr   )rà   r`   zSimplest default with labels)r   r   r   r²   r   re   Ú
subfiguresr   r   r5   r¶  )rä   r   r   rl   rm   r·   r¸   rn   r   ÚfigsÚfr   rå   r   r   r   Útest_subfigure_clabel«  s    ür¾  rP   )Ú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¬   rW   r­   r\   rE   r=   rR   rW  ©ra   r   T©r`   rà   z0Single color - positive contours solid (default))ra   Ú
linestylesz!Single color - positive contours rÁ  ©ra   rÅ  Únegative_linestyles)
r   r   r   r²   r   r   r   r5   r¶  rÅ  )rP   rä   r   r   rl   rm   r·   r¸   rn   Ú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¬   rW   r­   r\   rE   r=   rR   rW  rÃ  r   TrÄ  z1Single color - negative contours dashed (default)rÀ  zcontour.negative_linestylez!Single color - negative contours z(using rcParams))ra   rÇ  rÁ  rÆ  )r   r   r   r²   r   r   r   r5   r¶  rÇ  r‹   )rP   rä   r   r   rl   rm   r·   r¸   rn   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 )Nrt  rT  )
r   re   rƒ  Úget_childrenr   r   r   r4   r5   Úremove)r   Úorig_childrenr7   r   r   r   Útest_contour_remove  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   r=   zcontour\(\) takes from 1 to 4r$   )rn   )r   r   r&   r'   r(   r   )r   r   r’   r   r   r   Útest_contour_no_args  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   r=   r¥   )rá   )Ú	clip_path)r   r   ÚmpatchesÚCircleÚ	transAxesr   Úget_clip_path)r   r   r’   Úcircler7   r   r   r   Útest_contour_clip_path  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   r3   r   r4   Úastypere  r   r   Útolistr/   rÿ   rf   rŽ   rµ  Ú
tricontourÚtricontourf)r   r   r   Úmr   r   r   Útest_bool_autolevel%  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   rf   Únanr   r   r   r/   )r   r   r   r   Útest_all_nan6  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   rE   r¥   r.   r<   r=   r;   )
r   r   r   rì   rí   r   r   ÚallsegsÚallkindsr>   )r   r   r   r7   Úresultr   r   r   Útest_allsegs_allkinds=  s   $ýrê  )WrÀ   Úplatformr)   Úunittestr   Ú	contourpyÚnumpyr   Únumpy.testingr   r   Ú
matplotlibr   r   r   r   r   Úmatplotlib.colorsr   r	   r•  ÚpatchesrÙ  Úmatplotlib.testing.decoratorsr
   r   r&   r   r!   ÚmarkÚparametrizer   Úemptyr-   r8   rB   rL   rh   rr   r|   Úmachiner˜   r£   r«   rº   rÛ   rè   r÷   r  r  r
  r  r  r  r.  r3  r:  rE  ÚbackendrG  rL  rQ  r`  rh  r{  r|  rP   Úcontextr†  rŸ  r£  ÚMpl2005ContourGeneratorÚMpl2014ContourGeneratorÚSerialContourGeneratorÚThreadedContourGeneratorr­  r¯  r¹  r¾  rÎ  rÒ  rÖ  r×  rÞ  rä  ræ  rê  r   r   r   r   Ú<module>   sB   
ÿÿÿÿÿÿÿÿÿÿí



ÿ

ÿ
ÿ




ÿ
ÿ
	ÿ
þ

!ÿ
ÿ
ÿ


ÿ

ÿ
ÿ


	üþ

ÿ
ÿ
ÿ
 ÿ
)
