
    G8c|\                     0   d dl Z d dlZd dlmZ d dl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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.d/e;fd'd( ejx                  d)      d)fd*d+e;fd)ge;fg      d0        Z>d1 Z?d2 Z@d3 ZAej`                  j                  ej                  d4k7  d56      d7        ZDej`                  j                  ej                  d4k(  xr  ej                          d86      d9        ZFd: ZGd; ZHy)<    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     @/usr/lib/python3/dist-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   rcpathr0   s        r/   test_rcparamsr6   #   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      r/   test_RcParams_classrI   I   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)      @*   rL   rM      validatematch)r+   r@   pytestraises
ValueErrorwarnsUserWarningupdate)r%   bad_dicts     r/   test_rcparams_updaterZ   j   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)NrP   rQ   rK   rN   )rS   rT   rU   rV   rW   r+   r@   r-   r.   r/   test_rcparams_initr\   s   sX    	z	" 7	k	47&567 7 7 7 7 7s"   A+AA+A(	$A++A4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+   r2   r,   copydeepcopyrS   rT   rU   r	   )_copykeys     r/   test_Bug_2543rc   y   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<facecolorrinherit)re   zaxes.facecolorgedge)re   axes.edgecolor)zsame facecolorzinherited facecolordifferent facecolorzsame edgecolorzinherited edgecolorrk   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)Nre   zlegend.get_   test)label)
popr+   r2   pltsubplotsplotrangelegendgetattrlegendPatch)
color_type
param_dicttargetget_func_axlegs          r/   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 )Nrf   zlines.markerfacecolorrO      )r+   r,   r   Line2Dget_markerfacecolorlns    r/   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 )Nrf   zlines.markeredgecolorrO   r   )r+   r,   r   r   get_markeredgecolorr   s    r/   test_mec_rcparamsr      r   r.   c                      dt         j                  d<   t        j                         \  } }|j	                  d      }|j                         dk(  sJ y )Nrf   zaxes.titlecolorTitle)r+   r,   rs   rt   	set_title	get_color)r~   r   titles      r/   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   r1   r   patchr+   rc_params_from_fileget)r4   r5   r%   s      r/   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    r/   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dt        j                  ft        j                  ddg      t        j                  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	t0        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dj3                  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     r/   	<genexpr>z/generate_validator_testcases.<locals>.<genexpr>   s      FQ4y F   )tyyesontrue1rO   Tc              3   $   K   | ]  }|d f 
 yw)FNr-   r   s     r/   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rU   r   s     r/   r   z/generate_validator_testcases.<locals>.<genexpr>   s      6 j/ 6   aardvarkr   )	validatorsuccessfail za,babz
aardvark, zaardvark, ,)r   r   rO   )rO   r   )r   c              3   (   K   | ]
  }|d dgf  yw)rO   r   Nr-   r   s     r/   r   z/generate_validator_testcases.<locals>.<genexpr>   s       : !Q[ :   z1, 2      ?      @c              3   ,   K   | ]  }|t         f  y wr   r   r   s     r/   r   z/generate_validator_testcases.<locals>.<genexpr>   s       j/ r   )r   r   rO   rO   r   ro   c              3   (   K   | ]
  }|d dgf  yw)r   r   Nr-   r   s     r/   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     r/   r   z/generate_validator_testcases.<locals>.<genexpr>   s      N j/ Nr   )r   r   r   r   Nzcycler("color", "rgb")re   rgb	linestyle---zW(cycler("color", ["r", "g", "b"]) +
                          cycler("mew", [2, 3, 5]))markeredgewidth)r   ro      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)rO   ro   r   )C1rf   rh   ))--|r   )\oOr   )/+*/.xr   r   r   z--_   Xzr,g,b)rf   rh   r   zr, ,rf   )r   rh   bluerh   r   )rO   r   r   r   rO   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   rO   r   rO   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rO   rO   皙?r   )r   r   )r   r   ro   )rO   r   333333?)r   r   ro   )rO   r   r   )r   皙?r   )r   r   ro   )rO   r   r   )rO   r   )r   rO   abc)rO   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   )rO   ro   gGz?i  r   g     |@)rO   r   ro   r   )r   g       @g      @g      @s   dottedr  zutf-16r   r   r   )r	   r   iternparraysetrU   r   MatplotlibDeprecationWarningr   r   r   r   r   r   r   r
   r   r   aranger   slice	TypeErrorobjectr   encode)validvalidation_testsvalidator_dictr   argr|   
