o
    #eI                     @   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              
      sD  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r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|g|R i | q|  g }|D ]'}|j|g|R i |} j|jkrT|jt |jksTJ || q3|rvt|d |rv|}t |jsuJ n!|d jdkrt |}n|d jd
krt |}nt |}|jd t ksJ t ||sJ t |d jdkrt |}n'|rt|d |rΈ|}nt |d jd
krt |}nt |}|j|g|R i |}|rt|d |rt |jsJ  j|jkr|j|jksJ t ||sJ qd S )Nc                 S   s   g | ]}|gqS  r   .0nr   r   0lib/python3.10/site-packages/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   )Z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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   








r1   c                   C   sF   t tdg dg d t tdg dg d t tdg dg d d S )NTr         r   r   r   r   r3   r   r3               ?r8   r9   )g?g333333$g      @      (@)g      gL)g@gfffff"@)r1   r   r   r   r   r   test_Centert   s   r;   c                  C   s  t tg dg dsJ t tg dg dsJ tg djt tks*J tt jg dt jdjt t jks?J tg djt tksMJ ddlm}  | rdd l	}|j
g dg d	d
}|jddgddgddggddgg dd}t|}t||j
sJ t |jg d	sJ t |g dsJ t|}t||jsJ t |jg dsJ t |jddgsJ t |ddgddgddggsJ d S d S )Nr2   r5   r6   r7   )g      ?g       @g      @)dtyper   r   )abcr   r   r3      r4      Zx1Zx2)
         )columnsr   r   )r   r+   r   r<   floatr   Zfloat32r"   r   r   r   r   r'   r)   r   rE   )r   r   sZdfZs_cZdf_cr   r   r   test_stateful_transform_wrapper{   s4   
"rI   c               	   C   sZ  t tdddgddg t tdddgddg t tdg dtddtd g t tdg d	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      rB   )rJ      rB   g      ?r   )r:   g      &@g      $@rC   r3   )ddofg      #@g2^^@g-@F)rescalerL   )r   rL   )r   rM   rL   )r1   r   r   Zsqrtlistr    Zarange)Zr20r   r   r   test_Standardize   sN   
(
rO   )Z
__future__r   Znumpyr   Zpatsy.stater   r   r   r"   r   r1   r;   rI   rO   r   r   r   r   <module>   s   j