o
    i_                     @   s  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d Z'd	d
 Z(dd Z)dd Z*dd Z+dd Z,dddie-dfdddde-dfdddde-dfdddie-dfdddde-dfdddde-dfgZ.g dZ/e
j0j1de.e/ddd Z2d d! Z3d"d# Z4d$d% Z5d&d' Z6d(d) Z7d*d+ Z8e
j01d,e8d-d.d/ Z9e
j01d0e8d1d2d3 Z:e
j01d4d5d6e;fd7d8e<d9d9fd:d;e;fd9ge;fgd<d= Z=e
j01d>d?d@e;fd7d8e<d9d9fd:d;e;fd9ge;fgdAdB Z>dCdD Z?dEdF Z@dGdH ZAe
j0jBejCdIkdJdKdLdM ZDe
j0jBejCdIkoceE  dNdKdOdP ZFdQdR ZGe
j01dSg dTdUdV ZHe
j01dSg dWdXdY ZIdS )Z    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                 C   s  t jddd t jddd t jd }t jd }t| d	 }|jd
dd t jd| id t jd | ks9J W d    n1 sCw   Y  t jd |ksQJ t j|d t jd dksaJ W d    n1 skw   Y  t jd |ksyJ t j|ddid t jd dksJ W d    n1 sw   Y  t jd |ksJ t ddidd }|  |  t | t jd dksJ d S )NtextF)usetexlines   )	linewidthtext.usetexlines.linewidthtest_rcparams.rczlines.linewidth: 33utf-8encodingrcfname!   ,   )r%   r#   c                   S   s   t jd dks	J d S )Nr   r'   mplrcParams r+   r+   m/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/matplotlib/tests/test_rcparams.pyfunc<   s   ztest_rcparams.<locals>.func)r)   r#   r*   r   
write_text
rc_contextZrc_file)tmpdirr   r   rcpathr-   r+   r+   r,   test_rcparams"   s0   



r2   c                  C   s~   t g ddddd} d }|t| ksJ d }|t| ks$J dd	gt| d
ks1J dgt| dks=J d S )N)zApple ChanceryZTextilezZapf ChanceryZ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: normalr5   r7   zi[vz]r6   family)r)   RcParamslstripreprstrsortedZfind_alllist)r#   Zexpected_reprZexpected_strr+   r+   r,   test_RcParams_classH   s   
	r?   c               	   C   s   t ddi} ddi}tt- tjtdd | | W d    n1 s(w   Y  W d    d S W d    d S 1 s@w   Y  d S )Nfigure.figsize)      @*   rA   rB      validatematch)r)   r9   pytestraises
ValueErrorwarnsUserWarningupdate)r#   Zbad_dictr+   r+   r,   test_rcparams_updatei   s   PrN   c                	   C   s|   t t/ t jtdd tddi W d    n1 sw   Y  W d    d S W d    d S 1 s7w   Y  d S )NrE   rF   r@   rC   )rH   rI   rJ   rK   rL   r)   r9   r+   r+   r+   r,   test_rcparams_initr   s
   PrO   c                  C   sV   ddl m}  tjtdd | | tdddd W d    d S 1 s$w   Y  d S )	Nr   )r   z3 were givenrF   rgb)color      )matplotlib.rcsetupr   rH   rI   	TypeErrorr>   )Zcclr+   r+   r,   test_nargs_cyclerx   s   "rV   c               	   C   sJ  t  G t  tj } | D ]	}| | tj|< qW d    n1 s%w   Y  t  ttj W d    n1 s?w   Y  W d    n1 sNw   Y  tt	 t
d  W d    n1 sgw   Y  tt	* t  dtjd< W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )NTzsvg.fonttype)r   Z'suppress_matplotlib_deprecation_warningr)   r/   r*   copydeepcopyrH   rI   rJ   r   )Z_copykeyr+   r+   r,   test_Bug_2543   s,   





