
    bMh                     &   d dl Z d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZ d dlmZ ej        d             Zej        d             Zej        d             Zej        d             Z G d d          Z G d	 d
          Z G d d          Zd ZdS )    N)	DataFrameIndex
date_rangelreshapemeltwide_to_longc            	         t          t          j                            d                              d          t          t          d                    t          ddd                    } | d	         d
k                        t          j	                  | d<   | d         d
k                        t          j	                  | d<   | S )N   )
      ABCDz
2000-01-01r   B)periodsfreqcolumnsindexAr   id1id2)
r   nprandomdefault_rngstandard_normalr   listr   astypeint64ress    ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/reshape/test_melt.pydfr!      s    

	a  0099d6ll##r<<<  C
 c(Q,&&rx00CJc(Q,&&rx00CJJ    c                      t          g dg dg dg          } t          d          t          d          g| _        ddg| j        _        | S )N)5:?StgKԲ?)Uy$> M?gK)i<8b->?ghBĒABCabcCAPlow)r   r   r   namesr   s    r    df1r/      s^    
***,,,+++	
 C ;;U,CKCKJr"   c                      dS )Nvar r2   r"   r    var_namer3   ,       5r"   c                      dS )Nvalr2   r2   r"   r    
value_namer7   1   r4   r"   c                   n   e Zd Zd Zd Zd Zd Zej        	                    de
eej        f          d             Zd Zej        	                    dd	gd
gd eddddd
d
d
dddddd          fdgdgd eddddddddddddd          fg          d             Zej        	                    dddggdgdgddgg          d             Zd Zd Zd Zej        	                    d dd!g          d"             Zd# Zej        	                    d$ ej         ed%d&d'(                     ej        g d)d*+           ej        g d,          g          d-             Zd. Zd/ Zd0 Zd1 Zd2 Z d3 Z!d4 Z"d5 Z#ej        	                    d6d7d8g          d9             Z$d: Z%d; Z&d< Z'd= Z(d> Z)d?S )@TestMeltc                 f    t          |          }|j                                        ddgk    sJ d S )Nvariablevaluer   r   tolist)selfr!   results      r    test_top_level_methodzTestMelt.test_top_level_method7   s7    b~$$&&:w*???????r"   c           	         t          j        |                                t          |                     t          j        |                    ddgddg          t          |ddgddg                     t          j        |                    ||          t          |||                     t          j        |                    d          t          |d                     d S )	Nr   r   r   r   id_vars
value_varsr3   r7   r   	col_level)tmassert_frame_equalr   )r?   r!   r/   r3   r7   s        r    test_method_signatureszTestMelt.test_method_signatures;   s    
bggiib222
GGUENSzGBBeU^c
CCC	
 	
 	

 	GGX*G==h:>>>	
 	
 	

 	chhh33T#5K5K5KLLLLLr"   c                 R   |                                 }|j                                        ddgk    sJ |                     dg          }|j                                        g dk    sJ |                     ddg          }|j                                        g dk    sJ d S )Nr;   r<   r   )rD   )r   r;   r<   r   r   r   r;   r<   r=   )r?   r!   r@   result1result2s        r    test_default_col_nameszTestMelt.test_default_col_namesJ   s    ~$$&&:w*?????''5''**%%''+G+G+GGGGG''5%.'11%%''+N+N+NNNNNNNr"   c                    |                     ddgd          }t          |          dk    sJ |                     ddgddg          }t          |d                                         dz  |d                                         dz  dgdz  dgdz  z   |d                                         |d                                         z   dg d	          }t	          j        ||           d S )
Nr   r   r   rC   r   r   r
   rM   r   )r   lenr   r>   rI   rJ   )r?   r!   result3result4	expected4s        r    test_value_varszTestMelt.test_value_varsT   s    ''5%.S'AA7||r!!!!''5%.c3Z'HH%y''))A-%y''))A- EBJ#3S'..**RW^^-=-==	  877
 
 
	 	gy11111r"   type_c                    t          |d                                         dz  |d                                         dz  dgdz  dgdz  z   |d                                         |d                                         z   dg d          }|                    ddg |d	          
          }t          j        ||           d S )Nr   r
   r   r   r   r   rM   rR   r   r   rC   )r   r>   r   rI   rJ   )r?   rX   r!   expectedr@   s        r    test_value_vars_typeszTestMelt.test_value_vars_typesd   s     %y''))A-%y''))A- EBJ#3S'..**RW^^-=-==	  877
 
 
 %EE*<M<MNN
fh/////r"   c                     t          |d         dgt          |          z  dgt          |          z  |d         dg d          }|                    dgdg          }t          j        ||           d S )Nr   ar   br   r`   )r^   r,   r-   r<   rR   rC   )r   rS   r   rI   rJ   )r?   r/   r[   r@   s       r    test_vars_work_with_multiindexz'TestMelt.test_vars_work_with_multiindexs   s    
Ous3xx'us3xx'Z	  877
 
 
 :,J<HH
