
    EVf_                        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 d dlmZm	Z	 d dl
Z
d dlZd dlmZmZ d dlmZ d dlmZ d dlZd dlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d Z'd Z(d	 Z)d
 Z*d Z+d Z,dddi ejZ                  d      fdddd ejZ                  d      fdddd ejZ                  d      fdddi ejZ                  d      fdddd ejZ                  d      fdddd ejZ                  d      fgZ.g dZ/e
j`                  jc                  de.e/      d        Z2d Z3d Z4d Z5d Z6d Z7d Z8e
j`                  jc                  d e8d             d!        Z9e
j`                  jc                  d" e8d#            d$        Z:e
j`                  jc                  d%d&d'e;fd(d) ejx                  d*      d*fd+d,e;fd*ge;fg      d-        Z=e
j`                  jc                  d.d/d0e;fd(d) ejx                  d*      d*fd+d,e;fd*ge;fg      d1        Z>d2 Z?d3 Z@d4 ZAe
j`                  j                  ej                  d5k7  d67      d8        ZDe
j`                  j                  ej                  d5k(  xr  ej                          d97      d:        ZFd; ZGe
j`                  jc                  d<g d=      d>        ZHe
j`                  jc                  d<g d?      d@        ZIy)A    N)Path)mock)cyclerCycler)_api_c_internal_utils)validate_boolvalidate_colorvalidate_colorlist_validate_color_or_linecolorvalidate_cyclervalidate_floatvalidate_fontstretchvalidate_fontweightvalidate_hatchvalidate_hist_binsvalidate_intvalidate_markeveryvalidate_stringlist_validate_linestyle_listify_validatorc                    t        j                  dd       t        j                  dd       t         j                  d   }t         j                  d   }t        |       d	z  }|j	                  d
d       t        j
                  d| i      5  t         j                  d   | k(  sJ 	 d d d        t         j                  d   |k(  sJ t        j
                  |      5  t         j                  d   dk(  sJ 	 d d d        t         j                  d   |k(  sJ t        j
                  |ddi      5  t         j                  d   dk(  sJ 	 d d d        t         j                  d   |k(  sJ t        j
                  ddi      d        } |         |        t        j                  |       t         j                  d   dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)NtextF)usetexlines   )	linewidthtext.usetexlines.linewidthtest_rcparams.rczlines.linewidth: 33utf-8encodingrcfname!   ,   )r'   r%   c                  4    t         j                  d   dk(  sJ y )Nr   r)   mplrcParams     g/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/matplotlib/tests/test_rcparams.pyfuncztest_rcparams.<locals>.func<   s    ||-."444r/   )r,   r%   r-   r   
write_text
rc_contextrc_file)tmpdirr   r   rcpathr1   s        r0   test_rcparamsr7   "   s   FF6% FF7b!\\-(F./I&\..F
+g> 
Mv:6	7 ;||M*6z:::;<<&&000 
f	% 5||-."4445<<)*i777 
f*;R)@	A 5||-."4445<<)*i777 	^^&+,5 -5 	FF KK<<)*b0001; ;
5 5
5 5s$   G G3GGGG(c                  >   t        j                  g ddddd      } dj                         }|t        |       k(  sJ dj                         }|t	        |       k(  sJ dd	gt        | j                  d
            k(  sJ dgt        | j                  d            k(  sJ y )N)zApple ChanceryTextilezZapf Chancerycursivez
sans-serifnormal   )font.cursivefont.familyzfont.weight	font.sizea  
RcParams({'font.cursive': ['Apple Chancery',
                           'Textile',
                           'Zapf Chancery',
                           'cursive'],
          'font.family': ['sans-serif'],
          'font.size': 12.0,
          'font.weight': 'normal'})z
font.cursive: ['Apple Chancery', 'Textile', 'Zapf Chancery', 'cursive']
font.family: ['sans-serif']
font.size: 12.0
font.weight: normalr=   r?   zi[vz]r>   family)r,   RcParamslstripreprstrsortedfind_alllist)r%   expected_reprexpected_strs      r0   test_RcParams_classrJ   H   s    	 (3 '3&.$&( 
)B' (.vx  DH$$$ vx	  3r7""" K(F2;;w3G,HHHH?d2;;x#89999r/   c                     t        j                  ddi      } ddi}t        j                  t              5  t        j
                  t        d      5  | j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nfigure.figsize)      @*   rM   rN      validatematch)r,   rA   pytestraises
ValueErrorwarnsUserWarningupdate)r%   bad_dicts     r0   test_rcparams_updater[   i   sp    	'3	4B ,/H	z	" 	k	4
		(     s#   B A4#B 4A=	9B  B	c                      t        j                  t              5  t        j                  t        d      5  t        j                  ddi       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrQ   rR   rL   rO   )rT   rU   rV   rW   rX   r,   rA   r.   r/   r0   test_rcparams_initr]   r   sX    	z	" 7	k	47&567 7 7 7 7 7s"   A+AA+A(	$A++A4c                      ddl m}  t        j                  t        d      5   |  | t        d            dd       d d d        y # 1 sw Y   y xY w)	Nr   )r   z3 were givenrR   rgb)color      )matplotlib.rcsetupr   rT   rU   	TypeErrorrG   )ccls    r0   test_nargs_cyclerrf   x   s=    0	y	7 *Cd5k"Aq)* * *s   AAc                     t        j                         5  t        j                         5  t        j                  j                         } | D ]  }| |   t        j                  |<    	 d d d        t        j                         5  t        j                  t        j                         d d d        d d d        t        j                  t              5  t        d        d d d        t        j                  t              5  t        j                         5  dt        j                  d<   d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   BxY w# 1 sw Y   y xY w)NTzsvg.fonttype)r   'suppress_matplotlib_deprecation_warningr,   r3   r-   copydeepcopyrT   rU   rV   r	   )_copykeys     r0   test_Bug_2543rm      s&    
	5	5	7 (^^ 	/LL%%'E /$)#JS!/	/ ^^ 	(MM#,,'	(( 
z	" d	z	" 0^^ 	0+/CLL(	00 0	/ 	/	( 	(( ( 	0 	00 0sj   E<D7'E$E'EE=E3E'&E37E 	<EE	EEE$'E0	,E33E<facer`   rinherit)r`   zaxes.facecolorgedge)r`   axes.edgecolor)zsame facecolorzinherited facecolordifferent facecolorzsame edgecolorzinherited edgecolorrt   zcolor_type, param_dict, target)idsc                 \   |j                  d      |d|  d<   d|  d}t        j                  |      5  t        j                         \  }}|j                  t        d      d       |j                         } t        |j                  |             |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr`   zlegend.get_rb   test)label)
popr,   r3   pltsubplotsplotrangelegendgetattrlegendPatch)
color_type
param_dicttargetget_func_axlegs          r0   test_legend_colorsr      s     /9nnW.EJE*+j\'H	
	# >2
a'iik1ws13v===	> > >s   A$B""B+c                      dt         j                  d<   t         j                  j                  ddgddg      } | j	                         dk(  sJ y )Nro   zlines.markerfacecolorrP   ra   )r,   r-   r   Line2Dget_markerfacecolorlns    r0   test_mfc_rcparamsr      F    ,/CLL()			1a&1a&	)B!!#s***r/   c                      dt         j                  d<   t         j                  j                  ddgddg      } | j	                         dk(  sJ y )Nro   zlines.markeredgecolorrP   ra   )r,   r-   r   r   get_markeredgecolorr   s    r0   test_mec_rcparamsr      r   r/   c                      dt         j                  d<   t        j                         \  } }|j	                  d      }|j                         dk(  sJ y )Nro   zaxes.titlecolorTitle)r,   r-   r{   r|   	set_title	get_color)r   r   titles      r0   test_axes_titlecolor_rcparamsr      sC    &)CLL"#LLNEArLL!E??###r/   c                     t        |       dz  }|j                  dd       t        j                  dd      5  t	        j
                  |dd	      }d d d        j                  d
      dk(  sJ y # 1 sw Y    xY w)Nr    ztimezone: UTCr!   r"   zlocale.getpreferredencodingz	UTF-32-BE)return_valueTFtimezoneUTC)r   r2   r   patchr,   rc_params_from_fileget)r5   r6   r%   s      r0   test_Issue_1713r      ss    &\..F
o8	1	L :$$VT59:66*&&&: :s   A00A9c                  8    dD ]  } | t         j                  d<    y )N)
pngjpegtiffrawrgbappmsgibmppbmsvgzanimation.frame_formatr+   )fmts    r0   test_animation_frame_formatsr      s"    , 514-.5r/   c           !   #   
  K   t         g d dD        d dD        d dddg fD        d	t        d
g fdddgfddgfddgfddgfddgddgfdddgft        ddg      ddgft        j                  ddg      ddgff	t               t        fdt        ffd	t        t        d      d dddgddgdt        j                  d      fD        d dD        d	t        t        d      d dddgddgdt        j                  d      fD        d dD        d	t        dt        d d!      ft        d"d#d$g      t        d"d#d$g      fd%t        d d!      t        d&g d'      z   fd(t        d d!      t        d)g d*      z   fd+t        d d!      t        d"d#d$g      z  ft        d,d#d$g      t        d"d#d$g      ft        dd-g.      t        d&dd-g      ffd/t        fd0t        fd1t        fd2t        fd3t        fd4t        fd5t        fd6t        fd7t        fd8t        fd9t        fd:t        fd;t        fd<t        fd=t        ft        d>g d?      t        ft        d g d@      t        ffd	t        dAdBt        fdCt        fdDt        ffd	t        dEg dFfg dFg dFfdGdHgfg dIdJdKgft        j                  g dL      t        j                  g dM      gt        j                  g dLg dMg      ft        j                  g dLg dMg      t        j                  g dLg dMg      ffdNt        ffd	t        dOdPt        fdQt        fdRt        fdSt        fdTt        ffd	t        dUdVt        fdWt        ffd	t         dXdYdZd[g d*fg d*g d*ft        j"                  d\      t        j"                  d\      ffdt        ffd	t$        d]d^d_d`dag d*g d*ft'        d      t'        d dd       ft'        dddb      t'        dddb      ffd*t(        fg dct(        fg ddt(        fg det(        fdft(        fdgt(        fdht(        fdit(        fdjt(        fdkt(        fdlt(        fdmt(        fdnt(        fdot(        fdkt(        fdt(        ft+               t(        ffd	t,        dpdqdrdsdtdudvdwdxdydzd{d|d}d~dgdd~dgffg ddg dffdddgfdddgffdddgfdddgfffdt        fdt        fdj/                  d      t        fg d*t        fd~t        fdddgft        fd ddgft        fdg d*ft        fddgdft        ff	d	f}|D ]2  }|d   }| r|d   D ]  \  }}|||f  |d   D ]  \  }}|||f  4 y w)Nc              3   $   K   | ]  }|d f 
 yw)TNr.   .0r   s     r0   	<genexpr>z/generate_validator_testcases.<locals>.<genexpr>   s      FQ4y F   )tyyesontrue1rP   Tc              3   $   K   | ]  }|d f 
 yw)FNr.   r   s     r0   r   z/generate_validator_testcases.<locals>.<genexpr>   s      Ha5z Hr   )fnnoofffalse0r   Fc              3   ,   K   | ]  }|t         f  y wNrV   r   s     r0   r   z/generate_validator_testcases.<locals>.<genexpr>   s      6 j/ 6   aardvarkra   )	validatorsuccessfail za,babz
