
    P/Phov                     
   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 Zd Zej                            d	 ej        d
           ej        d
           ej         d          fdf ej        d           ej        d           ej         d          fdf ej         d           ej        d           ej         d          fdf ej        d           ej         d           ej         d          fdf ej         d           ej         d           ej         d          fdf ej         d           ej         d           ej         d          fdf ej         d           ej         d           ej         d          fdf ej         d           ej         d           ej         d          fdfd ggfdfd gd gd ggfdfg
          d             Z!d Z"d Z# edg          d             Z$ edgd d!d"#          d$             Z%d% Z& ed&gd d!dg'          d(             Z' ed)gd  ej(                    d*k    rd+nd ,          d-             Z) ed.gd d!dg'          d/             Z*ej                            d0g d1          d2             Z+ ed3gd!d45          d6             Z, ed7gd!8          d9             Z- ed:gd d!d;#          d<             Z.d= Z/ ed>d?gd d@,          dA             Z0dB Z1dC Z2dD Z3ej                            dEg dF          dG             Z4dH Z5 edIgd d!dJ#          dK             Z6 edLgd d! ej(                    dMv rdNndO#          dP             Z7 edQgdgd d!R          dS             Z8ej                            dTg dU          dV             Z9ej        :                    dW          dX             Z; edYgdgd Z          d[             Z<d\ Z= ed]gdgd d^_          d`             Z> edagdgd Z          db             Z?dc Z@dd ZAejB        C                    de          df             ZDdg ZEdh ZFej                            didjejG        fdkejH        fdlejI        fdmejJ        fdng          do             ZKej                            dpg dq          dr             ZL edsgdgd dt_          du             ZMdv ZNej                            dwg dx          dy             ZOej                            dwg dx          dz             ZPd{ ZQd| ZRd} ZSd~ ZTd ZUd 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                      t          j        d          } t          j        d          }t           j                            d          }t          j                    \  }}|                    | ||           d S N
   	   r   r   )nparangerandompltsubplotscontour)xyzfigaxs        ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_contour.pytest_contour_shape_1d_validr      s\    
	"A
	!A
	!!AlnnGCJJq!Q    c                     t          j        d          } t          j        d          }t          j        | |          \  }}t           j                            d          }t	          j                    \  }}|                    |||           d S r   )r   r   meshgridr   r   r   r   )r   r   xgygr   r   r   s          r   test_contour_shape_2d_validr$      sq    
	"A
	!A[AFB
	!!AlnnGCJJr2q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                     t          j                    \  }}t          j        t          t          j        |                    5   |j        |   d d d            d S # 1 swxY w Y   d S )Nmatch)r   r   pytestraises	TypeErrorreescaper   )argsmessager   r   s       r   test_contour_shape_errorr1   &   s    . lnnGC	y	'(:(:	;	;	;  
D                 s   AA #A c                     t          j                    \  } }|                    t          j                            dd          g            |                    t          j        d                              d          dg          }|                    |ddi           |                    t          j	        d                     d S )Nr   levelsQ   r%   d   z%1.2f)fmt)
r   r   r   r   r   randr   reshapeclabelones)r   r   css      r   test_contour_no_valid_levelsr=   B   s    lnnGCJJry~~a##BJ///	BIbMM))&113%	@	@BIIbsGnI%%%JJrwvr   c                  V   t          j        d                              d          } t          j                    \  }}|                    | d          }t          |j                  dk    sJ |                    | d          }|j        |j        k                                    sJ d S )N   r&            r3   )	r   r   r9   r   r   r   lenr4   all)r   r   r   cs1cs2s        r   test_contour_NlevelsrH   N   s     		"f%%AlnnGC
**Q

Csz??Q
**Qq*
!
!CJ#*$))+++++++r   png)
extensionsc                    |                                                      ddgddgg          }|                                                     ddgddgg          }|                    |                                           d S )Nr   rC      )r   r   	set_paths	get_paths)fig_testfig_refcs_testcs_refs       r   test_contour_set_pathsrS   Y   s    !!))Aq6Aq6*:;;G''!Q!Q(899Ff&&(()))))r   contour_manual_labelsTmpl20gp=
ף?)remove_textstyletolc                     t          j        t          j        dd          t          j        dd                    \  } }t          j        t          j        t          |           t          |          g          d          }t          j        dd           t          j        | ||          }t          j	        g d          }t          j
        ||           t          j	        g d	          }t          j
        ||d
