a
    Pf                     @   s   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d Zejdd Zejdd Zejd	d
 ZG dd dZG dd dZG dd dZdd ZdS )    N)	DataFrameIndex
date_rangelreshapemeltwide_to_longc                  C   sf   t tjddttdtdtddddd	} | d
 dk	tj
| d< | d dk	tj
| d< | S )N   )
      ABCDdtypez
2000-01-01r	   B)periodsfreqcolumnsindexAr   id1id2)r   nprandomdefault_rngstandard_normalr   listobjectr   astypeint64res r!   W/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/reshape/test_melt.pydf   s    r#   c                  C   s<   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   r!   r!   r"   df1   s    r/   c                   C   s   dS )Nvarr!   r!   r!   r!   r"   var_name,   s    r1   c                   C   s   dS )Nvalr!   r!   r!   r!   r"   
value_name1   s    r3   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zej	d	e
eejfd
d Zd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d Zej	d d!d"ggd!gd"gd!d"ggd#d$ Zd%d& Zd'd( Zd)d* Zej	d+dd,gd-d. Zd/d0 Zej	d1eed2d3d4d5ejg d6d7d8eg d9gd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE Z dFdG Z!dHdI Z"dJdK Z#ej	dLdMdNgdOdP Z$dQdR Z%dSdT Z&dUdV Z'dWdX Z(dYdZ Z)d[S )\TestMeltc                 C   s"   t |}|j ddgksJ d S )Nvariablevaluer   r   tolist)selfr#   resultr!   r!   r"   test_top_level_method7   s    zTestMelt.test_top_level_methodc                 C   s   t | t| t |jddgddgdt|ddgddgd t |j||dt|||d t |jddt|dd d S )	Nr   r   r   r   id_vars
value_varsr1   r3   r   	col_level)tmassert_frame_equalr   )r9   r#   r/   r1   r3   r!   r!   r"   test_method_signatures;   s    zTestMelt.test_method_signaturesc                 C   sl   |  }|j ddgksJ |j dgd}|j g dksBJ |j ddgd}|j g dkshJ d S )Nr5   r6   r   )r=   )r   r5   r6   r   r   r   r5   r6   r7   )r9   r#   r:   Zresult1Zresult2r!   r!   r"   test_default_col_namesJ   s    zTestMelt.test_default_col_namesc                 C   s   |j ddgdd}t|dks"J |j ddgddgd}t|d  d |d  d dgd dgd  |d  |d   dg dd	}t|| d S )
Nr   r   r   r<   r	   r   r   rE   r   )r   lenr   r8   rB   rC   )r9   r#   Zresult3Zresult4Z	expected4r!   r!   r"   test_value_varsT   s    	zTestMelt.test_value_varstype_c                 C   s|   t |d  d |d  d dgd dgd  |d  |d   dg dd}|jddg|d	d
}t|| d S )Nr   r   r   r   r	   r   rE   rG   r   r   r<   )r   r8   r   rB   rC   )r9   rJ   r#   expectedr:   r!   r!   r"   test_value_vars_typesd   s    	zTestMelt.test_value_vars_typesc                 C   sX   t |d dgt| dgt| |d dg dd}|jdgdgd}t|| d S )Nr   ar   br   rP   )rN   r,   r-   r6   rG   r<   )r   rH   r   rB   rC   )r9   r/   rL   r:   r!   r!   r"   test_vars_work_with_multiindexs   s    
z'TestMelt.test_vars_work_with_multiindexz(id_vars, value_vars, col_level, expectedr   r   r   r$   r&   r(   r      r   r%   r'   r)   )r   r,   r6   rO   rP   rT   )rO   r-   r6   c                 C   s    |j |||d}t|| d S )Nr@   )r   rB   rC   )r9   r=   r>   rA   rL   r/   r:   r!   r!   r"   %test_single_vars_work_with_multiindex   s     z.TestMelt.test_single_vars_work_with_multiindexzid_vars, value_varsrN   rQ   c                 C   sD   d}t jt|d |j||d W d    n1 s60    Y  d S )NzF(id|value)_vars must be a list of tuples when columns are a MultiIndexmatchr<   )pytestraises
ValueErrorr   )r9   r=   r>   r/   msgr!   r!   r"   $test_tuple_vars_fail_with_multiindex   s    z-TestMelt.test_tuple_vars_fail_with_multiindexc           	      C   s"  |j |d}|j ddgks"J |j dg|d}|j g dksHJ |j ddg|d}|j g dkspJ |j ddgd	|d
}|j g dksJ |j ddgd	dg|d
}td|d  d d|d  d |d	gd dgd  d|d	  |d   idd|dgd}t|| d S )N)r1   r0   r6   r   r=   r1   )r   r0   r6   r   )r   r   r0   r6   r   )r=   r>   r1   r   r   r	   rG   r   r   r8   r   rB   rC   )	r9   r#   r1   Zresult5Zresult6Zresult7Zresult8Zresult9Z	expected9r!   r!   r"   test_custom_var_name   s(    
	zTestMelt.test_custom_var_namec           	      C   s"  |j |d}|j ddgks"J |j dg|d}|j g dksHJ |j ddg|d}|j g dkspJ |j ddgd	|d
}|j g dksJ |j ddgd	dg|d
}td|d  d d|d  d dd	gd dgd  ||d	  |d   iddd|gd}t|| d S )N)r3   r5   r2   r   r=   r3   )r   r5   r2   r   )r   r   r5   r2   r   )r=   r>   r3   r   r   r	   rG   r^   )	r9   r#   r3   Zresult10Zresult11Zresult12Zresult13Zresult14Z
expected14r!   r!   r"   test_custom_value_name   s,    

	zTestMelt.test_custom_value_namec                 C   s\  |j ||d}|j ddgks$J |j dg||d}|j g dksLJ |j ddg||d}|j g dksvJ |j ddgd	||d
}|j g dksJ |j ddgd	dg||d
}td|d  d d|d  d |d	gd dgd  ||d	  |d   idd||gd}	t||	 | }
d|
j_|
  }|j ddgksXJ d S )Nr?   r0   r2   r   r=   r1   r3   )r   r0   r2   r   )r   r   r0   r2   r   r=   r>   r1   r3   r   r   r	   rG   foor6   )r   r   r8   r   rB   rC   copyname)r9   r#   r3   r1   Zresult15Zresult16Zresult17Zresult18Zresult19Z