aardvark, zaardvark, ,)r   r   rP   )r   c              3   (   K   | ]
  }|d dgf  yw)rP   ra   Nr.   r   s     r0   r   z/generate_validator_testcases.<locals>.<genexpr>   s       : !Q[ :   z1, 2      ?      @)rP   ra   c              3   ,   K   | ]  }|t         f  y wr   r   r   s     r0   r   z/generate_validator_testcases.<locals>.<genexpr>   s       j/ r   )r   r   rP   rP   ra   rb   c              3   (   K   | ]
  }|d dgf  yw)r   r   Nr.   r   s     r0   r   z/generate_validator_testcases.<locals>.<genexpr>   s"      B #s_ Br   z1.5, 2.5)r   r   c              3   ,   K   | ]  }|t         f  y wr   r   r   s     r0   r   z/generate_validator_testcases.<locals>.<genexpr>   s      N j/ Nr   )r   r   r   r   Nzcycler("color", "rgb")r`   r_   	linestyle---zW(cycler("color", ["r", "g", "b"]) +
                          cycler("mew", [2, 3, 5]))markeredgewidth)ra   rb      zcycler(c='rgb', lw=[1, 2, 3])r   r   z5cycler('c', 'rgb') * cycler('linestyle', ['-', '--'])lsr   )mew   zcycler("bleh, [])zCycler("linewidth", [1, 2, 3])z1cycler('c', [j.__class__(j) for j in ['r', 'b']])z2cycler('c', [j. __class__(j) for j in ['r', 'b']])z2cycler('c', [j.	__class__(j) for j in ['r', 'b']])z2cycler('c', [j.__class__(j) for j in ['r', 'b']])z9cycler('c', [j.__class__(j).lower() for j in ['r', 'b']])z1 + 2zos.system("echo Gotcha")z	import osz9def badjuju(a): return a; badjuju(cycler("color", "rgb"))zcycler("waka", [1, 2, 3])zcycler(c=[1, 2, 3])zcycler(lw=['a', 'b', 'c'])waka)rP   rb   r   )C1ro   rq   ))--|r   )\oOr   )/+*/.xr   r   r   z--_   Xzr,g,b)ro   rq   r   zr, ,ro   )r   rq   bluerq   r   )rP   r   r   r   rP   r   fish)
Nonenoner   r   )AABBCCz#AABBCC)AABBCC00z	#AABBCC00)tab:bluer   )C12r   )z	(0, 1, 0))              ?r   )r   r   )z(0, 1, 0, 1))r   r   r   r   )r   rP   r   rP   r   ztab:verybluez(0, 1)z(0, 1, 0, 1, 0)z(0, 1, none)z(0, 1, "0.5")))	linecolorr   )markerfacecolorr   )mfcr   )markeredgecolorr   )mecr   linemarker)autor   )fdr   )10
   z1, 2, 3   )NNrP   rP   皙?r  )r  r  )r  r  rb   )rP   ra   333333?)r   ra   rb   )rP   ra   r   )r  皙?r  )r  ra   rb   )rP   r  r  )rP   r  )r  rP   abc)rP   r   )r  r   r   )r   r  )r   r   )solidr  )r   r   )dashedr  )-.r	  )dashdotr
  ):r  )dottedr  r   ) r  r   r   )DoTtEdr  )z1, 3)r   )rP   rb   gGz?i  r   g     |@)rP   ra   rb   r   )r   g       @g      @g      @s   dottedr  zutf-16r   r   r   )r	   r   iternparraysetrV   r   r   r   r   r   r   r   r
   r   r   aranger   slicerd   objectr   encode)validvalidation_testsvalidator_dictr   argr   
