
    (?e6z                     |   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 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j                             d d!d"g           ed#gd"d$d%&          d'                         Z'ej                             d d!d"g           ed(gd")          d*                         Z(ej                             d d!d"g           ed+gd$d!,          d-                         Z)ej                             d d!d"g           ed.gd$/          d0                         Z*ej                             d d!d"g           ed1gd"d$d2&          d3                         Z+d4 Z,ej                             d d!d"g           ed5d6gd"d78          d9                         Z-d: Z.d; Z/d< Z0ej                             d=g d>          d?             Z1ej                             d d!d"g           ed@gd"d$dA&          dB                         Z2ej                             d d!d"g           edCgd"d$ ej3                    dDv rdEndF&          dG                         Z4ej                             d d!d"g           edHgdgd"d$I          dJ                         Z5ej                             dKg dL          dM             Z6ej        7                    dN          dO             Z8ej                             d d!d"g           edPgdgd"Q          dR                         Z9dS Z:ej                             d d!d"g           edTgdgd"dUV          dW                         Z;ej                             d d!d"g           edXgdgd"Q          dY                         Z<dZ Z=d[ Z>ej?        @                    d\          d]             ZAd^ ZBd_ ZCej                             d`daejD        fdbejE        fdcejF        fddejG        fdeg          df             ZHej                             dgg dh          di             ZIej                             d d!d"g           edjgdgd"dkV          dl                         ZJdm ZKej                             dng do          dp             ZLej                             dng do          dq             ZMdr ZNds ZOdt ZPdu ZQdv ZRdw ZSdS )x    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           	      T   | sd S t          t          j        t          j                              D ]w}|j        D ]m}|j        D ]c}t          |t          j        j	                  rBt          j        t          j        j                  5  |j         d d d            n# 1 swxY w Y   dnxd S N)mappltfigureget_fignumsaxescollections
isinstancemplcontour
ContourSetpytestwarns_apiMatplotlibDeprecationWarning)do_splitfigaxcolls       =lib/python3.11/site-packages/matplotlib/tests/test_contour.py_maybe_split_collectionsr#      s     3:s0011 ) )( 	) 	)B ) )dCK$:;; )ch&KLL ) )(() ) ) ) ) ) ) ) ) ) ) ) ) ) ))	)) )s   B	B!Bc                      t          j        d          } t          j        d          }t           j                            d          }t          j                    \  }}|                    | ||           d S N
   	   r'   r&   )nparangerandomr   subplotsr   )xyzr   r    s        r"   test_contour_shape_1d_validr0      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_validr6   )   sq    
	"A
	!A[AFB
	!!AlnnGCJJr2qr1   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)   r8   r8   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,   r   raises	TypeErrorreescaper   )argsmessager   r    s       r"   test_contour_shape_errorrB   4   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   r7   d   z%1.2f)fmt)
r   r,   r   r)   r+   randr*   reshapeclabelones)r   r    css      r"   test_contour_no_valid_levelsrN   P   s    lnnGCJJry~~a##BJ///	BIbMM))&113%	@	@BIIbsGnI%%%JJrwvr1   c                  V   t          j        d                              d          } t          j                    \  }}|                    | d          }t          |j                  dk    sJ |                    | d          }|j        |j        k                                    sJ d S )N   r8            rD   )	r)   r*   rJ   r   r,   r   lenrE   all)r/   r   r    cs1cs2s        r"   test_contour_NlevelsrY   \   s     		"f%%AlnnGC
**Q

Csz??Q
**Qq*
!
!CJ#*$))+++++++r1   png)
extensionsc                    |                                                      ddgddgg          }|                                                     ddgddgg          }|                    |                                           d S )Nr   rT      )r,   r   	set_paths	get_paths)fig_testfig_refcs_testcs_refs       r"   test_contour_set_pathsrd   g   s    !!))Aq6Aq6*:;;G''!Q!Q(899Ff&&(()))))r1   split_collectionsFTcontour_manual_labelsmpl20gp=
ף?)remove_textstyletolc                 2   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           t          |            d S )Nr   r&   r]   )   r]      )figsizedpi))      ?      @)rp   皙@)rp         @)manual))       @rq   )ru   rr   )ru   rs   small)rg)rt   fontsizecolors)r)   r3   r*   maxdstackabsr   r   r   arrayrK   r#   )re   r-   r.   r/   rM   ptss         r"   test_contour_manual_labelsr   o   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./////r1   z$contour_manual_colors_and_levels.png)rh   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
        ||           t          |            d S )NFpcolormesh.snapr]   rR   rP   r8   )redyellowpinkblueblack)r]   rR      r&           )neitherminr{   both)r{   r   rT   )r   r   )rz   rE   extendr    )r   rcParamsr,   r)   r*   rJ   	enumerateflatcontourfr   colorbarr#   )re   _axsdatarz   rE   ir    filledr   first_color
last_colorcs                r"   $test_given_colors_levels_and_extendsr      sN    ',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./////r1   zcontour_log_locator.svg)ri   rh   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
                   t!          |            d S )NrG         rq          ru   r]   r&   2   locator      $@ir8   r   )r   r,   r)   linspacer3   expr   r	   
LogLocatorr   rE   powerr*   r   r    
get_yticksr#   )re   r   r    Nr-   r.   XYZ1Z2r   r   cbs                r"   test_log_locator_levelsr      s5    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!(;;;./////r1   zcontour_datetime_axis.png)ri   c                 P  	 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           -Dt%          |            d S )Ng?g\(\?333333?)hspacetopbottomi  rT   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Gr1            r   )axis      right   )r   r   subplots_adjustr   r)   r~   ranger*   r3   subplotr   r   repeatnewaxisget_axesget_xticklabelsset_haset_rotationr#   )
re   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""""	# ./////r1   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           t          |            d S )N皙?r   rq   r   ru   r]   rT   g      ?      ?r   ))      )ig  i"  )i	  i  ))r   )r   g      )gffffff@rT   T)inline	transformF)r)   r*   r3   r   pir   r,   r   rK   add_label_nearr#   )re   deltar-   r.   r   r   r   r   Zr   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====./////r1   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 )NrG   )ro   r]   r   g      ?r   rR   r   "_split_path_and_get_label_rotation)wrapsr'   )ry   c                 *    g | ]}|d          d         S )r   rT    )r   cargss     r"   r   z,test_label_contour_start.<locals>.<listcomp>  s     DDDEE!HQKDDDr1   r   )r   r,   r)   r   r   r3   sincosr   r   patchobjectr   rK   call_args_list)
r   r    latslonswavemeanr   rM   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?)rh   rj   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        ||           ,t          |            d S )N<   ffffff?rp   rT   r   ru      r   mask)FTcorner_mask)r)   r+   seedr3   r   r   r   rI   mar~   r   r   r   r#   )	re   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./////r1   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 )Ng?g333333?r   ffffff?rp   r   )r   r   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 )	NrP   rQ   rR   T)nbins	symmetricr   irS   )	r)   r*   rJ   r   MaxNLocatorr   r   rE   r   )r/   r   rM   s      r"   test_contourf_symmetric_locatorr  +  sk    
	"f%%AoA666G	a	)	)	)BbiS"a)@)@AAAAAr1   c                  *   t          j        t          j        ddd          t          j        ddd                    \  } }t          j        | |          }t	          j                     t	          j        | ||          }t	          j        |           d S )Nr   r]   rR   )r)   r3   r   hypotr   r   r   rK   )r-   r.   rw   rM   s       r"   test_circular_contour_warningr  3  sq    ;r{2q!,,bk"a.C.CDDDAq
AAJLLL	Q1		BJrNNNNNr1   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&   r]   )ncols)zorder)r  use_clabeltext)r)   r3   r*   r{   r|   r}   r   r,   r   r   rK   
get_zorder)r  contour_zorderclabel_zorderr-   r.   r/   r   ax1ax2rM   	cs_filledclabels1clabels2expected_clabel_zorderrK   s                  r"   test_clabel_zorderr  <  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!. = =  ""&<<<<<< = =  ""&<<<<<<= =r1   zcontour_log_extension.pnggv?c           	      v   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        ||          }t%          |            d S )NFr   rT   r8   )r&   rS   rn   g?r   )leftr   g      g      #@i  r&   r   (   g      g      @r   )vminvmax)normr   )rE   r%  r   r   r   )g:0yE>g    _B)-C6?g    .A)r   r   r,   r   r)   r   r   rJ   r*   r   r
   r   r{   r   r    get_ylimr   r~   r#   )re   r   r  r  ax3data_expr   
levels_exprE   c1c2c3r   s                r"   test_contourf_log_extensionr.  X  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	!	!	!B./////r1   zcontour_addlines.png)aarch64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	           t          |            d S )
NFr   i,N,r&   i'  i  gd]Kȓ\@g6>W'z@r8   )r   r   r,   r)   r+   r   rI   
pcolormeshr   r   	add_linesr   r    r'  r#   )re   r   r    r   pcmcontr   s          r"   test_contour_addlinesr7    s     ',CL"#lnnGCINN8
	r2u$A
--

C::afD	c		BLLbenn..:0FJJJ./////r1   contour_uneven)baseline_imagesr[   rh   ri   c                    dt           j        d<   t          j        d                              dd          }t          j        dd          \  }}|d         }|                    |g d	
          }|                    ||d           |d         }|                    |g d	
          }|                    ||d           t          |            d S )NFr      rR   rl   rT   r]   r   )r]   rR   rl   r&   r   rD   proportional)r    spacinguniform)	r   r   r)   r*   rJ   r,   r   r   r#   )re   r/   r   r   r    rM   s         r"   test_contour_unevenr?    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..../////r1   zCrc_lines_linewidth, rc_contour_linewidth, call_linewidths, expected))Gz?NNr@  )r@  (\@NrA  )r@  rA  Gz@rB  c                    t          | |d          5  t          j                    \  }}t          j        d                              dd          }|                    ||          }|                                d         |k    sJ t          j	        t          j        d	          5  |j        d         d         |k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
N)zlines.linewidthzcontour.linewidth)rcrP   rR   r8   )
linewidthsr   tlinewidthsr:   )r   r   r,   r)   r*   rJ   r   get_linewidthsr   r   r   r   rF  )rc_lines_linewidthrc_contour_linewidthcall_linewidthsexpectedr   r    r   rM   s           r"   test_contour_linewidthrL    s    
+=-AC C 
D 
D 
D 4 4,..RIcNN""1a((ZZoZ66  ""1%1111\#:-PPP 	4 	4>!$Q'833333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	44 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s6   BC)*CC)C	C)C	C))C-0C-pdfc                  ^    t          j        t          j        ddgddgg                     d S )NrT   r]   r8   rR   )r   rK   r   r   r1   r"   test_label_nonaggrO    s1     Js{QFQF+,,-----r1   contour_closed_line_loop)r9  r[   rh   c                     g dg dg dg dg}t          j        d          \  }}|                    |dgdgd	           |                    d
d           |                    d
d           t          |            d S )N)r   r   r   )r   r]   r   )r]   rT   r]   )r]   r]   r   r   r   r  )rE  alphagg @g@)r   r,   r   set_xlimset_ylimr#   )re   r/   r   r    s       r"   test_contour_closed_line_looprU    s    
 
IIIyyy)))4Al6***GCJJq3%RDJ444KKcKKc./////r1   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   rp   )r)   r3   r   r,   r   r   _contour_generator)r-   r.   r/   r   r    qcs1qcs2qcs3s           r"   test_quadcontourset_reuser[    s     ;SzC:..DAq	AAlnnGC;;q!QD::aAD"d&=====::dAD"d&=======r1   contour_manualg{Gz?)r9  r[   rh   rj   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           t	          |            d S )Nr   )r   rR   rR   r   viridisr]   rT   r8   rR   r   rT   r]   T)r   cmaprw   k)rE  rz   r   rS   rl   )
rT   r]   r]   r]   O   rT   r]   r]   r]   rc  )rz   rE  )matplotlib.contourr   r   r,   r#   )re   r   r   r    ra  lines0lines1filled01filled12segskindss              r"   test_contour_manualrk    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./////r1   !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          }	|                    |	           t          |            d S )N)rl   rS   r   )r   rT   r]   r8   rR   r`  g333333?r]   rT   dtypeT)rT   rT   )rT   r8   r   r   rb  )r   rz   )r   r,   r)   r3   
zeros_likeboolr   r~   r   r   r   r4  r#   )
re   r   r    r-   r.   r/   r   r   cbarliness
             r"   &test_contour_line_start_on_corner_edgert    s     l6***GC;			22DAqq1uqjAEA:%A=$'''D""DJd
