o
    gL                     @   s  d dl mZ 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' 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j01d/e8d0d1d2 Z:ej01d3d4d5e;fd6d7e<d8d8fd9d:e;fd8ge;fgd;d< Z=d=d> Z>d?d@ Z?ej0j@ejAdAkdBdCdDdE ZBej0j@ejAdAko@eC  dFdCdGdH ZDdS )I    )OrderedDictN)Path)mock)cyclerCycler)_api_c_internal_utils)validate_boolvalidate_bool_maybe_nonevalidate_colorvalidate_colorlistvalidate_cyclervalidate_float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	 }|d
 t jd| id t jd | ks7J W d    n1 sAw   Y  t jd |ksOJ t j|d t jd dks_J W d    n1 siw   Y  t jd |kswJ 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rc)fname!   ,   )r!   r    c                   S   s   t jd dks	J d S )Nr   r#   mplrcParams r'   r'   \/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/matplotlib/tests/test_rcparams.pyfunc<   s   ztest_rcparams.<locals>.func)r%   r    r&   r   
write_text
rc_contextrc_file)tmpdirr   r   rcpathr)   r'   r'   r(   test_rcparams"   s0   




r/   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 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: normalr4   r6   zi[vz]r5   family)r%   RcParamslstripreprstrsortedfind_alllist)r    expected_reprexpected_strr'   r'   r(   test_RcParams_classH   s   
	rA   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)      @*   rC   rD      validatematch)r%   r8   pytestraises
