U
    mdE                     @   s(  d dl mZ d dlmZ d dlmZ d dlZd dlZd dl	Z	d dl
Zd dl
mZmZ d dlmZmZ dZdZeeiZed3d	d
Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Z e	j!j"d!d"d#gd$d%gd&d'd( Z#d)d* Z$d+d, Z%d-d. Z&d/d0 Z'd1d2 Z(dS )4    )contextmanager)Path)TemporaryDirectoryN)pyplotstyle)USER_LIBRARY_PATHSSTYLE_EXTENSIONz
image.cmapZpinkc              	   c   sz   |st }d| tf }zVt F}t||jddd | D dd t	
| t  dV  W 5 Q R X W 5 t  X dS )zAContext manager to create a style sheet in a temporary directory.z%s.%s
c                 s   s   | ]\}}d  ||V  qdS )z{}: {}N)format).0kv r   T/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_style.py	<genexpr>   s     ztemp_style.<locals>.<genexpr>utf-8encodingN)DUMMY_SETTINGSr   r   Zreload_libraryr   r   
write_textjoinitemsr   append)
style_namesettings	temp_filetmpdirr   r   r   
temp_style   s    

r   c              	   C   sJ   ddi}d}t || W 5 Q R X t| jdkrB|| jd  ksFtd S )NZfoobarbasename   r   )r   lenrecords
getMessageAssertionError)ZcaplogZSETTINGSr   r   r   r   )test_invalid_rc_warning_includes_filename'   s    
r%   c                	   C   s(   t dt dtjkstW 5 Q R X d S )NZ_test_)r   r   r   	availabler$   r   r   r   r   test_available1   s    r'   c                
   C   sL   dt jt< tdt. td t jt tks4tW 5 Q R X W 5 Q R X d S Ngraytest	mplrcParamsPARAMr   r   r   contextVALUEr$   r   r   r   r   test_use6   s    
r1   c              
   C   s|   t | d}|jddd tdtP dtjdkr4dnd	 |   }t	| t
jd
 dksdtW 5 Q R X W 5 Q R X d S )Nfilezaxes.facecolor: adeader   r   r*   zfile:win32z/// zaxes.facecolorz#adeade)r   r   r   r   sysplatformresolveas_posixr   r/   r,   r-   r$   )r   pathurlr   r   r   test_use_url=   s    

r;   c              	   C   st   dt jt< dt }t| |}|jt dt dd t| t jt tksTt	W 5 Q R X t jt dkspt	d S )Nr)   ztext.z : r   r   )
r,   r-   r.   r   r   r   r0   r   r/   r$   )r   r   r9   r   r   r   test_single_pathH   s    


r<   c                
   C   s^   dt jt< tdt. td t jt tks4tW 5 Q R X W 5 Q R X t jt dksZtd S r(   r+   r   r   r   r   test_contextR   s
    
&r=   c               	   C   sT   d} d}| t jt< tt|i t jt |ks4tW 5 Q R X t jt | ksPtd S )Nr)   blue)r,   r-   r.   r   r/   r$   original_valueother_valuer   r   r   test_context_with_dict[   s    
rB   c               
   C   sn   d} d}| t jt< tdt6 tdt|ig t jt |ksDtW 5 Q R X W 5 Q R X t jt | ksjtd S Nr)   r>   r*   )r,   r-   r.   r   r   r   r/   r$   r?   r   r   r   'test_context_with_dict_after_namedstyled   s    
&rD   c               
   C   sn   d} d}| t jt< tdt6 tt|idg t jt tksDtW 5 Q R X W 5 Q R X t jt | ksjtd S rC   r+   r?   r   r   r   (test_context_with_dict_before_namedstyleo   s    
&rE   c               
   C   s   d} d}d}||i}| t jt< | t j|< tdtD td|g* t jt tksXtt j| |ksjtW 5 Q R X W 5 Q R X t jt | kstt j| | kstd S )Nr)   ztext.usetexTr*   r+   )r@   Zother_paramrA   dr   r   r   .test_context_with_union_of_dict_and_namedstylez   s    
&rG   c                  C   s   d} d}t t|ib tjt |ks*tt t| dd i}tt | W 5 Q R X W 5 Q R X tjt |ksttW 5 Q R X d S )Nr)   r>   Zbadparam)	r   r/   r.   r,   r-   r$   pytestZraisesKeyError)r@   rA   xr   r   r   test_context_with_badparam   s    rK   equiv_styles)mpl20default)mpl15ZclassicrM   rO   )Zidsc              
   C   sp   g }| D ]*}t | |tj  W 5 Q R X q|d }t| dd  |dd  D ]\}}||ksVtqVd S )Nr   r    )r   r/   r   r,   r-   copyzipr$   )rL   Zrc_dictsZstyZrc_basenmrcr   r   r   
test_alias   s    "rT   c                   C   sL   t jd d kstt  t jd dks,ttj  t jd dksHtd S Nzpath.sketch)r    d      )r,   r-   r$   pltxkcdnptestingZbreak_cyclesr   r   r   r   test_xkcd_no_cm   s
    
r\   c                	   C   sN   t jd d kstt  t jd dks.tW 5 Q R X t jd d ksJtd S rU   )r,   r-   r$   rX   rY   r   r   r   r   test_xkcd_cm   s    
r]   c               	   C   s   t jd t j } W 5 Q R X t j| ks0ttt jj	 t j
d W 5 Q R X t j| ksdttt jj	 t jjd  W 5 Q R X d S )Nzseaborn-v0_8-brightzseaborn-bright)r,   r   r/   r-   rP   r$   rH   ZwarnsZ_apiZMatplotlibDeprecationWarninguseZlibrary)Zseaborn_brightr   r   r   test_deprecated_seaborn_styles   s    r_   c                   C   s   t jjjt jjkstd S )N)r,   r   coreZSTYLE_BLACKLISTZrcsetupZ_validatorsr$   r   r   r   r   test_up_to_date_blacklist   s    ra   c                 C   s   | |  ||  | d }|  |d jddd |djddd tjd tjd	 d
ksht	tjd tjd	 dkst	tjd tjd	 dkst	d S )NZmpl_test_style_pkgztest_style.mplstylezlines.linewidth: 42r   r   z	.mplstylezlines.linewidth: 84zmpl_test_style_pkg.test_stylezlines.linewidth*   zmpl_test_style_pkg.mplstyleT   z./mpl_test_style_pkg.mplstyle)
Zsyspath_prependchdirmkdirr   with_suffixr,   r   r^   r-   r$   )Ztmp_pathZmonkeypatchZpkg_pathr   r   r   test_style_from_module   s$    

 
 rg   )N))
contextlibr   pathlibr   tempfiler   r5   numpyrZ   rH   Z
matplotlibr,   r   rX   r   Zmatplotlib.style.corer   r   r.   r0   r   r   r%   r'   r1   r;   r<   r=   rB   rD   rE   rG   rK   markZparametrizerT   r\   r]   r_   ra   rg   r   r   r   r   <module>   sH   

		
