U
    \	aQ(                     @   s  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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   I/tmp/pip-unpacked-wheel-wjyw_3jo/matplotlib/tests/test_preprocess_data.py	plot_func   s        r   c               	   C   s  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 d	d
dgd| W 5 Q R X t g dd|  t g dd| t g dd| t g dd| tt t dd|  W 5 Q R X tt t dd| W 5 Q R X 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   zNr   r	   )r   pytestraisesAssertionError)r   r   r   r   r   r   r   test_compiletime_checks   s"    r#   r   )idsc                 C   s   | ddddkst | dddddks*t | ddddddksBt | dddd	dd
ksZt | ddddddksrt | dddd	dd
kst 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&tdS )z8Tests with dict input, unpacking via preprocess_pipeline      )abNz4x: ['a', 'b'], y: [1, 2], ls: x, w: xyz, label: None)keysvaluesr"   r   datar   r   r   "test_function_call_with_dict_inputM   s    
r1   c                 C   s   ddgddgdd}| ddd	|d
dks,t | ddd	|ddksDt | ddd	d|ddks^t | ddd	d|ddksxt | ddd	d|ddkst | ddd	d|ddkst dS )zCTest with dict data -> label comes from the value of 'x' parameter.r)   r*      	   NOTr+   r,   r   Nr+   r,   r0   -x: [1, 2], y: [8, 9], ls: x, w: xyz, label: br   r   r0   r%   r   r0   ,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   r0   r'   r/   r   r   r   !test_function_call_with_dict_dataU   s&    r=   c                 C   s   ddgdd}| ddd|dd	ks&t | ddd|d
d	ks>t | dddd|ddksXt | dddd|ddksrt | dddd|ddkst | dddd|ddkst dS )zETest the case that one var is not in data -> half replaces, half keptr)   r*   r4   )r+   r   Nr+   r,   r6   z,x: [1, 2], y: ['b'], ls: x, w: xyz, label: br8   r%   r9   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_datag   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sNt| dd	d
|ddksft| dd	d
d|ddkst| dd	d
d|ddkst| dd	d
d|ddkst| dd	d
d|ddkstdS )zDTest with pandas dataframe -> label comes from ``data["col"].name``.r)   r*   )Zdtyper2   r3   r4   r5   Nr+   r,   r6   r7   r8   r%   r9   r:   r&   r;   r<   )Z	DataFramenparrayZint32r"   )r   pdr0   r   r   r   #test_function_call_with_pandas_datay   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sBt|d
ddd	| ddks\t|d
ddd	d| ddksxt|d
ddd	d| ddkst|d
ddd	d| ddkst|d
ddd	d| ddkstd
S )zETest without a "replace_names" argument, all vars should be replaced.r)   r*   r2   r3   r
   )r+   r,   r   r   r   r   Nr4   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   r0   r7   )r   r   r   r0   r%   )r   r   r0   r:   r&   r;   )r   r   r   r   r0   )r   Nr4   r   r"   )r0   rC   r   r   r   test_function_call_replace_all   s0    rE   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sFt| ddd|ddks^t| dddd|ddksxt| dddd|ddkst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*   r2   r3   r4   r5   r+   r,   r6   z0x: [1, 2], y: [8, 9], ls: x, w: xyz, label: Noner8   r%   r9   r:   r&   r;   )r   Nr
   rD   )rF   r0   r   r   r   test_no_label_replacements   s    rG   c               	   C   s\   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 5 Q R X 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*   r2   r3   r4   r5   r+   r,   r   r6   )r)   )r   r    r!   	TypeErrorr/   r   r   r   !test_more_args_than_pos_parameter   s
    rI   c                  C   s   t  dd } td| js ttd| jr2tt g dddd} td| jrXttd| jrjtt dgdddd} td| jrttd	| jrtt d
dgdddd} td| jrttd| jrtd S )Nc                 _   s   dS zFuncy does nothingNr   )r   r   r   r   r   r   funcy   s    z&test_docstring_addition.<locals>.funcyzevery other argumentzthe following argumentsr   c                 S   s   dS rJ   r   r   r   r   r   barr   r   r   rK      s    rM   c                 S   s   dS rJ   r   rL   r   r   r   rK      s    z%the following arguments .*: \*bar\*\.r   tc                 S   s   dS rJ   r   )r   r   r   r   rN   r   r   r   rK      s    z*the following arguments .*: \*x\*, \*t\*\.)N)N)N)r   research__doc__r"   )rK   r   r   r   test_docstring_addition   s(    

rR   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   sN   dddg}dddg}t t||}|| | |  || || d S )Nr)   r*               )dictzipsubplotsr-   r.   )selfrT   fig_testfig_refr   r   Zddictr   r   r   test_dict_unpack   s    

 zTestPlotTypes.test_dict_unpackc                 C   sB   dddg}dddg}||  dd||d	d
 ||  || d S )Nr)   r*   rV   rW   rX   rY   xvalyval)ra   rb   r6   )r\   )r]   rT   r^   r_   r   r   r   r   r   test_data_kwarg   s    

zTestPlotTypes.test_data_kwargN)__name__
__module____qualname__r   ZscatterrM   ZplotZplottersr    markparametrizer   r`   rc   r   r   r   r   rS      s   
	
rS   )r   Nr
   )rO   Znumpyr?   r    Z
matplotlibr   Zmatplotlib.axesr   Zmatplotlib.testing.decoratorsr   r   Z	all_funcsZall_func_idsr#   rg   rh   r(   r1   r=   r>   rB   rE   rG   rI   rR   rS   r   r   r   r   <module>   s2   	!





 