fh/////r"   z(id_vars, value_vars, col_level, expectedr   r   r   r$   r&   r(   r      r
   r%   r'   r)   )r   r,   r<   r_   r`   rd   )r_   r-   r<   c                 `    |                     |||          }t          j        ||           d S )NrG   )r   rI   rJ   )r?   rD   rE   rH   r[   r/   r@   s          r    %test_single_vars_work_with_multiindexz.TestMelt.test_single_vars_work_with_multiindex   s5    @ ':CC
fh/////r"   zid_vars, value_varsr^   ra   c                     d}t          j        t          |          5  |                    ||           d d d            d S # 1 swxY w Y   d S )NzF(id|value)_vars must be a list of tuples when columns are a MultiIndexmatchrC   )pytestraises
ValueErrorr   )r?   rD   rE   r/   msgs        r    $test_tuple_vars_fail_with_multiindexz-TestMelt.test_tuple_vars_fail_with_multiindex   s     X]:S111 	= 	=HHWH<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   AA
Ac                 T   |                     |          }|j                                        ddgk    sJ |                     dg|          }|j                                        g dk    sJ |                     ddg|          }|j                                        g dk    sJ |                     ddgd	|
          }|j                                        g dk    sJ |                     ddgd	dg|
          }t          d|d                                         dz  d|d                                         dz  |d	gdz  dgdz  z   d|d	                                         |d                                         z   idd|dg          }t	          j        ||           d S )N)r3   r1   r<   r   rD   r3   )r   r1   r<   r   )r   r   r1   r<   r   )rD   rE   r3   r   r
   r   rR   r   r   r>   r   rI   rJ   )	r?   r!   r3   result5result6result7result8result9	expected9s	            r    test_custom_var_namezTestMelt.test_custom_var_name   s   ''8',,%%''E7+;;;;;''5'H'==%%''+B+B+BBBBB''5%.8'DD%%''+I+I+IIIII''5%.S8'TT%%''+I+I+IIIII''ENSzH  
 
 r%y''))A-r%y''))A-3%"*urz1"S'..**RW^^-=-==	 E8W5
 
 
	 	gy11111r"   c                 T   |                     |          }|j                                        ddgk    sJ |                     dg|          }|j                                        g dk    sJ |                     ddg|          }|j                                        g dk    sJ |                     ddgd	|
          }|j                                        g dk    sJ |                     ddgd	dg|
          }t          d|d                                         dz  d|d                                         dz  dd	gdz  dgdz  z   ||d	                                         |d                                         z   iddd|g          }t	          j        ||           d S )N)r7   r;   r6   r   rD   r7   )r   r;   r6   r   )r   r   r;   r6   r   )rD   rE   r7   r   r
   r   rR   rq   )	r?   r!   r7   result10result11result12result13result14
expected14s	            r    test_custom_value_namezTestMelt.test_custom_value_name   s   77j711&&((Z,?????77E7z7BB&&((,F,F,FFFFF77E5>j7II&&((,M,M,MMMMM77ENsz  
 
 &&((,M,M,MMMMM77ENSzj  
 
 r%y''))A-r%y''))A-SEBJ#3RW^^--30@0@@	 E:z:
 
 

 	h
33333r"   c                    |                     ||          }|j                                        ddgk    sJ |                     dg||          }|j                                        g dk    sJ |                     ddg||          }|j                                        g dk    sJ |                     ddgd	||
          }|j                                        g dk    sJ |                     ddgd	dg||
          }t          d|d                                         dz  d|d                                         dz  |d	gdz  dgdz  z   ||d	                                         |d                                         z   idd||g          }	t	          j        ||	           |                                }
d|
j        _        |
                                 }|j                                        ddgk    sJ d S )NrF   r1   r6   r   rD   r3   r7   )r   r1   r6   r   )r   r   r1   r6   r   rD   rE   r3   r7   r   r
   r   rR   foor<   )r   r   r>   r   rI   rJ   copyname)r?   r!   r7   r3   result15result16result17result18result19
expected19df20result20s               r    test_custom_var_and_value_namez'TestMelt.test_custom_var_and_value_name   sA   77H7DD&&((UEN::::77E7X*7UU&&((,A,A,AAAAA77ENX*  
 
 &&((,H,H,HHHHH77EN!	  
 
 &&((,H,H,HHHHH77ENSz!	  
 
 r%y''))A-r%y''))A-3%"*urz1RW^^--30@0@@	 E8Z8
 
 

 	h
