Ë
    ¨ehQv  ã                   ó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!d4¬5«      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        ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/matplotlib/tests/test_contour.pyÚtest_contour_shape_1d_validr      sO   € ä
�	‰	�"‹€AÜ
�	‰	�!‹€AÜ
�	‰	×Ñ˜Ó!€Aä�l‰l‹n�G€CˆØ‡J�Jˆq�!�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Ó�F€BˆÜ
�	‰	×Ñ˜Ó!€Aä�l‰l‹n�G€CˆØ‡J�Jˆr�2�qÕ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   € ô. �l‰l‹n�G€CˆÜ	�‰”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   ©ÚlevelséQ   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   € Ü�l‰l‹n�G€Cˆà‡J�JŒr�y‰y�~‰~˜a Ó#¨B€JÔ/à	�‰”B—I‘I˜b“M×)Ñ)¨&Ó1¸3¸%ˆÓ	@€Bà‡I�Iˆb�s˜G�n€IÔ%à‡J�JŒr�w‰w�v‹Õ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Ü�l‰l‹n�G€CˆØ
�*‰*�Q˜Ó
€CÜˆs�z‰z‹?˜QÒÐÐØ
�*‰*�Q˜qˆ*Ó
!€CØ�J‰J˜#Ÿ*™*Ñ$×)Ñ)Ô+Ð+Ñ+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   € à×ÑÓ!×)Ñ)¨A¨q¨6°A°q°6Ð*:Ó;€GØ×ÑÓ×'Ñ'¨!¨Q¨°!°Q°Ð(8Ó9€Fà×Ñ�f×&Ñ&Ó(Õ)r   Úcontour_manual_labelsTÚmpl20g¤p=
×£Ð?)Ú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°   € ä�;‰;”r—y‘y  BÓ'¬¯©°1°bÓ)9Ó:�D€A€qÜ
�‰Œr�y‰yœ#˜a›&¤# a£&Ð)Ó*¨AÓ.€Aä‡J�J�v 3Õ'Ü	�‰�Q˜˜1Ó	€Bä
�(‰(Ò7Ó
8€CÜ‡J�Jˆr˜#ÕÜ
�(‰(Ò7Ó
8€CÜ‡J�Jˆr˜#¨¸
Ö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 )Niöÿÿÿr   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˜!Ó�D€A€qà	ˆ1‰ˆq‰�1�a‘4‰˜!Ñ€Aä�{‰{˜1˜a ¨A¨s¨8Ô4€Hð €EÜ�j‰j˜¨5¨'Ô2€Gð �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 )NéÿÿÿÿrC   y              5@ç{®Gáz„?ç333333Ó?rL   é   r3   )çš™™™™™É?çš™™™™™¹?rb   )r   ÚmgridÚsqrtr   rm   r   r:   )r   r   r   r<   s       r   Ú-test_contour_label_with_disconnected_segmentsr†   ‚   s­   € ô �8‰8�B�q˜�H˜b  3˜hÐ&Ñ'�D€A€qØ	ŒB�G‰G�D˜A ™G¨™>Ñ)¨A°©FÑ2Ó3Ñ3€AØˆŒR�W‰W�T˜Q ™W¨™NÑ*¨Q°!©VÑ3Ó4Ñ	4Ñ4€Aä‡J�J„LÜ	�‰�Q˜˜1 a SÔ	)€BØ‡I�I�j�\€IÕ"r   z$contour_manual_colors_and_levels.pngÚx86_64g;ßO�—n’?)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ü   € ð ',„C‡L�LÐ"Ñ#ä�\‰\˜!˜QÓ�F€A€sä�9‰9�R‹=× Ñ   AÓ&€Dâ7€FÚ€Fä˜3Ÿ8™8Ó$ò ‰ˆˆ2Ø�Q‘˜"‘ˆÚ2°1¸±6Ñ:ˆáð  &Ð);Ñ;™!ÀˆKØ%Ð);Ñ;™ÀˆJØ—‘˜D¨°¸JÐ)GØ#)°&ð ó :‰Að —
‘
˜4¨¨s°¨Ø"(°ð ó 9ˆAô 	�‰�Q˜2Öñ!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   € ô �l‰l‹n�G€CˆØ	�‰�q˜!�f˜q !˜fÐ%Ò/EÈFˆÓ	S€BØ×ÑÒ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ä�L‰L‹N�E€A€rÚ&€FØ	�‰�A˜f¨U¸6ˆÓ	B€BØ×ÑÓ ò $ˆÜ˜!˜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ç      $@iúÿÿÿr&   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
  € ô �l‰l‹n�G€Cˆà€AÜ
�‰�D˜#˜qÓ!€AÜ
�‰�D˜#˜qÓ!€Aä�;‰;�q˜!Ó�D€A€qä	�‰��A‘�˜˜1™‘Ó	€BÜ	�‰�!�b‘&˜1‘�  B¡¨™{Ñ*Ó	+€BØ��R‘‰<€Dà
�‰�D¤&×"3Ñ"3Ó"5ˆÓ6€AÜ˜aŸh™h¬¯©°´r·y±yÀÀQÓ7GÓ(HÔIØ	�‰�a˜BˆÓ	€BÜ˜bŸe™e×.Ñ.Ó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Ü×Ñ˜T 1 aÓ(€DÜ
�‰¼UÀ2»YÖG¸�$œ×+Ñ+°Ô3Ó3ÒGÓH€AÜ
�	‰	�"‹€AÜ�[‰[œŸ™ 2›¬¯	©	°"«Ó6�F€BˆØ
ˆR‰€AÜ‡K�K�ÔÜ‡K�K��1�aÔÜ‡K�K�ÔÜ‡L�L��A�qÔÜ
�	‰	�!”B—J‘J‘- ¨!Ô,€AÜ
�	‰	�!’A”r—z‘z�MÑ" B¨QÔ/€AÜ‡K�K�ÔÜ‡K�K��1�aÔÜ‡K�K�ÔÜ‡L�L��A�qÔØ�l‰l‹nò #ˆØ×'Ñ'Ó)ò 	#ˆEØ�L‰L˜Ô!Ø×Ñ˜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˜!Ó�D€A€qÜ	�‰�!�Q‘$˜˜A™‘+� Ñ"Ó	# q¬2¯5©5¡yÑ	1€BÜ
�&‰&�Q˜‘U˜c‘M AÑ%¨!¨a©%°3©¸Ñ(:Ñ:Ð;¸aÑ?Ó
@ØŒr�u‰u‰9�s‰?˜SÑ ñ"€Bð 	��R‘Ñ€Aä�l‰l˜1˜aÓ �G€CˆØ	�‰�A�q˜!Ó	€BÚ5€JÚ0€Jà‡I�I„Kàò =‰ˆˆ1Ø
×Ñ˜!˜Q t°tÐÕ<ð=ð ò >‰ˆˆ1Ø
×Ñ˜!˜Q t°uÐÕ=ñ>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  € ô �L‰L˜SÔ!�E€A€rÜ—+‘+œrŸu™u˜f q™j¬"¯%©%°!©)°RÓ8Ð8€Dˆ4Ü—‘˜T 4Ó(�J€Dˆ$Ø”2—6‘6˜!˜d™(Ó# qÑ(Ñ)¬B¯F©F°1°t±8Ó,<Ñ<€DØ”—‘˜˜D™Ó!Ñ!¤b§f¡f¨Q°©XÓ&6¸1Ñ%<¸qÑ%@ÑA€DØ�$‰;€Dà	�‰�D˜$ Ó	%€Bä	�‰×	Ñ	ØÐ4Ø×7Ñ7ð 
ó 
9ð à<Kà
�	‰	˜1ˆ	Ô÷	ð &5×%CÑ%CÖD˜EˆE�!‰H�Q‹KÐD€DÐDØ�‰9Ð‰9÷ð üò Es   Ä$E%ÅE1Å%E.zcontour_corner_mask_False.pngzcontour_corner_mask_True.pngg®Gázþ?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Ü‡I�I‡N�N�A�3ÔÜ�;‰;”r—{‘{ 1 c¨1Ó-¬r¯{©{¸1¸cÀ1Ó/EÓF�D€A€qÜ
�‰ˆq�‰s‹”B—F‘F˜1˜Q™3“KÑ )¬B¯I©I¯N©N¸1¸aÓ,@Ñ"@Ñ@€AÜ�9‰9�>‰>˜!˜QÓ :Ñ-€DÜ
�‰�‰�A˜DˆÓ!€Aà$ò 1ˆÜ�
‰
ŒÜ�‰�Q KÖ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ˆ�c˜3�ZÐ €AÜ‡J�J„LÜ	�‰”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½   iôÿÿÿrB   )	r   r   r9   r   ÚMaxNLocatorr™   r   r4   rs   )r   r¾   r<   s      r   Útest_contourf_symmetric_locatorr  B  sU   € ä
�	‰	�"‹×Ñ˜fÓ%€AÜ�o‰o A°Ô6€GÜ	�‰�a Ô	)€BÜ˜bŸi™i¬¯©°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—{‘{ 2 q¨!Ó,¬b¯k©k¸"¸aÀÓ.CÓD�D€A€qÜ
�‰��A‹€AÜ‡J�J„LÜ	�‰�Q˜˜1Ó	€BÜ‡J�Jˆr…Nr   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)  € ô �;‰;”r—y‘y  BÓ'¬¯©°1°bÓ)9Ó:�D€A€qÜ
�‰Œr�y‰yœ#˜a›&¤# a£&Ð)Ó*¨AÓ.€Aä—l‘l¨Ô+�O€C‰ˆ#ˆsØ	�‰�Q˜˜1 ^ˆÓ	4€BØ—‘˜Q  1¨^�Ó<€IØ�y‰y ¸nˆyÓM€HØ×Ñ }Ø/=ð  ó ?€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®Gáz@çš™™™™™©?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�   € ô �I‰I�d˜D $Ó'Ð'€AˆÜ�;‰;�q˜!Ó�D€A€qÜ
�‰��1‘ˆu�q˜!‘t‰|Ó€Aä�l‰l‹n�G€CˆØ—‘˜A˜q !Ò,?�Ó@€JØ‡I�Iˆj¨€IÕ-r   zcontour_log_extension.pngg´Èv¾Ÿ÷?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:Œ0âŽyE>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‘  € ð
 ',„C‡L�LÐ"Ñ#ô Ÿ<™<¨¨1°gÔ>Ñ€C‰ˆ#ˆs�CØ×Ñ˜T¨ÐÔ.ô �{‰{˜4  dÓ+€HÜ�8‰8�B˜Ó!×)Ñ)¨"¨bÓ1€Dä—‘˜3 Ó#€JÜ�X‰X�c˜:Ó&€Fð 
�‰�dÜ"¨¯©«
¸¿¹»ÔDð 
ó 
F€Bð 
�‰�d 6Ü"¨¯
©
«¸6¿:¹:»<ÔHØ&ð 
ó 
(€Bð 
�‰�d 6Ü"¨¯
©
«¸6¿:¹:»<ÔHØ#ð 
ó 
%€Bô 
�‰�b˜SÔ	!€BØ�5‰5�>‰>Ó˜|Ò+Ð+Ð+Ü	�‰�b˜SÔ	!€BÜ" 2§5¡5§>¡>Ó#3´R·X±X¸kÓ5JÔKÜ	�‰�b˜SÔ	!�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¡   € ð ',„C‡L�LÐ"Ñ#ä�l‰l‹n�G€CˆÜ‡I�I‡N�N�8ÔÜ
�	‰	�‰�r˜2Ó˜uÑ$€AØ
�-‰-˜Ó
€Cà�:‰:�a˜‘fÓ€DØ	�‰�cÓ	€BØ‡L�L�ÔÜ˜bŸe™eŸn™nÓ.°¸:Ð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�   € ð ',„C‡L�LÐ"Ñ#ä
�	‰	�"‹×Ñ˜a Ó#€AÜ�|‰|˜A˜qÓ!�H€CˆØ	ˆQ‰€BØ	�‰�QÒ0ˆÓ	1€BØ‡L�L�˜ N€LÔ3Ø	ˆQ‰€BØ	�‰�QÒ0ˆÓ	1€BØ‡L�L�˜ I€LÕ.r   zCrc_lines_linewidth, rc_contour_linewidth, call_linewidths, expected))ç®Gáz®ó?NNrR  )rR  çö(\�Âõ@NrS  )rR  rS  ç®Gáz@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Ü�I‰I�c‹N×"Ñ" 1 aÓ(ˆØ�Z‰Z˜ oˆZÓ6ˆØ× Ñ Ó" 1Ñ%¨Ò1Ð1Ñ1÷2÷ 2ñ 2ús   �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&   € ô ‡J�JŒs�{‰{˜Q ˜F Q¨ 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  Úalphagš™™™™™¹¿gÍÌÌÌÌÌ @gÍÌÌÌÌÌ@)r   r   r   Úset_xlimÚset_ylim)r   r   r   s      r   Útest_contour_closed_line_looprg  Ý  sX   € ò 
’Išyª)Ð4€Aä�l‰l 6Ô*�G€CˆØ‡J�Jˆq�3�% R D°€JÔ4Ø‡K�K��cÔØ‡K�K��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    € ô �;‰;˜˜S�z C¨ :Ó.�D€A€qØ	ˆA‰€AÜ�l‰l‹n�G€CˆØ�;‰;�q˜!˜QÓ€DØ�:‰:�a˜˜AÓ€DØ×"Ñ" d×&=Ñ&=Ò=Ð=Ð=Ø�:‰:�d˜AÓ€DØ×"Ñ" d×&=Ñ&=Ò=Ð=Ñ=r   Úcontour_manualg{®Gázì?)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}  € õ .ä�l‰l 6Ô*�G€CˆØ€Dð �1ˆv˜˜1�v  1˜vÐ&Ð'€FØ�1ˆv˜˜1�vÐ ! Q ¨!¨Q¨Ð 0Ð1€FØ�Q�˜!˜Q˜ ! Q ¨!¨Q¨°!°Q°Ð8Ð9€HØ�Q�˜!˜Q˜ ! Q ¨!¨Q¨°!°Q°Ð8Ø�Q�˜!˜Q˜ ! Q Ð(ð*€Háˆr’9˜x¨Ð2¸4ÀdÕKÙˆr�A�q�6˜F FÐ+¸À3ÈÀ*ÕMð �ˆV�a˜�V˜a ˜V a¨ V¨a°¨VØ�ˆV�a˜�V˜a ˜V a¨ V¨a°¨Vð5ð 6€Dâ-Ð.€EÙˆr�A�q�6˜D˜6 E 7°4¸dÕCÙˆr�A�3˜˜  °ÀÖ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É   € ô �l‰l 6Ô*�G€Cˆä�;‰;’ª	Ó2�D€A€qØˆq�1‰u�q‰jÑ˜A ™E A™:Ñ%€AÜ�=‰=˜¤$Ô'€DØ"Ð"€Dˆ�J��d‘Ü
�‰�‰�A˜DˆÓ!€Aà�[‰[˜˜A˜q¨dˆ[Ó3€FØ�<‰<˜Ó€DØ�J‰J�q˜!˜Q¨D¸ˆJÓ=€EØ‡N�N�5Õ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@gDl°p’fù?gö—Ý“‡…á?)r&   r   é   gÍ°QÖo&þ?g�hW!å@g|ïoÐ^}Œ?©rB   r�   ©ÚindicesrŒ  )rB   r   é   gA*ÅŽ@g      @g÷�ð½¿AÙ?)	r   r’  rÀ   rï   Úsumr   r   Úfind_nearest_contourr   )ÚxyÚimgr<   Únearest_contourÚexpected_nearests        r   Útest_find_nearest_contourrš  !  só   € Ü	�‰�HÓ	€BÜ
�&‰&”"—%‘%�œ2Ÿ6™6 2¨¡6¨A¡+¨qÓ1°%Ñ7Ñ8Ó
9€CÜ	�‰�S˜"Ó	€Bà×-Ñ-¨a°¸%Ð-Ó@€OØ?ÐÜ˜oÐ/?Ô@à×-Ñ-¨a°¸%Ð-Ó@€OØ>ÐÜ˜oÐ/?Ô@à×-Ñ-¨a°¸%Ð-Ó@€OØ?ÐÜ˜oÐ/?Ô@à×-Ñ-¨a°¸FÈ%Ð-ÓP€OØ:ÐÜ˜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Ü
�&‰&”"—%‘%�œ2Ÿ6™6 2¨¡6¨A¡+¨qÓ1°%Ñ7Ñ8Ó
9€CÜ	�‰�c˜2Ó	€Bä	�‰”zÐ)RÔ	Sñ 3Ø
×Ñ  1¨EÐÔ2÷3ô 
�‰”zÐ)RÔ	Sñ DØ
×Ñ  2¨v¸UÐÔC÷Dô 
�‰”zÐ)RÔ	Sñ BØ
×Ñ  1¨f¸DÐÔ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   )gñhãˆµøÄ>gñhãˆµøä>gñhãˆµø?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×:Ñ:¸2¸rÓBÚ0ô
2€Bà‡I�Iˆb„Mà(*¯©Ö1 ˆD�M‰M�OÒ1Ò5MÒ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   øè ø€ Ò9¨AŒz˜!˜Y×'Ñ9ùs   ƒ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*   è ø€ ò :Ù�1�aô ˜!Ÿ/™/Ó+¨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ð ‡G�G×Ñ�UÔØ‡G�G×Ñ�fÔØ‡J�J„LØ×(Ñ(Ó*�O€GˆVØò 'ò 'ð 'ð 'ð <€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!   è ø€ Ò@°1Œz˜!œSŸY™Y×-Ñ-×.Ñ@ù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Ù�1�aô ˜!Ÿ+™+›-¨×+ñ 1ùrµ  )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ð ×(Ñ(Ó*�O€GˆVØÒ?Ò?Ð?Ð?ÜÑ@¸Ô@Ô@Ð@Ð@Üñ 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˜�*˜s C˜jÐ)Ó*€AØÐÜ�\‰\˜! yÔ1ˆÜ˜"×/Ñ/°Ô7Ð7Ñ7ä�]‰]œ:Ó&ñ 	1Ü�L‰L˜ iÕ0÷	1÷ 	1ñ 	1ús   Á'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˜�*˜s C˜jÐ)Ó*€Aô ‡L�L�˜i°UÕ;ð �IÒÜ�‰�Q )¸Ö>ä�]‰]œ:Ó&ñ 	CÜ�L‰L˜ i¸TÕ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´"·+±+¸cÀ3ÈÓ2JÓK�D€A€qÜ
�‰ˆr�!‰t‹”R—V‘V˜B˜q™D“\Ñ! C§J¡J°S¸w JÓ$GÑG€AÜ�=‰=˜¤$Ô'€DØ€Dˆ�JÜ
�‰�‰�A˜DˆÓ!€Aä�\‰\˜!˜QÓ�F€A€sÜ˜SŸY™Y›[¨*Ó5ò  ‰ˆˆIØ
�‰�A�q˜! yˆÔ1Ø
�
‰
�1�a˜ 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˜!Ó�D€A€qÜ	�‰�!�Q‘$�˜!˜Q™$‘Ó	€BÜ	�‰�1�q‘5˜Q‘,� 1 q¡5¨Q¡,Ñ.Ó	/€BØ	ˆb‰�A‰€Aä
�*‰*‹,€CØ�>‰> ¨ˆ>Ó+€Dàò 5ˆØ�Z‰Z‹\ˆØ�Z‰Z˜˜1˜aÓ ˆØ
�	‰	�"˜T¨Bˆ	Ô/Ø
�‰Ð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˜!Ó�D€A€qÜ	�‰��A‘�˜˜1™‘Ó	€BÜ	�‰�!�a‘%˜!‘�˜q 1™u q™jÑ(Ó	)€BØ	ˆb‰�A‰€Aô —‘“�I€Dˆ#Ø
�+‰+�a˜˜A˜q¨ˆ+Ó
-€CØ‡J�Jˆs˜Q t€JÔ,Ø‡M�MÐDÔEØ�>‰>Ð!Ð!Ð!ô —‘“�I€Dˆ#Ø
�+‰+�a˜˜A˜q¨¸ˆ+Ó
?€CØ‡J�Jˆs˜Q t€JÔ,Ø‡M�MÐ5°e°WÐ=Ô>Ø�>‰>˜UÒ"Ð"Ð"ô —‘“�I€Dˆ#Ø
�+‰+�a˜˜A˜q¨¸Ø*3ð ó 5€Cà‡J�Jˆs˜Q t€JÔ,Ø‡M�MÐ5°e°WÐ=Ô>Ø�>‰>˜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˜!Ó�D€A€qÜ	�‰��A‘�˜˜1™‘Ó	€BÜ	�‰�!�a‘%˜!‘�˜q 1™u q™jÑ(Ó	)€BØ	ˆb‰�A‰€Aô —‘“�I€Dˆ#Ø
�+‰+�a˜˜A˜q¨ˆ+Ó
-€CØ‡J�Jˆs˜Q t€JÔ,Ø‡M�MÐEÔFØ×"Ñ" hÒ.Ð.Ð.ð 27„C‡L�LÐ-Ñ.Ü—‘“�I€Dˆ#Ø
�+‰+�a˜˜A˜q¨ˆ+Ó
-€CØ‡J�Jˆs˜Q t€JÔ,Ø‡M�MÐ5°e°WØ%ð&ô 'à×"Ñ" eÒ+Ð+Ð+ô —‘“�I€Dˆ#Ø
�+‰+�a˜˜A˜q¨À%ˆ+Ó
H€CØ‡J�Jˆs˜Q t€JÔ,Ø‡M�MÐ5°e°WÐ=Ô>Ø×"Ñ" eÒ+Ð+Ð+ô —‘“�I€Dˆ#Ø
�+‰+�a˜˜A˜q¨¸Ø*/ð ó 1€Cà‡J�Jˆs˜Q t€JÔ,Ø‡M�MÐ5°e°WÐ=Ô>Ø×"Ñ" 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Ø—O‘OÓ%€MØ	�‰”B—I‘I˜b“M×)Ñ)¨&Ó1Ó	2€BØ‡I�I„KØ�?‰?Ó Ò-Ð-Ð-Ø‡I�I„KØ�?‰?Ó Ò-Ð-Ñ-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   € Ü�l‰l‹n�G€CˆØ�ˆF�Q˜�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   € Ü�l‰l‹n�G€CˆØ�ˆF�Q˜�FÐ€DÜ�_‰_˜c 3˜Z¨¸¿¹ÔE€FØ	�‰�D FˆÓ	+€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)  € Ü�9‰9�>‰>˜!˜QÓ�D€A€qÜ	�‰�1‹˜Ñ	×"Ñ" 6Ó*×1Ñ1´$Ó7€AÚ	Ò 4Ò6KÐL€AÜ�;‰;�q—x‘x“zÓ"×)Ñ)×0Ñ0Ó2°r°dÒ:Ð:Ð:Ü�;‰;�q‹>× Ñ ×'Ñ'Ó)¨b¨TÒ1Ð1Ð1Ü�;‰;”r—u‘u—{‘{ 1¨1�{Ó-Ó.×5Ñ5×<Ñ<Ó>À2À$ÒFÐFÐFÜ�<‰<˜Ÿ™›
Ó#×*Ñ*×1Ñ1Ó3²zÒAÐAÐAÜ�<‰<˜‹?×!Ñ!×(Ñ(Ó*ªjÒ8Ð8Ð8Ü�<‰<œŸ™Ÿ™ A¨A˜Ó.Ó/×6Ñ6×=Ñ=Ó?Â:ÒMÐMÐMØ	�‰‹	€AÜ�>‰>˜!˜Q §¡£
Ó+×2Ñ2×9Ñ9Ó;À¸tÒCÐCÐCÜ�>‰>˜!˜Q Ó"×)Ñ)×0Ñ0Ó2°r°dÒ:Ð:Ð:Ü�?‰?˜1˜a §¡£Ó,×3Ñ3×:Ñ:Ó<Â
ÒJÐJÐJÜ�?‰?˜1˜a Ó#×*Ñ*×1Ñ1Ó3²zÒ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)	g‚vIhÂ%<½gá7ÎQ5½g‚vIhÂ%,½g [n‡½r�   g [n‡=g‚vIhÂ%,=gá7ÎQ5=g‚vIhÂ%<=)r   rn   Únanr   r   r   r4   )r   s    r   Útest_all_nanr  6  sN   € Ü
�‰”2—6‘6œ2Ÿ6™6Ð"¤R§V¡V¬R¯V©VÐ$4Ð5Ó6€AÜœcŸk™k¨!›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¾   € Ü�;‰;”r—y‘y  B¨Ó*¬B¯I©I°a¸¸QÓ,?Ó@�D€A€qÜ
�‰ˆq‹	”B—F‘F˜1“IÑ€Aä	�‰�Q˜˜1 a¨ 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Û òòð ‡�×Ñ˜Ø€b‡i�i�ƒl�I�B—I‘I˜a“L ( "§(¡(¨7Ó"3Ð4Ø=ð?à€b‡i�i�ƒm�Y�R—Y‘Y˜r“] H B§H¡H¨WÓ$5Ð6Ø:ð<à€b‡h�hˆxÓ˜)˜"Ÿ)™) B›-¨¨¯©°'Ó):Ð;Ø;ð=à€b‡i�i�ƒm�X�R—X‘X˜hÓ'¨¨¯©°'Ó):Ð;Ø;ð=à€b‡h�hˆvÓ˜˜Ÿ™ Ó)¨8¨2¯8©8°GÓ+<Ð=Ø4ð6à€b‡h�hˆwÓ˜˜Ÿ™ &Ó)¨8¨2¯8©8°GÓ+<Ð=Ø4ð6à€b‡h�hˆyÓ˜8˜2Ÿ8™8 IÓ.°°·±¸Ó0AÐBØ.ð0à€b‡h�hˆyÓ˜8˜2Ÿ8™8 IÓ.°°·±¸Ó0CÐDØ!ð#à	€s€e€XØKðMà€cˆAˆ3�!��ÐØKðMð'+ó ñ,ó-ð,ò	 ò,ñ   Ô(ñ*ó )ð*ñ Ð*Ð+¸ÀWÐRVÔWñ
Dó Xð
Dò(ñ& Ð2Ð3Ø"¨'¸u¸gôGñ#óGð#ñ Ð9Ð:ÈØ+˜8×+Ñ+Ó-°Ò9‘a¸uôFñóFðñ< Ð*Ð+Ø"¨'¸u¸gôGñ9óGð9ð ‡�×Ñ˜ò +Nó Oñ$ó	Oð$ñ Ð,Ð-°WÈ%ÔPñ<ó Qð<ñ( Ð.Ð/°wÔ?ñ#ó @ð#ñ0 Ð6Ð7Ø"¨'°sô<ñ>ó<ð>ò8ñ2 Ð2Ð4RÐSØ"¨ô.ñ1ó.ð1ò$òBòð ‡�×ÑÐHòAóBñ=óBð=ò,.ñ& Ð.Ð/Ø"¨'Øôñ"óð"ñB Ð)Ð*¸ÀGØ.˜h×.Ñ.Ó0°HÒ<‘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   