
    EVfn~                     |   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>                  jA                  d
 ejB                  d       ejB                  d       ejD                  d      fdf ejB                  d       ejB                  d       ejD                  d      fdf ejD                  d       ejB                  d       ejD                  d      fdf ejB                  d       ejD                  d       ejD                  d      fdf ejD                  d       ejD                  d       ejD                  d      fdf ejD                  d       ejD                  d       ejD                  d      fdf ejD                  d       ejD                  d       ejD                  d      fdf ejD                  d       ejD                  d       ejD                  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>                  jA                  d d!d"g       ed#gd"d$d%&      d'               Z'ej>                  jA                  d d!d"g       ed(gd"d$dg)      d*               Z(ej>                  jA                  d d!d"g       ed+gd",      d-               Z)ej>                  jA                  d d!d"g       ed.gd$d!/      d0               Z*ej>                  jA                  d d!d"g       ed1gd$2      d3               Z+ej>                  jA                  d d!d"g       ed4gd"d$d5&      d6               Z,d7 Z-ej>                  jA                  d d!d"g       ed8d9gd"d:;      d<               Z.d= Z/d> Z0d? Z1ej>                  jA                  d@g dA      dB        Z2dC Z3ej>                  jA                  d d!d"g       edDgd"d$dE&      dF               Z4ej>                  jA                  d d!d"g       edGgd"d$ ejj                         dHv rdIndJ&      dK               Z6ej>                  jA                  d d!d"g       edLgdgd"d$M      dN               Z7ej>                  jA                  dOg dP      dQ        Z8ej>                  js                  dR      dS        Z:ej>                  jA                  d d!d"g       edTgdgd"U      dV               Z;dW Z<ej>                  jA                  d d!d"g       edXgdgd"dYZ      d[               Z=ej>                  jA                  d d!d"g       ed\gdgd"U      d]               Z>d^ Z?d_ Z@ej                  j                  d`      da        ZCdb ZDdc ZEej>                  jA                  dddeej                  fdfej                  fdgej                  fdhej                  fdig      dj        ZJej>                  jA                  dkg dl      dm        ZKej>                  jA                  d d!d"g       edngdgd"doZ      dp               ZLdq ZMej>                  jA                  drg ds      dt        ZNej>                  jA                  drg ds      du        ZOdv ZPdw ZQdx ZRdy ZSdz ZTd{ ZUd| ZVy)}    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           	         | sy t        t        j                  t        j                               D ]  }|j                  D ]z  }|j
                  D ]i  }t        |t        j                  j                        s(t        j                  t        j                  j                        5  |j
                   d d d        k |  y # 1 sw Y   zxY wN)mappltfigureget_fignumsaxescollections
isinstancemplcontour
ContourSetpytestwarns_apiMatplotlibDeprecationWarning)do_splitfigaxcolls       f/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/matplotlib/tests/test_contour.py_maybe_split_collectionsr#      s    3::s01 )(( 	)B )dCKK$:$:;chh&K&KL )(() ))	))) )s   #B?	?Cc                      t        j                  d      } t        j                  d      }t         j                  j                  d      }t        j                         \  }}|j                  | ||       y N
   	   r'   r&   )nparangerandomr   subplotsr   )xyzr   r    s        r"   test_contour_shape_1d_validr0      sO    
		"A
		!A
		!AllnGCJJq!Q    c                     t        j                  d      } t        j                  d      }t        j                  | |      \  }}t         j                  j                  d      }t	        j
                         \  }}|j                  |||       y r%   )r)   r*   meshgridr+   r   r,   r   )r-   r.   xgygr/   r   r    s          r"   test_contour_shape_2d_validr6   )   sc    
		"A
		!A[[AFB
		!AllnGC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        y # 1 sw Y   y xY w)Nmatch)r   r,   r   raises	TypeErrorreescaper   )argsmessager   r    s       r"   test_contour_shape_errorrB   4   sM    . llnGC	y		'(:	; 

D  s   AA(c                  r   t        j                         \  } }|j                  t        j                  j                  dd      g        |j                  t        j                  d      j                  d      dg      }|j                  |ddi       |j                  t        j                  d             y )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    llnGCJJryy~~a#BJ/	BIIbM))&13%	@BIIbsGnI%JJrwwvr1   c                  J   t        j                  d      j                  d      } t        j                         \  }}|j                  | d      }t        |j                        dkD  sJ |j                  | d      }|j                  |j                  k(  j                         sJ y )N   r8            rD   )	r)   r*   rJ   r   r,   r   lenrE   all)r/   r   r    cs1cs2s        r"   test_contour_NlevelsrY   \   s     			"f%AllnGC
**Q
Cszz?Q
**Qq*
!CJJ#**$))+++r1   png)
extensionsc                     | j                         j                  ddgddgg      }|j                         j                  ddgddgg      }|j                  |j                                y )Nr   rT      )r,   r   	set_paths	get_paths)fig_testfig_refcs_testcs_refs       r"   test_contour_set_pathsrd   g   se    !))Aq6Aq6*:;G''!Q!Q(89Ff&&()r1   split_collectionsFTcontour_manual_labels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        |        t        j                  g d      }t        j                  ||       t        j                  g d	      }t        j                  ||d
d       y )Nr   r&   r]   )   r]      )figsizedpi))      ?      @)rp   皙@)rp         @manual))       @rq   )rv   rr   )rv   rs   small)rg)ru   fontsizecolors)r)   r3   r*   maxdstackabsr   r   r   r#   arrayrK   )re   r-   r.   r/   rM   ptss         r"   test_contour_manual_labelsr   o   s     ;;ryyB'1b)9:DAq
ryy#a&#a&)*A.AJJv3'	Q1	B./
((7
8CJJr#
((7
8CJJr#
Cr1   contour_disconnected_segments)rh   ri   r[   c                    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      }t        |        |j                  d	g
       t        |        y )NrT   y              5@{Gz?333333?r]      rD   )皙?皙?rt   )r)   mgridsqrtr   r   r   r#   rK   )re   r-   r.   r/   rM   s        r"   -test_contour_label_with_disconnected_segmentsr      s     88BqHb3h&'DAq	BGGDAG>)AF233ARWWTQWN*Q!V34	44AJJL	Q1aS	)B ./IIj\I"./r1   z$contour_manual_colors_and_levels.png)rh   c                    dt         j                  d<   t        j                  dd      \  }}t        j                  d      j                  dd      }g d}g d}t        |j                        D ]q  \  }}|dz  d	k(  }g d
|dz     }	|r)|	dv rdnd }
|	dv rdnd }|j                  |||
| ||	      }n|j                  ||d d ||	      }t        j                  ||       s t        |        y )NFpcolormesh.snapr]   rR   rP   r8   )redyellowpinkblueblack)r]   rR      r&           )neitherminr|   both)r|   r   rT   )r   r   r   )r{   rE   extendr    )r   rcParamsr,   r)   r*   rJ   	enumerateflatcontourfr   colorbarr#   )re   _axsdatar{   rE   ir    filledr   first_color
last_colorcs                r"   $test_given_colors_levels_and_extendsr      s    ',CLL"#\\!QFAs99R=  A&D7FF388$ 2Q"216:  &);;!K%);;JDJ)G#)&  :A 

4s"(  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   }
|j                  |
t        j                         	      }t        |j                  t        j                  d
t        j                  dd                   |j                  ||      }t        |j                  j                         |j                         t!        |        y )NrG         rq          rv   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      s    llnGCA
D#q!A
D#q!A;;q!DAq	A1	B	!b&1B{*	+BR<D
D&"3"3"56AahhryyQ7G(HI	aB	Bbee..0!((;./r1   zcontour_datetime_axis.png)ri   c           	      ~   t        j                         }|j                  ddd       t        j                  ddd      }t	        j
                  t        d      D cg c]  }|t        j                  |      z    c}      }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                  |||       |j                         D ]9  }	|	j!                         D ]$  }
|
j#                  d       |
j%                  d       & ; t'        |        y c c}w )Ng?g\(\?333333?)hspacetopbottomi  rT      )days      r   )axis      right   )r   r   subplots_adjustdatetimer)   r   range	timedeltar*   r3   subplotr   r   repeatnewaxisget_axesget_xticklabelsset_haset_rotationr#   )re   r   basedr-   r.   z1z2r/   r    labels              r"   test_contour_datetime_axisr      s    **,CsS9T1a(D
U2YG$++33GHA
		"A[[2		"6FB
RAKKKK1aKKLLAq
		!BJJ-!,A
		!ArzzM"BQ/AKKKK1aKKLLAqlln #'') 	#ELL!r"	##
 ./' Hs    H: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      \  }	}
|
j                  |||      }g d}g d}t        |        |j                          |D ]  \  }}|j                  ||dd         |D ]  \  }}|j                  ||dd        t        |        y )N皙?r   rq   r   rv   r]   rT   g      ?      ?r   ))      )ig  i"  )i	  i  ))r   )r   g      )gffffff@rT   T)inline	transformF)r)   r*   r3   r   pir   r,   r   r#   rK   add_label_near)re   deltar-   r.   r   r   r   r   Zr   r    CS
disp_units
data_unitss                 r"   test_labelsr      sr    E
		$U#A
		$U#A;;q!DAq	!Q$A+"	#q255y	1B
&&QUcMA%!a%3(::;a?
@ruu9s?S "B 	RAll1a GC	Aq!	B5J0J ./IIK =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   }|j                  |||      }t        j                  j                  |d	|j                  
      5 }|j                  d       d d d        j                  D 	cg c]
  }	|	d   d    }
}	d|
v sJ y # 1 sw Y   /xY wc c}	w )NrG   )ro   r]   r   g      ?r   rR   r   "_split_path_and_get_label_rotation)wrapsr'   )rz   r   rT   )r   r,   r)   r   r   r3   sincosr   r   patchobjectr   rK   call_args_list)r   r    latslonswavemeanr   rM   mocked_splittercargsidxss              r"   test_label_contour_startr     sO    LLS!EAr++ruufqj"%%!)R88D4T4(JD$266!d(#q()BFF1t8,<<DD!!bffQX&61%<q%@AD$;D	D$	%B			477 
 
9 <K
		1		 &5%C%CDEE!HQKDDD99  Es   $E%E1%E.zcontour_corner_mask_False.pngzcontour_corner_mask_True.pnggGz?)rh   rj   c                    d}d}d}t         j                  j                  dg       t        j                  t        j                  dd|      t        j                  dd|            \  }}t        j
                  d|z        t        j                  d|z        z  |t         j                  j                  ||      z  z   }t         j                  j                  ||      |k\  }t         j                  j                  ||	      }d
D ]-  }t        j                          t        j                  ||       / t        |        y )N<   ffffff?rp   rT   r   rv   r   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IINNA3;;r{{1c1-r{{1c1/EFDAq
qsBFF1Q3K)BIINN1a,@"@@A99>>!Q:-D
AD!A$ 1

QK01 ./r1   c                      ddgddgg} t        j                          t        j                  t              5  t        j
                  | ddg       d d d        y # 1 sw Y   y xY w)Nr   r   r   ffffff?rp   r   )r   r   r   r<   
ValueErrorr   )r/   s    r"   test_contourf_decreasing_levelsr  :  sP    
sc3Z AJJL	z	" $Qc
#$ $ $s   AA!c                      t        j                  d      j                  d      } t        j                  dd      }t        j
                  | |      }t        |j                  t        j                  ddd             y )	NrP   rQ   rR   T)nbins	symmetricr   irS   )	r)   r*   rJ   r   MaxNLocatorr   r   rE   r   )r/   r   rM   s      r"   test_contourf_symmetric_locatorr  B  sU    
		"f%AooA6G	a	)BbiiS"a)@Ar1   c                  6   t        j                  t        j                  ddd      t        j                  ddd            \  } }t        j                  | |      }t	        j
                          t	        j                  | ||      }t	        j                  |       y )Nr   r]   rR   )r)   r3   r   hypotr   r   r   rK   )r-   r.   rx   rM   s       r"   test_circular_contour_warningr  J  se    ;;r{{2q!,bkk"a.CDDAq
AAJJL	Q1	BJJrNr1   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      \  }\  }}|j                  ||||      }	|j                  ||||      }
|	j                  ||       }|
j                  ||       }|d|z   }n|}|D ]  }|j                         |k(  rJ  |D ]  }|j                         |k(  rJ  y )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#  S  s)    ;;ryyB'1b)9:DAq
ryy#a&#a&)*A.All+OC#s	Q1^	4BQ1^<IyynyMH}/=   ?H !">!1!. =  "&<<<<= =  "&<<<<=r1   c                  (   t        j                  ddd      x} }t        j                  | |      \  }}t        j                  |dz   |dz  z
        }t	        j
                         \  }}|j                  |||g d      }|j                  |d       y )	Nr   gGz@皙?r]   )r   r   r   g?rD   rG   )inline_spacing)r)   r*   r3   r   r   r,   r   rK   )r-   r.   r   r   r   r   r    
contoursets           r"   test_clabel_with_large_spacingr(  l  s     IIdD$''A;;q!DAq
1uq!t|AllnGCAq!,?@JIIjI-r1   zcontour_log_extension.pnggv?c           	         dt         j                  d<   t        j                  ddd      \  }\  }}}|j                  dd	       t	        j
                  d
dd      }t	        j                  d|      j                  dd      }t	        j                  dd      }t	        j                  d|      }|j                  |t        |j                         |j                                     }	|j                  ||t        |j                         |j                               d      }
|j                  ||t        |j                         |j                               d      }t        j                  |	|      }|j                  j                         dk(  sJ t        j                  |
|      }t!        |j                  j                         t	        j"                  d             t        j                  ||      }t%        |        y )NFr   rT   r8   )r&   rS   rn   r%  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_extensionr8    s    ',CLL"# <<1g>C#sCT. {{4d+H88B!))"b1D3#JXXc:&F 
d"
D 
 
FB 
d6"

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

6::<H# 
 
%B 
bS	!B55>>|+++	bS	!B"255>>#3RXXk5JK	bS	!B./r1   zcontour_addlines.png)aarch64ppc64les390xr   gQ?c                    dt         j                  d<   t        j                         \  }}t        j                  j                  d       t        j                  j                  dd      dz  }|j                  |      }|j                  |dz         }|j                  |      }|j                  |       t        |j                  j                         ddgd	       t        |        y )
NFr   i,N,r&   i'  i  gd]Kȓ\@g6>W'z@r8   )r   r   r,   r)   r+   r  rI   
pcolormeshr   r   	add_linesr   r    r1  r#   )re   r   r    r   pcmcontr   s          r"   test_contour_addlinesrA    s     ',CLL"#llnGCIINN8
		r2u$A
--
C::afD	c	BLLbeenn.:0FJ./r1   contour_uneven)baseline_imagesr[   rh   ri   c                 t   dt         j                  d<   t        j                  d      j	                  dd      }t        j
                  dd      \  }}|d   }|j                  |g d	
      }|j                  ||d       |d   }|j                  |g d	
      }|j                  ||d       t        |        y )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_unevenrI    s    
 ',CLL"#
		"a#A||Aq!HC	QB	Q0	1BLLNL3	QB	Q0	1BLLIL../r1   zCrc_lines_linewidth, rc_contour_linewidth, call_linewidths, expected))Gz?NNrJ  )rJ  (\@NrK  )rJ  rK  Gz@rL  c                    t        | |d      5  t        j                         \  }}t        j                  d      j                  dd      }|j                  ||      }|j                         d   |k(  sJ t        j                  t        j                  d	      5  |j                  d   d   |k(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
N)zlines.linewidthzcontour.linewidth)rcrP   rR   r8   )
linewidthsr   tlinewidthsr:   )r   r   r,   r)   r*   rJ   r   get_linewidthsr   r   r   r   rP  )rc_lines_linewidthrc_contour_linewidthcall_linewidthsexpectedr   r    r   rM   s           r"   test_contour_linewidthrV    s     
+=-AC 
D 4,,.RIIcN""1a(ZZoZ6  "1%111\\#::-P 	4>>!$Q'8333	44 4	4 	44 4s$   BCC6CC	CCpdfc                  `    t        j                  t        j                  ddgddgg             y )NrT   r]   r8   rR   )r   rK   r    r1   r"   test_label_nonaggrZ    s&     JJs{{QFQF+,-r1   contour_closed_line_loop)rC  r[   rh   c                     g dg dg dg dg}t        j                  d      \  }}|j                  |dgdgd	       |j                  d
d       |j	                  d
d       t        |        y )N)r   r   r   )r   r]   r   )r]   rT   r]   )r]   r]   r*  r   r   r	  )rO  alphagg @g@)r   r,   r   set_xlimset_ylimr#   )re   r/   r   r    s       r"   test_contour_closed_line_loopr`    sa    
 
