a
    s=icj,                     @   s6  d dl Z 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 eddgddd%d	d
ZegZd
gZdd Zejjdeeddd Zejjdeeddd Zejjdeeddd Zejjdeeddd Zejjdeeddd Zdd Zdd Zdd Zdd  Zd!d" ZG d#d$ d$ZdS )&    N_preprocess_data)Axes)check_figures_equalxyreplace_nameslabel_namerxyzc                 C   s   dt |t ||||f S Nz&x: %s, y: %s, ls: %s, w: %s, label: %slistaxr   r   Zlslabelw r   v/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_preprocess_data.py	plot_func   s    r   c                  C   sJ  dd } dd }dd }dd }t d	d
gd|  t d	d
gd| t d	d
gd| tt" t g dd| W d   n1 s0    Y  t g dd|  t g dd| t g dd| t g dd| tt t dd|  W d   n1 s0    Y  tt t dd| W d   n1 s<0    Y  dS )z.Test decorator invocations -> no replacements.c                 S   s   d S Nr   )r   r   r   r   r   r   func        z%test_compiletime_checks.<locals>.funcc                 W   s   d S r   r   )r   r   r   argsr   r   r   	func_args!   r   z*test_compiletime_checks.<locals>.func_argsc                 [   s   d S r   r   )r   r   r   kwargsr   r   r   func_kwargs"   r   z,test_compiletime_checks.<locals>.func_kwargsc                  _   s   d S r   r   )r   r   r   r   r   func_no_ax_args#   r   z0test_compiletime_checks.<locals>.func_no_ax_argsr   r   r	   )r   r   zNr   r   r
   )r   pytestraisesAssertionError)r   r   r   r   r   r   r   test_compiletime_checks   s"    0.r$   r   )Zidsc                 C   s   | ddddksJ | dddddks*J | ddddddksBJ | dddd	dd
ksZJ | ddddddksrJ | dddd	dd
ksJ 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   r   r   r   test_function_call_without_data>   s$    
r'   c                 C   s*   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   datar   r   r   "test_function_call_with_dict_inputO   s    
r0   c                 C   s   ddgddgdd}| ddd	|d
dks,J | ddd	|ddksDJ | ddd	d|ddks^J | ddd	d|ddksxJ | ddd	d|ddksJ | ddd	d|ddksJ dS )zCTest with dict data -> label comes from the value of 'x' parameter.r(   r)      	   NOTr*   r+   r   Nr*   r+   r/   -x: [1, 2], y: [8, 9], ls: x, w: xyz, label: br   r   r/   r%   r   r/   ,x: [1, 2], y: [8, 9], ls: x, w: xyz, label: r&   0x: [1, 2], y: [8, 9], ls: x, w: xyz, label: textr   r   r   r/   r   r.   r   r   r   !test_function_call_with_dict_dataW   s&    r<   c                 C   s   ddg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sXJ | dddd|ddksrJ | dddd|ddksJ | dddd|ddksJ dS )zETest the case that one var is not in data -> half replaces, half keptr(   r)   r3   )r*   r   Nr*   r+   r5   z,x: [1, 2], y: ['b'], ls: x, w: xyz, label: br7   r%   r8   z+x: [1, 2], y: ['b'], ls: x, w: xyz, label: r&   z/x: [1, 2], y: ['b'], ls: x, w: xyz, label: textr;   r   r.   r   r   r   -test_function_call_with_dict_data_not_in_datai   s&    r=   c                 C   s   | tjddgtjdtjddgtjdddgd}| dd	d
|ddksNJ | dd	d
|ddksfJ | dd	d
d|ddksJ | dd	d
d|ddksJ | dd	d
d|ddksJ | dd	d
d|ddksJ dS )zDTest with pandas dataframe -> label comes from ``data["col"].name``.r(   r)   )Zdtyper1   r2   r3   r4   Nr*   r+   r5   r6   r7   r%   r8   r9   r&   r:   r;   )Z	DataFramenparrayint32)r   pdr/   r   r   r   #test_function_call_with_pandas_data{   s,    rB   c                  C   s   ddgddgdd} t ddddd}|d
ddd	| ddksBJ |d
ddd	| ddks\J |d
ddd	d| ddksxJ |d
ddd	d| ddksJ |d
ddd	d| ddksJ |d
ddd	d| ddksJ d
S )zETest without a "replace_names" argument, all vars should be replaced.r(   r)   r1   r2   r   )r*   r+   r   r   r    r   Nr3   c                 S   s   dt |t ||||f S r   r   r   r   r   r   func_replace_all   s    z8test_function_call_replace_all.<locals>.func_replace_allr*   r+   )r   r/   r6   )r   r   r   r/   r%   )r   r   r/   r9   r&   r:   )r   r   r   r   r/   )r   Nr3   r   )r/   rC   r   r   r   test_function_call_replace_all   s0    rD   c                  C   s   t ddgddddd} dd	gd
dgdd}| ddd|ddksFJ | ddd|ddks^J | dddd|ddksxJ | dddd|ddksJ dS )z<Test with "label_namer=None" -> no label replacement at all.r   r   Nr   r   c                 S   s   dt |t ||||f S r   r   r   r   r   r   func_no_label   s    z1test_no_label_replacements.<locals>.func_no_labelr(   r)   r1   r2   r3   r4   r*   r+   r5   z0x: [1, 2], y: [8, 9], ls: x, w: xyz, label: Noner7   r%   r8   r9   r&   r:   )r   Nr   r   )rE   r/   r   r   r   test_no_label_replacements   s    rF   c               	   C   sp   t ddgddddd} ddgdd	gd
d}tt$ | d dddd|d W d    n1 sb0    Y  d S )Nr   r   r   r(   c                 S   s   d S r   r   )r   r   r   r   r   r   r   r      s    z/test_more_args_than_pos_parameter.<locals>.funcr)   r1   r2   r3   r4   r*   r+   r   r5   )r(   )r   r!   r"   	TypeErrorr.   r   r   r   !test_more_args_than_pos_parameter   s
    rH   c                  C   s   t  dd } td| js J td| jr2J t g dddd} td| jrXJ td| jrjJ t dgdddd} td| jrJ td	| jrJ t d
