U
    KvfI                     @   sX   d dl mZ d dlZd dlmZmZmZ d dlm	Z	 dd Z
dd Zd	d
 Zdd ZdS )    )print_functionN)CenterStandardizecenter)atleast_2d_column_defaultc              
      s6  t   t |} g|f |fdd  D |fdd  D |ft  g|fdd  D |ft  d d d f gt|fdd  D t|fg}|r|t   d d d fgt ||d d d ff fddtt D t ||d d d ffg7 }dd	lm} |rdd l	j
jf}t jdd
t d|jd
krZj
|d}	nj|d}	|j
 dg|	ffddt D |	fg7 }|rt   d d d ft ||d d d f}
j|
d}|jdg|ffddtt D |fg7 }|D ]\}}t| |  }|D ]}|j|f|| q:|  g }|D ]H}|j|f||} j|jkr|jt |jkst|| qd|rt|d |r|}t |js&tnB|d jdkr t |}n&|d jd
krt |}n
t |}|jd t ks>tt ||sPtt |d jdkrrt |}nN|rt|d |r|}n,t |d jd
krt |}n
t |}|j|f||}|rt|d |rt |jst j|jkr|j|jkstt ||stqd S )Nc                 S   s   g | ]
}|gqS  r   .0nr   r   4/tmp/pip-unpacked-wheel-68fdvdus/patsy/test_state.py
<listcomp>   s     z"check_stateful.<locals>.<listcomp>c                 S   s   g | ]}t |qS r   nparrayr   r   r   r   r      s     c                 S   s   g | ]}t |gqS r   r   r   r   r   r   r      s     c                 S   s   g | ]}t |ggqS r   r   r   r   r   r   r      s     c                    s*   g | ]"}t  |  | d   ggqS )   r   r	   i)inputr   r   r   %   s     r   have_pandasr   )numindexc                    s"   g | ]\}} j |g|gd qS )r   )Series)r	   xidx)pandasr   r   r   6   s   c                    s.   g | ]&}j  |d d f g| gdqS )Nr   )	DataFramer   )input_2d_2colr   pandas_indexr   r   r   D   s   )r   Zasarrayr   r   Zcolumn_stackrangelen
patsy.utilr   r   r   r   ZlinspacendimzipprintZmemorize_chunkZmemorize_finishZ	transformAssertionErrorappend
isinstanceconcatarray_equalr   ZconcatenateZvstackshapeallclose)clsZaccepts_multicolumnr   outputargskwargsZ
test_casesr   Zpandas_typeZ	output_1dZoutput_2d_2colZoutput_2col_dataframeZ	input_objZ
output_objtZinput_chunkZall_outputsZoutput_chunkZall_output1Z	all_inputZall_output2r   )r   r   r   r    r   check_stateful
   s    







r3   c                   C   sZ   t tddddgdddg t tdddddgddddg t tdd	d
ddgddddg d S )NTr         r   r               ?g?g333333$g      @      (@g      gL)g@gfffff"@)r3   r   r   r   r   r   test_Centert   s    

r9   c                  C   s  t tdddgdddgs tt tddddgddddgsDttdd	d
gjt tksbttt jdd	d
gt jdjt t jksttdddgjt tkstddlm	}  | rdd l
}|jdddgdddgd}|jddgddgddggddgdddgd}t|}t||js&tt |jdddgs@tt |dddgsXtt|}t||jsrtt |jdddgstt |jddgstt |ddgddgddggstd S )Nr   r4   r5   r   r   r6   r7   g      ?g       @g      @)dtyper   abcr         x1Zx2
         )columnsr   )r   r-   r   r'   r:   floatr   Zfloat32r#   r   r   r   r   r)   r+   r   rD   )r   r   sZdfZs_cZdf_cr   r   r   test_stateful_transform_wrapper{   s0     $
rH   c               	   C   s^  t tdddgddg t tdddgddg t tddddgtddtd g t tdd	d
dgtddtd g ttd} t tdddgtdd td d gdd t td| ttdd d dd t td| ttdd d dd t td| ttdd ddd t td| ttdd ddd t td| | dddd d S )NTr   r      rA      g      ?r   r8   g      &@g      $@rB   r4   )ddofg      #@g2^^@g-@F)rescalerK   )r   rK   )r   rL   rK   )r3   r   r   sqrtlistr!   Zarange)Zr20r   r   r   test_Standardize   sV    
(    rO   )
__future__r   Znumpyr   Zpatsy.stater   r   r   r#   r   r3   r9   rH   rO   r   r   r   r   <module>   s   j