
    zYHhQv                     v
   d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlm	Z	m
Z
 d dlZd dlmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d dlZd Zd Zej:                  j=                  d	 ej>                  d
       ej>                  d
       ej@                  d      fdf ej>                  d       ej>                  d       ej@                  d      fdf ej@                  d       ej>                  d       ej@                  d      fdf ej>                  d       ej@                  d       ej@                  d      fdf ej@                  d       ej@                  d       ej@                  d      fdf ej@                  d       ej@                  d       ej@                  d      fdf ej@                  d       ej@                  d       ej@                  d      fdf ej@                  d       ej@                  d       ej@                  d      fdfd ggfdfd gd gd ggfdfg
      d        Z!d Z"d Z# edg      d        Z$ edgd d!d"#      d$        Z%d% Z& ed&gd d!dg'      d(        Z' ed)gd  ejP                         d*k(  rd nd+,      d-        Z) ed.gd d!dg'      d/        Z*ej:                  j=                  d0g d1      d2        Z+ ed3gd!d45      d6        Z, ed7gd!8      d9        Z- ed:gd d!d;#      d<        Z.d= Z/ ed>d?gd d@,      dA        Z0dB Z1dC Z2dD Z3ej:                  j=                  dEg dF      dG        Z4dH Z5 edIgd d!dJ#      dK        Z6 edLgd d! ejP                         d*k(  rdMndN#      dO        Z7 edPgdgd d!Q      dR        Z8ej:                  j=                  dSg dT      dU        Z9ej:                  ju                  dV      dW        Z; edXgdgd Y      dZ        Z<d[ Z= ed\gdgd d]^      d_        Z> ed`gdgd Y      da        Z?db Z@dc ZAej                  j                  dd      de        ZDdf ZEdg ZFej:                  j=                  dhdiej                  fdjej                  fdkej                  fdlej                  fdmg      dn        ZKej:                  j=                  dog dp      dq        ZL edrgdgd ds^      dt        ZMdu ZNej:                  j=                  dvg dw      dx        ZOej:                  j=                  dvg dw      dy        ZPdz ZQd{ ZRd| ZSd} ZTd~ ZUd ZVy)    N)mock)assert_array_almost_equalassert_array_almost_equal_nulp)pyplot
rc_contextticker)LogNorm
same_color)check_figures_equalimage_comparisonc                      t        j                  d      } t        j                  d      }t         j                  j                  d      }t        j                         \  }}|j                  | ||       y N
   	   r   r   )nparangerandompltsubplotscontour)xyzfigaxs        V/var/www/html/planif/env/lib/python3.12/site-packages/matplotlib/tests/test_contour.pytest_contour_shape_1d_validr      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_validr$      sc    
		"A
		!A[[AFB
		!AllnGCJJr2qr   zargs, messager   r   z6Length of x (9) must match number of columns in z (10)r   z3Length of y (10) must match number of rows in z (9))r   r   z4Number of dimensions of x (2) and y (1) do not matchz4Number of dimensions of x (1) and y (2) do not matchr   r   z-Shapes of x (9, 9) and z (9, 10) do not matchz-Shapes of y (9, 9) and z (9, 10) do not match)   r&   r&   z'Inputs x and y must be 1D or 2D, not 3DzInput z must be 2D, not 3DzDInput z must be at least a (2, 2) shaped array, but has shape (1, 1)c                     t        j                         \  }}t        j                  t        t        j                  |            5   |j                  |   d d d        y # 1 sw Y   y xY w)Nmatch)r   r   pytestraises	TypeErrorreescaper   )argsmessager   r   s       r   test_contour_shape_errorr1   &   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   r%   d   z%1.2f)fmt)