Iy)4All6*GCJJq3%RDJ4KKcKKc./r1   c                  R   t        j                  ddgddg      \  } }| |z   }t        j                         \  }}|j	                  | ||      }|j                  | ||      }|j                  |j                  k7  sJ |j                  ||      }|j                  |j                  k(  sJ y )Nr   rp   )r)   r3   r   r,   r   r   _contour_generator)r-   r.   r/   r   r    qcs1qcs2qcs3s           r"   test_quadcontourset_reuserf    s     ;;SzC:.DAq	AAllnGC;;q!QD::aAD""d&=&====::dAD""d&=&====r1   contour_manualg{Gz?)rC  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	        |        y )Nr   )r   rR   rR   r*  viridisr]   rT   r8   rR   r   rT   r]   T)r   cmaprx   k)rO  r{   r   rS   rl   )
rT   r]   r]   r]   O   rT   r]   r]   r]   rn  )r{   rO  )matplotlib.contourr   r   r,   r#   )re   r   r   r    rl  lines0lines1filled01filled12segskindss              r"   test_contour_manualrv    s   
 .ll6*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r9x24dKrAq6FF+3*M VaVaVaVaVVaVaVaVaV5 6D-.ErAq6D6E74dCrA3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                  j                  ||      }|j                  |||d	      }|j                  |      }|j                  |||d	d      }	|j                  |	       t        |        y )N)rl   rS   r*  )r   rT   r]   r8   rR   rk  g333333?r]   rT   dtypeT)rT   rT   )rT   r8   r   r   rm  )r  r{   )r   r,   r)   r3   