ValueErrorwarnsUserWarningupdate)r    bad_dictr'   r'   r(   test_rcparams_updatei   s   PrQ   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 )NrG   rH   rB   rE   )rJ   rK   rL   rM   rN   r%   r8   r'   r'   r'   r(   test_rcparams_initr   s
   PrR   c               	   C   s  t  p 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  td d u sLJ tdd u sTJ t	t
 td W d    n1 shw   Y  W d    n1 sww   Y  t	t
 td  W d    n1 sw   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 )NnoneblahTzsvg.fonttype)r   'suppress_matplotlib_deprecation_warningr%   r+   r&   copydeepcopyr
   rJ   rK   rL   r	   )_copykeyr'   r'   r(   test_Bug_2543x   s6   






"rZ   facecolorrinherit)r\   zaxes.facecolorgedge)r\   zaxes.edgecolor)zsame facecolorzinherited facecolordifferent facecolorzsame edgecolorzinherited edgecolorra   zcolor_type, param_dict, target)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 )Nr\   zlegend.get_   test)label)
popr%   r+   pltsubplotsplotrangelegendgetattrlegendPatch)
color_type
param_dicttargetget_func_axlegr'   r'   r(   test_legend_colors   s   "rv   c                  C   4   dt jd< t jddgddg} |  dksJ d S )Nr]   zlines.markerfacecolorrF      )r%   r&   r   Line2Dget_markerfacecolorlnr'   r'   r(   test_mfc_rcparams      
r}   c                  C   rw   )Nr]   zlines.markeredgecolorrF   rx   )r%   r&   r   ry   get_markeredgecolorr{   r'   r'   r(   test_mec_rcparams   r~   r   c                  C   s4   dt jd< t \} }|d}| dksJ d S )Nr]   zaxes.titlecolorTitle)r%   r&   rh   ri   	set_title	get_color)rs   rt   titler'   r'   r(   test_axes_titlecolor_rcparams   s   

r   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: UTCz	UTF-32-BE)encodingzlocale.getpreferredencoding)return_valueTFtimezoneUTC)r   r*   r   patchr%   rc_params_from_fileget)r-   r.   r    r'   r'   r(   test_Issue_1713   s   r   c                  C   s   dD ]} | t jd< qd S )N)
pngjpegtiffrawrgbappmsgibmppbmsvgzanimation.frame_formatr$   )fmtr'   r'   r(   test_animation_frame_formats   s   r   c                  c   sj   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d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d0gd1td)dd0gffd2tfd3tfd4tfd5tfd6tfd7tfd8tfd9tfd:tfd;tftd<g d=tftd#g d>tffd
td?d@tfdAtfdBtffd
tdCg dDfg dDg dDfdEdFgfg dGdHdIgftg dJtg dKgtg dJg dKgftg dJg dKgtg dJg dKgffdLtffd
tdMdNtfdOtfdPtfdQtfdRtffd
tdSdTdUdVg d-fg d-g d-ftdWtdWffdtffd
tdXdYdZd[d\g d-g d-ftdtd dd ftddd]tddd]ffd-tfg d^tfg d_tfg d`tfdatfdbtfdctfddtfdetfdftfdgtfdhtfditfdjtfdftfdtft tffd
tdkdldmdndodpdqdrdsdtdudvdwdxdydzgd{dyd|gffg d}d{g d~ffd{ddgfd{d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g d-tfdyt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'   .0rs   r'   r'   r(   	<genexpr>       z/generate_validator_testcases.<locals>.<genexpr>)tyyesontrue1rF   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rL   r   r'   r'   r(   r          aardvarkrx   )	validatorsuccessfail za,babz
aardvark, zaardvark, ,)r   r   )rF   rx   r   2rF   )r   c                 s       | ]	}|d dgfV  qdS )rF   rx   Nr'   r   r'   r'   r(   r          z1, 2      ?      @c                 s   r   r   r   r   r'   r'   r(   r      r   )r   r   rF   rF   rx   rd   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")r\   rgb	linestyle---zW(cycler("color", ["r", "g", "b"]) +
                          cycler("mew", [2, 3, 5]))markeredgewidth)rx   rd      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])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)rF   rd   r   )C1r]   r_   ))--|r   )\oOr   )/+*/.xr   r   r   z--_   Xzr,g,b)r]   r_   r   zr, ,r]   )r   r_   bluer_   r   )rF   r   r   r   rF   r   fish)
NonerS   rS   rS   )AABBCCz#AABBCC)AABBCC00z	#AABBCC00)tab:bluer   )C12r   )z	(0, 1, 0))              ?r   )r   r   )z(0, 1, 0, 1))r   r   r   r   )r   rF   r   rF   r   ztab:verybluez(0, 1)z(0, 1, 0, 1, 0)z(0, 1, none)z(0, 1, "0.5"))autor   )fdr   )10
   z1, 2, 3   )NNrF   rF   皙?r   )r   r   )r   r   rd   )rF   rx   333333?)r   rx   rd   )rF   rx   r   )r   皙?r   )r   rx   rd   )rF   r   r   )rF   r   )r   rF   abc)rF   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   )rF   rd   gGz?i  r   g     |@)rF   rx   rd   r   )r   g       @g      @g      @s   dottedr   zutf-16r   r   r   )r	   r   iternparraysetrL   r   r   r   r   r   r   r   r   r   aranger   slice	TypeErrorobjectr   encode)validvalidation_testsvalidator_dictr   argrq   
error_typer'   r'   r(   generate_validator_testcases   s  






	
+
	
	



  ?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   ndarraytestingassert_equalr   r>   )r   r   rq   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   )rJ   rK   )r   r   exception_typer'   r'   r(   test_validator_invalid  s   
"r  zweight, parsed_weight)boldr  BOLD)d   r  )100r  r  )g4@   z20.6c                 C   sT   |t u r tt  t|  W d    d S 1 sw   Y  d S t| |ks(J d S r   )rL   rJ   rK   r   )weightparsed_weightr'   r'   r(   test_validate_fontweight  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 )keymapr'   )r   kr'   r'   r(   
<listcomp>  s    z test_keymaps.<locals>.<listcomp>)r%   r&   r   r>   )key_listr  r'   r'   r(   test_keymaps  s   r  c                
   C   s   t jddidJ t jd du sJ tt" t jtddgd W d    n1 s-w   Y  W d    n1 s<w   Y  t jd du sJJ W d    d S 1 sUw   Y  d S )Nr   Fr   )r   T)z	test.blahT)r%   r+   r&   rJ   rK   KeyErrorr   r'   r'   r'   r(   test_rcparams_reset_after_fail  s   "r  linuxz
Linux only)reasonc                 C   sf   i t jdddt| d}ttj tjtj	ddg|dd W d    d S 1 s,w   Y  d S )Nr   )DISPLAYWAYLAND_DISPLAY
MPLBACKENDMPLCONFIGDIR-czBimport matplotlib;matplotlib.use('tkagg');import matplotlib.pyplotT)envcheck)
osenvironr;   rJ   rK   
subprocessCalledProcessErrorrunsys
executable)r-   r  r'   r'   r(   test_backend_fallback_headless  s   "r%  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  z9import matplotlib.pyplot; print(matplotlib.get_backend())T)r  universal_newlinesagg)rJ   importorskipr  r  r;   r   check_outputr#  r$  striplower)r-   r  backendr'   r'   r(   test_backend_fallback_headful  s   
r/  )Ecollectionsr   rV   r  pathlibr   r   r#  unittestr   r   r   rJ   
matplotlibr%   r   r   matplotlib.pyplotpyplotrh   matplotlib.colorscolorsmcolorsnumpyr   matplotlib.rcsetupr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r/   rA   rQ   rR   rZ   to_rgbalegend_color_testslegend_color_test_idsmarkparametrizerv   r}   r   r   r   r   r   r  r  rL   r   r  r  r  skipifplatformr%  display_is_validr/  r'   r'   r'   r(   <module>   s    @&!	





	 J



