
    Ng                     h   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'd( Z(ej                             d d!d"g           ed)gd"d$dg*          d+                         Z)ej                             d d!d"g           ed,gd" ej*                    d-k    rd.nd /          d0                         Z+ ed1gd"d$dg*          d2             Z,ej                             d d!d"g           ed3gd$d!4          d5                         Z-ej                             d d!d"g           ed6gd$7          d8                         Z.ej                             d d!d"g           ed9gd"d$d:&          d;                         Z/d< Z0ej                             d d!d"g           ed=d>gd"d?/          d@                         Z1dA Z2dB Z3dC Z4ej                             dDg dE          dF             Z5dG Z6ej                             d d!d"g           edHgd"d$dI&          dJ                         Z7ej                             d d!d"g           edKgd"d$ ej*                    dLv rdMndN&          dO                         Z8ej                             d d!d"g           edPgdgd"d$Q          dR                         Z9ej                             dSg dT          dU             Z:ej        ;                    dV          dW             Z<ej                             d d!d"g           edXgdgd"Y          dZ                         Z=d[ Z>ej                             d d!d"g           ed\gdgd"d]^          d_                         Z?ej                             d d!d"g           ed`gdgd"Y          da                         Z@db ZAdc ZBejC        D                    dd          de             ZEdf ZFdg ZGej                             dhdiejH        fdjejI        fdkejJ        fdlejK        fdmg          dn             ZLej                             dog dp          dq             ZMej                             d d!d"g           edrgdgd"ds^          dt                         ZNdu ZOej                             dvg dw          dx             ZPej                             dvg dw          dy             ZQdz ZRd{ ZSd| ZTd} ZUd~ ZVd ZWd ZXdS )    N)mock)assert_array_almost_equalassert_array_almost_equal_nulpassert_array_equal)pyplot
rc_contextticker)LogNorm
same_color)check_figures_equalimage_comparisonc           	      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       Y/var/www/html/ai-engine/env/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          |            t          j
        g d          }t          j        ||           t          j
        g d	          }t          j        ||d
d           d S )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     ;ryB''1b)9)9::DAq
ry#a&&#a&&)**A..AJv3''''	Q1		B.///
(777
8
8CJr#
(777
8
8CJr#
CCCCCCr1   c                  R   t          j        dd          } t          j        dd          }t          j        | |          \  }}|dz  dz  |dz  z  dz
  }t          j        |||ddg          }d}t          j        ||g	          }|d                                         d
