a
    nÝEbãM ã                   @   sv  d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z
d dlZd dlmZ d dlZd dlmZ d dlmZmZ d dlmZ d dlm  mZ d dlmZ d dlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& e '¡ dd	„ ƒZ(ej'd
d„ ƒZ)ej'dd„ ƒZ*G dd„ dƒZ+ej, -dg d¢¡dd„ ƒZ.ej, -dg d¢¡ej, -dddg¡ej, -dddg¡dd„ ƒƒƒZ/ej, -dddg¡ej, -dg d¢¡dd „ ƒƒZ0ej, -dg d¢¡d!d"„ ƒZ1d#d$„ Z2d%d&„ Z3d'd(„ Z4d)d*„ Z5d+d,„ Z6ej, -d-ddg¡ej, -d.ddg¡d/d0„ ƒƒZ7d1d2„ Z8d3d4„ Z9d5d6„ Z:ej, -dg d¢¡ej, -d7ej;ej<ej=ej>ej?ej@ejAejBejCg	¡d8d9„ ƒƒZDdS ):é    N)Údatetime)Úis_categorical_dtype)Ú	DataFrameÚSeries)Úensure_index©Úread_csv)	ÚCategoricalConversionWarningÚInvalidColumnNameÚPossiblePrecisionLossÚStataMissingValueÚStataReaderÚStataWriterÚStataWriterUTF8ÚValueLabelTypeMismatchÚ
read_statac                   C   s   t g d¢g d¢g d¢dœƒS )N©é   é   é   é   )ç      ð?ç      @g      ;@g     @T@)ZAtlantaZ
BirminghamZ
CincinnatiZDetroit©ÚaÚbÚc)r   © r   r   úZ/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/io/test_stata.pyÚmixed_frame'   s    ýÿr   c                 C   s   | dddƒS )NÚioÚdataÚstatar   )Údatapathr   r   r   Údirpath2   s    r$   c                 C   s&   t j | d¡}t|dd�}d|j_|S )Nústata5_114.dtaT©Úconvert_datesÚindex)ÚosÚpathÚjoinr   r(   Úname)r$   Ú	dta14_114Ú
parsed_114r   r   r   r.   7   s    r.   c                   @   s|  e Zd Zejdd�dd„ ƒZdd„ Zdd„ Zej 	d	g d
¢¡dd„ ƒZ
ej 	dddg¡dd„ ƒZdd„ Zej 	dg d¢¡dd„ ƒZej 	dg d¢¡dd„ ƒZdd„ Zdd„ Zdd„ Zd d!„ Zej 	d	g d
¢¡d"d#„ ƒZd$d%„ Zd&d'„ Zej 	d	g d
¢¡d(d)„ ƒZd*d+„ Zej 	d	g d
¢¡d,d-„ ƒZd.d/„ Zej 	d	g d
¢¡ej 	dg d0¢¡d1d2„ ƒƒZej 	dg d3¢¡d4d5„ ƒZej 	d	g d
¢¡d6d7„ ƒZej 	d	g d
¢¡d8d9„ ƒZd:d;„ Zej 	d	g d
¢¡d<d=„ ƒZd>d?„ Z d@dA„ Z!dBdC„ Z"dDdE„ Z#dFdG„ Z$dHdI„ Z%dJdK„ Z&dLdM„ Z'ej 	d	g d
¢¡ej 	dNdOdPg¡dQdR„ ƒƒZ(dSdT„ Z)dUdV„ Z*dWdX„ Z+dYdZ„ Z,ej 	dg d[¢¡d\d]„ ƒZ-d^d_„ Z.d`da„ Z/dbdc„ Z0ej 	d	g d
¢¡ej 1dd¡dedf„ ƒƒZ2dgdh„ Z3ej 	d	g d
¢¡didj„ ƒZ4ej 	ddkdlg¡dmdn„ ƒZ5ej 	ddodpg¡dqdr„ ƒZ6ej 	ddkdlg¡dsdt„ ƒZ7ej 	dg du¢¡ej 	dvdwdxg¡ej 	dydzdg¡ej 	d{dzdg¡d|d}„ ƒƒƒƒZ8e9e:e:d~œdd€„ƒZ;d�d‚„ Z<ej 	dg dƒ¢¡ej 	dvdwdxg¡ej 	dydzdg¡ej 	d{dzdg¡d„d…„ ƒƒƒƒZ=d†d‡„ Z>ej 	d	g d
¢¡dˆd‰„ ƒZ?ej 	d	g d
¢¡dŠd‹„ ƒZ@ej 	d	dŒd�g¡dŽd�„ ƒZAd�d‘„ ZBd’d“„ ZCd”d•„ ZDd–d—„ ZEd˜d™„ ZFdšd›„ ZGdœd�„ ZHdždŸ„ ZId d¡„ ZJd¢d£„ ZKej 	d¤ddzg¡d¥d¦„ ƒZLd§d¨„ ZMej 	d©g dª¢¡d«d¬„ ƒZNd­d®„ ZOd¯d°„ ZPd±d²„ ZQej 	d	g d
¢¡d³d´„ ƒZRdµd¶„ ZSd·d¸„ ZTd¹dº„ ZUej 	d	g d
¢¡d»d¼„ ƒZVej 	d	g d
¢¡d½d¾„ ƒZWd¿dÀ„ ZXdÁdÂ„ ZYejjZdÃdÄ„ ƒZ[ej 	d	g dÅ¢¡dÆdÇ„ ƒZ\dÈdÉ„ Z]dÊS )ËÚ	TestStataT)Zautousec                 C   s<  |dddƒ| _ tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d	¡| _	tj | j d
¡| _
tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d¡| _tj | j d ¡| _ tj | j d!¡| _!tj | j d"¡| _"tj | j d#¡| _#tj | j d$¡| _$tj | j d%¡| _%tj | j d&¡| _&tj | j d'¡| _'tj | j d(¡| _(tj | j d)¡| _)tj | j d*¡| _*tj | j d+¡| _+tj | j d,¡| _,tj | j d-¡| _-tj | j d.¡| _.tj | j d/¡| _/tj | j d0¡| _0d S )1Nr    r!   r"   zstata1_114.dtazstata1_117.dtazstata2_113.dtazstata2_114.dtazstata2_115.dtazstata2_117.dtazstata3_113.dtazstata3_114.dtazstata3_115.dtazstata3_117.dtaz
stata3.csvzstata4_113.dtazstata4_114.dtazstata4_115.dtazstata4_117.dtazstata1_encoding.dtazstata1_encoding_118.dtaz
stata5.csvzstata5_113.dtar%   zstata5_115.dtazstata5_117.dtaz
stata6.csvzstata6_113.dtazstata6_114.dtazstata6_115.dtazstata6_117.dtazstata7_115.dtazstata7_117.dtazstata8_113.dtazstata8_115.dtazstata8_117.dtazstata9_115.dtazstata9_117.dtazstata10_115.dtazstata10_117.dtazstata11_115.dtazstata11_117.dtazstata12_117.dtazstata14_118.dtazstata15.dtazstata7_111.dtazstata16_118.dtazstata1_119.dta.gzzstata13_dates.dta)1r$   r)   r*   r+   Údta1_114Údta1_117Zdta2_113Údta2_114Údta2_115Údta2_117Údta3_113Údta3_114Údta3_115Údta3_117Úcsv3Údta4_113Údta4_114Údta4_115Údta4_117Údta_encodingÚdta_encoding_118Úcsv14Ú	dta14_113r-   Ú	dta14_115Ú	dta14_117Úcsv15Ú	dta15_113Ú	dta15_114Ú	dta15_115Ú	dta15_117Ú	dta16_115Ú	dta16_117Ú	dta17_113Ú	dta17_115Ú	dta17_117Ú	dta18_115Ú	dta18_117Ú	dta19_115Ú	dta19_117Ú	dta20_115Ú	dta20_117Ú	dta21_117Ú	dta22_118Údta23Ú	dta24_111Ú	dta25_118Ú	dta26_119Ústata_dates)Úselfr#   r   r   r   Úsetup_method@   s\    zTestStata.setup_methodc                 C   s   t |dd�S )NTr&   )r   ©r[   Úfiler   r   r   Úread_dta�   s    zTestStata.read_dtac                 C   s   t |dd�S )NT)Zparse_datesr   r]   r   r   r   r   …   s    zTestStata.read_csvÚversion©ér   éu   év   éw   Nc                 C   s\   t dgd�}t ¡ �4}|j|d|d� t|ƒ}t ||¡ W d   ƒ n1 sN0    Y  d S )NÚunit©ÚcolumnsF©Úwrite_indexr`   )r   ÚtmÚensure_cleanÚto_statar   Úassert_frame_equal)r[   r`   Zempty_dsr*   Z	empty_ds2r   r   r   Útest_read_empty_dtaˆ   s
    
zTestStata.test_read_empty_dtar^   r0   r1   c                 C   s^   t | |ƒ}|  |¡}ttjtjtjtjtjfgg d¢d�}|d  tj¡|d< t ||¡ d S )N©Ú
float_missZdouble_missZ	byte_missZint_missZ	long_missrg   rq   )	Úgetattrr_   r   ÚnpÚnanÚastypeÚfloat32rk   rn   ©r[   r^   ÚparsedÚexpectedr   r   r   Útest_read_dta1‘   s    

þzTestStata.test_read_dta1c                 C   s–  t jtddddddƒdtdd	dƒtdd	d
ƒtdd	d	ƒtddd	ƒtdd	d	ƒtdd	d	ƒftddddddƒdtdddƒtdddƒtdd	d	ƒtddd	ƒtdd	d	ƒtdd	d	ƒftjtjtjtjtjtjtjtjfgg d¢d�}|d  d¡|d< tjdd��^}t d¡ |  	| j
¡}|  	| j¡}|  	| j¡}dd „ |D ƒ}t|ƒdk�sBJ ‚W d   ƒ n1 �sX0    Y  tj||dd!� tj||dd!� tj||dd!� d S )"NéÖ  é   é   é   é   é   l   *�}aiÚ  r   é   i¶  é   i§  é   é   r   iZléÿi¡  é
   r   iœ  é   i£  )Z
datetime_cZdatetime_big_cÚdateZweekly_dateZmonthly_dateZquarterly_dateZhalf_yearly_dateÚyearly_daterg   rˆ   ÚOT©ÚrecordÚalwaysc                 S   s   g | ]}|j tu r|‘qS r   )ÚcategoryÚUserWarning)Ú.0Úxr   r   r   Ú
<listcomp>Ô   ó    z,TestStata.test_read_dta2.<locals>.<listcomp>©Úcheck_datetimelike_compat)r   Úfrom_recordsr   ÚpdÚNaTru   ÚwarningsÚcatch_warningsÚsimplefilterr_   r2   r3   r4   Úlenrk   rn   )r[   ry   Úwr.   Ú
parsed_115Ú
parsed_117r   r   r   Útest_read_dta2¤   sD    





ø





ø
"ëè#
2zTestStata.test_read_dta2)r5   r6   r7   r8   c                 C   sd   t | |ƒ}|  |¡}|  | j¡}| tj¡}|d  tj¡|d< |d  tj¡|d< t	 
||¡ d S )NÚyearÚquarter)rr   r_   r   r9   ru   rs   rv   Úint16Úint8rk   rn   rw   r   r   r   Útest_read_dta3à   s    

zTestStata.test_read_dta3)r:   r;   r<   r=   c                 C   s  t | |ƒ}|  |¡}tjg d¢g d¢g d¢g d¢dddtjdgdddtjdgd	d
dtjd	gdddtjdgdddtjdgdddtjdgg
g d¢d�}|D ]d}||  ¡ }t |d | ¡  ¡}|dkrÈ|}| 	d¡j
}|j|dd�}|jjd dd� |||< q–t ||¡ d S )N)ÚoneÚtenr¥   r¥   r¥   )ÚtwoÚniner§   r§   r§   )ÚthreeÚeightr©   r©   r©   )ÚfourÚsevenr   r«   r«   ÚfiveÚsixé   r†   r¬   r«   r‚   rª   r©   r�   r¨   r§   é	   r¦   r¥   )Úfully_labeledÚfully_labeled2Úincompletely_labeledÚlabeled_with_missingsÚfloat_labelledrg   r±   r³   r�   T©Úordered©Zinplace)rr   r_   r   r•   rs   rt   ÚcopyZasarrayZnotnaru   Ú_valuesÚset_categoriesÚ
categoriesÚrenamerk   rn   )r[   r^   rx   ry   ÚcolÚorigr¼   Úcatr   r   r   Útest_read_dta4î   s4    

öó
zTestStata.test_read_dta4c                 C   sD   |   | j¡}tjg d¢g d¢g d¢gg d¢d�}tj||dd� d S )N)r   ÚabcZ	abcdefghi)r   ZcbaZqwertywertyqwerty)é]   Ú Zstrl)r�   ÚyÚzrg   F©Úcheck_dtype)r_   rT   r   r•   rk   rn   )r[   rž   ry   r   r   r   Útest_read_dta12  s    ýú	zTestStata.test_read_dta12c              	   C   sø   |   | j¡}|d  d¡|d< tjg d¢dddtjtjtjtjgg d¢g d¢g d	¢gg d
¢d�}|d  tj¡|d< |jD ]}t	 
|| || ¡ qzt| jƒ�F}| ¡ }ddddddddœ}t	 ||¡ |jdksÖJ ‚W d   ƒ n1 sê0    Y  d S )NÚBytesr‰   )ZCatZBogotau   BogotÃ¡r   r   u   option b Ãœnicoder   ZDogZBostonu   UzunkÃ¶prÃ¼)ZPlaneZRomeu   TromsÃ¸r   ç        úoption arË   )ZPotatoZTokyou	   ElÃ¢zÄ±ÄŸéüÿÿÿç      @r   r   )rÄ   rÄ   rÄ   r   gþ¤�ÉTÕ?rÌ   gUUUUUUÕ?)ÚThingsÚCitiesÚUnicode_Cities_StrlÚIntsÚFloatsrÊ   ÚLongsrg   rÓ   u'   Here are some strls with Ãœnicode charsz	long datazHere are some thingsz	byte datazint datazHere are some citiesz
float data)rÑ   rÔ   rÏ   rÊ   rÒ   rÐ   rÓ   u   This is a  Ãœnicode data label)r_   rU   ru   r   r•   rs   rt   rv   rh   rk   Zassert_almost_equalr   Úvariable_labelsZassert_dict_equalÚ
data_label)r[   Z
parsed_118ry   r¾   ÚrdrZvlZvl_expectedr   r   r   Útest_read_dta18)  s4    ûø
ù	zTestStata.test_read_dta18c                 C   s‚   t tjtjtjtjtjfgg d¢d�}d|j_t ¡ �8}| |d ¡ |  |¡}t 	| 
d¡|¡ W d   ƒ n1 st0    Y  d S )Nrp   rg   r(   )r   rs   rt   r(   r,   rk   rl   rm   r_   rn   Ú	set_index©r[   Úoriginalr*   Úwritten_and_read_againr   r   r   Útest_read_write_dta5Q  s    þ

zTestStata.test_read_write_dta5c                 C   s¤   |   | j¡}d|j_|j tj¡|_|d  tj¡|d< |d  tj¡|d< t ¡ �<}| 	|d ¡ |  
|¡}tj| d¡|dd� W d   ƒ n1 s–0    Y  d S )Nr(   r    r¡   F©Zcheck_index_type)r   r9   r(   r,   ru   rs   Úint32rk   rl   rm   r_   rn   rÙ   rÚ   r   r   r   Útest_write_dta6]  s    

ýzTestStata.test_write_dta6c                 C   sÂ   t ddddt d¡ggg d¢d�}t|d td�|d< d	|j_|j tj¡|_|d
  tj¡|d
< t	 
¡ �D}|j|ddi|d� |  |¡}t	j| d	¡|dd� W d   ƒ n1 s´0    Y  d S )NÚstringÚobjectr   çš™™™™™ñ?ú
2003-12-25)rá   râ   ÚintegerÚfloatingr   ©r!   rh   ©Údtyper(   rå   r   Útc©r`   FrÞ   )r   rs   Ú
datetime64r   râ   r(   r,   ru   rß   rk   rl   rm   r_   rn   rÙ   )r[   r`   rÛ   r*   rÜ   r   r   r   Útest_read_write_dta10m  s     þ

ýzTestStata.test_read_write_dta10c                 C   sP   t  ¡ �4}ttj dd¡tdƒd�}| |¡ W d   ƒ n1 sB0    Y  d S )Nr…   r   ÚABrg   )rk   rl   r   rs   ÚrandomÚrandnÚlistrm   )r[   r*   Údfr   r   r   Útest_stata_doc_examples‚  s    
z!TestStata.test_stata_doc_examplesc                 C   sˆ   t j d¡ tt j dd¡tdƒd�}t j|jddd…f< | ¡ }t	 
¡ �}|j|d	d
� W d   ƒ n1 sn0    Y  t	 ||¡ d S )Ni§  r¯   r   Úabcdrg   r   r   r   F©rj   )rs   rï   Úseedr   rð   rñ   rt   Úlocr¹   rk   rl   rm   rn   )r[   rò   Zdf_copyr*   r   r   r   Útest_write_preserves_original‡  s    
,z'TestStata.test_write_preserves_originalc                 C   s’   t | jƒ}t | jƒ}|jd }|jd }||ks4J ‚t|tƒsBJ ‚t ¡ �4}|j|d|d� t |ƒ}t ||¡ W d   ƒ n1 s„0    Y  d S )Nr   Fri   )	r   r>   Ú	kreis1849Ú
isinstanceÚstrrk   rl   rm   rn   )r[   r`   ÚrawÚencodedÚresultry   r*   Úreread_encodedr   r   r   Útest_encoding‘  s    




zTestStata.test_encodingc              	   C   s¶   t dgg d¢d�}t dgg d¢d�}d|j_| tj¡}t ¡ �b}t t	¡� | 
|d ¡ W d   ƒ n1 sn0    Y  |  |¡}t | d¡|¡ W d   ƒ n1 s¨0    Y  d S )Nr   )Úgoodu   bÃ¤dZ8numberZ%astringwithmorethan32characters______rg   )r  Zb_dZ_8numberÚ astringwithmorethan32characters_r(   )r   r(   r,   ru   rs   rß   rk   rl   Úassert_produces_warningr
   rm   r_   rn   rÙ   )r[   rÛ   Ú	formattedr*   rÜ   r   r   r   Útest_read_write_dta11¢  s    þ	þ
*
zTestStata.test_read_write_dta11c              	   C   sØ   t dgg d¢d�}t dgg d¢d�}d|j_| tj¡}t ¡ �„}tj	dd��<}t 
dt¡ |j|d |d	� t|ƒd
ks|J ‚W d   ƒ n1 s�0    Y  |  |¡}t | d¡|¡ W d   ƒ n1 sÊ0    Y  d S )N©r   r   r   r   r¯   r†   )Z!astringwithmorethan32characters_1Z!astringwithmorethan32characters_2ú+ú-ÚshortÚdeleterg   )r  Z _0astringwithmorethan32characterÚ_Z_1_Z_shortÚ_deleter(   TrŠ   rŒ   rë   r   )r   r(   r,   ru   rs   rß   rk   rl   r˜   r™   rš   r
   rm   r›   r_   rn   rÙ   )r[   r`   rÛ   r  r*   rœ   rÜ   r   r   r   Útest_read_write_dta12º  s"    þþ
.
zTestStata.test_read_write_dta12c                 C   s¬   t dtjd�}t dtjd�}t dtjd�}t|||dœƒ}d|j_|}|d  tj	¡|d< t
 ¡ �6}| |¡ |  |¡}t
 | d¡|¡ W d   ƒ n1 sž0    Y  d S )Ni   rè   i   l        )r¢   rß   Úint64r(   r  )r   rs   r¢   rß   r  r   r(   r,   ru   Úfloat64rk   rl   rm   r_   rn   rÙ   )r[   Ús1Ús2Ús3rÛ   r  r*   rÜ   r   r   r   Útest_read_write_dta13ß  s    


zTestStata.test_read_write_dta13)rA   r-   rB   rC   c           
      C   sâ   t | |ƒ}|  |¡}d|j_|  | j¡}g d¢}|D ]}|| jddd�||< q4|d  tj	¡|d< t
j|d dd�|d< t ||¡ t ¡ �@}|j|dd	i|d
� |  |¡}	t |	 d¡|¡ W d   ƒ n1 sÔ0    Y  d S )Nr(   )Úbyte_Úint_Úlong_Úfloat_Údouble_T)r   Únumericr  Údate_tdZcoerce)ÚerrorsÚtdrë   )rr   r_   r(   r,   r   r@   Ú_convertru   rs   rv   r–   Úto_datetimerk   rn   rl   rm   rÙ   )
r[   r^   r.   r`   rx   ry   Úcolsr¾   r*   rÜ   r   r   r   Útest_read_write_reread_dta14î  s    



z&TestStata.test_read_write_reread_dta14)rE   rF   rG   rH   c                 C   s¬   |   | j¡}|d  tj¡|d< |d  tj¡|d< |d  tj¡|d< |d  tj¡|d< |d  tj¡|d< |d j	t
jdd�|d< t| |ƒ}|  |¡}t ||¡ d S )	Nr  r  r  r  r  r  ©z%Y-%m-%d©Úargs)r   rD   ru   rs   r£   r¢   rß   rv   r  Úapplyr   Ústrptimerr   r_   rk   rn   )r[   r^   ry   rx   r   r   r   Útest_read_write_reread_dta15  s    ÿ


z&TestStata.test_read_write_reread_dta15c              	   C   s¦   t dgdgd�}tdddddƒ}d	}t ¡ �f}|j||||d
� t|ƒ�,}|jdksXJ ‚|j|ksfJ ‚W d   ƒ n1 sz0    Y  W d   ƒ n1 s˜0    Y  d S )N©r   Úvariablerg   éÐ  r   é   é   é   zThis is a data file.)Ú
time_stamprÖ   r`   z29 Feb 2000 14:21)r   r   rk   rl   rm   r   r-  rÖ   )r[   r`   rÛ   r-  rÖ   r*   Úreaderr   r   r   Útest_timestamp_and_label  s    
ÿ
z"TestStata.test_timestamp_and_labelc              	   C   s’   t dgdgd�}d}t ¡ �b}d}tjt|d��  |j|||d� W d   ƒ n1 sV0    Y  tj 	|¡rpJ ‚W d   ƒ n1 s„0    Y  d S )Nr'  r(  rg   z01 Jan 2000, 00:00:00z"time_stamp should be datetime type©Úmatch)r-  r`   )
r   rk   rl   ÚpytestÚraisesÚ
ValueErrorrm   r)   r*   Úisfile)r[   r`   rÛ   r-  r*   Úmsgr   r   r   Útest_invalid_timestamp'  s    
.z TestStata.test_invalid_timestampc              	   C   s¼   t t t d¡d¡ƒ}d|j_t ¡ �‚}t t	¡� | 
|¡ W d   ƒ n1 sR0    Y  |  |¡}| d¡}t|jƒ}dd„ }t||ƒ|_t ||¡ W d   ƒ n1 s®0    Y  d S )Ng      9@)r¯   r¯   r(   c                 S   s   t | d ƒS )Nr   )Úint©r�   r   r   r   Ú<lambda><  r’   z5TestStata.test_numeric_column_names.<locals>.<lambda>)r   rs   ÚreshapeÚaranger(   r,   rk   rl   r  r
   rm   r_   rÙ   rñ   rh   Úmaprn   )r[   rÛ   r*   rÜ   rh   Zconvert_col_namer   r   r   Útest_numeric_column_names1  s    
(


z#TestStata.test_numeric_column_namesc                 C   s¸   t t d¡tjd�}t t d¡tjd�}tj|d d d…< tj|dd d…< t||dœƒ}d|j_t	 
¡ �>}|j||d� |  |¡}| d¡}t	 ||¡ W d   ƒ n1 sª0    Y  d S )NrÎ   rè   r   r   ©r  r  r(   rë   )r   rs   r<  rv   r  rt   r   r(   r,   rk   rl   rm   r_   rÙ   rn   )r[   r`   r  r  rÛ   r*   rÜ   r   r   r   Útest_nan_to_missing_value@  s    


z#TestStata.test_nan_to_missing_valuec              	   C   s¨   ddg}t t t d¡d¡|d�}d|j_t ¡ �b}|j|dd� |  	|¡}t
jt|jjd	�� |d  W d   ƒ n1 s|0    Y  W d   ƒ n1 sš0    Y  d S )
Nr�   rÅ   ç      $@)r¯   r   rg   Zindex_not_writtenFrõ   r0  )r   rs   r;  r<  r(   r,   rk   rl   rm   r_   r2  r3  ÚKeyError)r[   rh   rÛ   r*   rÜ   r   r   r   Útest_no_indexN  s    

zTestStata.test_no_indexc                 C   s†   t ddgƒ}t ddgtjd�}t||dœƒ}d|j_t ¡ �6}| |¡ |  	|¡}t 
| d¡|¡ W d   ƒ n1 sx0    Y  d S )Nr   zA longer stringr   ç       @rè   r?  r(   )r   rs   r  r   r(   r,   rk   rl   rm   r_   rn   rÙ   )r[   r  r  rÛ   r*   rÜ   r   r   r   Útest_string_no_datesX  s    


zTestStata.test_string_no_datesc           	   	   C   s*  t ddgtjd�}t ddgtjd�}t ddgtjd�}t ddgtjd�}t||||dœƒ}d|j_t 	¡ �ª}t 
t¡� | |¡ W d   ƒ n1 s–0    Y  |  |¡}| ¡ }t |d	 tjd�|d	< t |d
 tjd�|d
< t |d tjd�|d< t | d¡|¡ W d   ƒ n1 �s0    Y  d S )Nr   éc   rè   é   iÿ  l   ÿÿÿÿ )Ús0r  r  r  r(   r  r  r  )r   rs   r£   r¢   r  r   r(   r,   rk   rl   r  r   rm   r_   r¹   rß   r  rn   rÙ   )	r[   rH  r  r  r  rÛ   r*   rÜ   Úmodifiedr   r   r   Útest_large_value_conversionb  s    
(
z%TestStata.test_large_value_conversionc              	   C   s²   t tddddddƒgƒ}d|j_t ¡ �v}t t¡�  | |dd	i¡ W d   ƒ n1 sZ0    Y  |  	|¡}| 
¡ }d
g|_t | d¡|¡ W d   ƒ n1 s¤0    Y  d S )Nr{   r|   r}   r~   r   r€   r(   r   rê   Z_0)r   r   r(   r,   rk   rl   r  r
   rm   r_   r¹   rh   rn   rÙ   )r[   rÛ   r*   rÜ   rI  r   r   r   Útest_dates_invalid_columnt  s    
.
z#TestStata.test_dates_invalid_columnc                 C   s¦   t j | jd¡}t|ƒ}g d¢g d¢g d¢g}t|ƒ}g d¢|_|d  tj	¡|d< |d  tj
¡|d< |d  tj
¡|d< |d	  tj¡|d	< t | d
¡|¡ d S )NúS4_EDUC1.dta)r   r   r   éþÿÿÿ)r   r   r   rM  )r   r   r   rM  )ÚclustnumÚpri_schlÚpsch_numÚpsch_disrN  rO  rP  rQ  r   )r)   r*   r+   r$   r   r   rh   ru   rs   r¢   r£   rv   rk   rn   Úhead)r[   Údpathrò   Zdf0r   r   r   Útest_105€  s    
zTestStata.test_105c                 C   s4   t j | jd¡}t|ƒ}| ¡ i ks(J ‚| ¡  d S )NrL  )r)   r*   r+   r$   r   Úvalue_labelsÚclose)r[   rS  r.  r   r   r   Útest_value_labels_old_formatŽ  s    z&TestStata.test_value_labels_old_formatc           	   
   C   s  g d¢}dd„ |D ƒ}t ddddddƒgt|ƒ }t|g|d	�}d
|j_t ddddddƒt dddƒt dddƒt dddƒt dddƒt dddƒt dddƒg}t|g|d	�}d
|j_t ¡ �8}| ||¡ |  |¡}t 	| 
d
¡|¡ W d   ƒ n1 sô0    Y  d S )N)rê   r  Ztwrk   ZtqÚthÚtyc                 S   s   i | ]
}||“qS r   r   ©r�   r   r   r   r   Ú
<dictcomp>š  r’   z6TestStata.test_date_export_formats.<locals>.<dictcomp>r{   r|   r€   r~   r   rg   r(   r}   r   r…   r‚   )r   r›   r   r(   r,   rk   rl   rm   r_   rn   rÙ   )	r[   rh   Zconversionsr!   rÛ   Úexpected_valuesry   r*   rÜ   r   r   r   Útest_date_export_formats˜  s&    





ù


z"TestStata.test_date_export_formatsc                 C   s†   t dgd ggdgd�}t dgdggdgd�}d|j_t ¡ �6}| |¡ |  |¡}t | d¡|¡ W d   ƒ n1 sx0    Y  d S )NÚ1Zfoorg   rÄ   r(   )	r   r(   r,   rk   rl   rm   r_   rn   rÙ   )r[   rÛ   ry   r*   rÜ   r   r   r   Útest_write_missing_strings¯  s    


z$TestStata.test_write_missing_stringsÚ	byteorderú>ú<c              	   C   sL  t g d¢tjd�}t g d¢tjd�}t g d¢tjd�}t g d¢tjd�}t g d¢tjd�}t g d¢tjd�}t g d¢tjd�}	t|||||||	d	œƒ}
d
|
j_|
 	¡ }tj
tj
tjtjtjtjtjf}t|j|ƒD ]\}}||  |¡||< qÒt ¡ �@}|
j|||d� |  |¡}| d
¡}t ||¡ W d   ƒ n1 �s>0    Y  d S )N)r   r   Trè   )r   r   éd   )r   r   éÿ   )r   r   iœ  )r   r   iÿÿ  )r   r   iœÿÿ)r   r   l   ÿÿ )rH  r  r  r  Ús4Ús5Ús6r(   )r`  r`   )r   rs   Zbool_Zuint8Zuint16Zuint32r   r(   r,   r¹   r£   r¢   rß   r  Úziprh   ru   rk   rl   rm   r_   rÙ   rn   )r[   r`  r`   rH  r  r  r  re  rf  rg  rÛ   ry   Zexpected_typesr   Útr*   rÜ   r   r   r   Útest_bool_uint¸  s6    ÿù	


zTestStata.test_bool_uintc                 C   s¶   t | jƒ�}| ¡ }W d   ƒ n1 s(0    Y  t | jƒ�}| ¡ }W d   ƒ n1 sZ0    Y  d}d}| ¡ D ]<\}}||v sˆJ ‚||| ks˜J ‚||v s¤J ‚||v stJ ‚qtd S )N)Zvar1Zvar2Zvar3)Úlabel1Úlabel2Zlabel3)r   rI   rÕ   rJ   Úitems)r[   r×   Zsr_115Zsr_117ÚkeysÚlabelsÚkÚvr   r   r   Útest_variable_labelsÚ  s    &&zTestStata.test_variable_labelsc              	   C   s  d}i }|D ]*}t d| d| d| gƒ|dt|ƒ < qt|ƒ}t ¡ �¬}|j|dd� t|ƒ�v}|j}|j}|j	}	t
||	|ƒD ]F\}
}}t|
dd … ƒt|dd	… ƒks®J ‚t|
dd … ƒ|ks€J ‚q€W d   ƒ n1 sÜ0    Y  W d   ƒ n1 sú0    Y  d S )
N)r   rc  éô   r   r   r   ÚsFrõ   r   éÿÿÿÿ)r   rû   r   rk   rl   rm   r   ÚtyplistZvarlistZfmtlistrh  r8  )r[   Ústr_lensrt  Ústr_lenrÛ   r*   Úsrrv  Ú	variablesÚformatsr(  ÚfmtÚtypr   r   r   Útest_minimal_size_colç  s     ÿ

$zTestStata.test_minimal_size_colc              	   C   s¨   d}i }|D ]*}t d| d| d| gƒ|dt|ƒ < qt|ƒ}d}tjt|d��B t ¡ �}| |¡ W d   ƒ n1 s|0    Y  W d   ƒ n1 sš0    Y  d S )N)r   rs  éô  r   r   r   rt  zÝFixed width strings in Stata \.dta files are limited to 244 \(or fewer\)\ncharacters\.  Column 's500' does not satisfy this restriction\. Use the\n'version=117' parameter to write the newer \(Stata 13 and later\) format\.r0  )	r   rû   r   r2  r3  r4  rk   rl   rm   )r[   rw  rt  rx  rÛ   r6  r*   r   r   r   Útest_excessively_long_stringú  s    ÿÿ
z&TestStata.test_excessively_long_stringc              	   C   sn  d}t dggdgd�}t ¡ �H}| |¡ t|ƒ�}|j}W d   ƒ n1 sN0    Y  W d   ƒ n1 sl0    Y  dd„ tdƒD ƒ}| dd	¡ |D ]B}|| d
 }tddƒD ]&}	t|d
 |	 ƒ}
|
j	||	 ks²J ‚q²q˜tt
 dd¡d ƒ}
|
j	d	ksþJ ‚tt
 dd¡d ƒ}
|
j	dk�s"J ‚tt
 dd¡d ƒ}
|
j	d	k�sFJ ‚tt
 dd¡d ƒ}
|
j	dk�sjJ ‚d S )N)r   ÚhÚlrË   r  rg   c                 S   s   g | ]}d t d| ƒ ‘qS )Ú.éa   )Úchr©r�   Úir   r   r   r‘     r’   z:TestStata.test_missing_value_generator.<locals>.<listcomp>é   r   rƒ  r   é   z<fs      s    Ð z.zz<ds         às        à)r   rk   rl   rm   r   ZVALID_RANGEÚrangeÚinsertr   rá   ÚstructÚunpack)r[   Útypesrò   r*   r×   Zvalid_ranger\  ri  Úoffsetr‡  Úvalr   r   r   Útest_missing_value_generator  s2    


Bÿÿz&TestStata.test_missing_value_generator)rK   rL   rM   c                    s€   g d¢}t dƒ}t|j ¡ ƒ‰g }tdƒD ]&‰ ‡ ‡fdd„tdƒD ƒ}| |¡ q*t||d�}tt| |ƒdd	�}t	 
||¡ d S )
N)Zint8_Zint16_Zint32_Zfloat32_Zfloat64_ée   r‰  c                    s    g | ]}t ˆˆ |d    ƒ‘qS )r‰  )r   )r�   Új©r‡  rn  r   r   r‘   2  r’   z;TestStata.test_missing_value_conversion.<locals>.<listcomp>r¯   rg   T©Zconvert_missing)r   ÚsortedZMISSING_VALUESrn  rŠ  Úappendr   r   rr   rk   rn   )r[   r^   rh   Úsmvr!   Úrowry   rx   r   r”  r   Útest_missing_value_conversion+  s    z'TestStata.test_missing_value_conversionc                 C   s–  g d¢}g d¢}g d¢}g d¢}g d¢}g d¢}g }t t|ƒƒD ]˜}g }	t dƒD ]|}
|
dkrŽ|	 t|| || || || || || ƒ¡ qP|
dkr®|	 t|| d	d	ƒ¡ qP|	 t|| || || ƒ¡ qP| |	¡ q@| tjgd ¡ g d
¢}tdddƒ|d d< tddd	ƒ|d d< tddd	ƒ|d d< tddd	ƒ|d d< tdddƒ|d d< tddd	ƒ |d d< |d d< tdd	d	ƒ |d d< |d d< tddd	ƒ |d d<  |d d< |d d< tdd	d	ƒ |d d< |d d< t||td�}t| j	ƒ}t| j
ƒ}tj||dd� tj||dd� dd„ |D ƒ}t ¡ �D}d|j_| ||¡ |  |¡}tj| d¡|dd� W d   ƒ n1 �sˆ0    Y  d S )N)i¨  r)  é'  rc  éÖ  é�  )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   )Zdate_tcr  Zdate_twZdate_tmZdate_tqZdate_thZdate_tyr›  rƒ   é   r   r   r…   r   r¯   rœ  é   r�  iŽ  )rh   ré   Tr“   c                 S   s   i | ]}||d d… “qS )rM  Nr   rZ  r   r   r   r[  g  r’   z,TestStata.test_big_dates.<locals>.<dictcomp>r(   )rŠ  r›   r—  r   r–   r—   r   râ   r   rN   rO   rk   rn   rl   r(   r,   rm   r_   rÙ   )r[   ÚyrÚmoÚddÚhrÚmmÚssry   r‡  r™  r“  rh   r�   rž   Zdate_conversionr*   rÜ   r   r   r   Útest_big_dates9  sT    2   , 



ýzTestStata.test_big_datesc                 C   sæ   |   | j¡}|d  tj¡|d< |d  tj¡|d< |d  tj¡|d< |d  tj¡|d< |d  tj¡|d< |d j	t
jdd�|d< t| jd	d
�}t ||¡ t| jd	dd�}|   | j¡}|d j	t
jdd�|d< t ||¡ d S )Nr  r  r  r  r  r  r!  r"  Tr&   F)r'   Zpreserve_dtypes)r   rD   ru   rs   r£   r¢   rß   rv   r  r$  r   r%  r   rH   rk   rn   )r[   ry   Zno_conversionÚ
conversionr   r   r   Útest_dtype_conversions  s&    ÿ
ÿÿ
zTestStata.test_dtype_conversionc                 C   s|  |   | j¡}|d  tj¡|d< |d  tj¡|d< |d  tj¡|d< |d  tj¡|d< |d  tj¡|d< |d j	t
jdd�|d< g d	¢}|| }t| jd
|d�}t ||¡ g d¢}|| }t| jd
|d�}t ||¡ d}tjt|d��( ddg}t| jd
|d� W d   ƒ n1 �s"0    Y  d}tjt|d��( g d¢}t| jd
|d� W d   ƒ n1 �sn0    Y  d S )Nr  r  r  r  r  r  r!  r"  )r  r  r  T)r'   rh   )r  r  r  z"columns contains duplicate entriesr0  zEThe following columns were not found in the Stata data set: not_found)r  r  r  Ú	not_found)r   rD   ru   rs   r£   r¢   rß   rv   r  r$  r   r%  r   rH   rk   rn   r2  r3  r4  )r[   ry   rh   ZdroppedÚ	reorderedr6  r   r   r   Útest_drop_column�  s2    ÿ
0zTestStata.test_drop_columnz;ignore:\nStata value:pandas.io.stata.ValueLabelTypeMismatchc           	         s�  t jg d¢g d¢g d¢g d¢dddtjddgdddtjddgd	d
dtjd	dgdddtjddgdddtjddgdddtjddgg
g d¢d�‰ ˆ  ¡ }tj‡ fdd„ˆ D ƒdd�‰ d|j_|d  	t
¡|d< |d  	t
¡|d< |D ]T}||  ¡ }| d¡j}| ¡ }|dk�r|j|dd �}|jjd dd!� |||< qÞt ¡ �>}ˆ j||d"� |  |¡}| d¡}t ||¡ W d   ƒ n1 �s‚0    Y  d S )#N)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µ   Ú	unlabeledrg   c                    s   g | ]}ˆ |   d ¡‘qS ©r�   ©ru   ©r�   r¾   ©rÛ   r   r   r‘   Í  r’   z6TestStata.test_categorical_writing.<locals>.<listcomp>r   ©Zaxisr(   r³   r®  r�   Tr¶   r¸   rë   )r   r•   rs   rt   r¹   r–   Úconcatr(   r,   r$  rû   ru   rº   Z
as_orderedr»   r¼   r½   rk   rl   rm   r_   rÙ   rn   )	r[   r`   ry   r¾   r¿   rÀ   r*   rÜ   Úresr   r²  r   Útest_categorical_writing®  sD    öóÿ




z"TestStata.test_categorical_writingc              	      s*  t jdd gdd gdd gdd ggdgd�‰ tj‡ fdd	„ˆ D ƒd
d�‰ t ¡ �L}d}tjt|d�� ˆ  	|¡ W d   ƒ n1 sˆ0    Y  W d   ƒ n1 s¦0    Y  t jdgdgdgdgd
ggdgd�‰ tj‡ fdd	„ˆ D ƒd
d�‰ t 
t¡� ˆ  	|¡ W d   ƒ n1 �s0    Y  d S )Nr   i'  r   r   ÚdZToo_longrg   c                    s   g | ]}ˆ |   d ¡‘qS r¯  r°  r±  r²  r   r   r‘   î  r’   zBTestStata.test_categorical_warnings_and_errors.<locals>.<listcomp>r   r³  zbStata value labels for a single variable must have a combined length less than 32,000 characters\.r0  c                    s   g | ]}ˆ |   d ¡‘qS r¯  r°  r±  r²  r   r   r‘   ü  r’   )r   r•   r–   r´  rk   rl   r2  r3  r4  rm   r  r   )r[   r*   r6  r   r²  r   Ú$test_categorical_warnings_and_errorså  s(    "þÿ
ÿFÿÿz.TestStata.test_categorical_warnings_and_errorsc           
         sê   dd„ t dƒD ƒ}| tjg¡ tj|dgd�‰ tj‡ fdd„ˆ D ƒdd�‰ d	ˆ j_	t
 ¡ �z}ˆ j||d