error_types          r0   generate_validator_testcasesr     s    #I FDF IHFHI6&2r46	 *"Xc3Z( :,/"ZL1#j\2Cj3*- 3*-C:&c
3hhSz*S#J7	 5*%j/	 );:%SzAq6%rxx'79:		 )1=B)C:Sz)288J+?ABNLN		 &.We,.[3+6[3+687gu-/;<> 6We,vk9/MMOMgu-kC;78: TC;/[3+68!Q(.A792 j/&
33 GGHLNJ'-z:
+N /
;(*5/<&),j9'#34jA355	l %5*%j/
#%	 )/%7se_'#v7xx	*BHHY,?@XXy)457hh	956XXy)457 :& 	 %
 ":.Z($j1!:."J/		& 3 :&Z(
	 )%!++iimRYYr]3 z* 
	 )!%-+AhdAt 45Aq!neAq!n5 i(	*	*	*"I.	* ),Y'Y'I&Y'y)Y'y))$	"8Y'!	: *!3!#7!#9!5z%'7)*SkAe}#56"Q(<$=>1a&kA1v;/Aq6lR!QL1 z*j)??8,j9j)$!Q=*-1a&>:.y>:.FA;
+		qQf + 1";/	-i8 -Vf,,- $2&#9 1Zj0011s   UU	zvalidator, arg, targetTc                      | |      }t        |t        j                        r!t        j                  j	                  ||       y t        |t
              s||k(  sJ y t        |      t        |      k(  sJ y r   )
isinstancer  ndarraytestingassert_equalr   rG   )r   r  r   ress       r0   test_validator_validr#    s]     C.C&"**%


