
    gc,                     &   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ  eddgd      dd	       ZegZd
gZd Zej"                  j%                  dee      d        Zej"                  j%                  dee      d        Zej"                  j%                  dee      d        Zej"                  j%                  dee      d        Zej"                  j%                  dee      d        Zd Zd Zd Zd Zd Z G d d      Zy)    N_preprocess_data)Axes)subprocess_run_for_testing)check_figures_equalxyreplace_nameslabel_namerc           
      H    dt        |       dt        |       d| d| d| 
S Nzx: z, y: z, ls: z, w: z	, label: listaxr   r	   lslabelws         b/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_preprocess_data.py	plot_funcr      s/    a	tAwivbTqc5'JJ    r   c                     d } d }d }d } t        ddg      |         t        ddg      |        t        ddg      |       t        j                  t              5   t        g d      |       d	d	d	        t        g d	
      |         t        g d	
      |        t        g d	
      |        t        g d	
      |       t        j                  t              5   t        d      |        d	d	d	       t        j                  t              5   t        d      |       d	d	d	       y	# 1 sw Y   xY w# 1 sw Y   JxY w# 1 sw Y   y	xY w)z.Test decorator invocations -> no replacements.c                      y N )r   r   r	   s      r   funcz%test_compiletime_checks.<locals>.func       r   c                      y r   r   )r   r   r	   argss       r   	func_argsz*test_compiletime_checks.<locals>.func_args    r   r   c                      y r   r   )r   r   r	   kwargss       r   func_kwargsz,test_compiletime_checks.<locals>.func_kwargs!   r   r   c                       y r   r   )r    r#   s     r   func_no_ax_argsz0test_compiletime_checks.<locals>.func_no_ax_args"   r   r   r   r	   r   )r   r	   zNr
   r(   r   )r   pytestraisesAssertionError)r   r!   r$   r&   s       r   test_compiletime_checksr-      s:    (-. /C:.t4.C:.{;.C:.y9 
~	& C77	BC
 9248>8248C8248E8248I 
~	& 0)S)$/0 
~	& 5)S))45 5C C0 05 5s$   "D4$E E4D= E	Er   )idsc                      | ddd      dk(  sJ  | ddd      dk(  sJ  | dddd      dk(  sJ  | dddd	      d
k(  sJ  | dddd      dk(  sJ  | dddd	      d
k(  sJ y)z%Test without data -> no replacements.Nr   r	   z.x: ['x'], y: ['y'], ls: x, w: xyz, label: None)r   r	    )r   z*x: ['x'], y: ['y'], ls: x, w: xyz, label: textz.x: ['x'], y: ['y'], ls: x, w: xyz, label: text)r   r	   r   r   )r   s    r   test_function_call_without_datar2   =   s     sC <= > =$<= > =sCr*89 : 9sCv.<= > =2.89 : 962<= > =r   c                 d    ddd} | d|j                         |j                               dk(  sJ y)z8Tests with dict input, unpacking via preprocess_pipeline      )abNz4x: ['a', 'b'], y: [1, 2], ls: x, w: xyz, label: None)keysvaluesr   datas     r   "test_function_call_with_dict_inputr<   N   s;     Dtyy{DKKM2BC D Cr   c                     ddgddgdd} | ddd	|
      dk(  sJ  | ddd	|      dk(  sJ  | ddd	d|      dk(  sJ  | ddd	d|      dk(  sJ  | ddd	d|      dk(  sJ  | ddd	d|      dk(  sJ y)zCTest with dict data -> label comes from the value of 'x' parameter.r4   r5      	   NOTr6   r7   r   Nr6   r7   r;   -x: [1, 2], y: [8, 9], ls: x, w: xyz, label: br   r	   r;   r0   r   r;   ,x: [1, 2], y: [8, 9], ls: x, w: xyz, label: r1   0x: [1, 2], y: [8, 9], ls: x, w: xyz, label: textr   r	   r   r;   r   r:   s     r   !test_function_call_with_dict_datarI   V   s     Qq!f51DsCd+;< = <$/;< = <sCr5:; < ;sCvD9>? @ ?2D9:; < ;6=>? @ ?r   c                     ddgdd} | ddd|      d	k(  sJ  | ddd|
      d	k(  sJ  | dddd|      dk(  sJ  | dddd|      dk(  sJ  | dddd|      dk(  sJ  | dddd|      dk(  sJ y)zETest the case that one var is not in data -> half replaces, half keptr4   r5   r@   )r6   r   Nr6   r7   rB   z,x: [1, 2], y: ['b'], ls: x, w: xyz, label: brD   r0   rE   z+x: [1, 2], y: ['b'], ls: x, w: xyz, label: r1   z/x: [1, 2], y: ['b'], ls: x, w: xyz, label: textrH   r   r:   s     r   -test_function_call_with_dict_data_not_in_datarK   h   s     Qe$DsCd+:; < ;$/:; < ;sCr59: ; :sCvD9=> ? >2D99: ; :6==> ? >r   c                    |j                  t        j                  ddgt        j                        t        j                  ddgt        j                        ddgd      } | dd	d
|      dk(  sJ  | dd	d
|      dk(  sJ  | dd	d
d|      dk(  sJ  | dd	d
d|      dk(  sJ  | dd	d
d|      dk(  sJ  | dd	d
d|      dk(  sJ y)zDTest with pandas dataframe -> label comes from ``data["col"].name``.r4   r5   )dtyper>   r?   r@   rA   Nr6   r7   rB   rC   rD   r0   rE   rF   r1   rG   rH   )	DataFramenparrayint32)r   pdr;   s      r   #test_function_call_with_pandas_datarS   z   s    <<bhh1vRXX> hh1vRXX>$en. /D sCd+;< = <$/;< = <sCr5:; < ;sCvD9>? @ ?2D9:; < ;6=>? @ ?r   c                     ddgddgdd} t        d      dd       } |d
ddd	|       dk(  sJ  |d
ddd	|       dk(  sJ  |d
ddd	d|       dk(  sJ  |d
ddd	d|       dk(  sJ  |d
ddd	d|       dk(  sJ  |d
ddd	d|       dk(  sJ y
)zETest without a "replace_names" argument, all vars should be replaced.r4   r5   r>   r?   xyz)r6   r7   r   r	   r)   r   Nc           
      H    dt        |       dt        |       d| d| d| 
S r   r   r   s         r   func_replace_allz8test_function_call_replace_all.<locals>.func_replace_all   /    T!WIU47)6"U1#YugNNr   r6   r7   )r   r;   rC   )r   r	   r   r;   r0   )r   r   r;   rF   r1   rG   )r   r	   r   r   r;   )r   Nr@   r   )r;   rW   s     r   test_function_call_replace_allrY      s   Qq!f51D#&O 'O T3s>;< = <TSC3TB;< = <T3s"4H:; < ; 	sC3f4H:	;<	; 	s"4H6	78	7 	s&tL:	;<	;r   c                      t        ddgd      dd       } ddgdd	gd
d} | ddd|      dk(  sJ  | ddd|      dk(  sJ  | dddd|      dk(  sJ  | dddd|      dk(  sJ y)z<Test with "label_namer=None" -> no label replacement at all.r   r	   Nr
   c           
      H    dt        |       dt        |       d| d| d| 
S r   r   r   s         r   func_no_labelz1test_no_label_replacements.<locals>.func_no_label   rX   r   r4   r5   r>   r?   r@   rA   r6   r7   rB   z0x: [1, 2], y: [8, 9], ls: x, w: xyz, label: NonerD   r0   rE   rF   r1   rG   r   NrU   r   )r\   r;   s     r   test_no_label_replacementsr^      s     S#JDAO BO Qq!f51D$St4>? @ ?$#48>? @ ?$S>:; < ;$STB>? @ ?r   c            	          t        ddgd      dd       } ddgddgd	d
}t        j                  t              5   | d dddd|       d d d        y # 1 sw Y   y xY w)Nr   r	   r
   r4   c                      y r   r   )r   r   r	   r(   s       r   r   z/test_more_args_than_pos_parameter.<locals>.func   s    r   r5   r>   r?   r@   rA   r6   r7   r(   rB   )r4   )r   r*   r+   	TypeErrorr:   s     r   !test_more_args_than_pos_parameterrb      si    S#JC@ A Qq!f51D	y	! 2T3S#D12 2 2s   AAc                     t               d        } t        j                  d| j                        sJ t        j                  d| j                        rJ t        g       dd       } t        j                  d| j                        rJ t        j                  d| j                        rJ t        dg      dd       } t        j                  d| j                        rJ t        j                  d| j                        rJ t        d	d
g      dd       } t        j                  d| j                        rJ t        j                  d| j                        rJ y )Nc                      yz
        Parameters
        ----------
        data : indexable object, optional
            DATA_PARAMETER_PLACEHOLDER
        Nr   )r   r    r#   s      r   funcyz&test_docstring_addition.<locals>.funcy   r   r   z#all parameters also accept a stringzthe following parametersr'   c                      yre   r   r   r   r	   r(   bars        r   rf   z&test_docstring_addition.<locals>.funcy   r   r   ri   c                      yre   r   rh   s        r   rf   z&test_docstring_addition.<locals>.funcy   r   r   z&the following parameters .*: \*bar\*\.r   tc                      yre   r   )r   r   r	   r(   rk   s        r   rf   z&test_docstring_addition.<locals>.funcy   r   r   z+the following parameters .*: \*x\*, \*t\*\.r   )r   research__doc__)rf   s    r   test_docstring_additionrp      sG     99;U]]KKKyy4emmDDDB' ( yy?OOOyy4emmDDDUG, - yy?OOOyyB( ( ( S#J/ 0 yy?OOOyyG( ( ( (r   c                  j    d} t         j                  d| g}t        |dd      }d|j                  vsJ y)z
    Test that the docstring contains the correct *data* parameter stub
    for all methods that we run _preprocess_data() on.
    zYimport logging; logging.basicConfig(level=logging.DEBUG); import matplotlib.pyplot as pltz-cT)r1   capture_outputzdata parameter docstring errorN)sys
executabler   stderr)programcmdcompleted_procs      r   test_data_parameter_replacementry      sE    	* 
 >>4
)C/$tN ,>3H3HHHHr   c                      e Zd Zej                  ej
                  ej                  gZej                  j                  de       edg      d               Zej                  j                  de       edg      d               Zy)TestPlotTypesplotterpng)
extensionsc                     g d}g d}t        t        ||            } ||j                         |j                         |j	                                 ||j                         ||       y )Nr4   r5               )dictzipsubplotsr8   r9   )selfr|   fig_testfig_refr   r	   ddicts          r   test_dict_unpackzTestPlotTypes.test_dict_unpack  sV     SAY!!#

elln	.  "Aq)r   c                 ~    g d}g d} ||j                         dd||d        ||j                         ||       y )Nr   r   xvalyval)r   r   rB   )r   )r   r|   r   r   r   r	   s         r   test_data_kwargzTestPlotTypes.test_data_kwarg  sB     !!#VV+	-  "Aq)r   N)__name__
__module____qualname__r   scatterri   plotplottersr*   markparametrizer   r   r   r   r   r   r{   r{   	  s    dhh		2H[[Y1UG,* - 2* [[Y1UG,* - 2*r   r{   r]   )rm   rs   numpyrO   r*   
matplotlibr   matplotlib.axesr   matplotlib.testingr   matplotlib.testing.decoratorsr   r   	all_funcsall_func_idsr-   r   r   r2   r<   rI   rK   rS   rY   r^   rb   rp   ry   r{   r   r   r   <module>r      sR   	 
   '   9 = c
<K =K K	}5B => >>  =D >D =@ >@" =? >?" =@ >@(<2@$21(hI"* *r   