333wwyy!99;;&&((UG,<<<<<<<r"   rH   r,   c                 t    |                     |          }|j                                        ddgk    sJ d S )NrG   r,   r<   r=   )r?   rH   r/   r   s       r    test_col_levelzTestMelt.test_col_level  s?    hhh++{!!##w'7777777r"   c                 p    |                                 }|j                                        g dk    sJ d S )N)r,   r-   r<   r=   )r?   r/   r   s      r    test_multiindexzTestMelt.test_multiindex  s;    hhjj{!!##'>'>'>>>>>>>r"   col2010   z
US/Pacific)r   tz)r_   r`   cr_   dcategorydtype)r   rd   r   r   r   c                    t          t          d          |g d|d          }t          j        t          j        g d          |gd          }t          |ddgdd	
          }t          t          t          d                    dz  t          j        |gdz  d          dgdz  dgdz  z   |d          }g d|_        t          j	        ||           d S )Nr   )rd   r   r   r   r   )klassr   attr1attr2Tignore_indexr   r   	attributer<   r   r
   r   r   r   rd   r
      )r   r   r   r<   )
r   rangepdconcatSeriesr   r   r   rI   rJ   )r?   r   r!   expected_valuer@   r[   s         r    test_pandas_dtypeszTestMelt.test_pandas_dtypes  s     Ahhs___sSS
 
 BIooo$>$>#DSWXXX%(;7
 
 
 a>>A%9cUQYT:::9q=G9q=0!	 
 
 BAA
fh/////r"   c                     t          ddgt          j        ddg          d          }t          |dgdg          }t          t          j        ddg          ddgddgd          }t	          j        ||           d S )	Nrd   r
   XYrZ   r   r   )r   r;   r<   )r   r   Categoricalr   rI   rJ   )r?   datar@   r[   s       r    test_preserve_categoryzTestMelt.test_preserve_category;  s    1vBNC:,F,FGGHHdSEC5)).#s,,3*PQSTvVV
 
 	fh/////r"   c                    t          t          j                            d                              d          t          d                    }d}t          j        t          |          5  |	                    ddgd	d
g           d d d            n# 1 swxY w Y   t          j        t          |          5  |	                    ddgdd
g           d d d            n# 1 swxY w Y   t          j        t          |          5  |	                    g ddd
g           d d d            n# 1 swxY w Y   |
                                }t          d          t          d          g|_        t          j        t          |          5  |	                    dgdg           d d d            n# 1 swxY w Y   t          j        t          |          5  |	                    dgdgd           d d d            d S # 1 swxY w Y   d S )Nr
   )r   r   abcdrR   zEThe following id_vars or value_vars are not present in the DataFrame:rh   r_   r`   Cr   r   r   )r_   r`   not_hereor_therer   )Er_   ra   Fr   rG   )r   r   r   r   r   r   rj   rk   KeyErrorr   r   r   )r?   r!   rm   multis       r     test_melt_missing_columns_raisesz)TestMelt.test_melt_missing_columns_raisesE  s=    I!!!$$44V<<d6ll
 
 

 V]83/// 	, 	,GGS#Jc
+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, ]83/// 	, 	,GGS#Jc
+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, ]
 
 
 	D 	D GG666c
CCC		D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 		ftF||4]83/// 	3 	3JJ
|j\222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 ]83/// 	2 	2JJuseqJ111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2sZ   ,BBB9C  C$'C$D--D14D1
F//F36F3G==HHc                 (   t          dgdgdgdgd          }t          |ddgdd	g
          }t          dgdz  dgdz  t          d          ddgd          }|d                             t                    |d<   t          j        ||           d S )Nr   barrd   r
   )r   r_   r`   r   r   r_   r`   r   rC   bd)r   r_   r;   r<   r;   )r   r   r   r   objectrI   rJ   r?   r!   r@   r[   s       r    test_melt_mixed_int_str_id_varsz(TestMelt.test_melt_mixed_int_str_id_varsh  s    E7%s!EEFFb1c(SzBBB!5'A+4::QRTUPVWW
 
  (
3::6BB
fh/////r"   c                     t          dgdgd          }t          |ddg          }t          ddgddgd          }t          j        ||           d S )Nr   r   )r   r_   r   r_   )rE   r;   r<   r   r   rI   rJ   r   s       r    "test_melt_mixed_int_str_value_varsz+TestMelt.test_melt_mixed_int_str_value_varss  sg    E7%1122baX...1c(eU^LLMM
fh/////r"   c                     t          dgdgddg          }t          |d          }t          dd	gddgd
ddg          }t          j        ||           d S )Nr   rd   r   r   firstr   Fr   r   r   r   r   r   s       r    test_ignore_indexzTestMelt.test_ignore_indexz  s}    sA3//yAAAbu---1a&99'7AS
 
 
 	fh/////r"   c                 ^   t           j                            ddgddg          }t          ddgdd	gd
|          }t	          |d          }t           j                            ddgdz  ddg          }t          dgdz  dgdz  z   g dd|          }t          j        ||           d S )N)r   second)r   thirdbazfoobarr.   r   rd   r
   r   r   r   Fr   r   r   r   r   )r   
MultiIndexfrom_tuplesr   r   rI   rJ   r?   r   r!   r@   expected_indexr[   s         r    test_ignore_multiindexzTestMelt.test_ignore_multiindex  s    )) "45eX=N * 
 
 1vq!f55UCCCbu---22 "459%AR 3 
 
 1w{2\\\JJ 
 
 

 	fh/////r"   c                    t          ddgdd          }t          ddgdd	gd
|          }t          |d          }t          ddgdz  dd          }t          g dg dd|          }t          j        ||           d S )Nr   r   r   r   )r   r   r   rd   r
   r   )xyr   Fr   )r   r   r   r   r   r   )r   r   r   rI   rJ   r   s         r    test_ignore_index_name_and_typez(TestMelt.test_ignore_index_name_and_type  s    uenJUCCCaV1a&11???bu---u~1%PPP---EE 
 
 

 	fh/////r"   c                     t          g dgg d          }|                    dgdg          }t          g dg dgg d	          }t          j        ||           d S )
N)idr
   r   )r_   r`   r`   rR   r_   r`   rC   )r   r`   r
   )r   r`   r   )r_   r;   r<   r   r   s       r     test_melt_with_duplicate_columnsz)TestMelt.test_melt_with_duplicate_columns  s    ~???#C599^^^^^,6P6P6P
 
 
 	fh/////r"   r   Int8Int64c                 (   t          t          j        ddgd          t          j        ddg|          d          }|                                }t          g dt          j        g d	|          d
          }t	          j        ||           d S )Nrd   r
   r   r   r   r   r_   r`   )r_   r_   r`   r`   )rd   r
   r   r   r   )r   r   r   r   rI   rJ   )r?   r   r!   r@   r[   s        r    test_melt_ea_dtypezTestMelt.test_melt_ea_dtype  s     Y1vV444Y1vU333 
 
 000<<<u=== 
 
 	fh/////r"   c                 R   t          dddddddddd	d
dd          }|j                            d          |_        |                    dgdg          }t          t	          d          t          j        dgdz  d          g dd          }t          j        ||           d S )Nr_   r`   r   rc   rd   r   r   r
   r      )r   r   r   zstring[python]r   r   rC   r+   r   )rd   r   r   )r   r;   r<   )	r   r   r   r   r   r   r   rI   rJ   r   s       r    test_melt_ea_columnszTestMelt.test_melt_ea_columns  s    --qQ''qQ'' 
 
 Z&&'788