"rZ   ZfacerQ   rinherit)rQ   zaxes.facecolorgedge)rQ   axes.edgecolor)zsame facecolorzinherited facecolordifferent facecolorzsame edgecolorzinherited edgecolorr`   zcolor_type, param_dict, target)Zidsc                 C   s   | d|d|  d< d|  d}t|' t \}}|jtddd | }t|j	| |ks5J W d    d S 1 s@w   Y  d S )NrQ   zlegend.get_rS   test)label)
popr)   r/   pltsubplotsZplotrangeZlegendgetattrZlegendPatch)
color_typeZ
param_dicttargetZget_func_axlegr+   r+   r,   test_legend_colors   s   "rn   c                  C   4   dt jd< t jddgddg} |  dksJ d S )Nr[   zlines.markerfacecolorrD   rR   )r)   r*   r   Line2DZget_markerfacecolorlnr+   r+   r,   test_mfc_rcparams      
rs   c                  C   ro   )Nr[   zlines.markeredgecolorrD   rR   )r)   r*   r   rp   Zget_markeredgecolorrq   r+   r+   r,   test_mec_rcparams   rt   ru   c                  C   s4   dt jd< t \} }|d}| dksJ d S )Nr[   zaxes.titlecolorZTitle)r)   r*   re   rf   	set_title	get_color)rk   rl   titler+   r+   r,   test_axes_titlecolor_rcparams   s   