� |  |¡}| d	¡}ˆ  ¡ }|D ].}|| j}| ¡ j}	|j|	dd�}|||< qŒt
 ||¡ W d   ƒ n1 sÜ0    Y  d S )Nc                 S   s   g | ]}d t |ƒ g‘qS )r   )rû   r†  r   r   r   r‘     r’   zHTestStata.test_categorical_with_stata_missing_values.<locals>.<listcomp>éx   Zmany_labelsrg   c                    s   g | ]}ˆ |   d ¡‘qS r¯  r°  r±  r²  r   r   r‘   	  r’   r   r³  r(   rë   Tr¶   )rŠ  r—  rs   rt   r   r•   r–   r´  r(   r,   rk   rl   rm   r_   rÙ   r¹   rº   Úremove_unused_categoriesr¼   r»   rn   )
r[   r`   Úvaluesr*   rÜ   rµ  ry   r¾   rÀ   Znew_catsr   r²  r   Ú*test_categorical_with_stata_missing_values  s$    ÿ





z4TestStata.test_categorical_with_stata_missing_valuesrP   rQ   c           	      C   sx  ddg d¢t  d¡fddg d¢t  d¡d d d… fddg d¢t  g d¢¡fdd	g d¢t  d
d¡fddg d¢t  g d¢¡fddg d¢t  d¡fddg d¢t  d¡fg}g }|D ]F\}}}}|rÚ| |tjj||dd�f¡ q¬| |t|t jd�f¡ q¬t	 
t|ƒ¡}t| |ƒ}t|ƒ}t ||¡ |D ]N}t|| jƒ�r$t || jj|| jj¡ t || jj|| jj¡ �q$d S )NTr·   )r   r   r   r·  Úer¯   Úreverseru  Znoorder)r   r   r   r   r   ræ   r   Zfloat_missing)r   r·  r½  )r   r   r   ru  ru  FZnolabel)r   rD  r   rÎ   g      @Zint32_mixed)r·  r   r½  r   r   r¶   rè   )rs   r<  Úarrayr—  r–   ÚCategoricalÚ
from_codesr   rv   r   Ú	from_dictÚdictrr   r   rk   rn   r   ré   Úassert_series_equalrÀ   ÚcodesÚassert_index_equalr¼   )	r[   r^   ry   r  Zis_catr¾   ro  rÅ  rx   r   r   r   Útest_categorical_order  s2    ù	ÿ
ÿz TestStata.test_categorical_orderrR   rS   c                 C   sp   t t| |ƒƒ}|jddd�}t |jd ¡|_g d¢}g d¢}tjj	||dd�}t
|dd	�}t ||d ¡ d S )
NZsrhÚfirst)Zna_positionr   )
ru  ru  r   r   r   r   r   r   r   r   )ZPoorZFairZGoodz	Very goodZ	ExcellentT)rÅ  r¼   r·   ©r,   )r   rr   Zsort_valuesrs   r<  Úshaper(   r–   rÀ  rÁ  r   rk   rÄ  )r[   r^   rx   rÅ  r¼   rÀ   ry   r   r   r   Útest_categorical_sorting=  s    ÿz"TestStata.test_categorical_sortingc                 C   s\   t | |ƒ}t|ƒ}t|dd�}|D ]4}t|| jƒs6q"|| jjsFJ ‚|| jjr"J ‚q"d S )NF)Úorder_categoricals)rr   r   r   ré   rÀ   r·   )r[   r^   rx   Zparsed_unorderedr¾   r   r   r   Útest_categorical_orderingN  s    
z#TestStata.test_categorical_ordering)r1   r4   r8   r=   rC   rH   rJ   rM   rO   rQ   rS   Ú	chunksizer   r   Úconvert_categoricalsFr'   c              
   C   s*  t | |ƒ}tjdd��( t d¡ t|||d�}W d   ƒ n1 sD0    Y  t|d||d�}d}tdƒD ]²}	tjdd��P t d¡ z| |¡}
W n& tyº   Y W d   ƒ  �qY n0 W d   ƒ n1 sÐ0    Y  |j||| …d d …f  	¡ }|  
|¡}tj||
ddd	� ||7 }qj| ¡  d S )
NTrŠ   rŒ   ©rÏ  r'   )ÚiteratorrÏ  r'   r   r¯   F©rÈ   r”   ©rr   r˜   r™   rš   r   rŠ  ÚreadÚStopIterationÚilocr¹   Ú_convert_categoricalrk   rn   rV  ©r[   r^   rÎ  rÏ  r'   Úfnamerx   ÚitrÚposr“  ÚchunkÚ
from_framer   r   r   Útest_read_chunks_117Z  s:    

ý$ü
8
ÿ
zTestStata.test_read_chunks_117)rÝ  Úreturnc                 C   sT   | D ]J}| | }t |jƒr|j ¡ }|jjtkrFt|jjƒ}| |¡}|| |< q| S )zX
        Emulate the categorical casting behavior we expect from roundtripping.
        )r   ré   rº   rº  r¼   râ   r   r»   )rÝ  r¾   ZserrÀ   r¼   r   r   r   r×  ‘  s    



zTestStata._convert_categoricalc                 C   sª  | j }t|ƒ}t|dd��8}| d¡}t |jdd…d d …f |¡ W d   ƒ n1 sX0    Y  t|dd��:}t|ƒ}t |jdd…d d …f |d ¡ W d   ƒ n1 s®0    Y  t|dd��8}| d¡}t |jdd…d d …f |¡ W d   ƒ n1 �s0    Y  t|dd��6}| ¡ }t |jdd…d d …f |¡ W d   ƒ n1 �sX0    Y  t|dd��}t 	|¡}W d   ƒ n1 �s�0    Y  t ||¡ d S )NT©rÑ  r¯   r   ©rÎ  r   )
r8   r   rÔ  rk   rn   rÖ  rñ   Z	get_chunkr–   r´  )r[   rÙ  rx   rÚ  rÜ  Zfrom_chunksr   r   r   Útest_iterator   s"    
<@
>>*zTestStata.test_iterator)
r3   r7   r<   rB   rG   rI   rL   rN   rP   rR   c              
   C   s*  t | |ƒ}tjdd��( t d¡ t|||d�}W d   ƒ n1 sD0    Y  t|d||d�}d}tdƒD ]²}	tjdd��P t d¡ z| |¡}
W n& tyº   Y W d   ƒ  �qY n0 W d   ƒ n1 sÐ0    Y  |j||| …d d …f  	¡ }|  
|¡}tj||
ddd	� ||7 }qj| ¡  d S )
NTrŠ   rŒ   rÐ  )rÑ  r'   rÏ  r   r¯   FrÒ  rÓ  rØ  r   r   r   Útest_read_chunks_115»  s:    

ý$ü
8
ÿ
zTestStata.test_read_chunks_115c           
      C   s¬   | j }g d¢}d}t||d�}t|dd��n}d}tdƒD ]P}|j||d�}|d u rV qŠ|j||| …d d …f }	tj|	|dd	� ||7 }q8W d   ƒ n1 sž0    Y  d S )
N)r¡   ZcpiÚm1r   rg   Trà  r   r¯   FrÇ   )r8   r   rŠ  rÔ  rÖ  rk   rn   )
r[   rÙ  rh   rÎ  rx   rÚ  rÛ  r“  rÜ  rÝ  r   r   r   Útest_read_chunks_columnsó  s    z"TestStata.test_read_chunks_columnsc              	   C   s  d|j _ddddœ}t ¡ �j}|j|||d� t|ƒ�}| ¡ }W d   ƒ n1 sT0    Y  dddddœ}||ksxJ ‚W d   ƒ n1 sŒ0    Y  d	|d< t ¡ �\}|j|||d� t|ƒ�}| ¡ }W d   ƒ n1 sÞ0    Y  ||ksôJ ‚W d   ƒ n1 �s
0    Y  d S )
Nr(   ú	City RankúCity ExponentÚCityr   ©rÕ   r`   rÄ   )r(   r   r   r   z	The Index)r(   r,   rk   rl   rm   r   rÕ   )r[   r`   r   rÕ   r*   ry  Zread_labelsZexpected_labelsr   r   r   Útest_write_variable_labels  s$    

&ü*

&z$TestStata.test_write_variable_labelsc              	   C   s‚   d|j _ddddœ}t ¡ �R}d}tjt|d��  |j|||d� W d   ƒ n1 sV0    Y  W d   ƒ n1 st0    Y  d S )	Nr(   úZvery longvery longvery longvery longvery longvery longvery longvery longvery longvery longrç  rè  r   ú.Variable labels must be 80 characters or fewerr0  ré  ©r(   r,   rk   rl   r2  r3  r4  rm   )r[   r`   r   rÕ   r*   r6  r   r   r   Útest_invalid_variable_labels  s    
ÿz&TestStata.test_invalid_variable_labelsrb   rc   c              	   C   s†   d|j _ddddœ}d|d< t ¡ �N}tjtdd	��  |j|||d
� W d   ƒ n1 sZ0    Y  W d   ƒ n1 sx0    Y  d S )Nr(   rë  rç  rè  r   u   invalid character Å’r   z,Variable labels must contain only charactersr0  ré  rí  )r[   r`   r   rÕ   r*   r   r   r   Ú$test_invalid_variable_label_encoding&  s    
ÿÿz.TestStata.test_invalid_variable_label_encodingc              	   C   sú   g d¢}ddd  |¡dœ}d}tjt|d��F t ¡ �}|j||d� W d   ƒ n1 sZ0    Y  W d   ƒ n1 sx0    Y  ddd	dœ}d
}tjt|d��F t ¡ �}|j||d� W d   ƒ n1 sÎ0    Y  W d   ƒ n1 sì0    Y  d S )N)u   Î¡õ   Î‘u   Î�u   Î”rð  u   Î£ræ  rç  rÄ   r   zKVariable labels must contain only characters that can be encoded in Latin-1r0  )rÕ   zqA very, very, very long variable label that is too long for Stata which means that it has more than 80 charactersrì  )r+   r2  r3  r4  rk   rl   rm   )r[   r   r»  Zvariable_labels_utf8r6  r*   Zvariable_labels_longr   r   r   Ú test_write_variable_label_errors3  s$    ýÿ
Jý
z*TestStata.test_write_variable_label_errorsc                 C   s  t  ddddddd¡t  ddddddd¡t  dd	d
d	d
d	d¡g}tg d¢g d¢|dœƒ}t ¡ �ž}|j|dd� t|dd�}t ||¡ |j|dddid� t|dd�}t ||¡ |j 	¡  
d¡}|j|d|did� t|dd�}t ||¡ W d   ƒ n1 �s0    Y  d S )NéÏ  rƒ   r„   éà.  éÜ  r,  éR  éð  r‚   r   é   ©r   rD  r   ©ÚappleÚbananaZcherry©ÚnumsÚstrsÚdatesFrõ   Tr&   rÿ  rê   )rj   r'   )Údtr   r   rk   rl   rm   r   rn   rh   Útolistr(   )r[   rÿ  rÛ   r*   ÚrereadÚdirectZ	dates_idxr   r   r   Útest_default_date_conversionQ  s*    ýýÿ
z&TestStata.test_default_date_conversionc              	   C   sx   t dddgiƒ}d}tjt|d��B t ¡ �}| |¡ W d   ƒ n1 sL0    Y  W d   ƒ n1 sj0    Y  d S )Nr   y      ð?       @y       @      @z"Data type complex128 not supportedr0  )r   r2  r3  ÚNotImplementedErrorrk   rl   rm   )r[   rÛ   r6  r*   r   r   r   Útest_unsupported_typen  s
    
zTestStata.test_unsupported_typec                 C   sT  t  ddddddd¡t  ddddddd¡t  dd	d
d	d
d	d¡g}tg d¢g d¢|dœƒ}d}tjt|d��J t ¡ �"}|j|ddid� W d   ƒ n1 sœ0    Y  W d   ƒ n1 sº0    Y  t	j
dddd�}tg d¢g d¢|dœƒ}tjtdd��D t ¡ �}| |¡ W d   ƒ n1 �s&0    Y  W d   ƒ n1 �sF0    Y  d S )Nrò  rƒ   r„   ró  rô  r,  rõ  rö  r‚   r   r÷  rø  rù  rü  zFormat %tC not implementedr0  rÿ  ZtCr&   z1-1-1990r   zAsia/Hong_Kong)ZperiodsÚtzzData type datetime64)r   r   r   r2  r3  r  rk   rl   rm   r–   Z
date_range)r[   rÿ  rÛ   r6  r*   r   r   r   Útest_unsupported_datetypev  s0    ýýÿ
Nýÿ
z#TestStata.test_unsupported_datetypec                 C   sD   d}t jt|d�� t| jdd� W d   ƒ n1 s60    Y  d S )Na*  
Value labels for column ethnicsn are not unique. These cannot be converted to
pandas categoricals.

Either read the file with `convert_categoricals` set to False or use the
low level interface in `StataReader` to separately read the values and the
value_labels.

The repeated labels are:
-+
wolof
r0  T©rÏ  )r2  r3  r4  r   rV   )r[   r6  r   r   r   Útest_repeated_column_labels•  s    
z%TestStata.test_repeated_column_labelsc                 C   s~   t | jƒ}tdddddddtjddg
ddddtjdddddg
dtjddddddddg
g d¢d	œƒ}|g d	¢ }t ||¡ d S )
Nr   r   r   r   r   r¯   r†   )
r   r   r   r·  r½  rÄ   Úgr�  r‡  r“  )rÅ   r�   rœ   rÆ   )r   rW   r   rs   ÚNaNrk   rn   )r[   rò   rÛ   r   r   r   Útest_stata_111¤  s    
üÿzTestStata.test_stata_111c              	   C   s  t dt tj¡jdgdt tj¡jt tj¡jgdœƒ}d}tjt|d��B t	 
¡ �}| |¡ W d   ƒ n1 st0    Y  W d   ƒ n1 s’0    Y  tj|jd< d}tjt|d��B t	 
¡ �}| |¡ W d   ƒ n1 sä0    Y  W d   ƒ n1 �s0    Y  d S )NrË   g      Ð©ZColumnOkÚColumnTooBigzZColumn ColumnTooBig has a maximum value \(.+\) outside the range supported by Stata \(.+\)r0  ©r   r  úaColumn ColumnTooBig has a maximum value of infinity which is outside the range supported by Stata)r   rs   ÚfinfoÚdoubleÚepsÚmaxr2  r3  r4  rk   rl   rm   Úinfr÷   )r[   rò   r6  r*   r   r   r   Útest_out_of_range_double´  s     þÿÿ
Fÿ
z"TestStata.test_out_of_range_doublec              	   C   sD  t dt tj¡jt tj¡jd gdt tj¡jt tj¡jgdœƒ}d|j_|D ]}||  tj¡||< qRt	 
¡ �H}| |¡ t|ƒ}|d  tj¡|d< t	 || d¡¡ W d   ƒ n1 sÂ0    Y  tj|jd< d}tjt|d��D t	 
¡ �}| |¡ W d   ƒ n1 �s0    Y  W d   ƒ n1 �s60    Y  d S )	NrË   rA  r  r(   r  r  r  r0  )r   rs   r  rv   r  r  r(   r,   ru   rk   rl   rm   r   r  rn   rÙ   r  r÷   r2  r3  r4  )r[   rÛ   r¾   r*   r  r6  r   r   r   Útest_out_of_range_floatÍ  s2    ýýúÿ

0ÿ
z!TestStata.test_out_of_range_floatc                 C   s6   t  ¡ }d|j_dd„ }t  |j|¡}t  ||¡ d S )Nr(   c                 S   s   t | ƒ d¡S ©Nr(   ©r   rÙ   r9  r   r   r   r:  ò  r’   z-TestStata.test_path_pathlib.<locals>.<lambda>)rk   ÚmakeDataFramer(   r,   Zround_trip_pathlibrm   rn   ©r[   rò   r.  rþ   r   r   r   Útest_path_pathlibï  s
    zTestStata.test_path_pathlibc                 C   s6   t  ¡ }d|j_dd„ }t  |j|¡}t  ||¡ d S )Nr(   c                 S   s   t | ƒ d¡S r  r  r9  r   r   r   r:  ù  r’   z6TestStata.test_pickle_path_localpath.<locals>.<lambda>)rk   r  r(   r,   Zround_trip_localpathrm   rn   r  r   r   r   Útest_pickle_path_localpathö  s
    z$TestStata.test_pickle_path_localpathrj   c              	   C   s°   dg d¢i}t |d�}|d  d¡|d< t ¡ �R}|j||d� t|dd��}| ¡ }W d   ƒ n1 sj0    Y  W d   ƒ n1 sˆ0    Y  |dddd	d
dœiks¬J ‚d S )NÚA)ÚBÚEÚCr  r!  )r!   r�   rõ   Trà  r   r"  r!  )r   r   r   r   )r   ru   rk   rl   rm   r   rU  )r[   rj   r·  rò   r*   Zdta_iterrU  r   r   r   Útest_value_labels_iteratorý  s    

Dz$TestStata.test_value_labels_iteratorc                 C   s^   t  ¡ }d|j_t  ¡ �&}| |¡ t|dd�}W d   ƒ n1 sD0    Y  t  ||¡ d S )Nr(   ©Ú	index_col)rk   r  r(   r,   rl   rm   r   rn   )r[   rò   r*   r  r   r   r   Útest_set_index
  s    

*zTestStata.test_set_indexÚcolumn)ÚmsÚdayÚweekÚmonthZqtrZhalfr¢  c                 C   s:   t | jƒ}|jd|f }|jd|d f }||ks6J ‚d S )Nr   Ú_fmt)r   rZ   r÷   )r[   r'  rò   Zunformattedr  r   r   r   Ú(test_date_parsing_ignores_format_details  s    
z2TestStata.test_date_parsing_ignores_format_detailsc                 C   sP  t dddddddt d¡dddd dgd	d
dddddt d¡ddddggg d¢d�}t|d td�|d< t|d tjd�|d< t|d tjd�|d< |d  tj¡|d< t|d tj	d�|d< d|j
_|j
 tj¡|_
| ¡ }t ¡ �T}|j|ddidgdd� |  |¡}tj| d¡|dd� t ||¡ W d   ƒ n1 �sB0    Y  d S )Nrá   râ   r   rã   rä   r   Aý  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiˆ  zstring-1zobject-1z
2003-12-26r   Aý  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrÄ   )rá   râ   r£   r¢   rß   rv   r  r   r  Zs2045ZsrtlÚforced_strlrç   rè   r£   r¢   rß   rv   r(   r   rê   r.  rc   )r'   Úconvert_strlr`   FrÞ   )r   rs   rì   r   râ   r£   r¢   ru   rß   rv   r(   r,   r¹   rk   rl   rm   r_   rn   rÙ   )r[   rÛ   r¹   r*   rÜ   r   r   r   Útest_writer_117'  sh    ôôñá.
ü
ýzTestStata.test_writer_117c              	   C   sº   t g d¢g d¢gg d¢d�}d|j_t t¡�x t ¡ �P}|j|ddgdd	� |  |¡}| 	d¡}|j
|_
tj||d
d� W d   ƒ n1 sŽ0    Y  W d   ƒ n1 s¬0    Y  d S )N)A¸  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar  rú  )Aè  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr   rû  )Z2long1long1long1long1long1long1long1long1long1long1Úlongr   rg   r(   r1  r   rc   )r/  r`   FrÞ   )r   r(   r,   rk   r  r
   rl   rm   r_   rÙ   rh   rn   )r[   rÛ   r*   r  r   r   r   Útest_convert_strl_name_swapn  s    þ


z%TestStata.test_convert_strl_name_swapc                 C   sÈ   t  ddddddd¡t  ddddddd¡t  dd	d
d	d
d	d¡g}tg d¢g d¢|dœƒ}t ¡ �T}d}tjt|d��" |j|ddid� W d   ƒ n1 sœ0    Y  W d   ƒ n1 sº0    Y  d S )Nrò  rƒ   r„   ró  rô  r,  rõ  rö  r‚   r   r÷  rø  rù  rü  z0convert_dates key must be a column or an integerr0  Z
wrong_namerê   r&   )	r   r   r   rk   rl   r2  r3  r4  rm   )r[   rÿ  rÛ   r*   r6  r   r   r   Útest_invalid_date_conversion}  s    ýýÿ
z&TestStata.test_invalid_date_conversionc              	   C   s¬   t  ¡ }t ¡ }d|j_t ¡ �l}|j||d� | d¡ t	|dƒ�}| 
| ¡ ¡ W d   ƒ n1 sh0    Y  t|dd�}W d   ƒ n1 s’0    Y  t ||¡ d S )Nr(   rë   r   Úwbr$  )r    ÚBytesIOrk   r  r(   r,   rl   rm   ÚseekÚopenÚwriterÔ  r   rn   )r[   r`   Zbiorò   r*   Údtar  r   r   r   Útest_nonfile_writing‘  s    