expected19Zdf20Zresult20r!   r!   r"   test_custom_var_and_value_name   sD    

	z'TestMelt.test_custom_var_and_value_namerA   r,   c                 C   s&   |j |d}|j ddgks"J d S )Nr@   r,   r6   r7   )r9   rA   r/   r    r!   r!   r"   test_col_level  s    zTestMelt.test_col_levelc                 C   s"   |  }|j g dksJ d S )N)r,   r-   r6   r7   )r9   r/   r    r!   r!   r"   test_multiindex  s    zTestMelt.test_multiindexcolZ2010   z
US/Pacific)r   tz)rO   rP   crO   dcategoryr   )r   rT   r   r   r   c                 C   s   t td|g d|d}tjtg d|gdd}t|ddgdd	d
}t ttdd tj|gd dddgd dgd  |d}g d|_t	|| d S )Nrk   )rT   r   r   r   r   )klassrj   attr1attr2TZignore_indexrp   rj   	attributer6   rb   r   rq   rr   r   rT   r      )rp   rj   rt   r6   )
r   rangepdconcatSeriesr   r   r   rB   rC   )r9   rj   r#   Zexpected_valuer:   rL   r!   r!   r"   test_pandas_dtypes  s     

zTestMelt.test_pandas_dtypesc                 C   s^   t ddgtddgd}t|dgdg}t tddgddgddgd}t|| d S )	NrT   r   XYrK   r   r   )r   r5   r6   )r   rx   ZCategoricalr   rB   rC   )r9   datar:   rL   r!   r!   r"   test_preserve_category;  s    zTestMelt.test_preserve_categoryc                 C   s  t tjddtdd}d}tjt|d$ |	ddgd	d
g W d    n1 sZ0    Y  tjt|d$ |	ddgdd
g W d    n1 s0    Y  tjt|d$ |	g ddd
g W d    n1 s0    Y  |
 }tdtdg|_tjt|d  |	dgdg W d    n1 s80    Y  tjt|d$ |j	dgdgdd W d    n1 s|0    Y  d S )Nr   )rk   r
   abcdrG   zEThe following id_vars or value_vars are not present in the DataFrame:rV   rO   rP   Crn   r   rm   )rO   rP   Znot_hereZor_therer   )ErO   rQ   Fr   r@   )r   r   r   r   r   r   rX   rY   KeyErrorr   re   r   )r9   r#   r[   multir!   r!   r"    test_melt_missing_columns_raisesE  s&    2220z)TestMelt.test_melt_missing_columns_raisesc                 C   sf   t dgdgdgdgd}t|ddgdd	gd
}t dgd dgd tdddgd}t|| d S )Nrd   barrT   r   )r   rO   rP   rn   r   rO   rP   rn   r<   Zbd)r   rO   r5   r6   )r   r   r   rB   rC   r9   r#   r:   rL   r!   r!   r"   test_melt_mixed_int_str_id_varsh  s     z(TestMelt.test_melt_mixed_int_str_id_varsc                 C   sH   t dgdgd}t|ddgd}t ddgddgd}t|| d S )Nrd   r   )r   rO   r   rO   )r>   r5   r6   r   r   rB   rC   r   r!   r!   r"   "test_melt_mixed_int_str_value_varsq  s    z+TestMelt.test_melt_mixed_int_str_value_varsc                 C   sR   t dgdgddgd}t|dd}t dd	gddgd
ddgd}t|| d S )Nr   rT   rd   r   firstr   Frs   rd   r   r   r   r   r!   r!   r"   test_ignore_indexx  s    zTestMelt.test_ignore_indexc                 C   s   t jjddgddgd}tddgdd	gd
|d}t|dd}t jjddgd ddgd}tdgd dgd  g dd|d}t|| d S )N)r   second)r   thirdbazZfoobarr.   r   rT   r   rv   r   r   Frs   rd   r   ru   r   )rx   
MultiIndexfrom_tuplesr   r   rB   rC   r9   r   r#   r:   Zexpected_indexrL   r!   r!   r"   test_ignore_multiindex  s    zTestMelt.test_ignore_multiindexc                 C   sx   t ddgddd}tddgdd	gd
|d}t|dd}t ddgd ddd}tg dg dd|d}t|| d S )Nrd   r   ro   r   )r   rf   r   rT   r   rv   )xyr   Frs   )r   r   r   r   ru   r   )r   r   r   rB   rC   r   r!   r!   r"   test_ignore_index_name_and_type  s    z(TestMelt.test_ignore_index_name_and_typec                 C   sT   t g dgg dd}|jdgdgd}t g dg dgg d	d}t|| d S )
N)idr   rv   )rO   rP   rP   rG   rO   rP   r<   )r   rP   r   )r   rP   rv   )rO   r5   r6   r   r   r!   r!   r"    test_melt_with_duplicate_columns  s    z)TestMelt.test_melt_with_duplicate_columnsr   Int8ZInt64c                 C   sb   t tjddgddtjddg|dd}| }t g dtjg d	|dd
}t|| d S )NrT   r   r   r   rv   r
   rO   rP   )rO   rO   rP   rP   )rT   r   rv   r
   r   )r   rx   rz   r   rB   rC   )r9   r   r#   r:   rL   r!   r!   r"   test_melt_ea_dtype  s    zTestMelt.test_melt_ea_dtypec                 C   s   t dddddddddd	d
