U
    Âmœdç[  ã                   @   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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.ddddddgZ/ej0j1de.e/d�d d!„ ƒZ2d"d#„ Z3d$d%„ Z4d&d'„ Z5d(d)„ Z6d*d+„ Z7d,d-„ Z8ej0 1d.e8d/ƒ¡d0d1„ ƒZ9ej0 1d2e8d3ƒ¡d4d5„ ƒZ:ej0 1d6d7d8e;fd9d:e <d;¡d;fd<d=e;fd;ge;fg¡d>d?„ ƒZ=ej0 1d@dAdBe;fd9d:e <d;¡d;fd<d=e;fd;ge;fg¡dCdD„ ƒZ>dEdF„ Z?dGdH„ Z@dIdJ„ ZAej0jBejCdKkdLdM�dNdO„ ƒZDej0jBejCdKk�oÎe E¡  dPdM�dQdR„ ƒZFdSdT„ ZGdUdV„ ZHdS )Wé    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   sR  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srt‚W 5 Q R X t jd |ksŽt‚t j|d�� t jd dks®t‚W 5 Q R X t jd |ksÊt‚t j|ddid�� t jd dksðt‚W 5 Q R X t jd |k�st‚t  ddi¡dd„ ƒ}|ƒ  |ƒ  t  |¡ t jd dk�sNt‚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t‚d S )Nr   r&   )ÚmplÚrcParamsÚAssertionError© r*   r*   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_rcparams.pyÚfunc=   s    ztest_rcparams.<locals>.func)r'   r#   r(   r   Ú
write_textÚ
rc_contextr)   Zrc_file)Útmpdirr   r   Úrcpathr,   r*   r*   r+   Útest_rcparams#   s*    



r1   c                  C   s‚   t  ddddgddddœ¡} d	 ¡ }|t| ƒks4t‚d
 ¡ }|t| ƒksLt‚ddgt|  d¡ƒksft‚dgt|  d¡ƒks~t‚d S )Nz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Úreprr)   ÚstrÚsortedZfind_allÚlist)r#   Zexpected_reprZexpected_strr*   r*   r+   Útest_RcParams_classI   s    ýú	r>   c               
   C   sT   t  ddi¡} ddi}t t¡�* tjtdd�� |  |¡ W 5 Q R X W 5 Q R X 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_updatej   s    ÿrM   c                
   C   sB   t  t¡�. t jtdd�� t ddi¡ W 5 Q R X W 5 Q R X d S )NrD   rE   r?   rB   )rG   rH   rI   rJ   rK   r'   r8   r*   r*   r*   r+   Útest_rcparams_inits   s    ÿrN   c               
   C   sÀ   t  ¡ �\ t ¡ �( tj ¡ } | D ]}| | tj|< q"W 5 Q R X t ¡ � t tj¡ W 5 Q R X W 5 Q R X t t	¡� t
d ƒ W 5 Q R X t t	¡�$ t ¡ � dtjd< W 5 Q R X W 5 Q R X 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_2543y   s    



 
rR   ZfaceÚcolorÚrÚinherit)rS   zaxes.facecolorÚgÚedge)rS   úaxes.edgecolorzsame facecolorzinherited facecolorzdifferent facecolorzsame edgecolorzinherited edgecolorzcolor_type, param_dict, target)Zidsc              	   C   sx   |  d¡|d| › d�< d| › d�}t |¡�B t ¡ \}}|jtdƒdd� | ¡ }t|j	|ƒƒ |ksjt
‚W 5 Q R X d S )NrS   zlegend.Úget_é   Útest)Úlabel)Úpopr'   r.   ÚpltÚsubplotsZplotÚrangeZlegendÚgetattrZlegendPatchr)   )Ú
color_typeZ
param_dictÚtargetZget_funcÚ_ÚaxÚlegr*   r*   r+   Útest_legend_colors¡   s    rg   c                  C   s4   dt jd< t j ddgddg¡} |  ¡ dks0t‚d S )NrT   zlines.markerfacecolorrC   é   )r'   r(   r   ÚLine2DZget_markerfacecolorr)   ©Úlnr*   r*   r+   Útest_mfc_rcparams®   s    
rl   c                  C   s4   dt jd< t j ddgddg¡} |  ¡ dks0t‚d S )NrT   zlines.markeredgecolorrC   rh   )r'   r(   r   ri   Zget_markeredgecolorr)   rj   r*   r*   r+   Útest_mec_rcparams´   s    
rm   c                  C   s4   dt jd< t ¡ \} }| d¡}| ¡ dks0t‚d S )NrT   zaxes.titlecolorZTitle)r'   r(   r^   r_   Ú	set_titleÚ	get_colorr)   )rd   re   Útitler*   r*   r+   Útest_axes_titlecolor_rcparamsº   s    