AD!!A[[Aqd[33F<<DJJq!QDJ==ENN5./////r1   c                     t          j        d          } t          j        t           j         t          j        | dz
  dz  d          dz  z            }t          j        |d          }t          j        t          j
        j                  5  |                    ddd	          }d d d            n# 1 swxY w Y   d
}t          ||           t          j        t          j
        j                  5  |                    ddd	          }d d d            n# 1 swxY w Y   d}t          ||           t          j        t          j
        j                  5  |                    ddd	          }d d d            n# 1 swxY w Y   d}t          ||           t          j        t          j
        j                  5  |                    dddd          }d d d            n# 1 swxY w Y   d}t          ||           d S )N   rw  rS   r]   r         9@r&   rT   Fpixel)rT   r   !   YİØt?r|  gb?r   )rT   r   rS   g`3@gDlpf?gݓ?)r8   r      gͰQo&?ghW!@g|o^}?rS   r   indicesrz  )rS   r      gA*Ŏ@g      @gA?)r)   r  r   r   sumr   r   r   r   r   r   r   find_nearest_contourr   )xyimgrM   nearest_contourexpected_nearests        r"   test_find_nearest_contourr    s   	H		B
&"%2626A+q11%78
9
9C	S"		B	ch;	<	< E E11!Qe1DDE E E E E E E E E E E E E E E?o/?@@@	ch;	<	< E E11!Qe1DDE E E E E E E E E E E E E E E>o/?@@@	ch;	<	< E E11!Qe1DDE E E E E E E E E E E E E E E?o/?@@@	ch;	<	< U U11!Qe1TTU U U U U U U U U U U U U U U:o/?@@@@@sH   B00B47B40DDDE::E>E>:G  G$'G$c                     t          j        d          } t          j        t           j         t          j        | dz
  dz  d          dz  z            }t          j        |d          }t          j        t          j
        j                  5  t          j        t          d          5  |                    d	d	d
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          j
        j                  5  t          j        t          d          5  |                    d	ddd
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          j
        j                  5  t          j        t          d          5  |                    dddd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrv  rS   r]   r   rx  r&   z(Method does not support filled contours.r:   rT   Fry  r~  r  )r]   r   T)r)   r  r   r   r  r   r   r   r   r   r   r   r<   r  r  )r  r  rM   s      r"   #test_find_nearest_contour_no_filledr  *  s   	H		B