,*zTestStata.test_nonfile_writingc              	   C   sº   t  ¡ }d|j_t  ¡ �‚}t |d¡�}|j|dd� W d   ƒ n1 sJ0    Y  t |d¡�}t|dd�}W d   ƒ n1 s‚0    Y  W d   ƒ n1 s 0    Y  t  	||¡ d S )Nr(   r4  rb   rë   Úrbr$  )
rk   r  r(   r,   rl   ÚgzipÚGzipFilerm   r   rn   )r[   rò   r*   Úgzr  r   r   r   Útest_gzip_writingŸ  s    
,HzTestStata.test_gzip_writingc                 C   s^   |   | j¡}g d¢}g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t||d	�}t ||¡ d S )
N)Úutf8Úlatin1ÚasciiZ	utf8_strlZ
ascii_strl)õ   Ï�Î±Î·Î´Î±Ï‚u   PÃ„NDÃ„SÚprC  rD  )õ   Æ¤Ä€Å„Ä�Ä…Åœõ   Ã–r   rE  r   )õ   á´˜á´€á´Žá´…á´€Sõ   ÃœÚnrG  rI  )ú      rJ  r·  rJ  r·  )ú rÄ   r   rK  r   )rÄ   rÄ   rt  rÄ   rt  )rÄ   rÄ   rK  rÄ   rK  rg   )r_   rX   r   rk   rn   )r[   Z
unicode_dfrh   r»  ry   r   r   r   Útest_unicode_dta_118ª  s    ù	zTestStata.test_unicode_dta_118c                 C   sÈ   dddœd ddœg}t |ƒ}|j d¡|_t ¡ �‚}|j|ddd� t|ƒ}| d	¡}t ||¡ d |j	d d …d
f< |j|dd
gdd� t|ƒ}| d	¡}t ||¡ W d   ƒ n1 sº0    Y  d S )NA¸  stringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringr   )ÚmixedÚnumberr   rß   Frc   ri   rÄ   rM  )rj   r/  r`   )
r   rN  ru   rk   rl   rm   r   Úfillnarn   r÷   )r[   Úoutputr*   r  ry   r   r   r   Útest_mixed_string_strl»  s    


ÿ
z TestStata.test_mixed_string_strlc              	   C   s–   dddœd ddœg}t |ƒ}d |jd d …df< t ¡ �L}tjtdd�� |j||d� W d   ƒ n1 sj0    Y  W d   ƒ n1 sˆ0    Y  d S )NÚnoner   )rR  rN  r   z Column `none` cannot be exportedr0  rë   )r   r÷   rk   rl   r2  r3  r4  rm   )r[   r`   rP  r*   r   r   r   Útest_all_none_exceptionÐ  s    
z!TestStata.test_all_none_exceptionc              
   C   s´   d}t |gdgd�}t ¡ �„}d}d}tjt|› d|› �d��D t t¡� | |¡ W d   ƒ n1 sj0    Y  W d   ƒ n1 sˆ0    Y  W d   ƒ n1 s¦0    Y  d S )Nu9   Here is one __ï¿½__ Another one __Â·__ Another one __Â½__Úinvalidrg   z\'latin-1' codec can't encode character '\\ufffd' in position 14: ordinal not in range\(256\)zP'ascii' codec can't decode byte 0xef in position 14: ordinal not in range\(128\)ú|r0  )	r   rk   rl   r2  r3  ÚUnicodeEncodeErrorr  ÚResourceWarningrm   )r[   r`   Úcontentrò   r*   Zmsg1Zmsg2r   r   r   Útest_invalid_file_not_writtenÙ  s    
ÿÿz'TestStata.test_invalid_file_not_writtenc           
   	   C   s  t dgd dgd gddgd�}t ¡ �Þ}|j|ddgd� t|d	ƒ�¢}| ¡ }d}| d
¡|v sfJ ‚| d¡|v sxJ ‚| d¡d dd… }| d¡dd … D ]8}| d¡d }|| d¡d  }	t	|ƒ|	d ks J ‚q W d   ƒ n1 sî0    Y  W d   ƒ n1 �s0    Y  d S )NÚpandasr   u   Ã¾Ã¢Ã‘Ã�Ã…Â§Zvar_strZvar_strlrg   rc   )r`   r/  r;  zlatin-1zutf-8s   strlsr   rM  s   GSOó    ó   ‚)
r   rk   rl   rm   r7  rÔ  ÚencodeÚsplitÚfindr›   )
r[   rP  r*   r  rX  ry   ZgsosZgsor�  Úsizer   r   r   Útest_strl_latin1ê  s    ÿ
zTestStata.test_strl_latin1c                 C   s†   d}t  t¡�B}t| jƒ}t|ƒdks*J ‚|d jjd |ksBJ ‚W d   ƒ n1 sV0    Y  tdggd dgd�}t  	||¡ d S )Na  
One or more strings in the dta file could not be decoded using utf-8, and
so the fallback encoding of latin-1 is being used.  This can happen when a file
has been incorrectly encoded by Stata or some other software. You should verify
the string values returned are correct.é—   r   u   DÃ¼sseldorfrù   rg   )
rk   r  ÚUnicodeWarningr   r?   r›   Úmessager#  r   rn   )r[   r6  rœ   rý   ry   r   r   r   Útest_encoding_latin1_118ý  s    
6z"TestStata.test_encoding_latin1_118c              
   C   s¤   t  | jd¡�}t|ƒ}W d   ƒ n1 s,0    Y  |jdksDJ ‚|jd dksVJ ‚|jd dkshJ ‚|jd dkszJ ‚|jd	 t td