V,'f}} CyDL(((r/   zvalidator, arg, exception_typeFc                 h    t        j                  |      5   | |       d d d        y # 1 sw Y   y xY wr   )rT   rU   )r   r  exception_types      r0   test_validator_invalidr&    s,     
~	& #  s   	(1zweight, parsed_weight)boldr'  BOLD)d   r)  )100r)  r)  )g4@   z20.6c                     |t         u r.t        j                  t               5  t        |        d d d        y t        |       |k(  sJ y # 1 sw Y   y xY wr   )rV   rT   rU   r   )weightparsed_weights     r0   test_validate_fontweightr/    sO     
"]]:& 	('	( 	( #6*m;;;	( 	(   AAzstretch, parsed_stretch)expandedr1  EXPANDEDc                     |t         u r.t        j                  t               5  t        |        d d d        y t        |       |k(  sJ y # 1 sw Y   y xY wr   )rV   rT   rU   r   )stretchparsed_stretchs     r0   test_validate_fontstretchr6    sO     #]]:& 	* )	* 	* $G,>>>	* 	*r0  c                      t         j                  D  cg c]	  } d| v s|  }} |D ]%  } t        t         j                  |    t              r%J  y c c} w )Nkeymap)r,   r-   r  rG   )kkey_lists     r0   test_keymapsr;    sK    <<9a8q=9H9 1#,,q/40001 :s
   	AAc                      t         j                  d   dk7  sJ t        j                         5  dt         j                  d<   d d d        t         j                  d   dk(  sJ y # 1 sw Y   "xY w)Nbackendzmodule://aardvark)r,   r-   r3   r.   r/   r0   test_no_backend_reset_rccontextr>    s_    <<	"&9999		 6"5Y6<<	"&99996 6s   A""A+c                  v   t        j                  ddi      5  t         j                  d   du sJ t        j                  t
              5  t        j                  ddd      5  	 d d d        d d d        t         j                  d   du sJ 	 d d d        y # 1 sw Y   2xY w# 1 sw Y   6xY w# 1 sw Y   y xY w)Nr   Fr$   T)r   z	test.blah)r,   r3   r-   rT   rU   KeyErrorr.   r/   r0   test_rcparams_reset_after_failrA    s     
M51	2 4||M*e333]]8$ 	4d#KL 	 ||M*e3334 4 	 	4 4s;   1B/
B#$B&B#.B/B B##B,	(B//B8linuxz
Linux only)reasonc                 (   i t         j                  dddt        |       d}t        j                  t
        j                        5  t        j                  t        j                  ddg|dt
        j                         d d d        y # 1 sw Y   y xY w)Nr   )DISPLAYWAYLAND_DISPLAY
