a
    s=ic[                     @   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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
j/j0de-e.ddd Z1dd Z2d d! Z3d"d# Z4d$d% Z5d&d' Z6d(d) Z7e
j/0d*e7d+d,d- Z8e
j/0d.e7d/d0d1 Z9e
j/0d2d3d4e:fd5d6e;d7d7fd8d9e:fd7ge:fgd:d; Z<e
j/0d<d=d>e:fd5d6e;d7d7fd8d9e:fd7ge:fgd?d@ Z=dAdB Z>dCdD Z?dEdF Z@e
j/jAejBdGkdHdIdJdK ZCe
j/jAejBdGkoeD  dLdIdMdN ZEdOdP ZFdS )Q    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srJ W d    n1 s0    Y  t jd |ksJ t j|d" t jd dksJ W d    n1 s0    Y  t jd |ksJ t j|ddid$ t jd dksJ W d    n1 s00    Y  t jd |ksNJ 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*   o/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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"   s*    

204

r1   c                  C   s~   t g ddddd} d }|t| ks0J d }|t| ksHJ dd	gt| d
ksbJ dgt| dkszJ 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: normalr4   r6   zi[vz]r5   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H tjtdd | | W d    n1 sP0    Y  W d    n1 sn0    Y  d S )Nfigure.figsize)      @*   r@   rA      validatematch)r(   r8   pytestraises
ValueErrorwarnsUserWarningupdate)r#   Zbad_dictr*   r*   r+   test_rcparams_updatei   s    rM   c                	   C   sj   t tL t jtdd tddi W d    n1 s>0    Y  W d    n1 s\0    Y  d S )NrD   rE   r?   rB   )rG   rH   rI   rJ   rK   r(   r8   r*   r*   r*   r+   test_rcparams_initr   s    rN   c               	   C   s<  t   t 2 tj } | D ]}| | tj|< q"W d    n1 sJ0    Y  t  ttj W d    n1 s~0    Y  W d    n1 s0    Y  tt	 t
d  W d    n1 s0    Y  tt	D t  dtjd< W d    n1 s0    Y  W d    n1 s.0    Y  d S )NTzsvg.fonttype)r   Z'suppress_matplotlib_deprecation_warningr(   r.   r)   copydeepcopyrG   rH   rI   r   )Z_copykeyr*   r*   r+   test_Bug_2543x   s    