dddddƒ¡ks J ‚d S )Nr;  )r   iç€  )r   r†   A¸  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)r   r‚   g…ëQ¸	@)r   ru  r   )r   r   rô  rƒ   r,  )	r<  r7  rY   r   rÊ  rÖ  r–   Ú	Timestampr   )r[   r>  rò   r   r   r   Útest_stata_119  s    &zTestStata.test_stata_119)rd   re   Nc              
   C   s"  t jg d¢dd�}tg d¢g d¢g d¢gg d¢d�}||d	< d
dddddœ}d}|d  tj¡|d< t ¡ � }t|||dg|d|d�}| 	¡  t
|ƒ}|d  d¡|d< t ||¡ t|ƒ}	|	j|ksÊJ ‚|	 ¡ |ksÚJ ‚|j||dd� t
|ƒ}
t ||
¡ W d   ƒ n1 �s0    Y  d S )N)r   õ   Î²õ   Ä‰Tr¶   )r   r   u   á´¬u   á´€ relatively long Å�tring)rD  r   u   á´®rÄ   )r   r   u   á´°N)r   rh  ri  Ústrlsrg   õ	   á´�á´¬áµ€rú  u	   áµˆáµ‰áµŠu   á´Žáƒ¢áƒ„á‚²á‚³á‚´á‚¶á‚ºzLong StringsrÄ   )r   rh  ri  rj  rk  u   á´…aáµ€a-labelrh  rj  F)rÖ   r/  rÕ   rj   r`   )r`   rj   )r–   rÀ  r   ru   rs   rß   rk   rl   r   Ú
write_filer   rO  rn   r   rÖ   rÕ   rm   )r[   r`   rÀ   r!   rÕ   rÖ   r*   Úwriterrÿ   r.  Zreread_to_statar   r   r   Útest_utf8_writer  sJ    ýúû
ù	zTestStata.test_utf8_writerc              	   C   sà   t tjdtjd�ƒ}t ¡ �L}tjtdd�� t	||dd� W d   ƒ n1 sP0    Y  W d   ƒ n1 sn0    Y  t ¡ �L}tjtdd�� t	||dd� W d   ƒ n1 s´0    Y  W d   ƒ n1 sÒ0    Y  d S )	N)r   iè€  rè   z"version must be either 118 or 119.r0  rc   rë   zYou must use version 119rd   )
r   rs   Zzerosr£   rk   rl   r2  r3  r4  r   )r[   rò   r*   r   r   r   Útest_writer_118_exceptionsC  s    
J
z$TestStata.test_writer_118_exceptionsN)^Ú__name__Ú
__module__Ú__qualname__r2  Úfixturer\   r_   r   ÚmarkÚparametrizero   rz   rŸ   r¤   rÁ   rÉ   rØ   rÝ   rà   rí   ró   rø   r   r  r  r  r   r&  r/  r7  r>  r@  rC  rE  rJ  rK  rT  rW  r]  r_  rj  rr  r~  r€  r‘  rš  r¨  rª  r­  Úfilterwarningsr¶  r¸  r¼  rÇ  rË  rÍ  rÞ  Ústaticmethodr   r×  râ  rã  rå  rê  rî  rï  rñ  r  r  r  r
  r  r  r  r  r  r#  r&  r-  r0  r2  r3  r:  r?  rL  rQ  rS  rY  ra  re  Zslowrg  rn  ro  r   r   r   r   r/   ?   s  

@

<

-(



$ÿÿ


	



	 
:!ÿ3

#

þ$þ&



"
	ÿ
G





+r/   r`   )éi   él   éo   éq   rb   c                 C   sT   |dddƒ}t j |d¡}t j |d| › d�¡}t|ƒ}t|ƒ}tj||dd� d S )	Nr    r!   r"   zstata-compat-118.dtazstata-compat-z.dtaFrÇ   )r)   r*   r+   r   rk   rn   )r`   r#   Z	data_baseÚrefÚoldry   Zold_dtar   r   r   Útest_backward_compatM  s    r~  ra   Úuse_dictTFÚinferc              	   C   sN  d}| r*|r| }n
t j|  }|d|› �7 }| }|r6d}|rBd| i}ttj dd¡tdƒd�}d	|j_t	 
|¡��È}|j|||d
� | dkrÈt |d¡�}	t |	 ¡ ¡}
W d   ƒ n1 sº0    Y  �nJ| dk�rt |d¡�&}	t |	 |	jd ¡¡}
W d   ƒ n1 �s0    Y  nú| dk�r`t |d¡�}	t |	 ¡ ¡}
W d   ƒ n1 �sT0    Y  n²| dk�r²t d¡}| |d¡�}	t |	 ¡ ¡}
W d   ƒ n1 �s¦0    Y  n`| dk�rt d¡}| |d¡�}	t |	 ¡ ¡}
W d   ƒ n1 �sø0    Y  n| d u �r|}
t|
d	d�}t	 ||¡ W d   ƒ n1 �s@0    Y  d S )Nzdta_inferred_compression.dtarƒ  r€  Úmethodr…   r   rî   rg   r(   )r`   Úcompressionr<  r;  rh  Úrr   Úbz2ÚzstdZ	zstandardÚxzÚlzmar$  )ÚicomÚ_compression_to_extensionr   rs   rï   rð   rñ   r(   r,   rk   rl   rm   r<  r7  r    r5  rÔ  ÚzipfileÚZipFileÚfilelistr„  r2  Zimportorskipr   rn   )r‚  r`   r  r€  Ú	file_nameÚfile_extZcompression_argrò   r*   ÚcompÚfpr…  r‡  r  r   r   r   Útest_compressionW  sH    
0
8
0