zeros_likeboolr  r   r   r   r   r>  r#   )
re   r   r    r-   r.   r/   r   r   cbarliness
             r"   &test_contour_line_start_on_corner_edger  #  s     ll6*GC;;	2DAqq1uqjAEA:%A==$'D""DJd
AD!A[[Aqd[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      }|j                  ddd	      }d
}t        ||       |j                  ddd	      }d}t        ||       |j                  ddd	      }d}t        ||       |j                  dddd      }d}t        ||       y )N   r  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   indicesr  )rS   r      gA*Ŏ@g      @gA?)	r)   r  r   r   sumr   r   find_nearest_contourr   )xyimgrM   nearest_contourexpected_nearests        r"   test_find_nearest_contourr  7  s    	H	B
&&"%%26626A+q1%78
9C	S"	B--a%-@O?o/?@--a%-@O>o/?@--a%-@O?o/?@--aF%-PO:o/?@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        d      5  |j                  d	d	d
       d d d        t        j                  t        d      5  |j                  d	ddd
       d d d        t        j                  t        d      5  |j                  dddd       d d d        y # 1 sw Y   |xY w# 1 sw Y   OxY w# 1 sw Y   y xY w)Nr  rS   r]   r   r  r&   z'Method does not support filled contoursr:   rT   Fr  r  r  )r]   r   T)r)   r  r   r   r  r   r   r   r<   r
  r  )r  r  rM   s      r"   #test_find_nearest_contour_no_filledr  M  s   	H	B