#C599%[[Iseai7GHHH" 
 
 	fh/////r"   c                 &   t          dt          j        dd          t          j        dd          ddt          j        dd          t          j        dd          dgd	d
g          }|                    dgddgdd          }t          ddddddddddt          j        dd          t          j        dd          t          j        dd          t          j        dd          dd          }t	          j        ||           d S )NA0z
2023/03/01z
Asia/Tokyo)r   z
2023/03/10)type
start_dateend_dateA1z
2023/03/11aaaabbbbr   r   r   r   r   	start/enddater   r   z2023-03-01 00:00:00+0900z2023-03-10 00:00:00+0900z2023-03-11 00:00:00+0900)r   r   r   )r   r   	Timestampr   rI   rJ   r   s       r    test_melt_preserves_datetimez%TestMelt.test_melt_preserves_datetime  sk    !"$,|"M"M"M "\l K K K  !"$,|"M"M"M "\l K K K  6"
 
 
 H$j1 	  
 
  Tdt<<##!!	  |$><PPP|$><PPP|$><PPP|$><PPP	  
 
" 	fh/////r"   c                     t          g dg ddg d          }|                    ddd	          }t          g dd
gdz  g dd          }t          j        ||           d S Nrd   r
   r   r   r   r   r   112233r   r_   r   rd   r   r`   r   )r_   r   rd   r   r   s       r    #test_melt_allows_non_scalar_id_varsz,TestMelt.test_melt_allows_non_scalar_id_vars  s     yyyyy11$$$
 
 
   
 

 999#yyyIIJJ
fh/////r"   c                     t          g dg ddg d          }|                    dgdd	          }t          g dd
gdz  g dd          }t          j        ||           d S r   r   r   s       r    $test_melt_allows_non_string_var_namez-TestMelt.test_melt_allows_non_string_var_name  s     yyyyy11$$$
 
 
 E  
 

 999#yyyIIJJ
fh/////r"   c                     t          g dg ddg d          }t          j        t          d          5  |                    dgd	d
g           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   z.* must be a scalar.rh   r_   rd   r
   rp   )r   rj   rk   rl   r   r?   r!   s     r    $test_melt_non_scalar_var_name_raisesz-TestMelt.test_melt_non_scalar_var_name_raises  s     yyyyy11$$$
 
 
 ]:-DEEE 	4 	4GGSEQFG333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   AA"%A"N)*__name__
__module____qualname__rA   rK   rP   rW   rj   markparametrizetupler   r   arrayr\   rb   r   rf   rn   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   r"   r    r9   r9   6   s       @ @ @M M MO O O2 2 2  [WudBH&=>>0 0 ?>00 0 0 [2 	!)iIFF#&3377%.8!H!H  	 	!)iIFF#&3377%.8!H!H  		
 :0 0; :0 [*&\:&$	
 = = =2 2 264 4 4:(= (= (=T [[1e*558 8 658? ? ? [BIjj|DDDEEBI///zBBBBIooo&&	
 0 0 0(0 0 0!2 !2 !2F	0 	0 	00 0 00 0 00 0 0$0 0 00 0 0 [Wvw&7880 0 980"0 0 0('0 '0 '0R0 0 00 0 04 4 4 4 4r"   r9   c                       e Zd Zd ZdS )TestLreshapec                 F   g dg dg dg dg ddt           j        ddd	gd
t           j        t           j        ddgg ddt           j        dddgdt           j        t           j        ddgd
}t          |          }d t          dd          D             d t          dd          D             d}t	          ||          }g dg dg dg dg dg d d!}t          ||j        "          }t          j        ||           t	          ||d#$          }g d%g d&g d'g d(d)d*d+d,d-dt           j        ddd	d
t           j        t           j        ddgd.dd/d0d1dt           j        ddddt           j        t           j        ddgd!}t          ||j        "          }t          j        ||           d2 t          dd3          D             d4 t          dd          D             d}d5}t          j	        t          |6          5  t	          ||           d d d            d S # 1 swxY w Y   d S )7N)	08jan2009	20dec2008	30dec2008	21dec2008	11jan2009)      C  %  )e   f   g   h   i   )MaleFemaler  r  r  )r  	22dec2008	04jan2009	29dec2008	20jan2009	21jan2009	22jan2009	31dec2008	03feb2009	05feb2009	02jan2009	15feb2009)i  i
  i  i  i       l@     @     @     ߱@     @     b@     Ų@)
birthdtbirthwtr   sexvisitdt1visitdt2visitdt3wt1wt2wt3c                     g | ]}d |d	S visitdtr   r2   .0is     r    
<listcomp>z+TestLreshape.test_pairs.<locals>.<listcomp><       ===A!===r"   rd   r   c                     g | ]}d |d	S wtr   r2   r:  s     r    r=  z+TestLreshape.test_pairs.<locals>.<listcomp>=       333!::::333r"   )r9  rA  )r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  )     |@r)       4@     ĩ@     Ұ@r'  r(  r)  r*  r+  r,  r-  )r.  r/  r   r0  r9  rA  rR   F)dropna)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC  rD  rE  rF  c                     g | ]}d |d	S r8  r2   r:  s     r    r=  z+TestLreshape.test_pairs.<locals>.<listcomp>  r>  r"   r   c                     g | ]}d |d	S r@  r2   r:  s     r    r=  z+TestLreshape.test_pairs.<locals>.<listcomp>  rB  r"   z$All column lists must be same lengthrh   )r   nanr   r   r   r   rI   rJ   rj   rk   rl   )r?   r   r!   specr@   exp_dataexprm   s           r    
test_pairszTestLreshape.test_pairs  sS      655+++CCC   %bfk;T$bfbfk;O111BFFFF;BFBFFF;-
 
2 t__ >=q!===33uQ{{333
 
 "d##     ONN      uH
 H
R &.999
fc***"d5111  "  "  "  $ $ mg
 g
P &.999
fc*** >=q!===33uQ{{333
 
 5]:S111 	 	R	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   8HHHN)r  r  r  rN  r2   r"   r    r	  r	    s(        ` ` ` ` `r"   r	  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestWideToLongc                 6   t           j                            d                              d          }t	          ddddddd	dd