d           d S )Nr   r   rL   )   rL      )figsizedpi))      ?      @)r^   皙@)r^         @manual))       @r_   )rd   r`   )rd   ra   small)rg)rc   fontsizecolors)r   r!   r   maxdstackabsr   figurer   arrayr:   )r   r   r   r<   ptss        r   test_contour_manual_labelsrp   a   s    ;ryB''1b)9)9::DAq
ry#a&&#a&&)**A..AJv3''''	Q1		B
(777
8
8CJr#
(777
8
8CJr#
CCCCCCr   c                  R   t          j        dd          } t          j        dd          }t          j        | |          \  }}|dz  dz  |dz  z  dz
  }t          j        |||ddg          }d}t          j        ||g	          }|d                                         d
k    sJ d S )Nir   rL   rC   r   r6   r3   )g?rC   rb   0)r   linspacer!   r   r   r:   get_text)r   r   XYZcontourspointclabelss           r   test_contour_manual_movetor{   o   s    
CA
CA;q!DAq	1q1a4!A{1aAs8444H Ej5'222G 1:  C''''''r   contour_disconnected_segments)rV   rW   rJ   c                  d   t           j        ddddddf         \  } }dt          j        d| dz   dz  z   |dz  z             z  }|dt          j        d| dz
  dz  z   |dz  z             z  z  }t          j                     t          j        | ||dg          }|                    d	g
           d S )NrC   y              5@{Gz?333333?rL      r3   )皙?皙?rb   )r   mgridsqrtr   rm   r   r:   )r   r   r   r<   s       r   -test_contour_label_with_disconnected_segmentsr      s     8BqHb3h&'DAq	BGDAG>)AF2333ARWTQWN*Q!V344	44AJLLL	Q1aS	)	)	)BIIj\I"""""r   z$contour_manual_colors_and_levels.pngarm64g;On?)rV   rX   c                     dt           j        d<   t          j        dd          \  } }t          j        d                              dd          }g d}g d}t          |j                  D ]\  }}|dz  d	k    }g d
|dz           }|r2|dv rdnd }	|dv rdnd }
|                    |||	|
         ||          }n!|	                    ||d d         ||          }t          j
        ||           d S )NFpcolormesh.snaprL   rA   r?   r&   )redyellowpinkblueblack)rL   rA      r           )neitherminrj   both)rj   r   rC   )r   r   r~   )ri   r4   extendr   )r   rcParamsr   r   r   r9   	enumerateflatcontourfr   colorbar)_axsdatari   r4   ir   filledr   first_color
last_colorcs               r   $test_given_colors_levels_and_extendsr      sC    ',CL"#\!QFAs9R==  A&&D777F]]F38$$  2Q"22216: 
	9  &);;;!!K%);;;JDJ0F)G#)&  : :AA 

4ss"(  9 9A 	Q2! r   contourf_hatch_colorsc                      t          j                    \  } }|                    ddgddggg dd          }|                    g d           d S )Nr   rC   rL   )-/\z//gray)hatchescmap)r   greyr   r   )r   r   r   set_edgecolors)r   r   cfs      r   test_hatch_colorsr      s_     lnnGC	q!fq!f%/E/E/EF	S	SB77788888r   zcolor, extend))darkredr   )r   r   ))rf         ?r   ))r   r   r   r   r   c                     ddgddgg}t          j                    \  }}g d}|                    ||| |          }|                                D ]}t	          ||           sJ d S )Nr   rC   rL   )r         ?rC   g      ?      ?r4   ri   r   )r   r   r   get_edgecolorsr
   )colorr   r   r   r   r4   r<   r   s           r   test_single_color_and_extendr      s    
 Q!QALNNEAr&&&F	AfU6	B	BB   $ $!U######$ $r   zcontour_log_locator.svgF)rW   rV   c            
         t          j                    \  } }d}t          j        dd|          }t          j        dd|          }t          j        ||          \  }}t          j        |dz   |dz  z
            }t          j        |dz  dz   |dz  dz  z
            }|d|z  z   }	|                    |	t          j                    	          }
t          |
j
        t          j        d
t          j        dd                               |                     |
|          }t          |j                                        |
j
                   d S )Nr6         r_          rd   rL   r   2   locator      $@ir&   r   )r   r   r   rs   r!   expr   r   
LogLocatorr   r4   powerr   r   r   
get_yticks)r   r   Nr   r   ru   rv   Z1Z2r   r   cbs               r   test_log_locator_levelsr      s&    lnnGCA
D#q!!A
D#q!!A;q!DAq	A1		B	!b&1B{*	+	+BR<D
D&"3"5"566AahryQ7G7G(H(HIII	aB		Bbe..00!(;;;;;r   zcontour_datetime_axis.png)rW   c                  2   t          j                    } |                     ddd           t          j        ddd          t	          j        fdt          d          D                       }t	          j        d          }t	          j        t	          j        d          t	          j        d                    \  }}||z  }t          j	        d	           t          j
        |||           t          j	        d
           t          j        |||           t	          j        |t          j                 dd          }t	          j        |d d t          j        f         dd          }t          j	        d           t          j
        |||           t          j	        d           t          j        |||           |                                 D ]C}|                                D ],}|                    d           |                    d           -Dd S )Ng?g\(\?333333?)hspacetopbottomi  rC   c                 @    g | ]}t          j        |           z   S ))days)datetime	timedelta).0dbases     r   
<listcomp>z.test_contour_datetime_axis.<locals>.<listcomp>   s,    GGG$+3333GGGr            r   )axis      right   )r   rm   subplots_adjustr   r   rn   ranger   r!   subplotr   r   repeatnewaxisget_axesget_xticklabelsset_haset_rotation)	r   r   r   z1z2r   r   labelr   s	           @r   test_contour_datetime_axisr      s   
*,,CsS999T1a((D
GGGGU2YYGGGHHA
	"A[2	"66FB
RAKK1aKLAq
	!BJ-!,,,A
	!AAArzM"BQ///AKK1aKLAqllnn # #'')) 	# 	#ELL!!!r""""	## #r   z!contour_test_label_transforms.pngg?c                     d} t          j        dd|           }t          j        dd|           }t          j        ||          \  }}t          j        |dz  |dz  z    dz            dt           j        z  z  }t          j        |dz
  dz  dz  |dz
  d	z  dz  z    dz            dt           j        z  d	z  dz  z  }d
||z
  z  }t          j        dd          \  }}	|	                    |||          }
g d}g d}|
                                 |D ]\  }}|
	                    ||dd            |D ]\  }}|
	                    ||dd           d S )N皙?r   r_   r   rd   rL   rC   r   r   r   ))      )ig  i"  )i	  i  ))r   )r   g      )gffffff@rC   T)inline	transformF)
r   r   r!   r   pir   r   r   r:   add_label_near)deltar   r   ru   rv   r   r   rw   r   r   CS
disp_units
data_unitss                r   test_labelsr      s   
 E
	$U##A
	$U##A;q!DAq	!Q$A+"	#	#q25y	1B
&QUcMA%!a%3(::;a?
@
@ru9s?S "B 	RAl1a  GC	Aq!		B555J000JIIKKK = =1
!Qtt<<<< > >1
!Qtu====> >r   c                     t          j        d          \  } }t          j        t          j         dz  t          j        dz  d          x}}t          j        ||          \  }}dt          j        d|z            dz  z  t          j        d|z            z  }dt          j        d|z            z  t          j        d|z            dz  dz   z  }||z   }|                    |||          }t          j
                            |d	|j        
          5 }|                    d           d d d            n# 1 swxY w Y   d |j        D             }	d|	v sJ d S )Nr6   )r]   rL   r   r   r   rA   r   "_split_path_and_get_label_rotation)wrapsr   )rh   c                 *    g | ]}|d          d         S )r   rC    )r   cargss     r   r   z,test_label_contour_start.<locals>.<listcomp>%  s     DDDEE!HQKDDDr   r   )r   r   r   rs   r   r!   sincosr   r   patchobjectr   r:   call_args_list)
r   r   latslonswavemeanr   r<   mocked_splitteridxss
             r   test_label_contour_startr
    s    LS!!!EAr+rufqj"%!)R888D4T4((JD$26!d(##q()BF1t8,<,<<DD!!!bfQX&6&61%<q%@AD$;D	D$	%	%B			47 
 
9 
9 <K
		1		               ED_%CDDDD999999s   D77D;>D;zcontour_corner_mask_False.pngzcontour_corner_mask_True.pnggGz?c                  ^   d} d}d}t           j                            dg           t          j        t          j        dd|           t          j        dd|                     \  }}t          j        d|z            t          j        d|z            z  |t           j                            | |           z  z   }t           j                            | |           |k    }t           j        	                    ||	          }d
D ]+}t          j                     t          j        ||           ,d S )N<   ffffff?r^   rC   r   rd   r   r   mask)FTcorner_mask)r   r   seedr!   rs   r   r   r8   marn   r   rm   r   )n
mask_level	noise_ampr   r   r   r  r  s           r   test_corner_maskr  )  s    	AJIINNA3;r{1c1--r{1c1/E/EFFDAq
qsBF1Q3KK)BINN1a,@,@"@@A9>>!Q:-D
AD!!A$ 1 1
QK000001 1r   c                      ddgddgg} t          j                     t          j        t                    5  t          j        | ddg           d d d            d S # 1 swxY w Y   d S )Nr   r   r   ffffff?r^   r   )r   rm   r*   r+   
ValueErrorr   )r   s    r   test_contourf_decreasing_levelsr  :  s    
sc3Z AJLLL	z	"	" $ $Qc
###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   AA!Ac                      t          j        d                              d          } t          j        dd          }t          j        | |          }t          |j        t          j        ddd                     d S )	Nr?   r@   rA   T)nbins	symmetricr   irB   )	r   r   r9   r   MaxNLocatorr   r   r4   rs   )r   r   r<   s      r   test_contourf_symmetric_locatorr   B  sk    
	"f%%AoA666G	a	)	)	)BbiS"a)@)@AAAAAr   c                  *   t          j        t          j        ddd          t          j        ddd                    \  } }t          j        | |          }t	          j                     t	          j        | ||          }t	          j        |           d S )Nr   rL   rA   )r   r!   rs   hypotr   rm   r   r:   )r   r   rf   r<   s       r   test_circular_contour_warningr#  J  sq    ;r{2q!,,bk"a.C.CDDDAq
AAJLLL	Q1		BJrNNNNNr   z-use_clabeltext, contour_zorder, clabel_zorder))T{     )Fr$  r%  )Tr$  N)Fr$  Nc                    t          j        t          j        dd          t          j        dd                    \  }}t          j        t          j        t          |          t          |          g          d          }t          j        d          \  }\  }}|                    ||||          }	|	                    ||||          }
|	
                    ||           }|

                    ||           }|d|z   }n|}|D ]}|                                |k    sJ |D ]}|                                |k    sJ d S )Nr   r   rL   )ncols)zorder)r(  use_clabeltext)r   r!   r   rj   rk   rl   r   r   r   r   r:   
get_zorder)r)  contour_zorderclabel_zorderr   r   r   r   ax1ax2r<   	cs_filledclabels1clabels2expected_clabel_zorderr:   s                  r   test_clabel_zorderr3  S  sc    ;ryB''1b)9)9::DAq
ry#a&&#a&&)**A..Al+++OC#s	Q1^	4	4BQ1^<<IyynyMMH}/=   ? ?H !">!1!. = =  ""&<<<<<< = =  ""&<<<<<<= =r   c                  2   t          j        ddd          x} }t          j        | |          \  }}t          j        |dz   |dz  z
            }t	          j                    \  }}|                    |||g d          }|                    |d           d S )	Nr   gGz@皙?rL   )r   r   r   g?r3   r6   )inline_spacing)r   r   r!   r   r   r   r   r:   )r   r   ru   rv   rw   r   r   
contoursets           r   test_clabel_with_large_spacingr8  l  s     IdD$'''A;q!DAq
1uq!t|AlnnGCAq!,?,?,?@@JIIjI-----r   zcontour_log_extension.pnggv?c            	      X   dt           j        d<   t          j        ddd          \  } \  }}}|                     dd	           t	          j        d
dd          }t	          j        d|                              dd          }t	          j        dd          }t	          j        d|          }|	                    |t          |                                |                                                    }|	                    ||t          |                                |                                          d          }	|	                    ||t          |                                |                                          d          }
t          j        ||          }|j                                        dk    sJ t          j        |	|          }t!          |j                                        t	          j        d                     t          j        |
|          }d S )NFr   rC   r&   )r   rB   r\   r5  r  )leftr   g      g      #@i  r   r   (   g      g      @r   )vminvmax)normr   )r4   r?  r   r   r   )g:0yE>g    _B)-C6?g    .A)r   r   r   r   r   rs   r   r9   r   r   r	   r   rj   r   r   get_ylimr   rn   )r   r-  r.  ax3data_expr   
levels_expr4   c1c2c3r   s               r   test_contourf_log_extensionrH    s   
 ',CL"# <1g>>>C#sCT... {4d++H8B!!))"b11D3##JXc:&&F 
d"

DDD 
 
F 
FB 
d6"

6::<<HHH& 
 
( 
(B 
d6"

6::<<HHH# 
 
% 
%B 
bS	!	!	!B5>>|++++	bS	!	!	!B"25>>#3#3RXk5J5JKKK	bS	!	!	!BBBr   zcontour_addlines.png)aarch64r   ppc64les390xr   gQ?c                     dt           j        d<   t          j                    \  } }t          j                            d           t          j                            dd          dz  }|                    |          }|                    |dz             }| 	                    |          }|
                    |           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  r8   
pcolormeshr   r   	add_linesr   r   rA  )r   r   ru   pcmcontr   s         r   test_contour_addlinesrQ    s     ',CL"#lnnGCINN8
	r2u$A
--

C::afD	c		BLLbenn..:0FJJJJJr   contour_uneven)baseline_imagesrJ   rV   rW   c                     dt           j        d<   t          j        d                              dd          } t          j        dd          \  }}|d         }|                    | g d	
          }|                    ||d           |d         }|                    | g d	
          }|                    ||d           d S )NFr      rA   rZ   rC   rL   r   )rL   rA   rZ   r   r   r3   proportional)r   spacinguniform)r   r   r   r   r9   r   r   r   )r   r   r   r   r<   s        r   test_contour_unevenrY    s     ',CL"#
	"a##A|Aq!!HC	QB	Q000	1	1BLLNL333	QB	Q000	1	1BLLIL.....r   zCrc_lines_linewidth, rc_contour_linewidth, call_linewidths, expected))Gz?NNrZ  )rZ  (\@Nr[  )rZ  r[  Gz@r\  c                 J   t          | |d          5  t          j                    \  }}t          j        d                              dd          }|                    ||          }|                                d         |k    sJ 	 d d d            d S # 1 swxY w Y   d S )N)zlines.linewidthzcontour.linewidth)rcr?   rA   r&   )
linewidthsr   )r   r   r   r   r   r9   r   get_linewidths)rc_lines_linewidthrc_contour_linewidthcall_linewidthsexpectedr   r   ru   r<   s           r   test_contour_linewidthre    s     
+=-AC C 
D 
D 
D 2 2,..RIcNN""1a((ZZoZ66  ""1%111112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   A6BBBpdfc                  ^    t          j        t          j        ddgddgg                     d S )NrC   rL   r&   rA   )r   r:   r   r   r   r   test_label_nonaggrh    s1     Js{QFQF+,,-----r   contour_closed_line_loop)rS  rJ   rV   c                      g dg dg dg dg} t          j        d          \  }}|                    | dgdgd	           |                    d
d           |                    d
d           d S )N)r   r   r   )r   rL   r   )rL   rC   rL   )rL   rL   r:  r   r   r  )r_  alphagg @g@)r   r   r   set_xlimset_ylim)r   r   r   s      r   test_contour_closed_line_looprn    s     
IIIyyy)))4Al6***GCJJq3%RDJ444KKcKKcr   c                  D   t          j        ddgddg          \  } }| |z   }t          j                    \  }}|                    | ||          }|                    | ||          }|j        |j        k    sJ |                    ||          }|j        |j        k    sJ d S )Nr   r^   )r   r!   r   r   r   r   _contour_generator)r   r   r   r   r   qcs1qcs2qcs3s           r   test_quadcontourset_reusert    s     ;SzC:..DAq	AAlnnGC;;q!QD::aAD"d&=====::dAD"d&=======r   contour_manualg{Gz?)rS  rJ   rV   rX   c                     ddl m}  t          j        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g||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ddgg
g}g dg}	 | |ddg|g|	gd|            | |dg|g|	gdd           d S )Nr   )
ContourSetrA   rA   r:  viridisrL   rC   r&   rA   r   rC   rL   T)r   r   rf   k)r_  ri   r   rB   rZ   )
rC   rL   rL   rL   O   rC   rL   rL   rL   r|  )ri   r_  )matplotlib.contourrw  r   r   )
rw  r   r   r   lines0lines1filled01filled12segskindss
             r   test_contour_manualr    s    .-----l6***GCD 1v1v1v&'F1v1v!Q!Q 01FQ!Q!Q!Q!Q89HQ!Q!Q!Q!Q8Q!Q!Q(*HJr999x24dKKKKJrAq6FF+3*MMMM VaVaVaVaVVaVaVaVaV5 6D---.EJrAq6D6E74dCCCCJrA3BBBBBBr   !contour_line_start_on_corner_edgec                     t          j        d          \  } }t          j        g dg d          \  }}d|dz
  dz  z
  |dz
  dz  z   }t          j        |t
                    }d	x|d
<   |d<   t          j                            ||          }|                    |||d	          }| 	                    |          }|
                    |||d	d          }|                    |           d S )N)rZ   rB   r:  )r   rC   rL   r&   rA   rz  g333333?rL   rC   dtypeT)rC   rC   )rC   r&   r  r  r{  )r  ri   )r   r   r   r!   
zeros_likeboolr  rn   r   r   r   rN  )	r   r   r   r   r   r  r   cbarliness	            r   &test_contour_line_start_on_corner_edger    s     l6***GC;			22DAqq1uqjAEA:%A=$'''D""DJd
AD!!A[[Aqd[33F<<DJJq!QDJ==ENN5r   c                  &   t          j        d          } t          j        t           j         t          j        | dz
  dz  d          dz  z            }t          j        |d          }|                    ddd	          }d
}t          ||           |                    ddd	          }d}t          ||           |                    ddd	          }d}t          ||           |                    dddd          }d}t          ||           d S )N   r  rB   rL   r         9@r   rC   Fpixel)rC   r   !   YİØt?r  gb?r   )rC   r   rB   g`3@gDlpf?gݓ?)r&   r      gͰQo&?ghW!@g|o^}?rB   r   indicesr  )rB   r      gA*Ŏ@g      @gA?)	r   r  r   r   sumr   r   find_nearest_contourr   )xyimgr<   nearest_contourexpected_nearests        r   test_find_nearest_contourr  #  s   	H		B
&"%2626A+q11%78
9
9C	S"		B--a%-@@O?o/?@@@--a%-@@O>o/?@@@--a%-@@O?o/?@@@--aF%-PPO:o/?@@@@@r   c                     t          j        d          } t          j        t           j         t          j        | dz
  dz  d          dz  z            }t          j        |d          }t          j        t          d          5  |
                    d	d	d
           d d d            n# 1 swxY w Y   t          j        t          d          5  |
                    d	ddd
           d d d            n# 1 swxY w Y   t          j        t          d          5  |
                    dddd           d d d            d S # 1 swxY w Y   d S )Nr  rB   rL   r   r  r   z'Method does not support filled contoursr(   rC   Fr  r  r  )rL   r   T)r   r  r   r   r  r   r   r*   r+   r  r  )r  r  r<   s      r   #test_find_nearest_contour_no_filledr  9  s!   	H		B