error_types          r/   generate_validator_testcasesr     s1    #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/4<<=88QF#T%F%FG	" );:%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;
+		uSj + 1";/	-i8 -Vf,,- $2&#9 1Zj0011s   U>V 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   rF   )r   r  r|   ress       r/   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   )rS   rT   )r   r  exception_types      r/   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   )rU   rS   rT   r   )weightparsed_weights     r/   test_validate_fontweightr+    sO     
"]]:& 	('	( 	( #6*m;;;	( 	(   AAzstretch, parsed_stretch)expandedr-  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   )rU   rS   rT   r   )stretchparsed_stretchs     r/   test_validate_fontstretchr2    sO     #]]:& 	* )	* 	* $G,>>>	* 	*r,  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  rF   )kkey_lists     r/   test_keymapsr7    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,   r2   r-   r.   r/   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+   r2   r,   rS   rT   KeyErrorr-   r.   r/   test_rcparams_reset_after_failr=    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environrC   rS   rT   
subprocessCalledProcessErrorrunsys
executableDEVNULL)r4   rF  s     r/   test_backend_fallback_headlessrQ    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   )rC  rD  rE  a  import matplotlib as mpl; sentinel = mpl.rcsetup._auto_backend_sentinel; assert mpl.RcParams({'backend': sentinel})['backend'] == sentinel; assert dict.__getitem__(mpl.rcParams, 'backend') == sentinel; import matplotlib.pyplot; print(matplotlib.get_backend())T)rF  universal_newlinesagg)rS   importorskiprI  rJ  rC   rK  check_outputrN  rO  striplower)r4   rF  r9  s      r/   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 Nr   r-   )olds    r/   <lambda>z"test_deprecation.<locals>.<lambda>/  s
    a#g r.   c                     | dz  S r_  r-   )news    r/   ra  z"test_deprecation.<locals>.<lambda>/  s
    37 r.   r   rO   zpatch.edgecolor)r]  rj   rj   z#abcdzpatch.force_edgecolor)r]  Nzsvg.hashsalt)r]  foobar)setitemr+   _deprecated_maprS   rV   r   r  r,   _deprecated_ignore_map_deprecated_remain_as_nonerX   r_   )monkeypatchs    r/   test_deprecationrj  ,  s   .	 "57JKM 
d77	8 2||-.||,-12 	2 22 
d77	8 ,*+&',<<()Q...""$5!# 
d77	8 .||-.||,-. 	. .. 
d77	8 2*1&'2<<()W444""$; 
d77	8 =||34<<<= && 
d77	8 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c                      d} |  d}t        j                  t        t        j                  |            5  t        j                  d| i       d d d        y # 1 sw Y   y xY w)N)g?gffffff?z% is not a valid value for legend.loc;rQ   z
legend.loc)rS   rT   rU   reescaper+   r@   )value	match_strs     r/   test_rcparams_legend_locrp  U  sQ    E'>?I	z9)=	> ,lE*+, , ,s   AA )Ir_   rI  pathlibr   rl  rK  rN  unittestr   r   r   rS   
matplotlibr+   r   r   matplotlib.pyplotpyplotrs   matplotlib.colorscolorsmcolorsnumpyr
  matplotlib.rcsetupr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r6   rI   rZ   r\   rc   to_rgbalegend_color_testslegend_color_test_idsmarkparametrizer   r   r   r   r   r   r  r  r"  rU   r  r+  r2  r7  r:  r=  skipifplatformrQ  display_is_validr[  rj  rp  r-   r.   r/   <module>r     s$    	  	  
  !   .  #     $#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,r.   