dddddddt          t          t          d          |                    d          }|j        |d<   |	                                |	                                z   g dg dg dg dd}t	          |          }|
                    ddg          g d         }t          |ddgdd          }t          j        ||           d S )Nr
   r   r_   r`   r   rc   r   ef      @333333?ffffff?皙	@?皙?)A1970A1980B1970B1980r   r   r_   r`   r   r   rR  rS  rT  rU  rV  rW  rX  rY    ra  ra    rb  rb  r   rd   r
   r   rd   r
   r   r   r   yearr   re  r   r   r   r   r   r<  jr   r   r   r   r   dictzipr   r   r>   	set_indexr   rI   rJ   r?   r   r!   rL  r[   r@   s         r    test_simplezTestWideToLong.test_simple  sD   I!!!$$44Q77 SS11 SS11 SS11 SS11#eAhh**++ 
 
 84ahhjj(//////888$$$
 
 X&&%%tVn55oooFb3*???
fh/////r"   c                     t          g dg dg          }g d|_        ddg}t          ||dd           |ddgk    sJ d S )	N)r   rd   r
   r      )r   r   r      	   )r   inc1inc2edu1edu2incedur   agerg  )r   r   r   )r?   r!   stubss      r    
test_stubszTestWideToLong.test_stubs  sd    9::;;;
R$%0000&&&&&&r"   c                 8   t           j                            d                              d          }t	          ddddddd	dd
dddddddt          t          t          d          |                    d          }|j        |d<   |	                                |	                                z   g dg dg dg dd}t	          |          }|
                    ddg          g d         }t          |ddgddd          }t          j        ||           d S )Nr
   r   r_   r`   r   rc   r   rR  rS  rT  rU  rV  rW  rX  rY  )zA.1970zA.1980zB.1970zB.1980r   r   r^  r_  r`  rc  rd  re  rf  r   r   .r<  rh  sepri  rm  s         r    test_separating_characterz(TestWideToLong.test_separating_character%  sH    I!!!$$44Q77!cc22!cc22!cc22!cc22#eAhh**++ 
 
 84ahhjj(//////888$$$
 
 X&&%%tVn55oooFb3*CHHH
fh/////r"   c                 6   t           j                            d                              d          }t	          ddddddd	dd
dddddddt          t          t          d          |                    d          }|j        |d<   |	                                |	                                z   g dg dg dg dd}t	          |          }|
                    ddg          g d         }t          |ddgdd          }t          j        ||           d S )Nr
   r   r_   r`   r   rc   r   rR  rS  rT  rU  rV  rW  rX  rY  )zA(quarterly)1970zA(quarterly)1980zB(quarterly)1970zB(quarterly)1980r   r   r^  r_  r`  rc  )r   A(quarterly)B(quarterly)re  r   re  )r   r  r  r  r  rg  ri  rm  s         r    test_escapable_charactersz(TestWideToLong.test_escapable_characters?  sL   I!!!$$44Q77(+$<$<(+$<$<(+$<$<(+$<$<#eAhh**++ 
 
 84ahhjj(::::::888$$$
 
 X&&%%tVn55111
 b>>"BdfUUU
fh/////r"   c                 R   t          ddgddgddgddgd	          }|j        |d
<   g dg dddt          j        t          j        gg dg dd}t          |          }|                    d
dg          g d         }t          |ddgd
d          }t          j        ||           d S )N      ?       @      @      @      @      @X1X2A2010A2011B2010r   r   r  r  r  r  r  r  r  r  )r   rd   r   rd   )  r    r  )r   r   r   r   re  re  rf  r   r   rg  )r   r   r   rJ  rl  r   rI   rJ   r?   r!   rL  r[   r@   s        r    test_unbalancedzTestWideToLong.test_unbalancedY  s    sssD\	 
 
 84)))%%%sBFBF+,,,,,
 
 X&&%%tVn55oooFb3*???