dd}|jd|_|jdgdgd}t tdtjdgd ddg dd}t|| d S )NrO   rP   rm   rS   rT   rv   rk   r   r
      )r   r   r   zstring[python]r   r   r<   r+   r   )rT   rv   rk   )r   r5   r6   )	r   r   r   r   r   rx   rz   rB   rC   r   r!   r!   r"   test_melt_ea_columns  s    


zTestMelt.test_melt_ea_columnsc              
   C   s   t dtjdddtjdddddtjdddtjddddgd	d
gd}|jdgddgddd}t ddddddddddtjdddtjdddtjdddtjddddd}t|| d S )NZA0z
2023/03/01z
Asia/Tokyo)rl   z
2023/03/10)type
start_dateend_dateA1z
2023/03/11ZaaaaZbbbbr~   r   r   r   r   	start/enddaterc   ru   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   rx   	Timestampr   rB   rC   r   r!   r!   r"   test_melt_preserves_datetime  sB    z%TestMelt.test_melt_preserves_datetimec                 C   s\   t g dg ddg dd}|jdddd	}t g dd
gd g dd}t|| d S NrT   r   rv   r
   rk   r   r   Z11Z22Z33r   rO   r   rT   rb   rP   rv   )rO   r   rT   r   r   r!   r!   r"   #test_melt_allows_non_scalar_id_vars  s    z,TestMelt.test_melt_allows_non_scalar_id_varsc                 C   s^   t g dg ddg dd}|jdgddd	}t g dd