&&"%%26626A+q1%78
9C	c2	B	z)R	S 3
1E23 
z)R	S D
2vUCD 
z)R	S B
1fDAB B3 3D DB Bs$   DD'<D3D$'D03D<defaultc                  N   t        j                         j                         } t        j                  t	        j
                  ddd      j                  dd      g d      }| j                  |       | j                  D ch c]  }|j                          c}h dk(  sJ y c c}w )Ngư>r0  rG   r&   )gh㈵>gh㈵>gh㈵?rD   >   0.251.004.00)
r   r   add_subplotr   r)   	geomspacerJ   rK   textsget_text)r    rM   texts      r"   )test_contour_autolabel_beyond_powerlimitsr  \  su    		!	!	#B	R\\$c2::2rB0
2BIIbM(*1DMMO15MMMM1s    B"c                     ddl m t        j                  dd      } | j	                  dd      }| |z  }t        j                  |g dg dd	      }|j                  j                  d
       |j                  j                  d       |j                          |j                         \  }}|g dk(  sJ d}t        fd|D              sJ t        d t        ||      D              sJ y )Nr   )	RectanglerT   r&   r   r&   r   r   )#FFFF00#FF00FFz#00FFFFr   rE   r{   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   6   K   | ]  }t        |        y wr   )r   ).0ar  s     r"   	<genexpr>z0test_contourf_legend_elements.<locals>.<genexpr>x  s     9Az!Y'9s   c              3   V   K   | ]!  \  }}t        |j                         |       # y wr   )r   get_facecolorr  r  r   s      r"   r  z0test_contourf_legend_elements.<locals>.<genexpr>y  s*      :1a !//+Q/ :   '))matplotlib.patchesr  r)   r*   rJ   r   r   rl  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 GGUGGfJJL((*OGV ' ' ' ' <O99999 :w8: : : :r1   c                  8   t        j                  dd      } | j                  dd      }| |z  }g d}t        j                  |g d|d      }|j                         \  }}|g dk(  sJ t        d	 |D              sJ t        d
 t        ||      D              sJ y )NrT   r&   r   )r   z#00FF00r   r  r   r  )z