&"%2626A+q11%78
9
9C	c2		B	ch;	<	< 3 3	z)S	T	T	T3 3
1E2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
ch;	<	< D D	z)S	T	T	TD D
2vUCCCD D D D D D D D D D D D D D D D D D D D D D D D D D D D D D 
ch;	<	< B B	z)S	T	T	TB B
1fDAAAB B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B Bs   C#'C C#C	C#C	C##C'*C'E*-EE*E	E*E	E**E.1E.G24GG2G	G2!G	"G22G69G6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&  rG   r&   )gh㈵>gh㈵>gh㈵?rD   c                 6    h | ]}|                                 S r   )get_text)r   texts     r"   	<setcomp>z<test_contour_autolabel_beyond_powerlimits.<locals>.<setcomp>C  s     111DMMOO111r1   >   0.251.004.00)	r   r   add_subplotr   r)   	geomspacerJ   rK   texts)r    rM   s     r"   )test_contour_autolabel_beyond_powerlimitsr  <  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Mr1   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   )	RectanglerT   r&   r   r&   r   r   )#FFFF00#FF00FFz#00FFFFr   rE   rz   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 r   )r   )r   ar  s     r"   	<genexpr>z0test_contourf_legend_elements.<locals>.<genexpr>X  s-      99Az!Y''999999r1   c              3   `   K   | ])\  }}t          |                                |          V  *d S r   )r   get_facecolorr   r  r   s      r"   r  z0test_contourf_legend_elements.<locals>.<genexpr>Y  sN       : :1a !//++Q// : : : : : :r1   )matplotlib.patchesr  r)   r*   rJ   r   r   ra  set_over	set_underchangedlegend_elementsrV   zip)r-   r.   hrM   artistslabelsexpected_colorsr  s          @r"   test_contourf_legend_elementsr  F  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: : : : : : : : : :r1   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 )NrT   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   r   rs  Line2D)r   r  s     r"   r  z/test_contour_legend_elements.<locals>.<genexpr>h  s1      @@1z!SY-..@@@@@@r1   c              3   `   K   | ])\  }}t          |                                |          V  *d S r   )r   	get_colorr  s      r"   r  z/test_contour_legend_elements.<locals>.<genexpr>i  sL       1 11a !++--++ 1 1 1 1 1 1r1   )r)   r*   rJ   r   r   r  rV   r  )r-   r.   r  rz   rM   r  r  s          r"   test_contour_legend_elementsr  ]  s    
	!RA			"aA	AA'''F	Q|||""