k    sJ d S )Nir&   r]   rT   r   rG   rD   )g?rT   rt   0)r)   linspacer3   r   r   rK   get_text)r-   r.   XYZcontourspointclabelss           r"   test_contour_manual_movetor      s    
CA
CA;q!DAq	1q1a4!A{1aAs8444H Ej5'222G 1:  C''''''r1   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          |            |                    d	g
           t          |            d S )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     8BqHb3h&'DAq	BGDAG>)AF2333ARWTQWN*Q!V344	44AJLLL	Q1aS	)	)	)B .///IIj\I"""./////r1   z$contour_manual_colors_and_levels.pngarm64g;On?)rh   rj   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   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      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   contourf_hatch_colorsc                      t          j                    \  } }|                    ddgddggg dd          }|                    g d           d S )Nr   rT   r]   )-/\z//gray)hatchescmap)r   greyr   r   )r   r,   r   set_edgecolors)r   r    cfs      r"   test_hatch_colorsr      s_     lnnGC	q!fq!f%/E/E/EF	S	SB77788888r1   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          rv   r]   r&   2   locator      $@ir8   r   )r   r,   r)   r   r3   expr   r	   
LogLocatorr   rE   powerr*   r   r    
get_yticksr#   )re   r   r    Nr-   r.   r   r   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}t          |            |	                                 |D ]\  }}|
                    ||dd            |D ]\  }}|
                    ||dd           t          |            d S )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   r   r   r    CS
disp_units
data_unitss                 r"   test_labelsr    s    E
	$U##A
	$U##A;q!DAq	!Q$A+"	#	#q25y	1B
&QUcMA%!a%3(::;a?
@
@ru9s?S "B 	RAl1a  GC	Aq!		B555J000J .///IIKKK = =1
!Qtt<<<< > >1
!Qtu====./////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'   )rz   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?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   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   B  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 )Nr   r   r   ffffff?rp   r   )r   r   r   r<   
ValueErrorr   )r/   s    r"   test_contourf_decreasing_levelsr$  V  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.   rx   rM   s       r"   test_circular_contour_warningr,  f  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)r1  use_clabeltext)r)   r3   r*   r|   r}   r~   r   r,   r   r   rK   
get_zorder)r2  contour_zorderclabel_zorderr-   r.   r/   r   ax1ax2rM   	cs_filledclabels1clabels2expected_clabel_zorderrK   s                  r"   test_clabel_zorderr<  o  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   c                  2   t          j        ddd          x} }t          j        | |          \  }}t          j        |dz   |dz  z
            }t	          j                    \  }}|                    |||g d          }|                    |d           d S )	Nr   gGz@皙?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_spacingrA    s     IdD$'''A;q!DAq
1uq!t|AlnnGCAq!,?,?,?@@JIIjI-----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   r>  r  )leftr   g      g      #@i  r&   r   (   g      g      @r   )vminvmax)normr   )rE   rH  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   r6  r7  ax3data_expr   
levels_exprE   c1c2c3r   s                r"   test_contourf_log_extensionrQ    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)aarch64r   ppc64les390xr   gQ?c                    dt           j        d<   t          j                    \  }}t          j                            d           t          j                            dd          dz  }|                    |          }|                    |dz             }|	                    |          }|
                    |           t          |j                                        ddgd	           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    rJ  r#   )re   r   r    r   pcmcontr   s          r"   test_contour_addlinesrZ    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_unevenrb    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?NNrc  )rc  (\@Nrd  )rc  rd  Gz@re  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   ri  )rc_lines_linewidthrc_contour_linewidthcall_linewidthsexpectedr   r    r   rM   s           r"   test_contour_linewidthro    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_nonaggrr     s1     Js{QFQF+,,-----r1   contour_closed_line_loop)r\  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]   rC  r   r   r"  )rh  alphagg @g@)r   r,   r   set_xlimset_ylimr#   )re   r/   r   r    s       r"   test_contour_closed_line_looprx    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?)r\  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   rC  viridisr]   rT   r8   rR   r   rT   r]   T)r   r   rx   k)rh  r{   r   rS   rl   )
rT   r]   r]   r]   O   rT   r]   r]   r]   r  )r{   rh  )matplotlib.contourr   r   r,   r#   )re   r   r   r    r   lines0lines1filled01filled12segskindss              r"   test_contour_manualr  "  s   
 .-----l6***GCD 1v1v1v&'F1v1v!Q!Q 01FQ!Q!Q!Q!Q89HQ!Q!Q!Q!Q8Q!Q!Q(*HJr999x24dKKKKJrAq6FF+3*MMMM VaVaVaVaVVaVaVaVaV5 6D---.EJrAq6D6E74dCCCCJrA3BBBB./////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   rC  )r   rT   r]   r8   rR   r  g333333?r]   rT   dtypeT)rT   rT   )rT   r8   r  r  r  )r  r{   )r   r,   r)   r3   
zeros_likeboolr  r   r   r   r   rW  r#   )
re   r   r    r-   r.   r/   r  r   cbarliness
             r"   &test_contour_line_start_on_corner_edger  ?  s     l6***GC;			22DAqq1uqjAEA:%A=$'''D""DJd
AD!!A[[Aqd[33F<<DJJq!QDJ==ENN5./////r1   c                  &   t          j        d          } t          j        t           j         t          j        | dz
  dz  d          dz  z            }t          j        |d          }|                    ddd	          }d
}t          ||           |                    ddd	          }d}t          ||           |                    ddd	          }d}t          ||           |                    dddd          }d}t          ||           d S )N   r  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  S  s   	H		B
&"%2626A+q11%78
9
9C	S"		B--a%-@@O?o/?@@@--a%-@@O>o/?@@@--a%-@@O?o/?@@@--aF%-PPO:o/?@@@@@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  |
                    d	d	d
           d d d            n# 1 swxY w Y   t          j        t          d          5  |
                    d	ddd
           d d d            n# 1 swxY w Y   t          j        t          d          5  |
                    dddd           d d d            d S # 1 swxY w Y   d S )Nr  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  i  s!   	H		B
