
    P/Phc,                     N   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                            dee          d             Zej                            dee          d             Zej                            dee          d             Zej                            dee          d             Zej                            dee          d             Zd Zd Zd Zd Zd Z G d d          ZdS )    N_preprocess_data)Axes)subprocess_run_for_testing)check_figures_equalxyreplace_nameslabel_namerxyzc           
      X    dt          |           dt          |           d| d| d| 
S Nzx: z, y: z, ls: z, w: z	, label: listaxr   r	   lslabelws         e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_preprocess_data.py	plot_funcr      s<    JaJJtAwwJJbJJqJJ5JJJ    r   c                  R   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	           n# 1 swxY w Y    t          g d	
          |             t          g d	
          |            t          g d	
          |            t          g d	
          |           t          j        t                    5   t          d          |            d	d	d	           n# 1 swxY w Y   t          j        t                    5   t          d          |           d	d	d	           d	S # 1 swxY w Y   d	S )z.Test decorator invocations -> no replacements.c                     d S N )r   r   r	   s      r   funcz%test_compiletime_checks.<locals>.func         r   c                     d S r   r   )r   r   r	   argss       r   	func_argsz*test_compiletime_checks.<locals>.func_args    r   r   c                     d S r   r   )r   r   r	   kwargss       r   func_kwargsz,test_compiletime_checks.<locals>.func_kwargs!   r   r   c                      d S 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44.C:...{;;;.C:...y999 
~	&	& C C7777	BBBC C C C C C C C C C C C C C C
 924888>>>824888CCC824888EEE824888III 
~	&	& 0 0)S)))$///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
~	&	& 5 5)S))))4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s6   7BB#&B#+EEE5FF #F 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 dS )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_datar3   =   s    DsC  <= = = =D$$$<= = = =DsCr***89 9 9 9DsCv...<= = = =D2...89 9 9 9D6222<= = = = = =r   c                 ~    ddd} | d|                                 |                                          dk    sJ dS )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   sY     DDtyy{{DKKMM22BC C C C C 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 dS )zCTest with dict data -> label comes from the value of 'x' parameter.r5   r6      	   NOTr7   r8   r   Nr7   r8   r<   -x: [1, 2], y: [8, 9], ls: x, w: xyz, label: br   r	   r<   r1   r   r<   ,x: [1, 2], y: [8, 9], ls: x, w: xyz, label: r2   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_datarJ   V   s;    Qq!f511DDsCd+++;< < < <D$///;< < < <DsCr555:; ; ; ;DsCvD999>? ? ? ?D2D999:; ; ; ;D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 dS )zETest the case that one var is not in data -> half replaces, half keptr5   r6   rA   )r7   r   Nr7   r8   rC   z,x: [1, 2], y: ['b'], ls: x, w: xyz, label: brE   r1   rF   z+x: [1, 2], y: ['b'], ls: x, w: xyz, label: r2   z/x: [1, 2], y: ['b'], ls: x, w: xyz, label: textrI   r   r;   s     r   -test_function_call_with_dict_data_not_in_datarL   h   s5    Qe$$DDsCd+++:; ; ; ;D$///:; ; ; ;DsCr5559: : : :DsCvD999=> > > >D2D9999: : : :D6====> > > > > >r   c                    |                     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 dS )zDTest with pandas dataframe -> label comes from ``data["col"].name``.r5   r6   )dtyper?   r@   rA   rB   Nr7   r8   rC   rD   rE   r1   rF   rG   r2   rH   rI   )	DataFramenparrayint32)r   pdr<   s      r   #test_function_call_with_pandas_datarT   z   sy    <<bh1vRX>>> h1vRX>>>$en. . / /D DsCd+++;< < < <D$///;< < < <DsCr555:; ; ; ;DsCvD999>? ? ? ?D2D999:; ; ; ;D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 d
S )zETest without a "replace_names" argument, all vars should be replaced.r5   r6   r?   r@   r   )r7   r8   r   r	   r*   r   NrA   c           
      X    dt          |           dt          |           d| d| d| 
