a
    ëÝEbo,  ã                   @   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   úe/home/ja/django-apps/lartica_env/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 sˆ0    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   )Ú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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   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    
ÿr1   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s’J ‚| ddd	d|d�dks¬J ‚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_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sŒJ ‚| dddd|d�dks¦J ‚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_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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 )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int32)r   Úpdr0   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s”J ‚|d
ddd	d| d�dks°J ‚|d
ddd	d| d�dksÌJ ‚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   )r0   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s’J ‚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   r   )rE   r0   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*   r2   r3   r4   r5   r+   r,   r   r6   )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¡r’J ‚t d	| j¡r¤J ‚t d
dgd�ddd„ƒ} t d| j¡rÎJ ‚t d| j¡ràJ ‚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 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   r6   )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(   r1   r=   r>   rB   rD   rF   rH   rQ   rZ   r[   r   r   r   r   Ú<module>   s8   	!





4