fh/////r"   c                    t          g dg dg dg dg dg dg dg dd          }|j        |d	<   t          g d
g d
g dg dg dg dg dd          }|                    d	dg          g d         }t          |g dd	d          }t	          j        |                    d          |                    d                     d S )Na11a22a33a21r  a23b11b12b13b21b22b23r   r   [   \   ]   )A11A12B11B12BB11BB12BBBXBBBZr   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rd   r
   r   r   r   r   rc     r  r     r  r  )r  r  r   r   BBr   re  re  )r  r  r   r   r  r   r   r  rg  rd   axisr   r   rl  r   rI   rJ   
sort_indexr?   r!   r[   r@   s       r    test_character_overlapz%TestWideToLong.test_character_overlapp  s>   ,,,,,,,,,,,,!		!		$$	 	
 
 84000000??????((((((000 

 

 %%tVn556V6V6VWb"2"2"2dfEEE
f//Q/779L9LRS9L9T9TUUUUUr"   c           	         d}t          ddgddgddgdd	gd
          }|j        |d<   dg g g g g g g d}t          |                              dt          j        i          }|                    ddg          g d         }|j                            ddgd          |_        t          |ddgdd|          }t          j	        |
                    d          |
                    d                     d S )Nznope!r  r  r  r  r  r  r  r  r  r    )r   r  r  r  r   re  r   r   re  )r   r  r  r  r   r   r   rd   levelr   r   r~  r  r   r   r   r   r   rl  
set_levelsr   rI   rJ   r  )r?   r  r!   rL  r[   r@   s         r    test_invalid_separatorz%TestWideToLong.test_invalid_separator  s0   sssD\	 
 
 84	
 	
 X&&--vrx.@AA%%tVn55666
 "22Aq62CCb3*CHHH
f//Q/779L9LRS9L9T9TUUUUUr"   c                    t          g dg dg dg dg dg dg dg dd          }|j        |d	<   t          g d
g d
g dg dg dg dg dd          }|                    d	dg          g d         }t          |g dd	d          }t	          j        |                    d          |                    d                     d S )Nr  r  r  r  r   r   r  )r  r  r  r  r  r  AratingArating_oldr   r  r  r  r  rc  r  )r  r  r   r   r  r   re  re  )r  r  r   r   r  r  rg  rd   r  r  r  s       r    test_num_string_disambiguationz-TestWideToLong.test_num_string_disambiguation  sD    ,,,,,,,,,,,,!		!		'<<+||	 	
 
 84333777??????((((((000 

 

 %%tVn55666
 b"2"2"2dfEEE
f//Q/779L9LRS9L9T9TUUUUUr"   c           	         t          ddgddgddgddgd	          }|j        |d
<   dg g g g g g g d}t          |                              dt          j        i          }|                    d
dg          }|j                            ddgd          |_        t          |ddgd
d          }t          j	        |
                    d          |
                    d                     d S )Nr  r  r  r  r  r  r  r  )AoneAtwoBoner   r   r  )r   r  r  r  r   re  r   r   re  r   rd   r  r   r   rg  r  r  r  s        r    test_invalid_suffixtypez&TestWideToLong.test_invalid_suffixtype  s    c