ry   c                 C   sl   t | d }|jddd tjddd t|dd	}W d    n1 s&w   Y  |d
dks4J d S )Nr   ztimezone: UTCr   r    zlocale.getpreferredencodingz	UTF-32-BE)return_valueTFtimezoneUTC)r   r.   r   patchr)   Zrc_params_from_fileget)r0   r1   r#   r+   r+   r,   test_Issue_1713   s   r   c                  C   s   dD ]} | t jd< qd S )N)
ZpngZjpegZtiffrawZrgbappmZsgiZbmpZpbmsvgzanimation.frame_formatr(   )fmtr+   r+   r,   test_animation_frame_formats   s   r   c              !   c   s   t g dd dD dd dD R 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ddgddgff	t tfdtffd
ttdddd dddgddgdtdfD dd dD d
tt	dddd dddgddgdtdfD 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( fd)td!d"td*g d+ fd,td!d"td#d$d%g ftd-d$d%gtd#d$d%gftdd.gd/td'dd.gf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d>tftd?g d@tftd!g dAtffd
tdBdCtfdDtfdEtffd
tdFg dGfg dGg dGfdHdIgfg dJdKdLgftg dMtg dNgtg dMg dNgftg dMg dNgtg dMg dNgffdOtffd
tdPdQtfdRtfdStfdTtfdUtffd
tdVdWtfdXtffd
tdYdZd[d\g d+fg d+g d+ftd]td]ffdtffd
td^d_d`dadbg d+g d+ftdtd dd ftdddctdddcffd+tfg ddtfg detfg dftfdgtfdhtfditfdjtfdktfdltfdmtfdntfdotfdptfdltfdtft tffd
tdqdrdsdtdudvdwdxdydzd{d|d}d~ddg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d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 ],}|d }| r|d D ]\}}|||fV  qq|d D ]\}}|||fV  qqd S )Nc                 s       | ]}|d fV  qdS )TNr+   .0rk   r+   r+   r,   	<genexpr>       z/generate_validator_testcases.<locals>.<genexpr>)tyyesontrue1rD   Tc                 s   r   )FNr+   r   r+   r+   r,   r      r   )fnnoofffalse0r   Fc                 s       | ]}|t fV  qd S NrJ   r   r+   r+   r,   r          aardvarkrR   )	validatorsuccessfail za,babz
aardvark, zaardvark, ,)r   r   rD   )r   c                 s       | ]	}|d dgfV  qdS )rD   rR   Nr+   r   r+   r+   r,   r          z1, 2      ?      @)rD   rR   c                 s   r   r   r   r   r+   r+   r,   r      r   )r   r   rD   rD   rR   rS   c                 s   r   )r   r   Nr+   r   r+   r+   r,   r      r   z1.5, 2.5)r   r   c                 s   r   r   r   r   r+   r+   r,   r      r   )r   r   r   r   Nzcycler("color", "rgb")rQ   rP   Z	linestyle---zW(cycler("color", ["r", "g", "b"]) +
                          cycler("mew", [2, 3, 5]))Zmarkeredgewidth)rR   rS      zcycler(c='rgb', lw=[1, 2, 3])r   r   z5cycler('c', 'rgb') * cycler('linestyle', ['-', '--'])Zlsr   )Z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'])Zwaka)rD   rS   r   )ZC1r[   r]   ))--|r   )\oOr   )/+*/.xr   r   r   z--_   Xzr,g,b)r[   r]   r   zr, ,r[   )r   r]   bluer]   r   )rD   r   r   r   rD   r   fish)
Nonenoner   r   )ZAABBCCz#AABBCC)ZAABBCC00z	#AABBCC00)tab:bluer   )C12r   )z	(0, 1, 0))              ?r   )r   r   )z(0, 1, 0, 1))r   r   r   r   )r   rD   r   rD   r   ztab:verybluez(0, 1)z(0, 1, 0, 1, 0)z(0, 1, none)z(0, 1, "0.5")))	linecolorr   )markerfacecolorr   )Zmfcr   )markeredgecolorr   )Zmecr   linemarker)autor   )fdr   )10
   z1, 2, 3   )NNrD   rD   皙?r   )r   r   )r   r   rS   )rD   rR   333333?)r   rR   rS   )rD   rR   r   )r   皙?r   )r   rR   rS   )rD   r   r   )rD   r   )r   rD   abc)rD   r   )r   r   r   )r   r   )r   r   )solidr   )r   r   )dashedr   )-.r   )dashdotr   ):r   )dottedr   r   ) r   r   r   )ZDoTtEdr   )z1, 3)r   )rD   rS   gGz?i  r   g     |@)rD   rR   rS   r   )r   g       @g      @g      @s   dottedr   zutf-16r   r   r   )r   r   iternparraysetrJ   r   r   r   r   r   r   r
   r	   r   r   Zaranger   slicerU   objectr   encode)ZvalidZvalidation_testsZvalidator_dictr   argrj   Z
error_typer+   r+   r,   generate_validator_testcases   s  






	
6
	
	



  Tr   zvalidator, arg, targetTc                 C   sX   | |}t |tjrtj|| d S t |ts ||ksJ d S t|t|ks*J d S r   )
isinstancer   ZndarraytestingZassert_equalr   r>   )r   r   rj   resr+   r+   r,   test_validator_valid  s   
r   zvalidator, arg, exception_typeFc                 C   s8   t | | | W d    d S 1 sw   Y  d S r   )rH   rI   )r   r   Zexception_typer+   r+   r,   test_validator_invalid  s   
"r   zweight, parsed_weight)boldr   ZBOLD)d   r   )100r   r   )g4@   z20.6c                 C   T   |t u r tt  t|  W d    d S 1 sw   Y  d S t| |ks(J d S r   )rJ   rH   rI   r   )weightZparsed_weightr+   r+   r,   test_validate_fontweight  
   
"r   zstretch, parsed_stretch)expandedr   ZEXPANDEDc                 C   r   r   )rJ   rH   rI   r   )ZstretchZparsed_stretchr+   r+   r,   test_validate_fontstretch  r   r   c                  C   s2   dd t jD } | D ]}tt j| tsJ q
d S )Nc                 S   s   g | ]}d |v r|qS )Zkeymapr+   )r   kr+   r+   r,   
<listcomp>  s    z test_keymaps.<locals>.<listcomp>)r)   r*   r   r>   )Zkey_listr   r+   r+   r,   test_keymaps  s   r   c                   C   sZ   t jd dks	J t   dt jd< W d    n1 sw   Y  t jd dks+J d S )Nbackendzmodule://aardvark)r)   r*   r/   r+   r+   r+   r,   test_no_backend_reset_rccontext  s
   
r   c                
   C   s   t jddidI t jd du sJ tt! t jdddd W d    n1 s,w   Y  W d    n1 s;w   Y  t jd du sIJ W d    d S 1 sTw   Y  d S )Nr   Fr"   T)r   z	test.blah)r)   r/   r*   rH   rI   KeyErrorr+   r+   r+   r,   test_rcparams_reset_after_fail  s   "r   linuxz
Linux only)reasonc                 C   sj   i t jdddt| d}ttj tjtj	ddg|dtj
d W d    d S 1 s.w   Y  d S )Nr   )ZDISPLAYZWAYLAND_DISPLAY
MPLBACKENDMPLCONFIGDIR-cz^import matplotlib;matplotlib.use('tkagg');import matplotlib.pyplot;matplotlib.pyplot.plot(42);T)envcheckstderr)osenvironr<   rH   rI   
subprocessCalledProcessErrorrunsys
executableDEVNULL)r0   r   r+   r+   r,   test_backend_fallback_headless  s   "r  Zheadlessc                 C   sR   t d i tjdt| d}tjtjddg|dd}|	 
 dks'J d S )	Ntkinterr   )r   r   r   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)r   r   Zagg)rH   Zimportorskipr   r   r<   r   check_outputr  r  striplower)r0   r   r   r+   r+   r,   test_backend_fallback_headful  s   
r	  c              	   C   s  |  tjddddd dd f ttj tjd tjd d ks%J W d    n1 s/w   Y  ttj dtjd< W d    n1 sJw   Y  tjd dksXJ |  tjd	d
 ttj tjd	 tjd kssJ W d    n1 s}w   Y  ttj dtjd	< W d    n1 sw   Y  tjd dksJ |  tjdd ttj tjd d u sJ W d    n1 sw   Y  |  tjdd ttj dtjd< W d    n1 sw   Y  tjd dksJ d tjd< tj	tj
  d S )Nzpatch.linewidth0.0zaxes.linewidthc                 S   s   d|  S NrR   r+   )oldr+   r+   r,   <lambda>3      z"test_deprecation.<locals>.<lambda>c                 S   s   | d S r  r+   )newr+   r+   r,   r  3  r  rR   rD   zpatch.edgecolor)r
  r_   r_   z#abcdzpatch.force_edgecolor)r
  Nzsvg.hashsalt)r
  Zfoobar)setitemr)   Z_deprecated_maprH   rK   ZMatplotlibDeprecationWarningr*   Z_deprecated_ignore_mapZ_deprecated_remain_as_nonerM   rW   )Zmonkeypatchr+   r+   r,   test_deprecation0  sV   


r  value)bestrD   r   g?ffffff?gr  z	(0.9, .7)c                 C   s   | t jd< d S )N
legend.locr(   )r  r+   r+   r,   test_rcparams_legend_locY  s   r  )r  rD   r  r  c                 C   s^   |  d}|d|  tj|d tjd |ksJ W d    d S 1 s(w   Y  d S )NZmatplotlibrczlegend.loc: r$   r  )joinwriter)   r/   r*   )r0   r  Zrc_pathr+   r+   r,   "test_rcparams_legend_loc_from_fileh  s
   

"r  )JrW   r   pathlibr   r   r  Zunittestr   r   r   rH   Z
matplotlibr)   r   r   Zmatplotlib.pyplotZpyplotre   Zmatplotlib.colorscolorsZmcolorsnumpyr   rT   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r2   r?   rN   rO   rV   rZ   Zto_rgbaZlegend_color_testsZlegend_color_test_idsmarkZparametrizern   rs   ru   ry   r   r   r   r   r   rJ   r   r   r   r   r   r   Zskipifplatformr  Zdisplay_is_validr	  r  r  r  r+   r+   r+   r,   <module>   s    D&!	





	 _





)