&"%2626A+q11%78
9
9C	c2		B	z)R	S	S	S 3 3
1E2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
z)R	S	S	S D D
2vUCCCD D D D D D D D D D D D D D D 
z)R	S	S	S B B
1fDAAAB B B B B B B B B B B B B B B B B Bs6   B((B,/B,C44C8;C8EEEdefaultc                  ,   t          j                                                    } t          j        t	          j        ddd                              dd          g d          }|                     |           d | j        D             h dk    sJ d S )	Ngư>r@  r6   r   )gh㈵>gh㈵>gh㈵?r3   c                 6    h | ]}|                                 S r   )rt   )r   texts     r   	<setcomp>z<test_contour_autolabel_beyond_powerlimits.<locals>.<setcomp>O  s     111DMMOO111r   >   0.251.004.00)	r   rm   add_subplotr   r   	geomspacer9   r:   texts)r   r<   s     r   )test_contour_autolabel_beyond_powerlimitsr  H  s    		!	!	#	#B	R\$c22::2rBB000
2 
2 
2BIIbMMM111115M5M5MMMMMMMr   c                     ddl m t          j        dd          } |                     dd          }| |z  }t          j        |g dg dd	          }|j                            d
           |j        	                    d           |
                                 |                                \  }}|g dk    sJ d}t          fd|D                       sJ t          d t          ||          D                       sJ d S )Nr   )	RectanglerC   r   r~   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   8   K   | ]}t          |          V  d S N)