S r   r   r   s         r   func_replace_allz8test_function_call_replace_all.<locals>.func_replace_all   <    NT!WWNN477NN"NN1NNuNNNr   r7   r8   )r   r<   rD   )r   r	   r   r<   r1   )r   r   r<   rG   r2   rH   )r   r	   r   r   r<   )r   NrA   r   )r<   rW   s     r   test_function_call_replace_allrY      s   Qq!f511D#&&&O O O '&O T3s>>>;< < < <TSC3TBBB;< < < <T3s"4HHH:; ; ; ; 	sC3f4HHH:	; 	; 	; 	; 	s"4HHH6	7 	7 	7 	7 	s&tLL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 dS )z<Test with "label_namer=None" -> no label replacement at all.r   r	   Nr
   r   c           
      X    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   r5   r6   r?   r@   rA   rB   r7   r8   rC   z0x: [1, 2], y: [8, 9], ls: x, w: xyz, label: NonerE   r1   rF   rG   r2   rH   r   Nr   r   )r\   r<   s     r   test_no_label_replacementsr^      s    S#JDAAAO O O BAO Qq!f511DM$St444>? ? ? ?M$#4888>? ? ? ?M$S>>>:; ; ; ;M$STBB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            d S # 1 swxY w Y   d S )Nr   r	   r
   r5   c                     d S r   r   )r   r   r	   r)   s       r   r   z/test_more_args_than_pos_parameter.<locals>.func   s    r   r6   r?   r@   rA   rB   r7   r8   r)   rC   )r5   )r   r+   r,   	TypeErrorr;   s     r   !test_more_args_than_pos_parameterrb      s    S#JC@@@   A@ Qq!f511D	y	!	! 2 2T3S#D11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   A  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 d S )Nc                     dS 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                     dS re   r   r   r   r	   r)   bars        r   rf   z&test_docstring_addition.<locals>.funcy   r   r   ri   c                     dS re   r   rh   s        r   rf   z&test_docstring_addition.<locals>.funcy   r   r   z&the following parameters .*: \*bar\*\.r   tc                     dS 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      s      9;U]KKKKKy4emDDDDDB'''   (' y?OOOOOy4emDDDDDUG,,,   -, y?OOOOOyB( ( ( ( ( S#J///   0/ y?OOOOOyG( ( ( ( ( ( (r   c                  b    d} t           j        d| g}t          |dd          }d|j        vsJ dS )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)r2   capture_outputzdata parameter docstring errorN)sys
executabler   stderr)programcmdcompleted_procs      r   test_data_parameter_replacementry      sS    	* 
 >4
)C/$t  N ,>3HHHHHHHr   c                      e Zd Zej        ej        ej        gZej	        
                    de           edg          d                         Zej	        
                    de           edg          d                         ZdS )TestPlotTypesplotterpng)
extensionsc                    g d}g d}t          t          ||                    } ||                                |                                |                                            ||                                ||           d S )Nr5   r6               )dictzipsubplotsr9   r:   )selfr|   fig_testfig_refr   r	   ddicts          r   test_dict_unpackzTestPlotTypes.test_dict_unpack  s     IIIISAYY!!##

ellnn	. 	. 	.  ""Aq)))))r   c                     g d}g d} ||                                 dd||d            ||                                 ||           d S )Nr   r   xvalyval)r   r   rC   )r   )r   r|   r   r   r   r	   s         r   test_data_kwargzTestPlotTypes.test_data_kwarg  sr     IIII!!##VV++	- 	- 	- 	-  ""Aq)))))r   N)__name__
__module____qualname__r   scatterri   plotplottersr+   markparametrizer   r   r   r   r   r   r{   r{   	  s        dh	2H[Y11UG,,,* * -, 21* [Y11UG,,,* * -, 21* * *r   r{   r]   )rm   rs   numpyrP   r+   
matplotlibr   matplotlib.axesr   matplotlib.testingr   matplotlib.testing.decoratorsr   r   	all_funcsall_func_idsr.   r   r   r3   r=   rJ   rL   rT   rY   r^   rb   rp   ry   r{   r   r   r   <module>r      sY   				 



      ' ' ' ' ' '             9 9 9 9 9 9 = = = = = = c
<<<K K K =<K K	}5 5 5B ==> > >=>  ==D D >=D ==@ @ >=@" ==? ? >=?" ==@ @ >=@(< < <2@ @ @$2 2 21( 1( 1(hI I I"* * * * * * * * * *r   