$x = 10.0$z
$x = 30.0$z
$x = 50.0$c              3   d   K   | ](  }t        |t        j                  j                         * y wr   )r   r   r~  Line2D)r  r  s     r"   r  z/test_contour_legend_elements.<locals>.<genexpr>  s!     @1z!SYY--.@s   .0c              3   V   K   | ]!  \  }}t        |j                         |       # y wr   )r   	get_colorr  s      r"   r  z/test_contour_legend_elements.<locals>.<genexpr>  s)      11a !++-+ 1r  )r)   r*   rJ   r   r   r  rV   r  )r-   r.   r  r{   rM   r  r  s          r"   test_contour_legend_elementsr  }  s    
		!RA			"aA	AA'F	Q|""
$B ((*OGV????@@@@@ 1w/1 1 1 1r1   zalgorithm, klassmpl2005mpl2014serialthreaded)invalidNc                 (   t        j                  ddgddgg      }|0t        j                  ||       }t	        |j
                  |      sJ y t        j                  t              5  t        j                  ||        d d d        y # 1 sw Y   y xY w)Nrp   rv   rq         @	algorithm)	r)   r   r   r   r   rb  r   r<   r
  )r  klassr/   rM   s       r"   test_algorithm_namer    sz     	3*sCj)*A\\!y1"//777]]:& 	1LLi0	1 	1 	1s   'BBr  r  r  r  r  c                 2   t        j                  ddgddgg      }t        j                  || d       | dk7  rt        j                  || d       y t	        j
                  t              5  t        j                  || d       d d d        y # 1 sw Y   y xY w)	Nrp   rv   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 LLiU; IQ)>]]:& 	CLLiTB	C 	C 	Cs   +BBcontour_all_algorithmsgQ?c                    g d}t         j                  j                  d      }t        j                  t        j                  ddd      t        j                  ddd            \  }}t        j
                  d|z        t        j                  d|z        z  |j                  dd	
      z   }t        j                  |t              }d|d<   t         j                  j                  ||      }t        j                  dd      \  }}t        |j                         |      D ]A  \  }	}
