
    PiW                     &   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    r/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/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                       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ddddd
d
d
ddddddfdgdgd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d%d&d'(           ej        g d)          g d*g          d+             Zd, Zd- Zd. Zd/ Zd0 Zd1 Z d2 Z!d3 Z"ej        	                    d4d5d6g          d7             Z#d8 Z$d9 Z%d: Z&d; Z'd< Z(d= Z)d> Z*d? Z+d@S )A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          |          }t          j        ||           d S )NrG   )r   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   sA    8 ':CCX&&
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   rr   )	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)r   rd   r   r   r   c                    t          j        |          }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<   )
pdSeriesr   rangeconcatr   r   r   rI   rJ   )r?   r   r!   expected_valuer@   r[   s         r    test_pandas_dtypeszTestMelt.test_pandas_dtypes  s    inn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_category9  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!   rm   s      r     test_melt_missing_columns_raisesz)TestMelt.test_melt_missing_columns_raisesC  s0    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 6llDLL1
]83/// 	0 	0GGZL:,///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 ]83/// 	/ 	/GGSEC5AG...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sZ   ,BBB9C  C$'C$D--D14D16FF"FG))G-0G-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_varse  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_varsp  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_indexw  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   categoryr   )dtyper   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
   rq   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"c                    t          dgdgd          }t          ddgg d          }t          j        |                    dd	g
          |           t          j        |                    dg
          |ddg                    d S )Nrd   r
   r^   )r   r`   )r   r_   rd   )r   r`   r
   )r   r   r<   rR   r   r   rp   r<   )r   rI   rJ   r   )r?   r!   r[   s      r    %test_melt_multiindex_columns_var_namez.TestMelt.test_melt_multiindex_columns_var_name  s    QCaS99::M*4P4P4P
 
 
 	bgg/BgCCXNNN
bggyg998WgDV;WXXXXXr"   c                     t          dgdgd          }t          j        t          d          5  |                    g d           d d d            d S # 1 swxY w Y   d S )Nrd   r
   r  z,but the dataframe columns only have 2 levelsrh   )r   r   r   rp   r   r  s     r    .test_melt_multiindex_columns_var_name_too_manyz7TestMelt.test_melt_multiindex_columns_var_name_too_many%  s    QCaS99::]L
 
 
 	; 	; GG999G:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   AAAc                     t          g dg dgg d          }d}t          j        t          |          5  |                    dgdg	           d d d            d S # 1 swxY w Y   d S )