isinstance)r   ar  s     r   	<genexpr>z0test_contourf_legend_elements.<locals>.<genexpr>d  s-      99Az!Y''999999r   c              3   `   K   | ])\  }}t          |                                |          V  *d S r  )r
   get_facecolorr   r  r   s      r   r  z0test_contourf_legend_elements.<locals>.<genexpr>e  sN       : :1a !//++Q// : : : : : :r   )matplotlib.patchesr  r   r   r9   r   r   r   set_over	set_underchangedlegend_elementsrE   zip)r   r   hr<   artistslabelsexpected_colorsr  s          @r   test_contourf_legend_elementsr  R  s^   ,,,,,,
	!RA			"aA	AA	a>>>#
% 
% 
%B GUGfJJLLL((**OGV ' ' ' ' ' ' ' <O999999999999 : :w88: : : : : : : : : :r   c                  l   t          j        dd          } |                     dd          }| |z  }g d}t          j        |g d|d          }|                                \  }}|g dk    sJ t          d	 |D                       sJ t          d
 t          ||          D                       sJ d S )NrC   r   r~   )r   z#00FF00r   r  r   r   )z
$x = 10.0$z
$x = 30.0$z
$x = 50.0$c              3   T   K   | ]#}t          |t          j        j                  V  $d S r  )r  mplr  Line2D)r   r  s     r   r  z/test_contour_legend_elements.<locals>.<genexpr>t  s1      @@1z!SY-..@@@@@@r   c              3   `   K   | ])\  }}t          |                                |          V  *d S r  )r
   	get_colorr  s      r   r  z/test_contour_legend_elements.<locals>.<genexpr>u  sL       1 11a !++--++ 1 1 1 1 1 1r   )r   r   r9   r   r   r  rE   r  )r   r   r  ri   r<   r  r  s          r   test_contour_legend_elementsr  i  s    
	!RA			"aA	AA'''F	Q|||""