dgdddd} td| jrJ td| jrJ d S )Nc                 _   s   dS z
        Parameters
        ----------
        data : indexable object, optional
            DATA_PARAMETER_PLACEHOLDER
        Nr   )r   r   r   r   r   r   funcy   s    z&test_docstring_addition.<locals>.funcyz#all parameters also accept a stringzthe following parametersr   c                 S   s   dS rI   r   r   r   r   r   barr   r   r   rJ      s    rL   c                 S   s   dS rI   r   rK   r   r   r   rJ      s    z&the following parameters .*: \*bar\*\.r   tc                 S   s   dS rI   r   )r   r   r   r   rM   r   r   r   rJ      s    z+the following parameters .*: \*x\*, \*t\*\.)N)N)N)r   research__doc__)rJ   r   r   r   test_docstring_addition   s(    

rQ   c                  C   s2   d} t jd| g}tj|d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)r&   capture_outputzdata parameter docstring errorN)sys
executable
subprocessrunstderr)programcmdZcompleted_procr   r   r   test_data_parameter_replacement   s
    rZ   c                   @   s`   e Zd ZejejejgZej	
deedgddd Zej	
deedgddd ZdS )	TestPlotTypesplotterZpng)
extensionsc                 C   sJ   g d}g d}t t||}|| | |  || || d S )Nr(   r)               )dictzipsubplotsr,   r-   )selfr\   fig_testfig_refr   r   Zddictr   r   r   test_dict_unpack  s    zTestPlotTypes.test_dict_unpackc                 C   s>   g d}g d}||  dd||dd ||  || d S )Nr^   r`   xvalyval)rk   rl   r5   )rf   )rg   r\   rh   ri   r   r   r   r   r   test_data_kwarg  s    zTestPlotTypes.test_data_kwargN)__name__
__module____qualname__r   ZscatterrL   ZplotZplottersr!   markparametrizer   rj   rm   r   r   r   r   r[   
  s   
	
r[   )r   Nr   )rN   rU   rS   numpyr>   r!   Z
matplotlibr   Zmatplotlib.axesr   Zmatplotlib.testing.decoratorsr   r   Z	all_funcsZall_func_idsr$   rq   rr   r'   r0   r<   r=   rB   rD   rF   rH   rQ   rZ   r[   r   r   r   r   <module>   s8   	!





4