rq   c              	   C   sX   t | ƒd }|jddd� tjddd�� t |dd	¡}W 5 Q R X | d
¡dksTt‚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Úgetr)   )r/   r0   r#   r*   r*   r+   Útest_Issue_1713Á   s
    rv   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_format)r'   r(   )Úfmtr*   r*   r+   Útest_animation_frame_formatsÉ   s    r{   c              !   c   sÀ  t dd„ d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 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'dd(d)gƒ fd*td!d"ƒtd+ddd(gƒ 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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>dd(d)gƒtftd!d?d@dAgƒtffd
œtdBdCtfdDtfdEtffd
œtdFd@dAdgfd@dAdgd@dAdgfdGd@gfddAdHgdAdHgft ddIdIg¡t dIddIg¡gt ddIdIgdIddIgg¡ft ddIdIgdIddIgg¡t ddIdIgdIddIgg¡ffdJtffd
œtdKdLtfdMtfdNtfdOtfdPtffd
œtdQdRtfdStffd
œtdTdUdVdWddd(gfddd(gddd(gft dX¡t dX¡ffdtffd
œtdYdZd[d\d]ddd(gddd(gftdƒtd dd ƒftddd(ƒtddd(ƒffd^tfddd_gtfddd(gtfdddgtfd`tfdatfdbtfdctfddtfdetfdftfdgtfdhtfditfdetfdtftƒ tffd
œtdjdkdldmdndodpdqdrdsdtdudvdwdxdygdIdxdzgffddd(d/gdId{d|d}d~gffdIddgfdIddgffd	ddgfd	ddgfffdtfdtfd€ d�¡tfddd(gtfdxtfdddgftfd ddgftfdddd(gftfddgdftff	d
œf}|D ]V}|d‚ }| �r˜|dƒ D ]\}}|||fV  �q~n |d„ D ]\}}|||fV  �q �qdd S )…Nc                 s   s   | ]}|d fV  qdS )TNr*   ©Ú.0rd   r*   r*   r+   Ú	<genexpr>Õ   s     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~   ×   s     )ÚfÚnÚnoÚoffÚfalseÚ0r   Fc                 s   s   | ]}|t fV  qd S ©N©rI   r|   r*   r*   r+   r~   Ù   s   ÿÚaardvarkrh   éÿÿÿÿ)Ú	validatorÚsuccessÚfailÚ za,bÚaÚbz
aardvark, zaardvark, ,)r“   r”   rC   )r†   c                 s   s   | ]}|d dgfV  qdS )rC   rh   Nr*   r|   r*   r*   r+   r~   ì   s   ÿz1, 2ç      ø?ç      @)rC   rh   c                 s   s   | ]}|t fV  qd S r‹   rŒ   r|   r*   r*   r+   r~   ï   s   ÿ)r�   ©r“   rC   ©rC   rh   rZ   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markeredgewidthrZ   é   zcycler(c='rgb', lw=[1, 2, 3])r   z5cycler('c', 'rgb') * cycler('linestyle', ['-', '--'])Zls)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wakaZC1rT   rV   ))ú--|rž   )ú\oOrŸ   )ú/+*/.xr    ©r’   r’   z--_é   ÚXzr,g,bzr, ,Úbluer   Úfish)
©ÚNoneÚnone©r¨   r¨   )ZAABBCCz#AABBCC)ZAABBCC00z	#AABBCC00)útab:bluerª   )ÚC12r«   )z	(0, 1, 0))ç        ç      ð?r¬   )©r   rC   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˜   ç333333Ó?)r¼   çš™™™™™É?r½   )r¼   rh   rZ   )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   rZ   g®Gáz®ó?iÈ  g     €|@r­   g       @g      @g      @s   dottedrÅ   zutf-16r�   r�   r‘   )r   r   ÚiterÚnpÚarrayÚsetrI   r   r   r   r   r   r   r
   r	   r   r   Zaranger   ÚsliceÚ	TypeErrorÚobjectr   Úencode)ZvalidZvalidation_testsZvalidator_dictr�   Úargrc   Z
error_typer*   r*   r+   Úgenerate_validator_testcasesÒ   sÀ   ÿÿþ
ÿû

ø
ÿõ
 ÿÿÿü	
 ÿÿÿüÿÿÿþÿÿÿÿÿñÿÿÿÿÿÿÿçæ6þýÿÿú	öüôÿùûøù	ðö     õøò€ È TrÐ   zvalidator, arg, targetTc                 C   sT   | |ƒ}t |tjƒr$tj ||¡ n,t |tƒs<||ksPt‚nt|ƒt|ƒksPt‚d S r‹   )Ú
isinstancerÈ   ZndarrayÚtestingZassert_equalr   r)   r=   )r�   rÏ   rc   Úresr*   r*   r+   Útest_validator_valid°  s    
rÔ   zvalidator, arg, exception_typeFc              	   C   s"   t  |¡� | |ƒ W 5 Q R X d S r‹   )rG   rH   )r�   rÏ   Zexception_typer*   r*   r+   Útest_validator_invalid½  s    rÕ   zweight, parsed_weight)ÚboldrÖ   ZBOLD)éd   r×   )Ú100r×   r×   )gš™™™™™4@é   z20.6c              	   C   s<   |t kr(t t ¡� t| ƒ W 5 Q R X nt| ƒ|ks8t‚d S r‹   )rI   rG   rH   r   r)   )ÚweightZparsed_weightr*   r*   r+   Útest_validate_fontweightÄ  s    rÛ   zstretch, parsed_stretch)ÚexpandedrÜ   ZEXPANDEDc              	   C   s<   |t kr(t t ¡� t| ƒ W 5 Q R X nt| ƒ|ks8t‚d S r‹   )rI   rG   rH   r   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t‚qd S )Nc                 S   s   g | ]}d |kr|‘qS )Zkeymapr*   )r}   Úkr*   r*   r+   Ú
<listcomp>í  s      z test_keymaps.<locals>.<listcomp>)r'   r(   rÑ   r=   r)   )Zkey_listrÞ   r*   r*   r+   Útest_keymapsì  s    rà   c                	   C   sF   t jd dkst‚t  ¡ � dt jd< W 5 Q R X t jd dksBt‚d S )NÚbackendzmodule://aardvark)r'   r(   r)   r.   r*   r*   r*   r+   Útest_no_backend_reset_rccontextò  s    
râ   c                   C   sx   t jddid��^ t jd dks$t‚t t¡�$ t jdddœd�� W 5 Q R X W 5 Q R X t jd dksjt‚W 5 Q R X d S )Nr   Fr"   T)r   z	test.blah)r'   r.   r(   r)   rG   rH   ÚKeyErrorr*   r*   r*   r+   Útest_rcparams_reset_after_failù  s    rä   Úlinuxz
Linux only)Úreasonc              	   C   sP   t jdddt| ƒdœ–}t tj¡�" tjtj	ddg|dtj
d� W 5 Q R X 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   sN   t  d¡ tjdt| ƒdœ–}tjtjddg|dd�}| 	¡  
¡ dksJt‚d S )	NÚtkinterr’   )rç   rè   ré   zöimport 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ê   Úuniversal_newlinesZagg)rG   Zimportorskiprí   rî   r;   rï   Úcheck_outputrò   ró   ÚstripÚlowerr)   )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sJt‚W 5 Q R X t tj¡� dtjd< W 5 Q R X tjd dksˆt‚|   tj	d	d
¡ t tj¡� tjd	 tjd ks¾t‚W 5 Q R X t tj¡� dtjd	< W 5 Q R X tjd dksüt‚|   tj	dd¡ t tj¡� tjd d k�s.t‚W 5 Q R X |   tj
dd¡ t tj¡� dtjd< W 5 Q R X tjd dk�s~t‚d tjd< tj tj ¡ ¡ d S )Nzpatch.linewidthú0.0zaxes.linewidthc                 S   s   d|  S ©Nrh   r*   )Úoldr*   r*   r+   Ú<lambda>-  ó    z"test_deprecation.<locals>.<lambda>c                 S   s   | d S rý   r*   )Únewr*   r*   r+   rÿ   -  r   rh   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   ZMatplotlibDeprecationWarningr(   r)   Z_deprecated_ignore_mapZ_deprecated_remain_as_nonerL   rO   )Zmonkeypatchr*   r*   r+   Útest_deprecation*  sR     þÿ þÿ þ þ
r  c               	   C   s@   d} | › d�}t jtt |¡d�� t d| i¡ W 5 Q R X d S )N)gÍÌÌÌÌÌì?gffffffæ?z% is not a valid value for legend.loc;rE   z
legend.loc)rG   rH   rI   ÚreÚescaper'   r8   )ÚvalueZ	match_strr*   r*   r+   Útest_rcparams_legend_locS  s    
r  )IrO   rí   Úpathlibr   r  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parametrizerg   rl   rm   rq   rv   r{   rÐ   rÔ   rÕ   rI   rÉ   rÛ   rÝ   rà   râ   rä   ZskipifÚplatformrõ   Zdisplay_is_validrû   r  r  r*   r*   r*   r+   Ú<module>   s´   D&!	
ÿ
ÿøú

ÿ
	 _ÿ
ÿ
ö
ö

þ
)