$ 
$ 
$B ((**OGV???????@@@@@@@@@@ 1 1w//1 1 1 1 1 1 1 1 1 1r   zalgorithm, klassmpl2005mpl2014serialthreaded)invalidNc                 ,   t          j        ddgddgg          }|/t          j        ||           }t	          |j        |          sJ d S t          j        t                    5  t          j        ||            d d d            d S # 1 swxY w Y   d S )Nr^   rd   r_         @	algorithm)	r   rn   r   r   r  rp  r*   r+   r  )r  klassr   r<   s       r   test_algorithm_namer  y  s     	3*sCj)**A\!y111"/7777777]:&& 	1 	1Li0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   %B		BBr  r  r  r  r  c                 8   t          j        ddgddgg          }t          j        || d           | dk    rt          j        || d           d S t	          j        t                    5  t          j        || d           d d d            d S # 1 swxY w Y   d S )	Nr^   rd   r_   r  F)r  r  r  T)r   rn   r   r   r*   r+   r  )r  r   s     r   #test_algorithm_supports_corner_maskr    s    	3*sCj)**A LiU;;;; IQ)>>>>>>]:&& 	C 	CLiTBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   *BBBcontour_all_algorithmsgQ?c                     g d} t           j                            d          }t          j        t          j        ddd          t          j        ddd                    \  }}t          j        d|z            t          j        d|z            z  |                    dd	
          z   }t          j        |t                    }d|d<   t           j
                            ||          }t          j        dd          \  }}t          |                                |           D ]M\  }}	|                    ||||	           |                    ||||	d           |                    |	           Nd S )Nr  i  r   r^   r   rZ   r  r   )rZ   r   )scalesizer  T)r&   r   r  rL   r  r{  )r  ri   )r   r   default_rngr!   rs   r   r   normalr  r  r  rn   r   r   r  ravelr   r   	set_title)