c
c
D\	 
 
 84	
 	
 X&&--vrx.@AA%%tVn55!22Aq62CCb3*???
f//Q/779L9LRS9L9T9TUUUUUr"   c                    t          g dg dg dg dd          }t          g dg dg dg d	d
          }|                    g d          dg         }t          |dddgd          }t          j        ||           d S )N)	rd   rd   rd   r
   r
   r
   r   r   r   )	rd   r
   r   rd   r
   r   rd   r
   r   )	ffffff@333333@皙@r
   ?ffffff?r  ffffff@ @)	333333@ffffff@r  rW  r  333333@ffffff
@r  r  )famidbirthht1ht2)r  r  r  r  r  r  r  rW  r  r  r  r  r  r  r  r  r  r  )rd   rd   rd   rd   rd   rd   r
   r
   r
   r
   r
   r
   r   r   r   r   r   r   )rd   rd   r
   r
   r   r   rd   rd   r
   r
   r   r   rd   rd   r
   r
   r   r   )rd   r
   rd   r
   rd   r
   rd   r
   rd   r
   rd   r
   rd   r
   rd   r
   rd   r
   )htr  r  ry  )r  r  ry  r  r  r  ry  rg  r   rl  r   rI   rJ   r  s       r    test_multiple_id_columnsz'TestWideToLong.test_multiple_id_columns  s    444444BBBDDD	 
 
   ( POOOOOMMM/ 
 
6 %%&?&?&?@@$Hb$7G*<FFF
fh/////r"   c                     t          g dg dg dd          }d}t          j        t          |          5  t	          |ddgdd	
           d d d            d S # 1 swxY w Y   d S )N)rd   r
   r   r   r   )rd   rd   rd   rd   rd   )A_A1B_B1r   z3the id variables need to uniquely identify each rowrh   A_AB_Br   colnamerg  r   rj   rk   rl   r   r?   r!   rm   s      r    test_non_unique_idvarsz%TestWideToLong.test_non_unique_idvars  s     $__oooOOOTT
 
 D]:S111 	A 	AeU^si@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   AA!Ac                     t          g dg dg dg dg dd          }t          g dg dg d	g d
d                              ddg          }t          |ddgddd          }t          j        ||           d S )N)CCH PounderJohnny DeppChristoph Waltz)Joel David MooreOrlando BloomRory Kinnear)     @@     @     |@)     @@     @     x@)AvatarPirates of the CaribbeanSpectre)actor_1actor_2actor_fb_likes_1actor_fb_likes_2title)r  r  r  r  r  r  )r  r  r  r  r  r  )rd   rd   rd   r
   r
   r
   )r  r  r  r  r  r  )actoractor_fb_likesnumr  r  r  r  r  _r~  r  r  s       r    test_cast_j_intzTestWideToLong.test_cast_j_int  s    LLLPPP$>$>$>$:$:$:JJJ 
 
    #S"R"R)))   
 
* )We$
%
%+ 	, *+w%S
 
 
 	fh/////r"   c                     t          ddgddgddgddgd	          }d
}t          j        t          |          5  t	          |ddgdd           d d d            d S # 1 swxY w Y   d S )Nr  r  r  r  r  r  r  r  )r  r  r  r   z,stubname can't be identical to a column namerh   r   r   r  rg  r  r  s      r    test_identical_stubnamesz'TestWideToLong.test_identical_stubnamesD  s    sssD\	 
 
 =]:S111 	= 	=c3Z3)<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   AA!$A!c                 (   t          ddgddgddgddgd	          }t          g d
g dddt          j        t          j        gg dd          }|                    ddg          }t	          |ddgdddd          }t          j        ||           d S )Nr  r  r  r  r  r  r  r  )treatment_placebotreatment_testresult_placebor   r  )placebor  testr  r  r   r  r@   	treatmentr   r  r@   r  z[a-z]+r  r<  rh  suffixr  r   r   rJ  rl  r   rI   rJ   r  s       r    test_nonnumeric_suffixz%TestWideToLong.test_nonnumeric_suffixQ  s    &)3Z#&*#&*D\	 
 
 ---AAARVRV4111	 
 
 %%sI&677;'3)HRU
 
 
 	fh/////r"   c                     t          ddgddgddgddgd	d
gd          }t          g dg dg dg dd                              ddg          }t          |ddgdddd          }t          j        ||           d S )Nr  r  r   rr  r  r  r  r  r  r  )r   result_1
result_footreatment_1treatment_foor  )1r  r   r   )              "@r  r  r  r  r   r  r@   r  z.+r  r  r  r  s       r    test_mixed_type_suffixz%TestWideToLong.test_mixed_type_suffixh  s    D\F"Cj #Sz"%s 
 
 ---333...111	 
 
 )S)$
%
% 	 ;'3)Dc
 
 
 	fh/////r"   c                    t          ddgddgddgddgd	d