.
H&
rR   Zfacecolorrinherit)rS   zaxes.facecolorgedge)rS   axes.edgecolor)zsame facecolorzinherited facecolordifferent facecolorzsame edgecolorzinherited edgecolorrY   zcolor_type, param_dict, target)Zidsc                 C   s   | d|d|  d< d|  d}t|L t \}}|jtddd | }t|j	| |ksjJ W d    n1 s~0    Y  d S )NrS   zlegend.get_   test)label)
popr(   r.   pltsubplotsZplotrangelegendgetattrZlegendPatch)
color_typeZ
param_dicttargetZget_func_axlegr*   r*   r+   test_legend_colors   s    ri   c                  C   s4   dt jd< t jddgddg} |  dks0J d S )NrT   zlines.markerfacecolorrC      )r(   r)   r   Line2DZget_markerfacecolorlnr*   r*   r+   test_mfc_rcparams   s    
rn   c                  C   s4   dt jd< t jddgddg} |  dks0J d S )NrT   zlines.markeredgecolorrC   rj   )r(   r)   r   rk   Zget_markeredgecolorrl   r*   r*   r+   test_mec_rcparams   s    
ro   c                  C   s4   dt jd< t \} }|d}| dks0J d S )NrT   zaxes.titlecolorZTitle)r(   r)   r_   r`   	set_title	get_color)rf   rg   titler*   r*   r+   test_axes_titlecolor_rcparams   s    

rs   c                 C   sl   t | d }|jddd tjddd t|dd	}W d    n1 sL0    Y  |d
dkshJ d S )Nr   ztimezone: UTCr   r    zlocale.getpreferredencodingz	UTF-32-BE)Zreturn_valueTFtimezoneUTC)r   r-   r   patchr(   Zrc_params_from_fileget)r/   r0   r#   r*   r*   r+   test_Issue_1713   s
    ,rx   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dtjftddgtj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 ]V}|d }| r||d D ]\}}|||fV  qbn |d D ]\}}|||fV  qqHd S )Nc                 s   s   | ]}|d fV  qdS )TNr*   .0rf   r*   r*   r+   	<genexpr>       z/generate_validator_testcases.<locals>.<genexpr>)tyyesontrue1rC   Tc                 s   s   | ]}|d fV  qdS )FNr*   r~   r*   r*   r+   r      r   )fnnoofffalse0r   Fc                 s   s   | ]}|t fV  qd S NrI   r~   r*   r*   r+   r      s   aardvarkrj   )	validatorsuccessfail za,babz
aardvark, zaardvark, ,)r   r   rC   )rC   rj   )r   c                 s   s   | ]}|d dgfV  qdS )rC   rj   Nr*   r~   r*   r*   r+   r      s   z1, 2      ?      @c                 s   s   | ]}|t fV  qd S r   r   r~   r*   r*   r+   r      s   )r   r   rC   rC   rj   r[   c                 s   s   | ]}|d dgfV  qdS )r   r   Nr*   r~   r*   r*   r+   r      s   z1.5, 2.5)r   r   c                 s   s   | ]}|t fV  qd S r   r   r~   r*   r*   r+   r      s   )r   r   r   r   Nzcycler("color", "rgb")rS   rgbZ	linestyle---zW(cycler("color", ["r", "g", "b"]) +
                          cycler("mew", [2, 3, 5]))Zmarkeredgewidth)rj   r[      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)rC   r[   r   )ZC1rT   rV   ))--|r   )\oOr   )/+*/.xr   r   r   z--_   Xzr,g,b)rT   rV   r   zr, ,rT   )r   rV   bluerV   r   )rC   r   r   r   rC   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   rC   r   rC   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rC   rC   皙?r   )r   r   )r   r   r[   )rC   rj   333333?)r   rj   r[   )rC   rj   r   )r   皙?r   )r   rj   r[   )rC   r   r   )rC   r   )r   rC   abc)rC   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   )rC   r[   gGz?i  r   g     |@)rC   rj   r[   r   )r   g       @g      @g      @s   dottedr   zutf-16r   r   r   )r   r   iternparraysetrI   r   MatplotlibDeprecationWarningr   r   r   r   r   r   r
   r	   r   r   Zaranger   slice	TypeErrorobjectr   encode)ZvalidZvalidation_testsZvalidator_dictr   argre   Z
error_typer*   r*   r+   generate_validator_testcases   s   





	

6
	
	



  Vr   zvalidator, arg, targetTc                 C   sT   | |}t |tjr$tj|| n,t |ts<||ksPJ nt|t|ksPJ d S r   )
isinstancer   ZndarraytestingZassert_equalr   r=   )r   r   re   resr*   r*   r+   test_validator_valid  s    
r   zvalidator, arg, exception_typeFc                 C   s6   t | | | W d    n1 s(0    Y  d S r   )rG   rH   )r   r   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   sP   |t u r<tt  t|  W d    qL1 s00    Y  nt| |ksLJ d S r   )rI   rG   rH   r   )weightZparsed_weightr*   r*   r+   test_validate_fontweight  s    (r   zstretch, parsed_stretch)expandedr   ZEXPANDEDc                 C   sP   |t u r<tt  t|  W d    qL1 s00    Y  nt| |ksLJ d S r   )rI   rG   rH   r   )ZstretchZparsed_stretchr*   r*   r+   test_validate_fontstretch  s    (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>  r   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:0    Y  t jd dksVJ 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 t jd du s$J ttB t jdddd W d    n1 sX0    Y  W d    n1 sv0    Y  t jd du sJ W d    n1 s0    Y  d S )Nr   Fr"   T)r   z	test.blah)r(   r.   r)   rG   rH   KeyErrorr*   r*   r*   r+   test_rcparams_reset_after_fail  s    <r   linuxz
Linux only)reasonc                 C   sh   i t jdddt| d}ttj, tjtj	ddg|dtj
d W d    n1 sZ0    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;   rG   rH   
subprocessCalledProcessErrorrunsys
executableDEVNULL)r/   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sNJ d S )	Ntkinterr   )r   r   r   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)r   universal_newlinesZagg)rG   Zimportorskipr   r   r;   r   check_outputr   r   striplower)r/   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sJJ W d    n1 s^0    Y  ttj dtjd< W d    n1 s0    Y  tjd dksJ |  tjd	d
 ttj( tjd	 tjd ksJ W d    n1 s0    Y  ttj dtjd	< W d    n1 s20    Y  tjd dksPJ |  tjdd ttj$ tjd d u sJ W d    n1 s0    Y  |  tj	dd ttj dtjd< W d    n1 s0    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 Nrj   r*   )oldr*   r*   r+   <lambda>.  r   z"test_deprecation.<locals>.<lambda>c                 S   s   | d S r  r*   )newr*   r*   r+   r  .  r   rj   rC   zpatch.edgecolor)r  rX   rX   z#abcdzpatch.force_edgecolor)r  Nzsvg.hashsalt)r  Zfoobar)setitemr(   Z_deprecated_maprG   rJ   r   r   r)   Z_deprecated_ignore_mapZ_deprecated_remain_as_nonerL   rO   )Zmonkeypatchr*   r*   r+   test_deprecation+  sJ    &(&*4*
r  )GrO   r   pathlibr   r   r   Zunittestr   r   r   rG   Z
matplotlibr(   r   r   Zmatplotlib.pyplotZpyplotr_   Zmatplotlib.colorscolorsZmcolorsnumpyr   Zmatplotlib.rcsetupr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r1   r>   rM   rN   rR   Zto_rgbaZlegend_color_testsZlegend_color_test_idsmarkZparametrizeri   rn   ro   rs   rx   r}   r   r   r   rI   r   r   r   r   r   r   Zskipifplatformr   Zdisplay_is_validr   r  r*   r*   r*   r+   <module>   s   D&!	





	 a