$ 
$ 
$B ((**OGV???????@@@@@@@@@@ 1 1w//1 1 1 1 1 1 1 1 1 1r1   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 )Nrp   ru   rq         @	algorithm)	r)   r~   r   r   r   rW  r   r<   r  )r  klassr/   rM   s       r"   test_algorithm_namer  m  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 )	Nrp   ru   rq   r  F)r  r   r  T)r)   r~   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           |	                    |
           Nt'          |            d S )Nr  i  r   rp   r&   rl   rw  r   )rl   r&   )scalesizern  T)r8   r   r   r]   r  rb  )r  rz   )r)   r+   default_rngr3   r   r   r   normalrp  rq  r   r~   r   r,   r  ravelr   r   	set_titler#   )re   
algorithmsrngr-   r.   r/   r   r   r   r    r  s              r"   test_all_algorithmsr    sZ    >==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./////r1   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   rq   r   ru   r]   rT   )nrowsr  Tr&   )r   ry   zSimplest default with labels)r)   r*   r3   r   r   r   
subfiguresr,   r   rK   r  )r   r-   r.   r   r   r   r   r   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 5r1   ri   )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   rq   r   ru   r]   rT   rl   rb  rz   r'   Try   r   z0Single color - positive contours solid (default))rz   
linestylesz!Single color - positive contours r  rz   r  negative_linestyles)
r)   r*   r3   r   r   r,   r   rK   r  r  )ri   r   r-   r.   r   r   r   r   r   fig1r  CS1fig2r  CS2fig3r(  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""""""r1   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   rq   r   ru   r]   rT   rl   rb  r  r'   Tr  z1Single color - negative contours dashed (default)r  zcontour.negative_linestylez!Single color - negative contours z(using rcParams))rz   r  r  r  )r)   r*   r3   r   r   r,   r   rK   r  r  r   )ri   r   r-   r.   r   r   r   r   r   r  r  r  r  r  r  r  r(  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++++++r1   c                     t          j                                                    } |                                 }|                     t          j        d                              d                    }|                                 |                                 |k    sJ |	                                 |                                 |k    sJ d S )Nr  r^  )
r   r   r  get_childrenr   r)   r*   rJ   rK   remove)r    orig_childrenrM   s      r"   test_contour_remover    s    		!	!	#	#BOO%%M	BIbMM))&11	2	2BIIKKK??----IIKKK??------r1   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   rT   zcontour\(\) takes from 1 to 4r:   )r   )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   rT   r   )r   )	clip_path)r   r,   mpatchesCircle	transAxesr   get_clip_path)r   r    r   circlerM   s        r"   test_contour_clip_pathr    sr    lnnGCFQFD_c3ZEEEF	DF	+	+B)))))r1   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 )	Nr]   r'   )r8   r8   )FFF)FTFr   r   )r   r   rT   )r)   r+   rI   r*   rJ   astyperq  r   r   tolistrE   r   r~   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Ar1   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)   r~   nanr   r   r   rE   )r-   s    r"   test_all_nanr  /  sh    
2626"RVRV$4566Ack!nn3@ @ @A A A A Ar1   c                     t          j        t          j        d                              d                    } t          j        t          j        d          5  | j	        }d d d            n# 1 swxY w Y   t          j        t          d          5  | j        d |D             k    sJ 	 d d d            n# 1 swxY w Y   t          j        t          d          5  | j        d |D             k    sJ 	 d d d            n# 1 swxY w Y   t          j        t          j        d	          5  t          | j        d
 |D                        d d d            n# 1 swxY w Y   t          j        t          j        d          5  | j        d |D             k    sJ 	 d d d            n# 1 swxY w Y   t          j        t          j        d          5  | j        sJ 	 d d d            n# 1 swxY w Y   t          j        t          j        d          5  d| _        d d d            n# 1 swxY w Y   t          j        t          j        d          5  | j        rJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r^  r   r:   allsegsc                 J    g | ] }|                                 D ]	}|j        