gd g dd}t|| d S r   r   r   r!   r!   r"   $test_melt_allows_non_string_var_name  s    z-TestMelt.test_melt_allows_non_string_var_namec                 C   sd   t g dg ddg dd}tjtdd$ |jdgd	d
gd W d    n1 sV0    Y  d S )Nr   r   r   r   r   z.* must be a scalar.rV   rO   rT   r   r]   )r   rX   rY   rZ   r   r9   r#   r!   r!   r"   $test_melt_non_scalar_var_name_raises  s    z-TestMelt.test_melt_non_scalar_var_name_raisesN)*__name__
__module____qualname__r;   rD   rF   rI   rX   markparametrizetupler   r   arrayrM   rR   r   rU   r\   r_   ra   rg   rh   ri   rx   rz   r   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r4   6   s   









*


#			
)r4   c                   @   s   e Zd Zdd ZdS )TestLreshapec                 C   s  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d td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d#}t|| t||d$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d0d1d2dt jddddt jt jddgd"}t||jd#}t|| d3d tdd4D d5d tddD d}d6}tj	t
|d7 t|| W d    n1 s0    Y  d S )8N)	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   sexZvisitdt1Zvisitdt2Zvisitdt3Zwt1Zwt2Zwt3c                 S   s   g | ]}d |dqS visitdtrn   r!   .0ir!   r!   r"   
<listcomp>:      z+TestLreshape.test_pairs.<locals>.<listcomp>rT   r
   c                 S   s   g | ]}d |dqS wtrn   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   r   r   r   r   )     |@r        4@     ĩ@     Ұ@r   r   r   r   r   r   r   )r   r   r   r   r   r   rG   F)Z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   r   r   r   r   c                 S   s   g | ]}d |dqS r   r!   r   r!   r!   r"   r     r   rv   c                 S   s   g | ]}d |dqS r   r!   r   r!   r!   r"   r     r   z$All column lists must be same lengthrV   )r   nanr   rw   r   r   rB   rC   rX   rY   rZ   )r9   r~   r#   specr:   exp_dataexpr[   r!   r!   r"   
test_pairs  s    
IhzTestLreshape.test_pairsN)r   r   r   r   r!   r!   r!   r"   r     s   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zejd%d&d'gd(d) Zd*S )+TestWideToLongc              	   C   s   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< |	 |	  g dg dg dg dd}t|}|
ddgg d }t|ddgddd}t|| d S )Nr   rv   rO   rP   rm   rS   rn   ef      @333333?ffffff?皙	@?皙?)ZA1970ZA1980ZB1970ZB1980r|   r   rO   rP   rm   rn   r   r   r   r   r   r   r   r     r   r     r  r  r   rT   r   r   rT   r   r|   r   r   yearr   r  r|   r   r   r   r   r   jr   r   r   r   r   dictziprw   r   r8   	set_indexr   rB   rC   r9   r   r#   r   rL   r:   r!   r!   r"   test_simple  s(    



	
zTestWideToLong.test_simplec                 C   sJ   t g dg dg}g d|_ddg}t||ddd |ddgksFJ d S )	N)r   rT   r   rv      )r
   rk   r      	   )r   Zinc1Zinc2Zedu1Zedu2incedur   ager  )r   r   r   )r9   r#   Zstubsr!   r!   r"   
test_stubs  s
    
zTestWideToLong.test_stubsc              	   C   s   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< |	 |	  g dg dg dg dd}t|}|
ddgg d }t|ddgdddd}t|| d S )Nr   rv   rO   rP   rm   rS   rn   r   r   r   r   r   r   r   r   )zA.1970zA.1980zB.1970zB.1980r|   r   r   r   r   r  r  r  r  r   r   .r   r  sepr  r  r!   r!   r"   test_separating_character#  s(    



	
z(TestWideToLong.test_separating_characterc              	   C   s   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< |	 |	  g dg dg dg dd}t|}|
ddgg d }t|ddgddd}t|| d S )Nr   rv   rO   rP   rm   rS   rn   r   r   r   r   r   r   r   r   )zA(quarterly)1970zA(quarterly)1980zB(quarterly)1970zB(quarterly)1980r|   r   r   r   r   r  )r|   A(quarterly)B(quarterly)r  r   r  )r|   r  r  r  r  r  r  r  r!   r!   r"   test_escapable_characters=  s,    



	
z(TestWideToLong.test_escapable_charactersc                 C   s   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d}t|| d S )N      ?       @      @      @      @      @X1X2A2010A2011B2010r|   r   r"  r#  r"  r#  r  r  r  r  )r   rT   r   rT   )  r*    r+  )r|   r   r   r   r  r  r  r   r   r  )r   r   r   r   r  r   rB   rC   r9   r#   r   rL   r:   r!   r!   r"   test_unbalancedW  s$    
zTestWideToLong.test_unbalancedc              
   C   s   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d}t|jdd|jdd d S )Na11a22a33a21r0  a23b11b12b13b21b22b23r   r   [   \   ]   )A11A12B11B12BB11BB12BBBXBBBZr   r>  r?  r@  r>  r?  r@  r/  r0  r1  r3  r0  r4  r6  r7  r8  r:  r;  r<  rT   r   rv   r
   rk   r   r     rN  rN     rO  rO  )rG  rH  r   r   BBr   r  r  )rG  rH  r   r   rP  r   r   rP  r  rT   Zaxisr   r   r  r   rB   rC   