r   r   r   r   r   randr   reshapeclabelones)r   r   css      r   test_contour_no_valid_levelsr=   B   s    llnGCJJryy~~a#BJ/	BIIbM))&13%	@BIIbsGnI%JJrwwvr   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   r&            r3   )	r   r   r9   r   r   r   lenr4   all)r   r   r   cs1cs2s        r   test_contour_NlevelsrH   N   s     			"f%AllnGC
**Q
Cszz?Q
**Qq*
!CJJ#**$))+++r   png)
extensionsc                     | j                         j                  ddgddgg      }|j                         j                  ddgddgg      }|j                  |j                                y )Nr   rC      )r   r   	set_paths	get_paths)fig_testfig_refcs_testcs_refs       r   test_contour_set_pathsrS   Y   se    !))Aq6Aq6*:;G''!Q!Q(89Ff&&()r   contour_manual_labelsTmpl20gp=
ף?)remove_textstyletolc                     t        j                  t        j                  dd      t        j                  dd            \  } }t        j                  t        j                  t        |       t        |      g      d      }t        j                  dd       t        j                  | ||      }t        j                  g d      }t        j                  ||       t        j                  g d	      }t        j                  ||d
d       y )Nr   r   rL   )   rL      )figsizedpi))      ?      @)r^   皙@)r^         @manual))       @r_   )rd   r`   )rd   ra   small)rg)rc   fontsizecolors)r   r!   r   maxdstackabsr   figurer   arrayr:   )r   r   r   r<   ptss        r   test_contour_manual_labelsrp   a   s    ;;ryyB'1b)9:DAq
ryy#a&#a&)*A.AJJv3'	Q1	B
((7
8CJJr#
((7
8CJJr#
Cr   c                  J   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   j                         d
k(  sJ y )Nir   rL   rC   r   r6   r3   )g?rC   rb   0)r   linspacer!   r   r   r:   get_text)r   r   XYZcontourspointclabelss           r   test_contour_manual_movetor{   o   s    
CA
CA;;q!DAq	1q1a4!A{{1aAs84H Ejj5'2G 1: C'''r   contour_disconnected_segments)rV   rW   rJ   c                  d   t         j                  ddddddf   \  } }dt        j                  d| dz   dz  z   |dz  z         z  }|dt        j                  d| dz
  dz  z   |dz  z         z  z  }t        j                          t        j
                  | ||dg      }|j                  d	g
       y )NrC   y              5@{Gz?333333?rL      r3   )皙?皙?rb   )r   mgridsqrtr   rm   r   r:   )r   r   r   r<   s       r   -test_contour_label_with_disconnected_segmentsr      s     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"r   z$contour_manual_colors_and_levels.pngx86_64g;On?)rV   rX   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 y )NFpcolormesh.snaprL   rA   r?   r&   )redyellowpinkblueblack)rL   rA      r           )neitherminrj   both)rj   r   rC   )r   r   r~   )ri   r4   extendr   )r   rcParamsr   r   r   r9   	enumerateflatcontourfr   colorbar)_axsdatari   r4   ir   filledr   first_color
last_colorcs               r   $test_given_colors_levels_and_extendsr      s     ',CLL"#\\!QFAs99R=  A&D7FF388$ 2Q"216:  &);;!K%);;JDJ)G#)&  :A 

4s"(  9A 	Q2!r   contourf_hatch_colorsc                      t        j                         \  } }|j                  ddgddggg dd      }|j                  g d       y )Nr   rC   rL   )-/\z//gray)hatchescmap)r   greyr   r   )r   r   r   set_edgecolors)r   r   cfs      r   test_hatch_colorsr      sD     llnGC	q!fq!f%/EF	SB78r   zcolor, extend))darkredr   )r   r   ))rf         ?r   ))r   r   r   r   r   c                     ddgddgg}t        j                         \  }}g d}|j                  ||| |      }|j                         D ]  }t	        ||       rJ  y )Nr   rC   rL   )r         ?rC   g      ?      ?r4   ri   r   )r   r   r   get_edgecolorsr
   )colorr   r   r   r   r4   r<   r   s           r   test_single_color_and_extendr      sh    
 Q!QALLNEAr&F	AfU6	BB  $!U###$r   zcontour_log_locator.svgF)rW   rV   c            
         t        j                         \  } }d}t        j                  dd|      }t        j                  dd|      }t        j                  ||      \  }}t        j
                  |dz   |dz  z
        }t        j
                  |dz  dz   |dz  dz  z
        }|d|z  z   }	|j                  |	t        j                         	      }
t        |
j                  t        j                  d
t        j                  dd                   | j                  |
|      }t        |j                  j                         |
j                         y )Nr6         r_          rd   rL   r   2   locator      $@ir&   r   )r   r   r   rs   r!   expr   r   
LogLocatorr   r4   powerr   r   r   
get_yticks)r   r   Nr   r   ru   rv   Z1Z2r   r   cbs               r   test_log_locator_levelsr      s
    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!((;r   zcontour_datetime_axis.png)rW   c            	      h   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       & ; y c c}w )Ng?g\(\?333333?)hspacetopbottomi  rC      )days      r   )axis      right   )r   rm   subplots_adjustdatetimer   rn   range	timedeltar   r!   subplotr   r   repeatnewaxisget_axesget_xticklabelsset_haset_rotation)
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}|
j                          |D ]  \  }}|
j                  ||dd         |D ]  \  }}|
j                  ||dd        y )N皙?r   r_   r   rd   rL   rC   r   r   r   ))      )ig  i"  )i	  i  ))r   )r   g      )gffffff@rC   T)inline	transformF)
r   r   r!   r   pir   r   r   r:   add_label_near)deltar   r   ru   rv   r   r   rw   r   r   CS
disp_units
data_unitss                r   test_labelsr      s\   
 E
		$U#A
		$U#A;;q!DAq	!Q$A+"	#q255y	1B
&&QUcMA%!a%3(::;a?
@ruu9s?S "B 	RAll1a GC	Aq!	B5J0JIIK =1
!Qtt<=  >1
!Qtu=>r   c                     t        j                  d      \  } }t        j                  t        j                   dz  t        j                  dz  d      x}}t        j
                  ||      \  }}dt        j                  d|z        dz  z  t        j                  d|z        z  }dt        j                  d|z        z  t        j                  d|z        dz  dz   z  }||z   }|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 )Nr6   )r]   rL   r   r   r   rA   r   "_split_path_and_get_label_rotation)wrapsr   )rh   r   rC   )r   r   r   rs   r   r!   sincosr   r   patchobjectr   r:   call_args_list)r   r   latslonswavemeanr   r<   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?c                  l   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                  ||       / y )N<   ffffff?r^   rC   r   rd   r   r   mask)FTcorner_mask)r   r   seedr!   rs   r   r   r8   marn   r   rm   r   )n
mask_level	noise_ampr   r   r   r
  r  s           r   test_corner_maskr  )  s     	AJIIINNA3;;r{{1c1-r{{1c1/EFDAq
qsBFF1Q3K)BIINN1a,@"@@A99>>!Q:-D
AD!A$ 1

QK01r   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?r^   r   )r   rm   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 )	Nr?   r@   rA   T)nbins	symmetricr   irB   )	r   r   r9   r   MaxNLocatorr   r   r4   rs   )r   r   r<   s      r   test_contourf_symmetric_locatorr  B  sU    
		"f%AooA6G	a	)BbiiS"a)@Ar   c                  6   t        j                  t        j                  ddd      t        j                  ddd            \  } }t        j                  | |      }t	        j
                          t	        j                  | ||      }t	        j                  |       y )Nr   rL   rA   )r   r!   rs   hypotr   rm   r   r:   )r   r   rf   r<   s       r   test_circular_contour_warningr  J  se    ;;r{{2q!,bkk"a.CDDAq
AAJJL	Q1	BJJrNr   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   rL   )ncols)zorder)r#  use_clabeltext)r   r!   r   rj   rk   rl   r   r   r   r   r:   
get_zorder)r$  contour_zorderclabel_zorderr   r   r   r   ax1ax2r<   	cs_filledclabels1clabels2expected_clabel_zorderr:   s                  r   test_clabel_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!. =  "&<<<<= =  "&<<<<=r   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@皙?rL   )r   r   r   g?r3   r6   )inline_spacing)r   r   r!   r   r   r   r   r:   )r   r   ru   rv   rw   r   r   
contoursets           r   test_clabel_with_large_spacingr3  l  s     IIdD$''A;;q!DAq
1uq!t|AllnGCAq!,?@JIIjI-r   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                  |
|      }y )NFr   rC   r&   )r   rB   r\   r0  r  )leftr   g      g      #@i  r   r   (   g      g      @r   )vminvmax)normr   )r4   r:  r   r   r   )g:0yE>g    _B)-C6?g    .A)r   r   r   r   r   rs   r   r9   r   r   r	   r   rj   r   r   get_ylimr   rn   )r   r(  r)  ax3data_expr   
levels_expr4   c1c2c3r   s               r   test_contourf_log_extensionrC    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	!Br   zcontour_addlines.pnggQ?r   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	       y )
NFr   i,N,r   i'  i  gd]Kȓ\@g6>W'z@r&   )r   r   r   r   r   r  r8   
pcolormeshr   r   	add_linesr   r   r<  )r   r   ru   pcmcontr   s         r   test_contour_addlinesrI    s     ',CLL"#llnGCIINN8
		r2u$A
--
C::afD	c	BLLbeenn.:0FJr   contour_uneven)baseline_imagesrJ   rV   rW   c                  ^   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       y )NFr      rA   rZ   rC   rL   r   )rL   rA   rZ   r   r   r3   proportional)r   spacinguniform)r   r   r   r   r9   r   r   r   )r   r   r   r   r<   s        r   test_contour_unevenrQ    s     ',CLL"#
		"a#A||Aq!HC	QB	Q0	1BLLNL3	QB	Q0	1BLLIL.r   zCrc_lines_linewidth, rc_contour_linewidth, call_linewidths, expected))Gz?NNrR  )rR  (\@NrS  )rR  rS  Gz@rT  c                    t        | |d      5  t        j                         \  }}t        j                  d      j                  dd      }|j                  ||      }|j                         d   |k(  sJ 	 d d d        y # 1 sw Y   y xY w)N)zlines.linewidthzcontour.linewidth)rcr?   rA   r&   )
linewidthsr   )r   r   r   r   r   r9   r   get_linewidths)rc_lines_linewidthrc_contour_linewidthcall_linewidthsexpectedr   r   ru   r<   s           r   test_contour_linewidthr]    s     
+=-AC 
D 2,,.RIIcN""1a(ZZoZ6  "1%1112 2 2s   A(BBpdfc                  `    t        j                  t        j                  ddgddgg             y )NrC   rL   r&   rA   )r   r:   r    r   r   test_label_nonaggra    s&     JJs{{QFQF+,-r   contour_closed_line_loop)rK  rJ   rV   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       y )N)r   r   r   )r   rL   r   )rL   rC   rL   )rL   rL   r5  r   r   r  )rW  alphagg @g@)r   r   r   set_xlimset_ylim)r   r   r   s      r   test_contour_closed_line_looprg    sX     
Iy)4All6*GCJJq3%RDJ4KKcKKcr   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   r^   )r   r!   r   r   r   r   _contour_generator)r   r   r   r   r   qcs1qcs2qcs3s           r   test_quadcontourset_reuserm    s     ;;SzC:.DAq	AAllnGC;;q!QD::aAD""d&=&====::dAD""d&=&====r   contour_manualg{Gz?)rK  rJ   rV   rX   c                     ddl m}  t        j                  d      \  }}d}ddgddgddggg}ddgddggddgdd	ggg}ddgdd	gddgddgddggg}ddgddgddgddgddggdd	gdd	gddggg} | |g d
||gd|        | |ddg||gdddg       d	dgddgddgd	dgd	dgddgddgddgddgddgg
g}g dg}	 | |ddg|g|	gd|        | |dg|g|	gdd       y )Nr   )
ContourSetrA   rA   r5  viridisrL   rC   r&   rA   r   rC   rL   T)r   r   rf   k)rW  ri   r   rB   rZ   )
rC   rL   rL   rL   O   rC   rL   rL   rL   ru  )ri   rW  )matplotlib.contourrp  r   r   )
rp  r   r   r   lines0lines1filled01filled12segskindss
             r   test_contour_manualr}    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Br   !contour_line_start_on_corner_edgec                     t        j                  d      \  } }t        j                  g dg d      \  }}d|dz
  dz  z
  |dz
  dz  z   }t        j                  |t
              }d	x|d