Nr   )r   r   r   )r   r   r   rR   z)id_vars cannot contain duplicate columns.rh   r   r   rC   r   r   s      r    (test_melt_duplicate_column_header_raisesz1TestMelt.test_melt_duplicate_column_header_raises.  s    			999-GGG9]:S111 	5 	5GGSEseG444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   AA"%A"N),__name__
__module____qualname__rA   rK   rP   rW   rj   markparametrizetupler   r   arrayr\   rb   rf   rn   ry   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	  r2   r"   r    r9   r9   6   s       @ @ @M M MO O O2 2 2  [WudBH&=>>0 0 ?>00 0 0 [2 %)	BB"ss33!*xGDD 		 %)	BB"ss33!*xGDD 			
 20 03 20 [*&\:&$	
 = = =2 2 264 4 4:(= (= (=T [[1e*558 8 658? ? ? [Jvq\:::BN44455OO	
 0 0 0*0 0 0 /  /  /D	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	Y 	Y 	Y; ; ;5 5 5 5 5r"   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>U       ===A!===r"   rd   r   c                     g | ]}d |d	S wtr   r2   rC  s     r    rF  z+TestLreshape.test_pairs.<locals>.<listcomp>V       333!::::333r"   )rB  rJ  )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/  )     |@r2       4@     ĩ@     Ұ@r0  r1  r2  r3  r4  r5  r6  )r7  r8  r   r9  rB  rJ  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(  rL  rM  rN  rO  c                     g | ]}d |d	S rA  r2   rC  s     r    rF  z+TestLreshape.test_pairs.<locals>.<listcomp>  rG  r"   r   c                     g | ]}d |d	S rI  r2   rC  s     r    rF  z+TestLreshape.test_pairs.<locals>.<listcomp>  rK  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_pairs8  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  rW  r2   r"   r    r  r  7  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   r[  r\  r]  r^  r_  r`  ra  rb    rj  rj    rk  rk  r   rd   r
   r   rd   r
   r   r   r   yearr   rn  r   r   r   r   r   rE  jr   r   r   r   r   dictzipr   r   r>   	set_indexr   rI   rJ   r?   r   r!   rU  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   agerp  )r   r   r   )r?   r!   stubss      r    
test_stubszTestWideToLong.test_stubs4  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   r[  r\  r]  r^  r_  r`  ra  rb  )zA.1970zA.1980zB.1970zB.1980r   r   rg  rh  ri  rl  rm  rn  ro  r   r   .rE  rq  seprr  rv  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   r[  r\  r]  r^  r_  r`  ra  rb  )zA(quarterly)1970zA(quarterly)1980zB(quarterly)1970zB(quarterly)1980r   r   rg  rh  ri  rl  )r   A(quarterly)B(quarterly)rn  r   rn  )r   r  r  r  r  rp  rr  rv  s         r    test_escapable_charactersz(TestWideToLong.test_escapable_charactersX  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   rn  rn  ro  r   r   rp  )r   r   r   rS  ru  r   rI   rJ   r?   r!   rU  r[   r@   s        r    test_unbalancedzTestWideToLong.test_unbalancedr  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   rl     r  r     r  r  )r  r  r   r   BBr   rn  rn  )r  r  r   r   r  r   r   r  rp  rd   axisr   r   ru  r   rI   rJ   
sort_indexr?   r!   r[   r@   s       r    test_character_overlapz%TestWideToLong.test_character_overlap  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   rn  r   r   rn  )r   r  r  r  r   r   r   rd   levelr   r   r  r  r   r   r   r   r   ru  
set_levelsr   rI   rJ   r  )r?   r  r!   rU  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  rl  r  )r  r  r   r   r  r   rn  rn  )r  r  r   r   r  r  rp  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   rn  r   r   rn  r   rd   r  r   r   rp  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  r`  r  333333@ffffff
@r  r  )famidbirthht1ht2)r  r  r  r  r  r  r  r`  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  r  )r  r  r  r  r  r  r  rp  r   ru  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   colnamerp  r   rj   rk   rl   r   r   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_int6  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  rp  r  r   s      r    test_identical_stubnamesz'TestWideToLong.test_identical_stubnames]  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  rE  rq  suffixr  r   r   rS  ru  r   rI   rJ   r  s       r    test_nonnumeric_suffixz%TestWideToLong.test_nonnumeric_suffixj  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   r{  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_suffix  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   r{  r  r  )ztreatment_1.1ztreatment_2.1z
result_1.2r   r   )r  r  r  r  r  r  r  r  )r^  r^  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(\?r_  )node_idr   PA0PA1PA3PAr,  r   time)	stubnamesrE  rq  )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<   r{   )	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                    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$  2d      ,    )r   za-1za-2r   r_   r`   r  -)r2  rE  rq  r  ))r$  rd   )r=  rd   )r$  r
   )r=  r
   )r   r  )r   )r>  r?  r@  rA  r   r   r   r   r   strr  )r   r   r   r   r   rS  r   levelsr  rI   rJ   )r?   any_string_dtyper!   r@   r   r[   	new_levels          r    test_missing_stubnamez$TestWideToLong.test_missing_stubname  s4   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  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r'  r*  r6  r;  rG  r2   r"   r    rY  rY    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"   rY  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RrJ  	UNPIVOTEDr  z.*)r2  rE  rq  r  r  rN  )rd   rd   rd   )test1test2test3r   r   r   )r   StringDtyper   rS  r   r   r   r   r   r   from_arraysrI   rJ   )string_storagestring_dtyper!   r@   r[   s        r     test_wide_to_long_string_columnsrX    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"   )r9  numpyr   rj   pandasr   r   r   r   r   r   r   pandas._testing_testingrI   fixturer!   r/   r3   r7   r9   r  rY  rX  r2   r"   r    <module>r^     s   				                                  
 
 
      ~5 ~5 ~5 ~5 ~5 ~5 ~5 ~5Ba a a a a a a aHG0 G0 G0 G0 G0 G0 G0 G0T, , , , ,r"   