0

0
r‘  r�  rh  rŽ  )Nr9  rh  c           
   	   C   s  d|› �}d}t tj dd¡tdƒd�}d|j_t |¡�¾}| |dœ}|j	||d	� | d
ksd|d
krÎt
 |d¡�L}t|jƒdks„J ‚|jd j|ks˜J ‚t | |jd ¡¡}W d   ƒ qÒ1 sÂ0    Y  n|}t|dd�}	t |	|¡ W d   ƒ n1 sþ0    Y  d S )Nútest.ztest.dtar…   r   rî   rg   r(   )r�  Úarchive_name©r‚  rh  rƒ  r   r   r$  )r   rs   rï   rð   rñ   r(   r,   rk   rl   rm   rŠ  r‹  r›   rŒ  Úfilenamer    r5  rÔ  r   rn   )
r�  rŽ  r�  r“  rò   r*   r‚  Zzpr�  r  r   r   r   Útest_compression_dictƒ  s    

6r–  c              
   C   s¶   t dtg d¢dd�iƒ}d|j_t ¡ �z}|j|| d� t|ddd	�}t|ƒD ]D\}}| 	d¡}d|v slJ ‚t 
|j|jjd| d|d
  … ¡ qNW d   ƒ n1 s¨0    Y  d S )NÚcats)r   r   r   r   r   r�   rè   r(   rë   r   F)rÎ  rÌ  r   )r   r   r(   r,   rk   rl   rm   r   Ú	enumeraterÙ   rÄ  r—  rÖ  )r`   rò   r*   r.  r‡  Úblockr   r   r   Útest_chunked_categorical˜  s    

rš  c           	   	   C   sX  t j | d¡}g d¢}t|dd��¬}t t¡�‚ t|ƒD ]h\}}t|j	ƒ|d| d|d  … ksfJ ‚|dk r~t
 ddg¡}nt
jdgd	d
�}t |j	jj|¡ q8W d   ƒ n1 s¶0    Y  W d   ƒ n1 sÔ0    Y  t t¡�F t|dd��}| ¡ }W d   ƒ n1 �s0    Y  W d   ƒ n1 �s60    Y  t|ƒ}t ||¡ d S )Nústata-dta-partially-labeled.dta)r   r   r   r   r   r   rá  r   r   r   r   r  rè   r¯   )r)   r*   r+   r   rk   r  r	   r˜  rñ   r—  r–   ÚIndexrÆ  rÀ   r¼   Ú__next__r   rn   )	r$   Údta_filer»  r.  r‡  r™  ÚidxZlarge_chunkr  r   r   r   Ú test_chunked_categorical_partial¥  s    &PHr   c                 C   sÀ   t j | d¡}tjtdd�� t|dd� W d   ƒ n1 s>0    Y  tjtdd�� t|dd� W d   ƒ n1 sx0    Y  tjtdd�� t|dd� W d   ƒ n1 s²0    Y  d S )Nr›  zchunksize must be a positiver0  ru  rá  r   rú  )r)   r*   r+   r2  r3  r4  r   )r$   rž  r   r   r   Útest_iterator_errors¸  s    **r¡  c               
      sú   ddgdgd  ‰ t ‡ fdd„tdƒD ƒƒ} t ¡ �²}| j|dd	� tjg d
¢dd�}t|dd��f}t|ƒD ]L\}}tdƒD ]}t 	|j
| j|¡ q|t || j|d |d d … ¡ qlW d   ƒ n1 sÎ0    Y  W d   ƒ n1 sì0    Y  d S )NÚc_labelÚb_labelÚa_labelr  c                    s"   i | ]}d |› �t jˆ dd�“qS )r¾   Tr¶   )r–   rÀ  )r�   rp  ©r»  r   r   r[  Å  r’   z.test_iterator_value_labels.<locals>.<dictcomp>r   Frõ   )r¤  r£  r¢  râ   rè   rc  rá  r   )r   rŠ  rk   rl   rm   r–   rœ  r   r˜  rÆ  Údtypesr¼   rn   rÖ  )rò   r*   ry   r.  r“  rÜ  r‡  r   r¥  r   Útest_iterator_value_labelsÂ  s    
r§  c               	   C   s  t tdd„ tdƒD ƒƒtdd„ tdƒD ƒƒggddgd�} t ¡ �®}tjtdd	�� | j|d
d� W d   ƒ n1 sv0    Y  t|ƒ}t	t
jt
jgddgd�}t |j|¡ |jd | jd ksÆJ ‚|jd t| jd ƒksâJ ‚W d   ƒ n1 sö0    Y  d S )Nc                 s   s   | ]}d | V  qdS )r   Nr   r†  r   r   r   Ú	<genexpr>Ò  r’   z&test_precision_loss.<locals>.<genexpr>é<   é4   ÚbigÚlittlerg   z&Column converted from int64 to float64r0  Frõ   )r(   )r   r¬  )r   r«  )r   ÚsumrŠ  rk   rl   r  r   rm   r   r   rs   r  rÄ  r¦  r÷   Úfloat)rò   r*   r  Zexpected_dtr   r   r   Útest_precision_lossÐ  s    ,þ
ÿ,r¯  c              	   C   sÐ   t g d¢g d¢gddgg d¢d�}d|j_t ¡ �Š}|j|| d� t|| dd	�}t ||¡ t || ¡�}t	 
| ¡ ¡}W d   ƒ n1 sŒ0    Y  t|dd
�}t ||¡ W d   ƒ n1 sÂ0    Y  d S )N©g¿¶~úÏš¿?g9DÜœJÎ?g>éD‚)â?©gÜ.4×i¤(@g33333þ@gÍÌÌÌ¤œAr  r   ©ÚXÚYÚZ©r(   rh   r(   r”  ©r‚  r%  r$  )r   r(   r,   rk   rl   rm   r   rn   Zdecompress_filer    r5  rÔ  )r‚  rò   r*   r  ÚfhÚcontentsr   r   r   Útest_compression_roundtripá  s    ý
,rº  Úto_inferÚ
read_inferc                 C   s°   | }t j| }d|› �}tg d¢g d¢gddgg d¢d�}d|j_|rJd	n|}|rVd	n|}t |¡�8}	|j|	|d
� t|	|dd�}
t 	|
|¡ W d   ƒ n1 s¢0    Y  d S )Nr’  r°  r±  r  r   r²  r¶  r(   r€  r”  r·  )
rˆ  r‰  r   r(   r,   rk   rl   rm   r   rn   )Zcompression_onlyr¼  r»  r‚  Úextr•  rò   Zto_compressionZread_compressionr*   rþ   r   r   r   Útest_stata_compressionö  s    

ýr¾  c               	   C   sf  t g d¢ddtjdtjgg d¢t g d¢¡dœƒ} t ¡ ��}dd	d
dœdd	dœdœ}i |¥dddddœi¥}t|| |d�}| ¡  t	|ƒ}| 
¡ }||ks J ‚d}tjt|d��, ddddœi}t|| |d�}W d   ƒ n1 sä0    Y  d}tjt|d��0 ddddddœi}t|| |d�}W d   ƒ n1 �s80    Y  W d   ƒ n1 �sX0    Y  d S )N)r   r   r   r   r   r   rD  g      "@)r‚   r‚   r°   r�   r…   )r“  rp  r‚  rp  r“  )Úfully_labelledÚpartially_labelledr´  rµ  r¥   r§   r©   )r   r   r   )r   rD  )r¿  rÀ  rµ  r“  rp  r‚  )r   r   r   ©rU  zCCan't create value labels for notY, it wasn't found in the dataset.r0  ZnotYrk  rl  )r‚   r�   zUCan't create value labels for Z, value labels can only be applied to numeric columns.r   r‡  r   )r   rs   rt   r–   rÀ  rk   rl   r   rl  r   rU  r2  r3  rB  r4  )r!   r*   rU  ry   rm  r.  Úreader_value_labelsr6  r   r   r   Ú!test_non_categorical_value_labels  s4    üÿ	
þ,ÿrÃ  c               	   C   sü   t g d¢g d¢g d¢g d¢g d¢dœƒ} dddœdddœd	d
dœddiddidœ}dddœdddœd	d
dœddiddidœ}t ¡ �d}t t¡� | j||d� W d   ƒ n1 s´0    Y  t|ƒ}| ¡ }||ksÚJ ‚W d   ƒ n1 sî0    Y  d S )N)r   r   r   r   r¯   r�   )r�   r�   r°   r°   r�   r�   )r   r¯   r¯   r†   r†   r°   r  )z	invalid~!Z	6_invalidZ&invalid_name_longer_than_32_charactersZ	aggregate©r   r   rk  rl  rÄ  rª   r¨   )r�   r°   r¯   r­   r   r©   )Z	invalid__Z
_6_invalidZ invalid_name_longer_than_32_charZ
_aggregateZ_1__2_rÁ  )r   rk   rl   r  r
   rm   r   rU  )r!   rU  ry   r*   r.  rÂ  r   r   r   Ú0test_non_categorical_value_label_name_conversion4  s4    ûÿû	û
,rÅ  c               	   C   sÚ   dddddœi} t dg d¢iƒ}t ¡ �ž}|j|| d� t|dd�}| ¡ }|| ksXJ ‚d}d	d
 dg¡ }d|› d|› d
�}tjt	|d�� t
|dd� W d   ƒ n1 s®0    Y  W d   ƒ n1 sÌ0    Y  d S )NZrepeated_labelsZTenzMore than ten)r…   r€   é(   )r…   r…   r€   r€   rÆ  rÆ  rÁ  Fr	  zQ--------------------------------------------------------------------------------
Ú
z
Value labels for column a    are not unique. These cannot be converted to
pandas categoricals.

Either read the file with `convert_categoricals` set to False or use the
low level interface in `StataReader` to separately read the values and the
value_labels.

The repeated labels are:
r0  T)r   rk   rl   rm   r   rU  r+   r2  r3  r4  r   )rU  r!   r*   r.  rÂ  r¾   Zrepeatsr6  r   r   r   Ú;test_non_categorical_value_label_convert_categoricals_errorY  s(    ÿÿÿ
ÿ	÷rÈ  ré   c           
      C   s  t tg d¢ƒtdtjtjg| jd�tg d¢ƒdœƒ}|jjjj}| dd¡}|dkrZd	}n|d
krfd}t	j
| }t	|ƒ}td||gtdd�}tg d¢dd�}t ¡ �X}|j|d|d� t|dd�}	t |j|	j¡ t |	j|¡ t |	j|¡ W d   ƒ n1 �s0    Y  d S )Nrø  r   rè   )r   r   Nr   ÚurÄ   r  rß   Úboolr£   r   )ré   r,   )r   r   rÄ   r   rÉ  Fri   Tr•  )r   r   r–   ZNAr,   r   ré   Znumpy_dtypeÚreplacer   ZBASE_MISSING_VALUESrâ   rk   rl   rm   r   rÄ  r   r   )
ré   r`   rò   Z
dtype_nameÚvaluer˜  Z
expected_bZ
expected_cr*   r  r   r   r   Útest_nullable_support  s,    

ýÿ

rÍ  )Er„  r   r   r<  r    r)   rŒ  r˜   rŠ  Únumpyrs   r2  Zpandas.core.dtypes.commonr   rZ  r–   Zpandas._testingZ_testingrk   Zpandas.core.framer   r   Zpandas.core.indexes.apir   Zpandas.io.commonÚcommonrˆ  Zpandas.io.parsersr   Zpandas.io.statar	   r
   r   r   r   r   r   r   r   rs  r   r$   r.   r/   rt  ru  r~  r‘  r–  rš  r   r¡  r§  r¯  rº  r¾  rÃ  rÅ  rÈ  ZBooleanDtypeZ	Int8DtypeZ
Int16DtypeZ
Int32DtypeZ
Int64DtypeZ
UInt8DtypeZUInt16DtypeZUInt32DtypeZUInt64DtyperÍ  r   r   r   r   Ú<module>   s˜   ,



              
	)

&%&÷þ