sort_indexr9   r#   rL   r:   r!   r!   r"   test_character_overlapn  s2    
z%TestWideToLong.test_character_overlapc              	   C   s   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jddgdd|_t|ddgdd|d}t	|j
dd|j
dd d S )Nznope!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   rT   levelr   r   r  rR  r   r   r   r   r   r  
set_levelsr   rB   rC   rT  )r9   r  r#   r   rL   r:   r!   r!   r"   test_invalid_separator  s2    

z%TestWideToLong.test_invalid_separatorc              
   C   s   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d}t|jdd|jdd d S )Nr.  r2  r5  r9  r   r   r=  )rA  rB  rC  rD  rE  rF  AratingArating_oldr   rI  rJ  rK  rL  r  rM  )r]  r^  r   r   rP  r   r  r  )r]  r^  r   r   rP  rQ  r  rT   rR  rS  rU  r!   r!   r"   test_num_string_disambiguation  s6    
z-TestWideToLong.test_num_string_disambiguationc              	   C   s   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jddgdd|_t|ddgd
dd}t	|j
dd|j
dd d S )Nr  r  r  r  r   r!  r"  r#  )AoneAtwoBoner|   r   rW  )r|   r`  ra  rb  r   r  r   r   r  r   rT   rX  r   r   r  rR  rZ  r,  r!   r!   r"   test_invalid_suffixtype  s,    

z&TestWideToLong.test_invalid_suffixtypec                 C   s|   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d}t|| d S )N)	rT   rT   rT   r   r   r   rv   rv   rv   )	rT   r   rv   rT   r   rv   rT   r   rv   )	ffffff@333333@皙@r   ?ffffff?rf  ffffff@ @)	333333@ffffff@re  r   rd  333333@ffffff
@rk  re  )famidbirthZht1Zht2)rd  rk  re  rl  rf  re  r  r   rg  rd  rh  rm  rf  rn  ri  rk  rj  re  )rT   rT   rT   rT   rT   rT   r   r   r   r   r   r   rv   rv   rv   rv   rv   rv   )rT   rT   r   r   rv   rv   rT   rT   r   r   rv   rv   rT   rT   r   r   rv   rv   )rT   r   rT   r   rT   r   rT   r   rT   r   rT   r   rT   r   rT   r   rT   r   )htro  rp  r  )ro  rp  r  rq  ro  rp  r  r  r   r  r   rB   rC   rU  r!   r!   r"   test_multiple_id_columns  s"    z'TestWideToLong.test_multiple_id_columnsc                 C   sf   t g dg dg dd}d}tjt|d$ t|ddgdd	d
 W d    n1 sX0    Y  d S )N)rT   r   rv   r
   rk   )rT   rT   rT   rT   rT   )ZA_A1ZB_B1r   z3the id variables need to uniquely identify each rowrV   ZA_AZB_Br   colnamer  r   rX   rY   rZ   r   r9   r#   r[   r!   r!   r"   test_non_unique_idvars  s    z%TestWideToLong.test_non_unique_idvarsc                 C   sz   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d}t|| d S )N)CCH PounderJohnny DeppChristoph Waltz)Joel David MooreOrlando BloomRory Kinnear)     @@     @     |@)     @@     @     x@)AvatarPirates of the CaribbeanSpectre)Zactor_1Zactor_2Zactor_fb_likes_1Zactor_fb_likes_2title)rx  ry  rz  r{  r|  r}  )r~  r  r  r  r  r  )rT   rT   rT   r   r   r   )r  r  r  r  r  r  )actoractor_fb_likesnumr  r  r  r  r  _r  rr  rU  r!   r!   r"   test_cast_j_int  s*    