gd          }t          g dg dddddt          j        t          j        t          j        t          j        gt          j        t          j        t          j        t          j        ddddgd          }|                    ddg          }t	          |ddgdddd          }t          j        ||           d S )Nr  r  r  r  r  r  r   rr  r  r  )ztreatment_1.1ztreatment_2.1z
result_1.2r  r   )r  r  r  r  r  r  r  r  )rU  rU  r  r  皙?r!  r  r  r  r  r  r   r  r@   r  z[0-9.]+r  r  r  r  s       r    test_float_suffixz TestWideToLong.test_float_suffix  s    "%s"%s"CjFD\ 
 
 EEECCCS#rvrvrvrvN fbfbfbfc3SQ	 
 
 %%sI&677;'3)ISV
 
 
 	fh/////r"   c           
          ddddddddd	d
ddddddddddddddddddddd}t          j        |          }t          |dgddgd          }t          |dddgd          }t          j        ||           d S )Nr   rd   r
   r   r   )r   rd   r
   r   r   g?r  g      ?r  gQ?gGz?gQ?g\(\?g333333?gp=
ף?g{Gz?gp=
ף?gq=
ףp?g(\?rV  )node_idr   PA0PA1PA3PAr$  r   time)	stubnamesr<  rh  )r   	from_dictr   rI   rJ   )r?   	wide_datawide_dfr[   r@   s        r    test_col_substring_of_stubnamez-TestWideToLong.test_col_substring_of_stubname  s    
 qQ155cdst<<$3??$4@@$4@@
 
	 %i00D6i=MQWXXXg)S9IVTTT
fh/////r"   c                    t          t          d          t          ddd          d          }t          j        t
          t          j        d                    5  |                    dd	           d d d            d S # 1 swxY w Y   d S )
Nr*   r      r
   )r   r<   zvalue_name (value) cannot matchrh   r<   rz   )	r   r   r   rj   rk   rl   reescaper   r   s     r    test_raise_of_column_name_valuez.TestWideToLong.test_raise_of_column_name_value  s     tE{{U2r15E5EFFGG]bi(IJJ
 
 
 	9 	9 GGGG888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   BBBc                    |r9|dk    r3|                     t          j                            d                     t	          ddgddgdd	gd
          }|                    d|i          }t          |ddgddd          }t          g dd          }t	          g dt          j	        gdz  d|          }|j
        j        d                             |          }|dk    r%|j
        j        d                             d          }|j
                            |d          |_
        t          j        ||           d S )Nr   zTODO(infer_string))reasonr  2d      ,    )r   za-1za-2r   r_   r`   r  -)r*  r<  rh  r  ))r  rd   )r6  rd   )r  r
   )r6  r
   )r   r  )r   )r7  r8  r9  r:  r   r   r   r   strr  )applymarkerrj   r  xfailr   r   r   r   r   rJ  r   levelsr  rI   rJ   )	r?   requestany_string_dtypeusing_infer_stringr!   r@   r   r[   	new_levels	            r    test_missing_stubnamez$TestWideToLong.test_missing_stubname  sp    	P"2h">"> 1 19M 1 N NOOOsCj#sS#JOOPPYY./00Cj
 
 
 444
 
 
 &&&bfX\::
 
 
 N)!,334DEE	x'' -a077>>I!229A2FF
fh/////r"   N)r  r  r  rn  r{  r  r  r  r  r  r  r  r  r  r  r
  r  r  r"  r.  r3  rD  r2   r"   r    rP  rP    sC       0 0 00' ' '0 0 040 0 040 0 0.V V V<V V V<V V VBV V V:'0 '0 '0RA A A%0 %0 %0N= = =0 0 0.0 0 0.0 0 000 0 0 	9 	9 	90 0 0 0 0r"   rP  c                    t          j        | t          j                  }t	          ddiddiddiddiddid          }|j                            |          |_        t          |dddd	d
          }t	          ddgddgddggt          ddg          t           j	        
                    g dt          g d|          gddg                    }t          j        ||           d S )N)na_valuer   rd   r
   )IDR_test1R_test2R_test3DRrG  	UNPIVOTEDr  z.*)r*  r<  rh  r  r  rK  )rd   rd   rd   )test1test2test3r   r   r   )r   StringDtyper   rJ  r   r   r   r   r   r   from_arraysrI   rJ   )string_storagestring_dtyper!   r@   r[   s        r     test_wide_to_long_string_columnsrU    s+   >.26BBBL	a&1v1v1vQ	
 	

 
B ""<00BJ
cT[c$  F 
Q!Q!Q sCj!!m''		111FFF % ( 
 

 
 
H &(+++++r"   )r1  numpyr   rj   pandasr   r   r   r   r   r   r   pandas._testing_testingrI   fixturer!   r/   r3   r7   r9   r	  rP  rU  r2   r"   r    <module>r[     s   				                                  
 
 
      e4 e4 e4 e4 e4 e4 e4 e4Pa a a a a a a aHJ0 J0 J0 J0 J0 J0 J0 J0Z, , , , ,r"   