MPLBACKENDMPLCONFIGDIR-cz^import matplotlib;matplotlib.use('tkagg');import matplotlib.pyplot;matplotlib.pyplot.plot(42);T)envcheckstderr)osenvironrD   rT   rU   
subprocessCalledProcessErrorrunsys
executableDEVNULL)r5   rJ  s     r0   test_backend_fallback_headlessrU    s~    :RZZ :RS[:C 
z44	5 <^^T+ 4
(:(:	<< < <s   9BBheadlessc                    t        j                  d       i t        j                  dt	        |       d}t        j                  t        j                  ddg|d      }|j                         j                         dk7  sJ y )	Ntkinterr   )rG  rH  rI  zimport matplotlib as mpl; sentinel = mpl.rcsetup._auto_backend_sentinel; assert mpl.RcParams({'backend': sentinel})['backend'] == sentinel; assert mpl.rcParams._get('backend') == sentinel; import matplotlib.pyplot; print(matplotlib.get_backend())T)rJ  r   agg)rT   importorskiprM  rN  rD   rO  check_outputrR  rS  striplower)r5   rJ  r=  s      r0   test_backend_fallback_headfulr^    st     	"
GRZZ
Gr3v;
GC%%	
+	, d	G ==?  "e+++r/   c                 :   | j                  t        j                  dddd d f       t        j                  t        j
                        5  t        j                  d   t        j                  d   dz  k(  sJ 	 d d d        t        j                  t        j
                        5  dt        j                  d<   d d d        t        j                  d   dk(  sJ | j                  t        j                  dd	       t        j                  t        j
                        5  t        j                  d   t        j                  d
   k(  sJ 	 d d d        t        j                  t        j
                        5  dt        j                  d<   d d d        t        j                  d
   dk7  sJ | j                  t        j                  dd       t        j                  t        j
                        5  t        j                  d   J 	 d d d        | j                  t        j                  dd       t        j                  t        j
                        5  dt        j                  d<   d d d        t        j                  d   dk(  sJ d t        j                  d<   t        j                  j                  t        j                  j                                y # 1 sw Y   YxY w# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   xY w# 1 sw Y   xY w)Nzpatch.linewidth0.0zaxes.linewidthc                     d| z  S Nra   r.   )olds    r0   <lambda>z"test_deprecation.<locals>.<lambda>3  s
    a#g r/   c                     | dz  S rb  r.   )news    r0   rd  z"test_deprecation.<locals>.<lambda>3  s
    37 r/   ra   rP   zpatch.edgecolor)r`  rs   rs   z#abcdzpatch.force_edgecolor)r`  Nzsvg.hashsalt)r`  foobar)setitemr,   _deprecated_maprT   rW   MatplotlibDeprecationWarningr-   _deprecated_ignore_map_deprecated_remain_as_nonerY   ri   )monkeypatchs    r0   test_deprecationrn  0  s   .	 "57JKM 
c66	7 2||-.||,-12 	2 22 
c66	7 ,*+&',<<()Q...""$5!# 
c66	7 .||-.||,-. 	. .. 
c66	7 2*1&'2<<()W444""$; 
c66	7 =||34<<<= && 
c66	7 0'/^$0<<'8333#'CLL LL))+,?2 2, ,. .2 2= =0 0sH   -K$K*K*2K7*LLKK'*K47LLLvalue)bestrP   r   g?ffffff?grr  z	(0.9, .7)c                 *    | t         j                  d<   y )N
legend.locr+   )ro  s    r0   test_rcparams_legend_locrv  Y  s     "'CLLr/   )rp  rP   rq  rs  c                     | j                  d      }|j                  d|        t        j                  |      5  t        j                  d   |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nmatplotlibrczlegend.loc: r&   ru  )joinwriter,   r3   r-   )r5   ro  rc_paths      r0   "test_rcparams_legend_loc_from_filer|  h  s]     kk.)GMML()	g	& 3||L)U2223 3 3s   AA()Jri   rM  pathlibr   rO  rR  unittestr   r   r   rT   
matplotlibr,   r   r   matplotlib.pyplotpyplotr{   matplotlib.colorscolorsmcolorsnumpyr  rc   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   rJ   r[   r]   rf   rm   to_rgbalegend_color_testslegend_color_test_idsmarkparametrizer   r   r   r   r   r   r  r#  r&  rV   r  r/  r6  r;  r>  rA  skipifplatformrU  display_is_validr^  rn  rv  r|  r.   r/   r0   <module>r     su    	   
  !   .  #     $#1L:B7*0* gs^_W__S12yC8W__Ssc2OGOOC4HIgs^_W__S12yC8W__Ssc2OGOOC4HI	   9;M2  4>4>++$'5[1| 15d;=)=) 95e<>>
 0ZRXXc]C Z	UJ3 << 2RXXc]C Z	UJ5 ??1:	4 CLLG+LA< B< LLGH$F$5$F$F$H H  ,,$#-R  # ''  # 33r/   