|	j!                  ||||
       |	j#                  ||||
d       |	j%                  |
       C t'        |        y )Nr  i  r   rp   r&   rl   r  r   )rl   r&   )scalesizery  T)r8   r   r   r]   r  rm  )r  r{   )r)   r+   default_rngr3   r   r   r   normalr{  r|  r  r   r   r,   r  ravelr   r   	set_titler#   )re   
algorithmsrngr-   r.   r/   r   r   r   r    r  s              r"   test_all_algorithmsr    s#    >J
))


%C;;r{{3R0"++c32JKDAq
r!tRVVBqD\!CJJSwJ$GGA==$'DDJ
AD!A\\!QFAsSYY[*5  I
Aq!y1


1ai
<
Y 
 ./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
                         }|j                  dd      }	|	D ]J  }
|
j                         }|j                  |||      }|j                  |d	d
       |j                  d       L y )Nr   r   rq   r   rv   r]   rT   )nrowsr  Tr&   )r   rz   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ZZ\ZZ1a 
		"TB	/
34	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
                         \  }	}
|
j                  |||dd	
      }|
j                  |dd       |
j                  d       |j                  J t	        j
                         \  }}|j                  |||dd	|       }|j                  |dd       |j                  d|         |j                  | k(  sJ t	        j
                         \  }}|j                  |||dd	| d      }|j                  |dd       |j                  d|         |j                  | k(  sJ y )Nr   r   rq   r   rv   r]   rT   rl   rm  r{   r'   Trz   r   z0Single color - positive contours solid (default))r{   
linestylesz!Single color - positive contours r  r{   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fig3r2  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>>!!! ID#
++aAq+
?CJJsQtJ,MM5eW=>>>U""" ID#
++aAq*3  5CJJsQtJ,MM5eW=>>>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
                         \  }	}
|
j                  |||dd	
      }|
j                  |dd       |
j                  d       |j                  dk(  sJ | t        j                  d<   t	        j
                         \  }}|j                  |||dd	
      }|j                  |dd       |j                  d|  d       |j                  | k(  sJ t	        j
                         \  }}|j                  |||dd	|       }|j                  |dd       |j                  d|         |j                  | k(  sJ t	        j
                         \  }}|j                  |||dd	d|       }|j                  |dd       |j                  d|         |j                  | k(  sJ y )Nr   r   rq   r   rv   r]   rT   rl   rm  r  r'   Tr  z1Single color - negative contours dashed (default)r  zcontour.negative_linestylez!Single color - negative contours z(using rcParams))r{   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  r2  r  fig4ax4CS4s                        r"   test_negative_linestylesr    s6    E
		$U#A
		$U#A;;q!DAq	A1	B	!a%!q1uqj(	)B	bAA ID#
++aAq+
-CJJsQtJ,MMEF""h... 27CLL-.ID#
++aAq+
-CJJsQtJ,MM5eW%& '""e+++ ID#
++aAq%+
HCJJsQtJ,MM5eW=>""e+++ ID#
++aAq*/  1CJJsQtJ,MM5eW=>""e+++r1   c                  b   t        j                         j                         } | j                         }| j	                  t        j                  d      j                  d            }|j                          | j                         |k7  sJ |j                          | j                         |k(  sJ y )Nr  ri  )
r   r   r  get_childrenr   r)   r*   rJ   rK   remove)r    orig_childrenrM   s      r"   test_contour_remover  %  s    		!	!	#BOO%M	BIIbM))&1	2BIIK??---IIK??---r1   c                      t        j                         \  } }ddgddgg}t        j                  t        d      5  |j                  |       d d d        y # 1 sw Y   y xY w)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  /  sU    llnGCFQFD	y(H	I 


T
  s   AA c                      t        j                         \  } }ddgddgg}t        j                  ddgd|j                        }|j                  ||      }|j                         J y )Nr   rT   r   )r   )	clip_path)r   r,   mpatchesCircle	transAxesr   get_clip_path)r   r    r   circlerM   s        r"   test_contour_clip_pathr  6  sd    llnGCFQFD__c3ZEF	DF	+B)))r1   c                     t         j                  j                  dd      \  } }t        j                  d      dz  j	                  d      j                  t              }g dg dg dg}t        j                  |j                               j                  j                         dgk(  sJ t        j                  |      j                  j                         dgk(  sJ t        j                  t         j                  j                  ||            j                  j                         dgk(  sJ t        j                  |j                               j                  j                         g dk(  sJ t        j                  |      j                  j                         g dk(  sJ t        j                  t         j                  j                  ||            j                  j                         g dk(  sJ |j                         }t        j                  | ||j                               j                  j                         dgk(  sJ t        j                  | ||      j                  j                         dgk(  sJ t        j                   | ||j                               j                  j                         g dk(  sJ t        j                   | ||      j                  j                         g dk(  sJ y )	Nr]   r'   )r8   r8   )FFF)FTFr   r   )r   r   rT   )r)   r+   rI   r*   rJ   astyper|  r   r   tolistrE   r  r   r   r  
tricontourtricontourf)r-   r.   r/   ms       r"   test_bool_autolevelr
  >  s)   99>>!QDAq	1	""6*11$7A	 46KLA;;qxxz"))002rd:::;;q>  '')bT111;;ruu{{11{-.55<<>2$FFF<<
#**113zAAA<<?!!((*j888<<AA./66==?:MMM		A>>!Q
+2299;tCCC>>!Q"))002rd:::??1a,33::<
JJJ??1a#**113zAAAr1   c                      t        j                  t         j                  t         j                  gt         j                  t         j                  gg      } t        t	        j
                  |       j                  g d       y )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  O  sN    
266266"RVVRVV$456Ackk!n33@Ar1   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 ]8  }t        |      dk(  sJ t        |d         dk(  sJ t        |d         dk(  r8J  y )	Nr   r&   r]   r   rD   rS   rT   rR   )
r)   r3   r*   r   r   r   r   allsegsallkindsrU   )r-   r.   r/   rM   results        r"   test_allsegs_allkindsr  V  s    ;;ryyB*BIIaQ,?@DAq
q	BFF1IA	Q1aX	.B ::r{{+ #6{a6!9~"""6!9~"""#r1   c            	      d   t        j                  t        j                  d      j	                  d            } t        j                  t        j                  d      5  | j                  }d d d        t        j                  t        j                  d      5  t        | j                  D cg c]  }|j                          c}       d d d        t        j                  t        j                  d      5  | j                  D cg c]  }|j                          c}k(  sJ 	 d d d        t        j                  t        j                  d      5  | j                  sJ 	 d d d        t        j                  t        j                  d      5  d| _        d d d        t        j                  t        j                  d      5  | j                  rJ 	 d d d        y # 1 sw Y   vxY wc c}w # 1 sw Y   (xY wc c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	Nr  ri  r   r:   tcolorsrP  antialiasedF)r   r   r)   r*   rJ   r   r   r   r   r   r   r  get_edgecolorrP  get_linewidthr  )rM   collsr   s      r"   test_deprecated_apisr  c  s   	RYYr]**62	3B	c66m	L 	c66i	H K2::5'Ia(9'IJK	c66m	L D~~U!C!//"3!CCCCD	c66m	L ~~~	c66m	L 	c66m	L ">>!!>" "  (JK K "DD D  " "sl   GG0,G+G07HG=HHHH&G(+G00G:=HHHH#&H/)Wr   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#  r(  r8  machinerA  rI  rV  backendrZ  r`  rf  rv  r  r  r  ri   contextr  r  r  Mpl2005ContourGeneratorMpl2014ContourGeneratorSerialContourGeneratorThreadedContourGeneratorr  r  r  r  r  r  r  r  r  r
  r  r  r  rY  r1   r"   <module>r-     s     	   S S  8 8 1 % O 
) biilIBIIaL("((7"34=?biimYRYYr]HBHHW$56:<bhhx)"))B-'):;;=biimXRXXh''):;;=bhhv)8288G+<=46bhhw&)8288G+<=46bhhy8288I.0AB.0bhhy8288I.0CD!#	seXKMcA3!KM'+ ,-,	 , (* )* ,udm<*+WRVWD X =D ,udm<23"'ugG0G =0  ,udm<9:M0 N =0@ ,udm<,-W%P0 Q =0, ,udm<./w?0 @ =04 ,udm<67"'s<0< =0B2 ,udm<24RS".0. =0"$B HAB=B=,.& ,udm<./"' 0 = 0F ,udm<$g   "&EE0 =0" ,udm<#3"4#W$gG0G =0  I L

4
4 U. .
 ,udm<#=">#W$8	08 =	0
> ,udm<#3"4#W$DB0B =04 ,udm<#F"G#W$808 =0"A,B 9N N:.1  223223	001)445	11 =?C?C ,udm<#;"<#W$DB0B =0&5( 57#7#@ 57&,7&,R.*B"A
#"r1   