algorithmsrngr   r   r   r  r   r   r   r  s
             r   test_all_algorithmsr    sO    >==J
)


%
%C;r{3R00"+c32J2JKKDAq
r!tRVBqD\\!CJJSwJ$G$GGA=$'''DDJ
AD!!A\!QFAsSYY[[*55    I
Aq!y111


1ai
<<<
Y   r   c                  4   d} t          j        dd|           }t          j        dd|           }t          j        ||          \  }}t          j        |dz   |dz  z
            }t          j        |dz
  dz   |dz
  dz  z
            }||z
  dz  }t	          j                    }|                    dd          }	|	D ]Z}
|
                                }|                    |||          }|	                    |d	d
           |
                    d           [d S )Nr   r   r_   r   rd   rL   rC   )nrowsr'  Tr   )r   rh   zSimplest default with labels)r   r   r!   r   r   rm   
subfiguresr   r   r:   r  )r   r   r   ru   rv   r   r   rw   r   figsfr   r   s                r   test_subfigure_clabelr    s   E
	$U##A
	$U##A;q!DAq	!Q$!Q$		B	1q5Q,1q5Q,.	/	/B	bAA
*,,C>>>++D 5 5ZZ\\ZZ1a  
		"TB	///
34444	5 5r   rW   )soliddasheddashdotdottedc           	         d}t          j        dd|          }t          j        dd|          }t          j        ||          \  }}t          j        |dz   |dz  z
            }t          j        |dz
  dz   |dz
  dz  z
            }||z
  dz  }t	          j                    \  }	}
|
                    |||dd	
          }|
                    |dd           |
                    d           |j	        J t	          j                    \  }}|                    |||dd	|           }|                    |dd           |                    d|             |j	        | k    sJ t	          j                    \  }}|                    |||dd	| d          }|                    |dd           |                    d|             |j	        | k    sJ d S )Nr   r   r_   r   rd   rL   rC   rZ   r{  ri   r   Trh   r   z0Single color - positive contours solid (default))ri   
linestylesz!Single color - positive contours r  ri   r  negative_linestyles)
r   r   r!   r   r   r   r   r:   r  r  )rW   r   r   r   ru   rv   r   r   rw   fig1r-  CS1fig2r.  CS2fig3rB  CS3s                     r   test_linestylesr    s    E
	$U##A
	$U##A;q!DAq	A1		B	!a%!q1uqj(	)	)B	bAA ID#
++aAq+
-
-CJJsQtJ,,,MMDEEE>!!! ID#
++aAq+
?
?CJJsQtJ,,,MM=e==>>>>U"""" ID#
++aAq*3  5 5CJJsQtJ,,,MM=e==>>>>U""""""r   c           	         d}t          j        dd|          }t          j        dd|          }t          j        ||          \  }}t          j        |dz   |dz  z
            }t          j        |dz
  dz   |dz
  dz  z
            }||z
  dz  }t	          j                    \  }	}
|
                    |||dd	
          }|
                    |dd           |
                    d           |j	        dk    sJ | t          j
        d<   t	          j                    \  }}|                    |||dd	
          }|                    |dd           |                    d|  d           |j	        | k    sJ t	          j                    \  }}|                    |||dd	|           }|                    |dd           |                    d|             |j	        | k    sJ t	          j                    \  }}|                    |||dd	d|           }|                    |dd           |                    d|             |j	        | k    sJ d S )Nr   r   r_   r   rd   rL   rC   rZ   r{  r  r   Tr  z1Single color - negative contours dashed (default)r  zcontour.negative_linestylez!Single color - negative contours z(using rcParams))ri   r  r  r  )r   r   r!   r   r   r   r   r:   r  r  r   )rW   r   r   r   ru   rv   r   r   rw   r  r-  r  r  r.  r  r  rB  r  fig4ax4CS4s                        r   test_negative_linestylesr    s    E
	$U##A
	$U##A;q!DAq	A1		B	!a%!q1uqj(	)	)B	bAA ID#
++aAq+
-
-CJJsQtJ,,,MMEFFF"h.... 27CL-.ID#
++aAq+
-
-CJJsQtJ,,,MM &e & & & ' ' '"e++++ ID#
++aAq%+
H
HCJJsQtJ,,,MM=e==>>>"e++++ ID#
++aAq*/  1 1CJJsQtJ,,,MM=e==>>>"e++++++r   c                     t          j                                                    } |                                 }|                     t          j        d                              d                    }|                                 |                                 |k    sJ |	                                 |                                 |k    sJ d S )Nr  rx  )
r   rm   r  get_childrenr   r   r   r9   r:   remove)r   orig_childrenr<   s      r   test_contour_remover    s    		!	!	#	#BOO%%M	BIbMM))&11	2	2BIIKKK??----IIKKK??------r   c                      t          j                    \  } }ddgddgg}t          j        t          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   rC   zcontour\(\) takes from 1 to 4r(   )rw   )r   r   r*   r+   r,   r   )r   r   r   s      r   test_contour_no_argsr
    s    lnnGCFQFD	y(H	I	I	I  


T
                 s   AA"%A"c                      t          j                    \  } }ddgddgg}t          j        ddgd|j                  }|                    ||          }|                                J d S )Nr   rC   r   )r   )	clip_path)r   r   mpatchesCircle	transAxesr   get_clip_path)r   r   r   circler<   s        r   test_contour_clip_pathr    sr    lnnGCFQFD_c3ZEEEF	DF	+	+B)))))r   c                     t           j                            dd          \  } }t          j        d          dz                      d                              t                    }g dg dg dg}t          j        |	                                          j
        	                                dgk    sJ t          j        |          j
        	                                dgk    sJ t          j        t           j                            ||                    j
        	                                dgk    sJ t          j        |	                                          j
        	                                g dk    sJ t          j        |          j
        	                                g dk    sJ t          j        t           j                            ||                    j
        	                                g dk    sJ |                                }t          j        | ||	                                          j
        	                                dgk    sJ t          j        | ||          j
        	                                dgk    sJ t          j        | ||	                                          j
        	                                g dk    sJ t          j        | ||          j
        	                                g dk    sJ d S )	NrL   r   )r&   r&   )FFF)FTFr   r  )r   r   rC   )r   r   r8   r   r9   astyper  r   r   tolistr4   r  rn   r   r  
tricontourtricontourf)r   r   r   ms       r   test_bool_autolevelr  '  s   9>>!QDAq	1	""6**11$77A			 4 4 46K6K6KLA;qxxzz"")0022rd::::;q>> ''))bT1111;ru{{11{--..5<<>>2$FFFF<

##*1133zzzAAAA<??!((**jjj8888<AA..//6==??:::MMMM			A>!Q

++299;;tCCCC>!Q"")0022rd::::?1a,,3::<<


JJJJ?1a##*1133zzzAAAAAAr   c                      t          j        t           j        t           j        gt           j        t           j        gg          } t          t	          j        |           j        g d           d S )N)	gvIh%<g7Q5gvIh%,g [nr   g [n=gvIh%,=g7Q5=gvIh%<=)r   rn   nanr   r   r   r4   )r   s    r   test_all_nanr  8  sh    
2626"RVRV$4566Ack!nn3@ @ @A A A A Ar   c                     t          j        t          j        ddd          t          j        ddd                    \  } }t          j        |           t          j        |          z  }t          j        | ||ddg          }|j        |j        fD ]M}t          |          dk    sJ t          |d                   dk    sJ t          |d                   dk    sJ Nd S )	Nr   r   rL   r   r3   rB   rC   rA   )
r   r!   r   r   r   r   r   allsegsallkindsrD   )r   r   r   r<   results        r   test_allsegs_allkindsr!  ?  s    ;ryB**BIaQ,?,?@@DAq
q		BF1IIA	Q1aX	.	.	.B :r{+ # #6{{a6!9~~""""6!9~~"""""# #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   emptyr1   r=   rH   rS   rp   r{   r   machiner   r   r   r   r   r   r
  r  r  r   r#  r3  r8  rH  rQ  rY  re  backendrh  rn  rt  r  r  r  r  rW   contextr  r  r  Mpl2005ContourGeneratorMpl2014ContourGeneratorSerialContourGeneratorThreadedContourGeneratorr  r  r  r  r  r  r  r
  r  r  r  r!  r   r   r   <module>r5     s
     				               S S S S S S S S     8 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 % % % % % % O O O O O O O O      billIBIaLL("(7"3"34=?bimmYRYr]]HBHW$5$56:<bhx)")B--'):):;;=bimmXRXh'''):):;;=bhv))828G+<+<=46bhw&))828G+<+<=46bhy828I..0A0AB.0bhy828I..0C0CD!#	seXKMcA3!KM'+  , - ,	  	  	 , , , (((* * )(* *+WRVWWW
D 
D XW
D( ( (& 23"'ugG G G# #G G# 9:/x/11W<<ee!E E E E E< *+"'ugG G G9 9G G9  +N +N +N O O$ $	O O$ ,-W%PPP< < QP<( ./w???# # @?#0 67"'s< < <> >< <>8  2 24RS". . .1 1. .1$ $ $B B B   HA A AB B= =B B=,. . .& ./"'  " " "B $g  ""&NNN  K K K #3"4#W$gG G G/ /G G/ I L
 L
 L
 2 2 2 U. . .
 #=">#W$8 8 8 8 8
> 
> 
> #3"4#W$DB B BC CB BC0 #F"G#W$8 8 8 8 8A A A,B B B 9N N N: : :.1 1 1  2323	01)45	 1 1 1 ===? ?C C? ?C #;"<#W$DB B B   B B "5 5 5( 5557 7# #7 7#@ 5557 7&, &,7 7&,R. . .  * * *B B B"A A A
# 
# 
# 
# 
#r   