zTestWideToLong.test_cast_j_intc                 C   sl   t ddgddgddgddgd	}d
}tjt|d$ t|ddgddd W d    n1 s^0    Y  d S )Nr  r  r  r  r   r!  r"  r#  )r%  r&  r'  r   z,stubname can't be identical to a column namerV   r   r   rt  r  ru  rv  r!   r!   r"   test_identical_stubnamesB  s    z'TestWideToLong.test_identical_stubnamesc                 C   s   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d}t|| d S )Nr  r  r  r  r   r!  r"  r#  )Ztreatment_placeboZtreatment_testZresult_placebor   r(  )placebor  testr  r)  r   rt  r:   	treatmentr   rt  r:   r  z[a-z]+r  r   r  suffixr  r   r   r   r  r   rB   rC   rU  r!   r!   r"   test_nonnumeric_suffixO  s&    z%TestWideToLong.test_nonnumeric_suffixc                 C   s|   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d}t|| d S )Nr"  r#  r   r  r   r!  r  r  r  r  )r   result_1Z
result_fooZtreatment_1Ztreatment_foor(  )1r  rd   rd   )              "@r   r!  r)  r  r   rt  r:   r  z.+r  r  rr  rU  r!   r!   r"   test_mixed_type_suffixf  s*    	z%TestWideToLong.test_mixed_type_suffixc                 C   s   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d}t|| 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  rj  rj  r  r  r  r   rt  r:   r  z[0-9.]+r  r  r  rU  r!   r!   r"   test_float_suffix}  s(    	z TestWideToLong.test_float_suffixc              
   C   s   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 |}t|dgddgdd}t|dddgdd}t|| d S )Nr   rT   r   rv   r
   )r   rT   r   rv   r
   g?r  g      ?r  gQ?gGz?gQ?g\(\?g333333?gp=
ף?g{Gz?gp=
ף?gq=
ףp?g(\?r   )node_idr   ZPA0ZPA1ZPA3ZPAr  r   time)	stubnamesr   r  )r   	from_dictr   rB   rC   )r9   Z	wide_dataZwide_dfrL   r:   r!   r!   r"   test_col_substring_of_stubname  s    
z-TestWideToLong.test_col_substring_of_stubnamec                 C   s`   t tdtdddd}tjttdd |jddd	 W d    n1 sR0    Y  d S )
Nr*   r	      r   )rj   r6   zvalue_name (value) cannot matchrV   r6   r`   )	r   r   rw   rX   rY   rZ   reescaper   r   r!   r!   r"   test_raise_of_column_name_value  s
    
z.TestWideToLong.test_raise_of_column_name_valuer   Ostringc                 C   s   t ddgddgddgd}|d|i}t|d	d
gdddd}tg ddd}t g dtjgd d|d}|jjd |}|jj|dd|_t	
|| d S )Nr  2d      ,    )r   za-1za-2r   rO   rP   r  -)r  r   r  r  ))r  rT   )r  rT   )r  r   )r  r   )r   r  )rf   )r  r  r  r  r
   r   r   r   rX  )r   r   r   r   r   r   r   Zlevelsr[  rB   rC   )r9   r   r#   r:   r   rL   Z	new_levelr!   r!   r"   test_missing_stubname  s(    z$TestWideToLong.test_missing_stubnameN)r   r   r   r  r  r  r  r-  rV  r\  r_  rc  rs  rw  r  r  r  r  r  r  r  rX   r   r   r  r!   r!   r!   r"   r      s(   
!)
'r   c               	   C   s   t d tddiddiddiddiddid} | jd| _t| ddd	d
dd}tddgddgddggtddgtdtj	j
g dtg dddgdd	gdd}t|| d S )NZpyarrowr   rT   r   )IDZR_test1ZR_test2ZR_test3Dzstring[pyarrow_numpy]Rr  Z	UNPIVOTEDr  z.*)r  r   r  r  r  r  r   )rT   rT   rT   )Ztest1Ztest2Ztest3r   r   )rX   Zimportorskipr   r   r   r   r   r   rx   r   Zfrom_arraysrB   rC   )r#   r:   rL   r!   r!   r"   (test_wide_to_long_pyarrow_string_columns  s0    
	r  )r  numpyr   rX   Zpandasrx   r   r   r   r   r   r   Zpandas._testingZ_testingrB   Zfixturer#   r/   r1   r3   r4   r   r   r  r!   r!   r!   r"   <module>   s0    



   i e   L