&"%2626A+q11%78
9
9C	c2		B	z)R	S	S	S 3 3
1E2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
z)R	S	S	S D D
2vUCCCD D D D D D D D D D D D D D D 
z)R	S	S	S B B
1fDAAAB B B B B B B B B B B B B B B B B Bs6   B((B,/B,C44C8;C8EEEdefaultc                  ,   t          j                                                    } t          j        t	          j        ddd                              dd          g d          }|                     |           d | j        D             h dk    sJ d S )	Ngư>rI  rG   r&   )gh㈵>gh㈵>gh㈵?rD   c                 6    h | ]}|                                 S r  )r   )r   texts     r"   	<setcomp>z<test_contour_autolabel_beyond_powerlimits.<locals>.<setcomp>  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  x  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   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   8   K   | ]}t          |          V  d S r   )r   )r   ar  s     r"   	<genexpr>z0test_contourf_legend_elements.<locals>.<genexpr>  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>  sN       : :1a !//++Q// : : : : : :r1   )matplotlib.patchesr  r)   r*   rJ   r   r   r   set_over	set_underchangedlegend_elementsrV   zip)r-   r.   hrM   artistslabelsexpected_colorsr  s          @r"   test_contourf_legend_elementsr    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   r  Line2D)r   r  s     r"   r  z/test_contour_legend_elements.<locals>.<genexpr>  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>  sL       1 11a !++--++ 1 1 1 1 1 1r1   )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 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   rv   rq         @	algorithm)	r)   r   r   r   r   rz  r   r<   r#  )r  klassr/   rM   s       r"   test_algorithm_namer    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   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 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   r  r   )rl   r&   )scalesizer  T)r8   r   r  r]   r  r  )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    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   rv   r]   rT   )nrowsr0  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 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   rv   r]   rT   rl   r  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   fig1r6  CS1fig2r7  CS2fig3rK  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   rv   r]   rT   rl   r  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  r6  r   r  r7  r  r  rK  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  A  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  K  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  R  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   astyper  r   r   tolistrE   r  r   r   r  
tricontourtricontourf)r-   r.   r/   ms       r"   test_bool_autolevelr   Z  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#  k  sh    
2626"RVRV$4566Ack!nn3@ @ @A A A A 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 ]M}t          |          dk    sJ t          |d                   dk    sJ t          |d                   dk    sJ Nd S )	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(  r  s    ;ryB**BIaQ,?,?@@DAq
q		BF1IIA	Q1aX	.	.	.B :r{+ # #6{{a6!9~~""""6!9~~"""""# #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          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:   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   ri  c                 6    g | ]}|                                 S r  )get_linewidthr-  s     r"   r   z(test_deprecated_apis.<locals>.<listcomp>  s"    !C!C!C!//"3"3!C!C!Cr1   antialiasedF)r   r   r)   r*   rJ   r   r   r   r   r   r   r*  ri  r0  )rM   collss     r"   test_deprecated_apisr2    s\   	RYr]]**622	3	3B	c6m	L	L	L                	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 " ">!!!!" " " " " " " " " " " " " " " " " "sl   A..A25A2 CC	C	0DDD 
EEEFFF
GG G)Yr   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   machiner   r   r   r   r  r  r   r$  r)  r,  r<  rA  rQ  rZ  rb  ro  backendrr  rx  r~  r  r  r  r  ri   contextr  r  r  Mpl2005ContourGeneratorMpl2014ContourGeneratorSerialContourGeneratorThreadedContourGeneratorr  r  r  r  r  r
  r  r  r  r   r#  r(  r2  r  r1   r"   <module>rF     sm     				              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D D XW =<D( ( (& ,udm<<23"'ugG G G0 0G G =<0  ,udm<<9:/x/11W<<ee!E E E0 0E E =<0@ *+"'ugG G G9 9G G9 ,udm<<,-W%PPP0 0 QP =<0, ,udm<<./w???0 0 @? =<04 ,udm<<67"'s< < <0 0< < =<0B  2 ,udm<<24RS". . .0 0. . =<0"$ $ $B B B   HA A AB B= =B B=,. . .& ,udm<<./"'   0  0  =< 0F ,udm<<$g  ""&NNN  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,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   