<   |d<   t        j                  j                  ||      }|j                  |||d	      }| j                  |      }|j                  |||d	d      }|j                  |       y )N)rZ   rB   r5  )r   rC   rL   r&   rA   rs  g333333?rL   rC   dtypeT)rC   rC   )rC   r&   r	  r  rt  )r  ri   )r   r   r   r!   
zeros_likeboolr  rn   r   r   r   rF  )	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r   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  rB   rL   r         9@r   rC   Fpixel)rC   r   !   YİØt?r  gb?r   )rC   r   rB   g`3@gDlpf?gݓ?)r&   r      gͰQo&?ghW!@g|o^}?rB   r   indicesr  )rB   r      gA*Ŏ@g      @gA?)	r   r  r   r   sumr   r   find_nearest_contourr   )xyimgr<   nearest_contourexpected_nearests        r   test_find_nearest_contourr  !  s    	H	B
&&"%%26626A+q1%78
9C	S"	B--a%-@O?o/?@--a%-@O>o/?@--a%-@O?o/?@--aF%-PO:o/?@r   c                  ~   t        j                  d      } t        j                  t         j                   t        j                  | dz
  dz  d      dz  z        }t        j                  |d      }t        j                  t        d      5  |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  rB   rL   r   r  r   z'Method does not support filled contoursr(   rC   Fr  r  r  )rL   r   T)r   r  r   r   r  r   r   r*   r+   r  r  )r  r  r<   s      r   #test_find_nearest_contour_no_filledr  7  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ư>r;  r6   r   )gh㈵>gh㈵>gh㈵?r3   >   0.251.004.00)
r   rm   add_subplotr   r   	geomspacer9   r:   textsrt   )r   r<   texts      r   )test_contour_autolabel_beyond_powerlimitsr  F  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   )	RectanglerC   r   r~   r   r   r   )#FFFF00#FF00FFz#00FFFFr   r   r   r   )z$x \leq -1e+250s$z$10.0 < x \leq 30.0$z$30.0 < x \leq 50.0$z$x > 1e+250s$)r   r  r  r   c              3   6   K   | ]  }t        |        y wN)
isinstance).0ar  s     r   	<genexpr>z0test_contourf_legend_elements.<locals>.<genexpr>b  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>c  s*      :1a !//+Q/ :   '))matplotlib.patchesr  r   r   r9   r   r   r   set_over	set_underchangedlegend_elementsrE   zip)r   r   hr<   artistslabelsexpected_colorsr  s          @r   test_contourf_legend_elementsr  P  s    ,
		!RA			"aA	AA	a>#
%B GGUGGfJJL((*OGV ' ' ' ' <O99999 :w8: : : :r   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 )NrC   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  mplr  Line2D)r  r  s     r   r  z/test_contour_legend_elements.<locals>.<genexpr>r  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  s)      11a !++-+ 1r  )r   r   r9   r   r   r  rE   r  )r   r   r  ri   r<   r  r  s          r   test_contour_legend_elementsr  g  s    
		!RA			"aA	AA'F	Q|""
$B ((*OGV????@@@@@ 1w/1 1 1 1r   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)Nr^   rd   r_         @	algorithm)	r   rn   r   r   r  ri  r*   r+   r  )r  klassr   r<   s       r   test_algorithm_namer  w  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)	Nr^   rd   r_   r  F)r  r  r  T)r   rn   r   r   r*   r+   r  )r  r   s     r   #test_algorithm_supports_corner_maskr    s     	3*sCj)*A 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 y )Nr  i  r   r^   r   rZ   r  r   )rZ   r   )scalesizer  T)r&   r   r	  rL   r  rt  )r  ri   )r   r   default_rngr!   rs   r   r   normalr  r  r  rn   r   r   r  ravelr   r   	set_title)

algorithmsrngr   r   r   r
  r   r   r   r  s
             r   test_all_algorithmsr    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 r   c                     d} t        j                  dd|       }t        j                  dd|       }t        j                  ||      \  }}t        j                  |dz   |dz  z
        }t        j                  |dz
  dz   |dz
  dz  z
        }||z
  dz  }t	        j
                         }|j                  dd      }	|	D ]J  }
|
j                         }|j                  |||      }|j                  |d	d
       |j                  d       L y )Nr   r   r_   r   rd   rL   rC   )nrowsr"  Tr   )r   rh   zSimplest default with labels)r   r   r!   r   r   rm   
subfiguresr   r   r:   r  )r   r   r   ru   rv   r   r   rw   r   figsfr   r   s                r   test_subfigure_clabelr    s    E
		$U#A
		$U#A;;q!DAq	!Q$!Q$	B	1q5Q,1q5Q,.	/B	bAA
**,C>>>+D 5ZZ\ZZ1a 
		"TB	/
34	5r   rW   )soliddasheddashdotdottedc           	         d}t        j                  dd|      }t        j                  dd|      }t        j                  ||      \  }}t        j                  |dz   |dz  z
        }t        j                  |dz
  dz   |dz
  dz  z
        }||z
  dz  }t	        j
                         \  }	}
|
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   r_   r   rd   rL   rC   rZ   rt  ri   r   Trh   r   z0Single color - positive contours solid (default))ri   
linestylesz!Single color - positive contours r  ri   r  negative_linestyles)
r   r   r!   r   r   r   r   r:   r  r  )rW   r   r   r   ru   rv   r   r   rw   fig1r(  CS1fig2r)  CS2fig3r=  CS3s                     r   test_linestylesr    s    E
		$U#A
		$U#A;;q!DAq	A1	B	!a%!q1uqj(	)B	bAA ID#
++aAq+
-CJJsQtJ,MMDE>>!!! ID#
++aAq+
?CJJsQtJ,MM5eW=>>>U""" ID#
++aAq*3  5CJJsQtJ,MM5eW=>>>U"""r   c           	         d}t        j                  dd|      }t        j                  dd|      }t        j                  ||      \  }}t        j                  |dz   |dz  z
        }t        j                  |dz
  dz   |dz
  dz  z
        }||z
  dz  }t	        j
                         \  }	}
|
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   r_   r   rd   rL   rC   rZ   rt  r  r   Tr  z1Single color - negative contours dashed (default)r  zcontour.negative_linestylez!Single color - negative contours z(using rcParams))ri   r  r  r  )r   r   r!   r   r   r   r   r:   r  r  r   )rW   r   r   r   ru   rv   r   r   rw   r  r(  r  r  r)  r  r  r=  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+++r   c                  b   t        j                         j                         } | j                         }| j	                  t        j                  d      j                  d            }|j                          | j                         |k7  sJ |j                          | j                         |k(  sJ y )Nr  rq  )
r   rm   r  get_childrenr   r   r   r9   r:   remove)r   orig_childrenr<   s      r   test_contour_remover    s    		!	!	#BOO%M	BIIbM))&1	2BIIK??---IIK??---r   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   rC   zcontour\(\) takes from 1 to 4r(   )rw   )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   rC   r   )r   )	clip_path)r   r   mpatchesCircle	transAxesr   get_clip_path)r   r   r   circler<   s        r   test_contour_clip_pathr    sd    llnGCFQFD__c3ZEF	DF	+B)))r   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 )	NrL   r   )r&   r&   )FFF)FTFr   r	  )r   r   rC   )r   r   r8   r   r9   astyper  r   r   tolistr4   r  rn   r   r  
tricontourtricontourf)r   r   r   ms       r   test_bool_autolevelr  %  s)   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Ar   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   rn   nanr   r   r   r4   )r   s    r   test_all_nanr  6  sN    
266266"RVVRVV$456Ackk!n33@Ar   c                     t        j                  t        j                  ddd      t        j                  ddd            \  } }t        j                  |       t        j                  |      z  }t        j                  | ||ddg      }|j                  |j                  fD ]8  }t        |      dk(  sJ t        |d         dk(  sJ t        |d         dk(  r8J  y )	Nr   r   rL   r   r3   rB   rC   rA   )
r   r!   r   r   r   r   r   allsegsallkindsrD   )r   r   r   r<   results        r   test_allsegs_allkindsr  =  s    ;;ryyB*BIIaQ,?@DAq
q	BFF1IA	Q1aX	.B ::r{{+ #6{a6!9~"""6!9~"""#r   )Wr   platformr-   unittestr   	contourpynumpyr   numpy.testingr   r   
matplotlibr  r   r   r   r   matplotlib.colorsr	   r
   r  patchesr  matplotlib.testing.decoratorsr   r   r*   r   r$   markparametrizer   emptyr1   r=   rH   rS   rp   r{   r   machiner   r   r   r   r   r   r  r  r  r  r  r.  r3  rC  rI  rQ  r]  backendra  rg  rm  r}  r  r  r  rW   contextr  r  r  Mpl2005ContourGeneratorMpl2014ContourGeneratorSerialContourGeneratorThreadedContourGeneratorr  r  r  r  r  r  r  r  r  r  r  r  r`  r   r   <module>r.     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'+ ,-,	 , (* )* *+WRVW
D X
D(& 23"'ugG#G# 9:+8++-9auFF< *+"'ugG9G9  +N O$	O$ ,-W%P< Q<( ./w?# @#0 67"'s<><>82 24RS".1.1$B HAB=B=,.& ./"'""B )*G.h..0H<d$HK	HK #3"4#W$gG/G/ I L
22 U. .
 #=">#W$88
> #3"4#W$DBCBC0 #F"G#W$88A,B 9N N:.1  223223	001)445	11 =?C?C #;"<#W$DB B "5( 57#7#@ 57&,7&,R.*B"A
#r   