!S r   )r_   verticesr   r   ps      r"   r   z(test_deprecated_apis.<locals>.<listcomp>;  s/    OOOQOOAajOOOOr1   allkindsc                 J    g | ] }|                                 D ]	}|j        
!S r   )r_   codesr  s      r"   r   z(test_deprecated_apis.<locals>.<listcomp>=  s/    MMM1q{{}}MM!qwMMMMr1   tcolorsc                 6    g | ]}|                                 S r   )get_edgecolorr   r   s     r"   r   z(test_deprecated_apis.<locals>.<listcomp>?  s"    'I'I'Ia(9(9'I'I'Ir1   rF  c                 6    g | ]}|                                 S r   )get_linewidthr  s     r"   r   z(test_deprecated_apis.<locals>.<listcomp>A  s"    !C!C!C!//"3"3!C!C!Cr1   antialiasedF)r   r   r)   r*   rJ   r   r   r   r   r   PendingDeprecationWarningr  r	  r   r  rF  r  )rM   collss     r"   test_deprecated_apisr  6  s   	RYr]]**622	3	3B	c6m	L	L	L                	/y	A	A	A P PzOO%OOOOOOOOP P P P P P P P P P P P P P P	/z	B	B	B N N{MMMMMMMMMMN N N N N N N N N N N N N N N	c6i	H	H	H K K2:'I'I5'I'I'IJJJK K K K K K K K K K K K K K K	c6m	L	L	L D D~!C!CU!C!C!CCCCCCD D D D D D D D D D D D D D D	c6m	L	L	L  ~              	c6m	L	L	L                	c6m	L	L	L " ">!!!!" " " " " " " " " " " " " " " " " "s   A..A25A2B99B= B=DDD/ EE"EF++F/2F/
G--G14G1H,,H03H0
I//I36I3)Tr   platformr>   unittestr   	contourpynumpyr)   numpy.testingr   r   r   
matplotlibr   r   r   r   r	   matplotlib.colorsr
   r   r  patchesr  matplotlib.testing.decoratorsr   r   r   r#   r0   r6   markparametrizer*   emptyrB   rN   rY   rd   r   r   r   r   r   r   r  r  r  r  r  r.  machiner7  r?  rL  backendrO  rU  r[  rk  rt  r  r  ri   contextr  r  r  Mpl2005ContourGeneratorMpl2014ContourGeneratorSerialContourGeneratorThreadedContourGeneratorr  r  r  r  r  r  r  r  r  r  r  r  r   r1   r"   <module>r)     sj     				              S 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'+  , - ,	  	  	 , , , (((* * )(* ,udm<<*+WRVWWW0 0 XW =<0 ,udm<<9:MMM0 0 NM =<0@ ,udm<<,-W%PPP0 0 QP =<0, ,udm<<./w???0 0 @? =<04 ,udm<<67"'s< < <0 0< < =<0<  2 ,udm<<24RS". . .0 0. . =<0"$ $ $B B B   HA A AB B= =B B=2 ,udm<<./"'   0  0  =< 0F ,udm<<$g  ""&EEE  0 0  =<0" ,udm<<#3"4#W$gG G G0 0G G =<0  I L
 L
 L
 
4 
4 
4 U. . .
 ,udm<<#=">#W$8 8 8	0 	08 8 =<	0
> 
> 
> ,udm<<#3"4#W$DB B B0 0B B =<04 ,udm<<#F"G#W$8 8 80 08 8 =<0"A A A4B B B$ 9N N N: : :.1 1 1  2323	01)45	 1 1 1 ===? ?C C? ?C ,udm<<#;"<#W$DB B B0 0B B =<0&5 5 5( 5557 7# #7 7#@ 5557 7&, &,7 7&,R. . .  * * *B B B"A A A" " " " "r1   