a
    é´«jãj ã                   @   s€  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  mZ d dlZd dlmZ d dlmZ d dlmZ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j%dd„ ƒZ&ej%d	d
„ ƒZ'G dd„ dƒZ(ej) *dg d¢¡dd„ ƒZ+dd„ Z,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!„ ƒƒZ/ej) *dg d¢¡d"d#„ ƒZ0d$d%„ Z1ej) *d&d'¡d(d)„ ƒZ2d*d+„ Z3d,d-„ Z4d.d/„ Z5ej) *d0ddg¡ej) *d1ddg¡d2d3„ ƒƒZ6d4d5„ Z7d6d7„ Z8d8d9„ Z9ej) *dg d¢¡ej) *d:ej:ej;ej<ej=ej>ej?ej@ejAejBg	¡d;d<„ ƒƒZCd=d>„ ZDdS )?é    N)Údatetime)ÚCategoricalDtype)Ú	DataFrameÚSeries©Ú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   úY/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/io/test_stata.pyÚmixed_frame&   s    ýÿr   c                 C   s&   | ddddƒ}t |dd�}d|j_|S )NÚioÚdataÚstatazstata5_114.dtaT©Úconvert_datesÚindex)r   r$   Úname)ÚdatapathZ	dta14_114Ú
parsed_114r   r   r   r'   1   s    r'   c                	   @   s
  e Zd Z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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 1du¡ej dg dv¢¡ej dwdxdyg¡ej dzd{d|g¡ej d}d{d|g¡d~d„ ƒƒƒƒƒZ8e9e:e:d€œd�d‚„ƒZ;dƒd„„ Z<ej 1du¡ej dg d…¢¡ej dwdxdyg¡ej dzd{d|g¡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@ej ddŽd�g¡d�d‘„ ƒZAd’d“„ ZBd”d•„ ZCd–d—„ ZDd˜d™„ ZEdšd›„ ZFdœd�„ ZGdždŸ„ ZHd d¡„ ZIej d¢eJjKeJjK g¡d£d¤„ ƒZLd¥d¦„ ZMd§d¨„ ZNej d©d|d{g¡dªd«„ ƒZOd¬d­„ ZPej d®g d¯¢¡d°d±„ ƒZQd²d³„ ZRd´dµ„ ZSd¶d·„ ZTej dg d¢¡d¸d¹„ ƒZUdºd»„ ZVd¼d½„ ZWd¾d¿„ ZXej dg d¢¡dÀdÁ„ ƒZYej dg d¢¡dÂdÃ„ ƒZZdÄdÅ„ Z[dÆdÇ„ Z\ejj]dÈdÉ„ ƒZ^ej 1dÊ¡ej dg dË¢¡dÌdÍ„ ƒƒZ_dÎdÏ„ Z`ej dÐdÑejadÒeb cdÒ¡dÓ�g¡dÔdÕ„ ƒZddÖS )×Ú	TestStatac                 C   s   t |dd�S )NTr"   )r   ©ÚselfÚ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_dsÚpathZ	empty_ds2r   r   r   Útest_read_empty_dtaA   s
    
zTestStata.test_read_empty_dtac                 C   sx  t tjdgtjd�tjdgtjd�tjdgtjd�tjdgtjd�tjdgtjd�tjdgtjd�tjdgtj	d�tjdgtj
d�tjdgtjd�tjdgtjd�dœ
ƒ}| ¡ }|d  tj¡|d< |d  tj¡|d< |d  tj¡|d< |d  tj¡|d< |d  tj¡|d< t ¡ �D}|j|d	|d
� t|ƒ}t ||¡ t |j|j¡ W d   ƒ n1 �sj0    Y  d S )Nr   ©Údtype)
Úi8Zi16Zi32Úi64Úu8Úu16Úu32Úu64Zf32Zf64rB   rC   rD   rE   rA   Fr6   )r   ÚnpÚarrayÚint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Zuint64Úfloat32Úfloat64ÚcopyÚastyper8   r9   r:   r   r;   Úassert_series_equalÚdtypes)r*   r-   Zempty_df_typedÚexpectedr<   Zempty_rereadr   r   r   Útest_read_empty_dta_with_dtypesJ   s0    öÿ
z)TestStata.test_read_empty_dta_with_dtypesc                 C   s˜   t tdƒg d¢dœƒ}t ¡ �(}|j|d|d� t|ƒ}W d   ƒ n1 sL0    Y  t|jtj	ƒshJ ‚| 
¡ }|d  tj¡|d< tj||dd� d S )	Né   )Úb1Úb2Zb3Zb4Zb5©r   r   Fr6   r   T©Zcheck_index_type)r   Úranger8   r9   r:   r   Ú
isinstancer$   ÚpdÚ
RangeIndexrQ   rR   rF   rJ   r;   )r*   r-   Údfr<   Zread_dfrU   r   r   r   Útest_read_index_col_nonem   s    
&z"TestStata.test_read_index_col_noner+   Z
stata1_114Ú
stata1_117c                 C   sh   |ddd|› d�ƒ}|   |¡}ttjtjtjtjtjfgg d¢d�}|d  tj¡|d< t ||¡ d S )Nr   r    r!   ú.dta©Ú
float_missZdouble_missZ	byte_missZint_missZ	long_missr4   re   )r,   r   rF   ÚnanrR   rO   r8   r;   ©r*   r+   r&   ÚparsedrU   r   r   r   Útest_read_dta1z   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< |ddddƒ}|dddd ƒ}|dddd!ƒ}t t¡� |  	|¡}W d   ƒ n1 �s<0    Y  t t¡� |  	|¡}W d   ƒ n1 �sr0    Y  t t¡� |  	|¡}W d   ƒ n1 �s¨0    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_dater4   rw   ÚOr   r    r!   zstata2_114.dtazstata2_115.dtazstata2_117.dtaT©Úcheck_datetimelike_compat)r   Úfrom_recordsr   r^   ÚNaTrR   r8   Úassert_produces_warningÚUserWarningr,   r;   )	r*   r&   rU   Zpath1Zpath2Zpath3r'   Ú
parsed_115Ú
parsed_117r   r   r   Útest_read_dta2Œ   sH    





ø





ø
"ëè#***zTestStata.test_read_dta2)Z
stata3_113Z
stata3_114Ú
stata3_115Ú
stata3_117c                 C   sv   |ddd|› d�ƒ}|   |¡}|  |ddddƒ¡}| tj¡}|d  tj¡|d< |d  tj¡|d< t ||¡ d S )Nr   r    r!   rc   ú
stata3.csvÚyearÚquarter)	r,   r   rR   rF   rO   rI   rH   r8   r;   rg   r   r   r   Útest_read_dta3Ê   s    
zTestStata.test_read_dta3)Z
stata4_113Z
stata4_114Ú
stata4_115Ú
stata4_117c           	      C   s  |ddd|› d�ƒ}|   |¡}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 ) Nr   r    r!   rc   )ÚoneÚtenrŠ   rŠ   rŠ   )ÚtwoÚninerŒ   rŒ   rŒ   )ÚthreeÚeightrŽ   rŽ   rŽ   )ÚfourÚsevenr   r�   r�   ÚfiveÚsixrW   ru   r‘   r�   rq   r�   rŽ   rp   r�   rŒ   é	   r‹   rŠ   )Úfully_labeledÚfully_labeled2Úincompletely_labeledÚlabeled_with_missingsÚfloat_labelledr4   r•   r—   ÚcategoryT©Úordered©Zinplace)r,   r   r{   rF   rf   rQ   ZasarrayZnotnarR   Ú_valuesÚset_categoriesÚ
categoriesÚrenamer8   r;   )	r*   r+   r&   rh   rU   ÚcolÚorigr    Úcatr   r   r   Útest_read_dta4Ù   s4    
öó
zTestStata.test_read_dta4c                 C   sL   |   |ddddƒ¡}tjg d¢g d¢g d¢gg d¢d	�}tj||d
d� d S )Nr   r    r!   zstata12_117.dta)r   ÚabcZ	abcdefghi)r   ZcbaZqwertywertyqwerty)é]   Ú Zstrl)ÚxÚyÚzr4   F©Úcheck_dtype)r,   r   r{   r8   r;   )r*   r&   r€   rU   r   r   r   Útest_read_dta12  s    ýú	zTestStata.test_read_dta12c              	   C   s  |   |ddddƒ¡}|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 	|| || ¡ q‚t
|ddddƒƒ�F}| ¡ }ddddddddœ}t ||¡ |jdksæJ ‚W d   ƒ n1 sú0    Y  d S )Nr   r    r!   zstata14_118.dtaÚBytesrx   )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¯   ÚLongsr4   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,   rR   r   r{   rF   rf   rO   r5   r8   Zassert_almost_equalr   Úvariable_labelsZassert_dict_equalÚ
data_label)r*   r&   Z
parsed_118rU   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 ¡ �(}|j|d d� |  |¡}W d   ƒ n1 sd0    Y  | 	¡ }|j 
tj¡|_t | d¡|¡ d S )Nrd   r4   r$   r"   )r   rF   rf   r$   r%   r8   r9   r:   r,   rQ   rR   rJ   r;   Ú	set_index)r*   Úoriginalr<   Úwritten_and_read_againrU   r   r   r   Útest_read_write_dta5=  s    þ
(zTestStata.test_read_write_dta5c                 C   s®   |   |ddddƒ¡}d|j_|j tj¡|_|d  tj¡|d< |d  tj¡|d< t ¡ �>}|j|d d� |  	|¡}tj
| d¡|d	d
� W d   ƒ n1 s 0    Y  d S )Nr   r    r!   r„   r$   r…   r†   r"   Fr[   )r   r$   r%   rR   rF   rJ   r8   r9   r:   r,   r;   r¾   )r*   r&   r¿   r<   rÀ   r   r   r   Útest_write_dta6L  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	 
¡ �.}|j|ddi|d� |  |¡}W d   ƒ n1 sž0    Y  | ¡ }|rÆ|d  d¡|d< t	j| d	¡|dd� d S )NÚstringÚobjectr   çš™™™™™ñ?ú
2003-12-25)rÃ   rÄ   ÚintegerÚfloatingr   ©r    r5   r>   r$   rÇ   r   Útc©r#   r-   ÚstrFr[   )r   rF   Ú
datetime64r   rÄ   r$   r%   rR   rJ   r8   r9   r:   r,   rQ   r;   r¾   )r*   r-   Úusing_infer_stringr¿   r<   rÀ   rU   r   r   r   Útest_read_write_dta10\  s&    þ
(ýzTestStata.test_read_write_dta10c                 C   sT   t  ¡ �8}ttj d¡ d¡tdƒd�}| |¡ W d   ƒ n1 sF0    Y  d S )Nr   ©rt   r   ÚABr4   )	r8   r9   r   rF   ÚrandomÚdefault_rngÚstandard_normalÚlistr:   )r*   r<   r`   r   r   r   Útest_stata_doc_examplesv  s
    
ÿz!TestStata.test_stata_doc_examplesc                 C   s€   t tj d¡ d¡tdƒd�}tj|jddd…f< | ¡ }t	 
¡ �}|j|dd� W d   ƒ n1 sf0    Y  t	 ||¡ d S )	Nr   )rW   r   Úabcdr4   r   r   F©r7   )r   rF   rÒ   rÓ   rÔ   rÕ   rf   ÚlocrQ   r8   r9   r:   r;   )r*   r`   Zdf_copyr<   r   r   r   Útest_write_preserves_original}  s    ÿ
,z'TestStata.test_write_preserves_originalc           	      C   s¢   t |ddddƒƒ}t |ddddƒƒ}|jd }|jd }||ksDJ ‚t|tƒsRJ ‚t ¡ �4}|j|d|d� t |ƒ}t ||¡ W d   ƒ n1 s”0    Y  d S )Nr   r    r!   zstata1_encoding.dtar   Fr6   )r   Ú	kreis1849r]   rÌ   r8   r9   r:   r;   )	r*   r-   r&   ÚrawÚencodedÚresultrU   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 ¡ �R}t t	¡� |j
|d d� W d   ƒ n1 sp0    Y  |  |¡}W d   ƒ n1 s˜0    Y  | ¡ }|j tj¡|_t | d¡|¡ d S )Nr   )Úgoodu   bÃ¤dZ8numberZ%astringwithmorethan32characters______r4   )rá   Zb_dZ_8numberÚ astringwithmorethan32characters_r$   r"   ©r   r$   r%   rR   rF   rJ   r8   r9   r}   r	   r:   r,   rQ   r;   r¾   )r*   r¿   Ú	formattedr<   rÀ   rU   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}t t	¡�  |j
|d |d� W d   ƒ n1 sr0    Y  |  |¡}W d   ƒ n1 sš0    Y  | ¡ }|j tj¡|_t | d¡|¡ d S )N©r   r   r   r   rW   ru   )Z!astringwithmorethan32characters_1Z!astringwithmorethan32characters_2ú+ú-ÚshortÚdeleter4   )râ   Z _0astringwithmorethan32characterÚ_Z_1_Z_shortÚ_deleter$   rË   rã   )r*   r-   r¿   rä   r<   rÀ   rU   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
 ¡ �$}| |¡ |  |¡}W d   ƒ n1 sŒ0    Y  | ¡ }|j tj¡|_t
 | d¡|¡ d S )Ni   r>   i   l        )rI   rJ   rK   r$   rK   )r   rF   rI   rJ   rK   r   r$   r%   rR   rP   r8   r9   r:   r,   rQ   r;   r¾   )	r*   Ús1Ús2Ús3r¿   rä   r<   rÀ   rU   r   r   r   Útest_read_write_dta13Ú  s    

(zTestStata.test_read_write_dta13)Z
stata5_113Z
stata5_114Ú
stata5_115Ú
stata5_117c           	      C   s¦   |ddd|› d�ƒ}|   |¡}d|j_t ||¡ t ¡ �.}|j|ddi|d� |   |¡}W d   ƒ n1 sn0    Y  | ¡ }|j t	j
¡|_t | d¡|¡ d S )	Nr   r    r!   rc   r$   Údate_tdÚtdrË   )r,   r$   r%   r8   r;   r9   r:   rQ   rR   rF   rJ   r¾   )	r*   r+   r'   r-   r&   rh   r<   rÀ   rU   r   r   r   Útest_read_write_reread_dta14ì  s    

(z&TestStata.test_read_write_reread_dta14)Z
stata6_113Z
stata6_114Ú
stata6_115Ú
stata6_117c                 C   s¾   |   |ddddƒ¡}|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
< |ddd|› d�ƒ}|  |¡}t ||¡ d S )Nr   r    r!   ú
stata6.csvÚbyte_Úint_Úlong_Úfloat_Údouble_rô   ©z%Y-%m-%d©Úargsrc   )r   rR   rF   rH   rI   rJ   rO   rP   Úapplyr   Ústrptimer,   r8   r;   )r*   r+   r&   rU   rh   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   Úvariabler4   éÐ  r   é   é   é   zThis is a data file.)Ú
time_stampr»   r-   z29 Feb 2000 14:21)r   r   r8   r9   r:   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  r4   z01 Jan 2000, 00:00:00z"time_stamp should be datetime type©Úmatch)r  r-   )
r   r8   r9   ÚpytestÚraisesÚ
ValueErrorr:   Úosr<   Ú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 ¡ �N}t t	¡� | 
|¡ W d   ƒ n1 sR0    Y  |  |¡}W d   ƒ n1 sz0    Y  | d¡}t|jƒ}dd„ }t||ƒ|_| ¡ }|j tj¡|_t ||¡ d S )Ng      9@)rW   rW   r$   c                 S   s   t | d ƒS )Nr   )Úint©r©   r   r   r   Ú<lambda>6  ó    z5TestStata.test_numeric_column_names.<locals>.<lambda>)r   rF   ÚreshapeÚaranger$   r%   r8   r9   r}   r	   r:   r,   r¾   rÕ   r5   ÚmaprQ   rR   rJ   r;   )r*   r¿   r<   rÀ   r5   Zconvert_col_namerU   r   r   r   Útest_numeric_column_names*  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� |  |¡}W d   ƒ n1 s”0    Y  | d¡}| ¡ }|j tj¡|_t	 ||¡ d S )Nr³   r>   r   r   ©rî   rï   r$   ©r-   )r   rF   r  rO   rP   rf   r   r$   r%   r8   r9   r:   r,   r¾   rQ   rR   rJ   r;   )r*   r-   rî   rï   r¿   r<   rÀ   rU   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ª   ç      $@)rW   r   r4   Zindex_not_writtenFrØ   r  )r   rF   r  r  r$   r%   r8   r9   r:   r,   r  r  ÚKeyError)r*   r5   r¿   r<   rÀ   r   r   r   Útest_no_indexO  s    

zTestStata.test_no_indexc                 C   sž   t ddgƒ}t ddgtjd�}t||dœƒ}d|j_t ¡ �$}| |¡ |  	|¡}W d   ƒ n1 sf0    Y  | 
¡ }|j tj¡|_t | d¡|¡ d S )Nr   zA longer stringr   ç       @r>   r  r$   )r   rF   rP   r   r$   r%   r8   r9   r:   r,   rQ   rR   rJ   r;   r¾   )r*   rî   rï   r¿   r<   rÀ   rU   r   r   r   Útest_string_no_datesY  s    

(zTestStata.test_string_no_datesc           	   	   C   s8  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 	¡ �N}t 
t¡� | |¡ W d   ƒ n1 s–0    Y  |  |¡}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< |j tj¡|_t | d¡|¡ d S )Nr   éc   r>   é   iÿ  l   ÿÿÿÿ )Ús0rî   rï   rð   r$   rî   rï   rð   )r   rF   rH   rI   rK   r   r$   r%   r8   r9   r}   r
   r:   r,   rQ   rJ   rP   rR   r;   r¾   )	r*   r)  rî   rï   rð   r¿   r<   rÀ   Úmodifiedr   r   r   Útest_large_value_conversionf  s     
((z%TestStata.test_large_value_conversionc              	   C   sÄ   t tddddddƒgƒ}d|j_t ¡ �V}t t¡�" |j|dd	id
� W d   ƒ n1 s\0    Y  |  	|¡}W d   ƒ n1 s„0    Y  | 
¡ }dg|_|j tj¡|_t | d¡|¡ d S )Nrj   rk   rl   rm   rn   ro   r$   r   rÊ   r"   Z_0)r   r   r$   r%   r8   r9   r}   r	   r:   r,   rQ   r5   rR   rF   rJ   r;   r¾   )r*   r¿   r<   rÀ   r*  r   r   r   Útest_dates_invalid_columnz  s    
0(z#TestStata.test_dates_invalid_columnc                 C   s¤   |ddd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 )Nr   r    r!   úS4_EDUC1.dta)r   r   r   éþÿÿÿ)r   r   r   r.  )r   r   r   r.  )ÚclustnumÚpri_schlÚpsch_numÚpsch_disr/  r0  r1  r2  r   )r   r   r5   rR   rF   rI   rH   rO   r8   r;   Úhead)r*   r&   Údpathr`   Zdf0r   r   r   Útest_105ˆ  s    
zTestStata.test_105c                 C   sJ   |ddddƒ}t |ƒ� }| ¡ i ks(J ‚W d   ƒ n1 s<0    Y  d S )Nr   r    r!   r-  )r   Úvalue_labels)r*   r&   r4  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tjdgtjd
d�|d�}t	 
¡ �(}|j||d� |  |¡}W d   ƒ n1 sî0    Y  t	 | d
¡|¡ d S )N)rÊ   rõ   Ztwr8   ZtqÚthÚtyc                 S   s   i | ]
}||“qS r   r   ©Ú.0r   r   r   r   Ú
<dictcomp>¡  r  z6TestStata.test_date_export_formats.<locals>.<dictcomp>rj   rk   ro   rm   rn   r4   r$   rl   r   rt   rq   r   ©r?   r%   ©r$   r5   r"   )r   Úlenr   r$   r%   r^   ÚIndexrF   rJ   r8   r9   r:   r,   r;   r¾   )	r*   r5   Zconversionsr    r¿   Úexpected_valuesrU   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tjddgtjdd�dgd	�}t ¡ �$}| |¡ |  |¡}W d   ƒ n1 sr0    Y  t 	| 
d¡|¡ d S )
NÚ1Zfoor4   r¨   r   r   r$   r=  r>  )r   r^   r@  rF   rJ   r8   r9   r:   r,   r;   r¾   )r*   r¿   rU   r<   rÀ   r   r   r   Útest_write_missing_strings»  s    
ý

(z$TestStata.test_write_missing_stringsÚ	byteorderú>ú<c              	   C   s\  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_|
 	¡ }|
j 
tj¡|_tjtjtjtjtjtjtjf}t|j|ƒD ]\}}||  
|¡||< qât ¡ �*}|
j|||d� |  |¡}W d   ƒ n1 �s80    Y  | d
¡}t ||¡ d S )N)r   r   Tr>   )r   r   éd   )r   r   éÿ   )r   r   iœ  )r   r   iÿÿ  )r   r   iœÿÿ)r   r   l   ÿÿ )r)  rî   rï   rð   Ús4Ús5Ús6r$   )rE  r-   )r   rF   Zbool_rL   rM   rN   r   r$   r%   rQ   rR   rJ   rH   rI   rP   Úzipr5   r8   r9   r:   r,   r¾   r;   )r*   rE  r-   r)  rî   rï   rð   rJ  rK  rL  r¿   rU   Zexpected_typesr   Útr<   rÀ   r   r   r   Útest_bool_uintÊ  s8    ÿù	
*
zTestStata.test_bool_uintc           	      C   sÆ   t |ddddƒƒ�}| ¡ }W d   ƒ n1 s00    Y  t |ddddƒƒ�}| ¡ }W d   ƒ n1 sj0    Y  d}d}| ¡ D ]<\}}||v s˜J ‚||| ks¨J ‚||v s´J ‚||v s„J ‚q„d S )Nr   r    r!   zstata7_115.dtazstata7_117.dta)Zvar1Zvar2Zvar3)Úlabel1Úlabel2Zlabel3)r   rº   Úitems)	r*   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|ƒ�r}| ¡  t|j	|j
|jƒ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   rH  éô   r   r   r   ÚsFrØ   r   éÿÿÿÿ)r   rÌ   r   r8   r9   r:   r   Ú_ensure_openrM  Z_varlistZ_fmtlistZ_typlistr  )
r*   Ústr_lensrY  Ústr_lenr¿   r<   Úsrr  Ú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   rX  éô  r   r   r   rY  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\.r  )	r   rÌ   r   r  r  r  r8   r9   r:   )r*   r\  rY  r]  r¿   r  r<   r   r   r   Útest_excessively_long_string  s    ÿÿ
z&TestStata.test_excessively_long_stringc              	   C   sl  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 ]@}|| d
 }t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�sDJ ‚tt
 dd¡d ƒ}
|
j	dk�shJ ‚d S )N)r   ÚhÚlr°   rý   r4   c                 S   s   g | ]}d t d| ƒ ‘qS )Ú.éa   )Úchr©r;  Úir   r   r   Ú
<listcomp>%  r  z:TestStata.test_missing_value_generator.<locals>.<listcomp>é   r   rf  r   é   z<fs      s    Ð z.zz<ds         às        à)r   r8   r9   r:   r   ZVALID_RANGEr\   Úinsertr   rÃ   ÚstructÚunpack)r*   Útypesr`   r<   r¼   Zvalid_rangerA  rN  Úoffsetrj  Úvalr   r   r   Útest_missing_value_generator  s2    


Bÿÿz&TestStata.test_missing_value_generator)Z
stata8_113Ú
stata8_115Ú
stata8_117c           	         sŠ   g d¢}t dƒ}t|j ¡ ƒ‰g }tdƒD ]&‰ ‡ ‡fdd„tdƒD ƒ}| |¡ q*t||d�}t|dd	d
|› d�ƒdd�}t 	||¡ d S )N)Zint8_Zint16_Zint32_Zfloat32_Zfloat64_ée   rm  c                    s    g | ]}t ˆˆ |d    ƒ‘qS )rm  )r   )r;  Új©rj  rS  r   r   rk  D  r  z;TestStata.test_missing_value_conversion.<locals>.<listcomp>rW   r4   r   r    r!   rc   T©Zconvert_missing)
r   ÚsortedZMISSING_VALUESrS  r\   Úappendr   r   r8   r;   )	r*   r+   r&   r5   Úsmvr    ÚrowrU   rh   r   ry  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 ||||||ƒD ]|\}	}
}}}}g }tdƒD ]T}|dkrˆ| t|	|
||||ƒ¡ qb|dkr¤| t|	d	d	ƒ¡ qb| t|	|
|ƒ¡ qb| |¡ qF| 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|ddddƒƒ}t|ddddƒƒ}t	j
||dd� t	j
||dd� dd „ |D ƒ}t	 ¡ �0}d!|j_|j||d"� |  |¡}W d   ƒ n1 �sn0    Y  t	j
| d!¡| |j tj¡¡dd� d S )#N)i¨  r  é'  rH  éÖ  é�  )r   r   rr   r   r   r”   )r   r   rs   r   é   rm   )r   r   rm   r   r   r   )r   r   é;   r   r   r   rq   r   ru   r   )Zdate_tcrô   Zdate_twZdate_tmZdate_tqZdate_thZdate_tyr€  rr   é   r   r   rt   r   rW   r�  é   r‚  iŽ  )r5   r?   r   r    r!   zstata9_115.dtazstata9_117.dtaTry   c                 S   s   i | ]}||d d… “qS )r.  Nr   r:  r   r   r   r<  {  r  z,TestStata.test_big_dates.<locals>.<dictcomp>r$   r"   )rM  r\   r|  r   r^   r|   r   rÄ   r   r8   r;   r9   r$   r%   r:   r,   r¾   rR   rF   rJ   )r*   r&   ÚyrÚmoÚddÚhrÚmmÚssrU   r…   ÚmonthÚdayÚhourÚminuteÚsecondr~  rx  r5   r   r€   Zdate_conversionr<   rÀ   r   r   r   Útest_big_datesM  sT    "  , 
*ýzTestStata.test_big_datesc                 C   s  |   |ddddƒ¡}|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|ddddƒdd�}t ||¡ t|ddddƒddd�}|   |ddddƒ¡}|d
 jt	j
dd�|d
< t ||¡ d S )Nr   r    r!   rù   rú   rû   rü   rý   rþ   rô   rÿ   r   ústata6_117.dtaTr"   F)r#   Zpreserve_dtypes)r   rR   rF   rH   rI   rJ   rO   rP   r  r   r  r   r8   r;   )r*   r&   rU   Zno_conversionÚ
conversionr   r   r   Útest_dtype_conversionˆ  s.    ÿ
ÿýÿ
zTestStata.test_dtype_conversionc                 C   s¤  |   |ddddƒ¡}|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|ddddƒd|d�}t ||¡ g d¢}|| }t|ddddƒd|d�}t ||¡ d}tjt|d��0 ddg}t|ddddƒd|d� W d   ƒ n1 �sB0    Y  d}tjt|d��0 g d¢}t|ddddƒd|d� 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“  T)r#   r5   )rû   rü   rú   z"columns contains duplicate entriesr  zEThe following columns were not found in the Stata data set: not_found)rú   rû   rü   Ú	not_found)r   rR   rF   rH   rI   rJ   rO   rP   r  r   r  r   r8   r;   r  r  r  )r*   r&   rU   r5   ZdroppedÚ	reorderedr  r   r   r   Útest_drop_column¦  sR    ÿ
ýýý&ý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�‰ |j d¡ 	t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"� |  |¡}W d   ƒ n1 �sz0    Y  | d¡}t ||¡ 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“   rW   ru   r‘   r�   rq   r�   rŽ   rp   r�   rŒ   r”   r‹   rŠ   rt   )r•   r–   r—   r˜   r™   Ú	unlabeledr4   c                    s   g | ]}ˆ |   d ¡‘qS ©rš   ©rR   ©r;  r¢   ©r¿   r   r   rk  ö  r  z6TestStata.test_categorical_writing.<locals>.<listcomp>r   ©Zaxisr$   r—   r™  rš   Tr›   r�   r   )r   r{   rF   rf   rQ   r^   Úconcatr$   Z	set_namesrR   rJ   r  rÌ   rž   Ú
as_orderedrŸ   r    r¡   r8   r9   r:   r,   r¾   r;   )	r*   r-   rU   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_longr4   c                    s   g | ]}ˆ |   d ¡‘qS rš  r›  rœ  r�  r   r   rk    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\.r  c                    s   g | ]}ˆ |   d ¡‘qS rš  r›  rœ  r�  r   r   rk  &  r  )r   r{   r^   rŸ  r8   r9   r  r  r  r:   r}   r   )r*   r<   r  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
 ¡ �(}ˆ j||d
� |  |¡}W d   ƒ n1 sŠ0    Y  | d	¡}ˆ  ¡ }|D ].}|| j}| ¡ j}	|j|	dd�}|||< qª|j tj¡|_t
 ||¡ d S )Nc                 S   s   g | ]}d t |ƒ g‘qS )r   )rÌ   ri  r   r   r   rk  /  r  zHTestStata.test_categorical_with_stata_missing_values.<locals>.<listcomp>éx   Zmany_labelsr4   c                    s   g | ]}ˆ |   d ¡‘qS rš  r›  rœ  r�  r   r   rk  3  r  r   rž  r$   r   Tr›   )r\   r|  rF   rf   r   r{   r^   rŸ  r$   r%   r8   r9   r:   r,   r¾   rQ   rž   Úremove_unused_categoriesr    rŸ   rR   rJ   r;   )
r*   r-   Úvaluesr<   rÀ   r¡  rU   r¢   r¤   Znew_catsr   r�  r   Ú*test_categorical_with_stata_missing_values-  s&    ÿ
(



z4TestStata.test_categorical_with_stata_missing_valuesÚstata10_115Ústata10_117c           
      C   s„  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|ƒ¡}|ddd|› d�ƒ}t|ƒ}	t ||	¡ |D ]P}t|| jtƒ�r.t || jj|	| jj¡ t || jj|	| jj¡ �q.d S )NTrœ   ©r   r   r   r£  ÚerW   ÚreverserZ  Znoorder)r   r   r   r   r   rÈ   r   Zfloat_missing)r   r£  r¬  )r   r   r   rZ  rZ  FZnolabel)r   r%  r   r³   g      @Zint32_mixed)r£  r   r¬  r   r   r›   r>   r   r    r!   rc   )rF   r  rG   r|  r^   ÚCategoricalÚ
from_codesr   rO   r   Ú	from_dictÚdictr   r8   r;   r]   r?   r   rS   r¤   ÚcodesÚassert_index_equalr    )
r*   r+   r&   rU   ÚcolsZis_catr¢   rT  r²  rh   r   r   r   Útest_categorical_orderE  s2    ù	ÿÿz TestStata.test_categorical_orderÚstata11_115Ústata11_117c                 C   sx   t |ddd|› d�ƒƒ}|jddd�}t t|ƒ¡|_g d¢}g d	¢}tjj||d
d�}t|dd�}t	 
||d ¡ d S )Nr   r    r!   rc   ZsrhÚfirst)Zna_position)
rZ  rZ  r   r   r   r   r   r   r   r   )ZPoorZFairZGoodz	Very goodZ	ExcellentT)r²  r    rœ   ©r%   )r   Zsort_valuesr^   r_   r?  r$   r®  r¯  r   r8   rS   )r*   r+   r&   rh   r²  r    r¤   rU   r   r   r   Útest_categorical_sortingi  s    ÿz"TestStata.test_categorical_sortingc                 C   sh   |ddd|› d�ƒ}t |ƒ}t |dd�}|D ]6}t|| jtƒsBq,|| jjsRJ ‚|| jjr,J ‚q,d S )Nr   r    r!   rc   F)Úorder_categoricals)r   r]   r?   r   r¤   rœ   )r*   r+   r&   rh   Zparsed_unorderedr¢   r   r   r   Útest_categorical_orderingz  s    z#TestStata.test_categorical_orderingzignore::UserWarning)rb   Z
stata2_117rƒ   r‰   ró   rø   Z
stata7_117rv  Z
stata9_117rª  r·  Ú	chunksizer   r   Úconvert_categoricalsFTr#   c              
   C   sÒ   |ddd|› d�ƒ}t |||d�}t |d||d��Œ}d}	td	ƒD ]n}
z| |¡}W n tyj   Y  q°Y n0 |j|	|	| …d d …f  ¡ }|  |¡}tj||d
dd� |	|7 }	q@W d   ƒ n1 sÄ0    Y  d S )Nr   r    r!   rc   ©r¾  r#   T)Úiteratorr¾  r#   r   rW   F©r­   rz   ©	r   r\   ÚreadÚStopIterationÚilocrQ   Ú_convert_categoricalr8   r;   ©r*   r+   r½  r¾  r#   r&   Úfnamerh   ÚitrÚposrx  ÚchunkÚ
from_framer   r   r   Útest_read_chunks_117†  s2    ýü
ÿzTestStata.test_read_chunks_117)rÌ  Úreturnc                 C   sŒ   | D ]‚}| | }t |jtƒr|j ¡ }|jjtkrNtj 	|jj¡}| 
|¡}n0|jjdkr~t|jƒdkr~|j t¡}| 
|¡}|| |< q| S )zX
        Emulate the categorical casting behavior we expect from roundtripping.
        rÃ   r   )r]   r?   r   rž   r¦  r    rÄ   r^   r@  Z_with_inferrŸ   r?  rR   )rÌ  r¢   Zserr¤   r    r   r   r   rÆ  ·  s    


zTestStata._convert_categoricalc                 C   s²  |ddddƒ}t |ƒ}t |dd��8}| d¡}t |jdd…d d …f |¡ W d   ƒ n1 s`0    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 �s`0    Y  t |d
d	��}t |¡}W d   ƒ n1 �s˜0    Y  t ||¡ d S )Nr   r    r!   ústata3_117.dtaT©rÀ  rW   r   ©r½  r   )	r   rÃ  r8   r;   rÅ  rÕ   Z	get_chunkr^   rŸ  )r*   r&   rÈ  rh   rÉ  rË  Zfrom_chunksr   r   r   Útest_iteratorÊ  s"    
<@
>>*zTestStata.test_iterator)
Z
stata2_115r‚   rˆ   rò   r÷   Z
stata7_115ru  Z
stata9_115r©  r¶  c              
   C   sÒ   |ddd|› d�ƒ}t |||d�}t |d||d��Œ}d}	td	ƒD ]n}
z| |¡}W n tyj   Y  q°Y n0 |j|	|	| …d d …f  ¡ }|  |¡}tj||d
dd� |	|7 }	q@W d   ƒ n1 sÄ0    Y  d S )Nr   r    r!   rc   r¿  T)rÀ  r#   r¾  r   rW   FrÁ  rÂ  rÇ  r   r   r   Útest_read_chunks_115ä  s2    ýü
ÿzTestStata.test_read_chunks_115c                 C   s´   |ddddƒ}g d¢}d}t ||d�}t |dd	��n}d
}tdƒD ]P}|j||d�}	|	d u r^ q’|j||| …d d …f }
tj|
|	dd� ||7 }q@W d   ƒ n1 s¦0    Y  d S )Nr   r    r!   rÏ  )r†   ZcpiÚm1r   r4   TrÐ  r   rW   Fr¬   )r   r\   rÃ  rÅ  r8   r;   )r*   r&   rÈ  r5   r½  rh   rÉ  rÊ  rx  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%   r8   r9   r:   r   rº   )r*   r-   r   rº   r<   r^  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 fewerr  rÙ  ©r$   r%   r8   r9   r  r  r  r:   )r*   r-   r   rº   r<   r  r   r   r   Útest_invalid_variable_labels?  s    
ÿz&TestStata.test_invalid_variable_labelsr/   r0   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 charactersr  rÙ  rÝ  )r*   r-   r   rº   r<   r   r   r   Ú$test_invalid_variable_label_encodingJ  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-1r  )rº   zqA very, very, very long variable label that is too long for Stata which means that it has more than 80 charactersrÜ  )Újoinr  r  r  r8   r9   r:   )r*   r   r§  Zvariable_labels_utf8r  r<   Zvariable_labels_longr   r   r   Ú test_write_variable_label_errorsW  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éÏ  rr   rs   éà.  éÜ  r
  éR  éð  rq   r   é   ©r   r%  r   ©ÚappleÚbananaZcherry©ÚnumsÚstrsÚdatesFrØ   Tr"   rð  rÊ   )r7   r#   )Údtr   r   r8   r9   r:   r   r;   r5   Útolistr$   )r*   rð  r¿   r<   ÚrereadÚdirectZ	dates_idxr   r   r   Útest_default_date_conversionu  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 supportedr  )r   r  r  ÚNotImplementedErrorr8   r9   r:   )r*   r¿   r  r<   r   r   r   Útest_unsupported_type’  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ã  rr   rs   rä  rå  r
  ræ  rç  rq   r   rè  ré  rê  rí  zFormat %tC not implementedr  rð  ZtCr"   z1-1-1990r   zAsia/Hong_Kong)ÚperiodsÚtzzData type datetime64)rñ  r   r   r  r  rö  r8   r9   r:   r^   Ú
date_range)r*   rð  r¿   r  r<   r   r   r   Útest_unsupported_datetypeš  s0    ýýÿ
Nýÿ
z#TestStata.test_unsupported_datetypec                 C   sL   d}t jt|d��& t|ddddƒdd� W d   ƒ n1 s>0    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
r  r   r    r!   zstata15.dtaT©r¾  )r  r  r  r   )r*   r&   r  r   r   r   Útest_repeated_column_labels¹  s    
þz%TestStata.test_repeated_column_labelsc                 C   s†   t |ddddƒƒ}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!   zstata7_111.dtar   r   r   r   r   rW   ru   )
r   r   r   r£  r¬  r¨   Úgrd  rj  rx  )rª   r©   Úwr«   )r   r   rF   rf   r8   r;   )r*   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  d S )Nr°   g      Ð©ZColumnOkÚColumnTooBigzZColumn ColumnTooBig has a maximum value \(.+\) outside the range supported by Stata \(.+\)r  )r   rF   ÚfinfoÚdoubleÚepsÚmaxr  r  r  r8   r9   r:   )r*   r`   r  r<   r   r   r   Útest_out_of_range_doubleÛ  s    þÿÿ
z"TestStata.test_out_of_range_doublec                 C   sè   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	 
¡ �"}| |¡ t|ƒ}W d   ƒ n1 sœ0    Y  |d  tj¡|d< | ¡ }|j tj¡|_t	 | d¡|¡ d S )Nr°   r"  r  r$   r  )r   rF   r  rO   r  r  r$   r%   rR   r8   r9   r:   r   rP   rQ   rJ   r;   r¾   )r*   r¿   r¢   r<   ró  rU   r   r   r   Útest_out_of_range_floatë  s*    ýýúÿ

&z!TestStata.test_out_of_range_floatÚinfvalc              	   C   s~   t ddgd|gdœƒ}d}tjt|d��B t ¡ �}| |¡ W d   ƒ n1 sR0    Y  W d   ƒ n1 sp0    Y  d S )Nr°   r   r%  )Z
WithoutInfZWithInfz[Column WithInf contains infinity or -infinitywhich is outside the range supported by Stata.r  )r   r  r  r  r8   r9   r:   )r*   r	  r`   r  r<   r   r   r   Útest_inf  s    ÿ
zTestStata.test_infc                 C   sj   t dt d¡ d¡ t tdƒ¡t dd„ tdƒD ƒ¡d�}d	|j_	d
d„ }t
 |j|¡}t
 ||¡ d S )NrÅ   r¥  ©é   r   ÚABCDc                 S   s   g | ]}d |› �‘qS ©zi-r   ri  r   r   r   rk    r  z/TestStata.test_path_pathlib.<locals>.<listcomp>r  ©r5   r$   r$   c                 S   s   t | ƒ d¡S ©Nr$   ©r   r¾   r  r   r   r   r    r  z-TestStata.test_path_pathlib.<locals>.<lambda>)r   rF   r  r  r^   r@  rÕ   r\   r$   r%   r8   Zround_trip_pathlibr:   r;   ©r*   r`   r  rÞ   r   r   r   Útest_path_pathlib  s    ýzTestStata.test_path_pathlibc                 C   sj   t dt d¡ d¡ t tdƒ¡t dd„ tdƒD ƒ¡d�}d	|j_	d
d„ }t
 |j|¡}t
 ||¡ d S )NrÅ   r¥  r  r  c                 S   s   g | ]}d |› �‘qS r  r   ri  r   r   r   rk  "  r  z8TestStata.test_pickle_path_localpath.<locals>.<listcomp>r  r  r$   c                 S   s   t | ƒ d¡S r  r  r  r   r   r   r  %  r  z6TestStata.test_pickle_path_localpath.<locals>.<lambda>)r   rF   r  r  r^   r@  rÕ   r\   r$   r%   r8   Zround_trip_localpathr:   r;   r  r   r   r   Útest_pickle_path_localpath  s    ýz$TestStata.test_pickle_path_localpathr7   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   rR   r8   r9   r:   r   r6  )r*   r7   r£  r`   r<   Zdta_iterr6  r   r   r   Útest_value_labels_iterator)  s    

Dz$TestStata.test_value_labels_iteratorc                 C   s’   t dt d¡ d¡ t tdƒ¡t dd„ tdƒD ƒ¡d�}d	|j_	t
 ¡ �&}| |¡ t|d	d
�}W d   ƒ n1 sx0    Y  t
 ||¡ d S )NrÅ   r¥  r  r  c                 S   s   g | ]}d |› �‘qS r  r   ri  r   r   r   rk  ;  r  z,TestStata.test_set_index.<locals>.<listcomp>r  r  r$   ©Ú	index_col)r   rF   r  r  r^   r@  rÕ   r\   r$   r%   r8   r9   r:   r   r;   )r*   r`   r<   ró  r   r   r   Útest_set_index6  s    ý

*zTestStata.test_set_indexÚcolumn)ÚmsrŽ  Úweekr�  ZqtrZhalfr‡  c                 C   sB   t |ddddƒƒ}|jd|f }|jd|d f }||ks>J ‚d S )Nr   r    r!   zstata13_dates.dtar   Ú_fmt)r   rÙ   )r*   r  r&   r`   Zunformattedrä   r   r   r   Ú(test_date_parsing_ignores_format_detailsC  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 ¡ �2}|j|ddidgdd� |  |¡}W d   ƒ n1 �s 0    Y  |d d … }|�rN|d  d¡|d< t | d¡|¡ t ||¡ d S )NrÃ   rÄ   r   rÅ   rÆ   r   Aý  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiˆ  zstring-1zobject-1z
2003-12-26r   Aý  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr¨   )rÃ   rÄ   rH   rI   rJ   rO   rP   r   rî   Zs2045ZsrtlÚforced_strlrÉ   r>   rH   rI   rJ   rO   r$   r   rÊ   r#  r0   )r#   Úconvert_strlr-   rÌ   )r   rF   rÍ   r   rÄ   rH   rI   rR   rJ   rO   r$   r%   rQ   r8   r9   r:   r,   r;   r¾   )r*   rÎ   r¿   rQ   r<   rÀ   rU   r   r   r   Útest_writer_117W  sl    ôôñá.
ü*þ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   r4   r$   r&  r   r0   )r$  r-   Fr[   )r   r$   r%   r8   r}   r	   r9   r:   r,   r¾   r5   r;   )r*   r¿   r<   ró  r   r   r   Útest_convert_strl_name_swap¢  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ã  rr   rs   rä  rå  r
  ræ  rç  rq   r   rè  ré  rê  rí  z0convert_dates key must be a column or an integerr  Z
wrong_namerÊ   r"   )	rñ  r   r   r8   r9   r  r  r  r:   )r*   rð  r¿   r<   r  r   r   r   Útest_invalid_date_conversion±  s    ýýÿ
z&TestStata.test_invalid_date_conversionc              	   C   sà   t  ¡ }tdt d¡ d¡ t tdƒ¡t dd„ t	dƒD ƒ¡d�}d	|j
_t ¡ �l}|j||d
� | d¡ t|dƒ�}| | ¡ ¡ W d   ƒ n1 sœ0    Y  t|d	d�}W d   ƒ n1 sÆ0    Y  t ||¡ d S )NrÅ   r¥  r  r  c                 S   s   g | ]}d |› �‘qS r  r   ri  r   r   r   rk  Ì  r  z2TestStata.test_nonfile_writing.<locals>.<listcomp>r  r  r$   r   r   Úwbr  )r   ÚBytesIOr   rF   r  r  r^   r@  rÕ   r\   r$   r%   r8   r9   r:   ÚseekÚopenÚwriterÃ  r   r;   )r*   r-   Úbior`   r<   Údtaró  r   r   r   Útest_nonfile_writingÅ  s    ý

,*zTestStata.test_nonfile_writingc              	   C   sî   t dt d¡ d¡ t tdƒ¡t dd„ tdƒD ƒ¡d�}d	|j_	t
 ¡ �‚}t |d
¡�}|j|dd� W d   ƒ n1 s~0    Y  t |d¡�}t|d	d�}W d   ƒ n1 s¶0    Y  W d   ƒ n1 sÔ0    Y  t
 ||¡ d S )NrÅ   r¥  r  r  c                 S   s   g | ]}d |› �‘qS r  r   ri  r   r   r   rk  Ü  r  z/TestStata.test_gzip_writing.<locals>.<listcomp>r  r  r$   r)  r/   r   Úrbr  )r   rF   r  r  r^   r@  rÕ   r\   r$   r%   r8   r9   ÚgzipÚGzipFiler:   r   r;   )r*   r`   r<   Úgzró  r   r   r   Útest_gzip_writing×  s    ý
,HzTestStata.test_gzip_writingc                 C   sf   |   |ddddƒ¡}g d¢}g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g}t||d�}t ||¡ d S )Nr   r    r!   zstata16_118.dta)Úutf8Úlatin1ÚasciiZ	utf8_strlZ
ascii_strl)õ   Ï�Î±Î·Î´Î±Ï‚u   PÃ„NDÃ„SÚpr9  r:  )õ   Æ¤Ä€Å„Ä�Ä…Åœõ   Ã–r   r;  r   )õ   á´˜á´€á´Žá´…á´€Sõ   ÃœÚnr=  r?  )ú      r@  r£  r@  r£  )ú r¨   r   rA  r   )r¨   r¨   rY  r¨   rY  )r¨   r¨   rA  r¨   rA  r4   )r,   r   r8   r;   )r*   r&   Z
unicode_dfr5   r§  rU   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 |d
< |j|dd
gdd� t|ƒ}| 	¡ }|r¤|d
  d¡|d
< | d	¡}t ||¡ W d   ƒ n1 sÎ0    Y  d S )NA¸  stringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringr   )ÚmixedÚnumberr   rJ   Fr0   r6   r¨   rC  )r7   r$  r-   rÌ   )
r   rD  rR   r8   r9   r:   r   Úfillnar;   rQ   )r*   rÎ   Úoutputr<   ró  rU   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 |d< t ¡ �L}tjtdd�� |j||d� W d   ƒ n1 s`0    Y  W d   ƒ n1 s~0    Y  d S )NÚnoner   )rH  rD  r   z Column `none` cannot be exportedr  r   )r   r8   r9   r  r  r  r:   )r*   r-   rF  r<   r   r   r   Útest_all_none_exception  s    
z!TestStata.test_all_none_exceptionc              	   C   sŠ   d}t |gdgd�}t ¡ �Z}d}d}tjt|› d|› �d�� | |¡ W d   ƒ n1 s^0    Y  W d   ƒ n1 s|0    Y  d S )Nu9   Here is one __ï¿½__ Another one __Â·__ Another one __Â½__Úinvalidr4   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\)ú|r  )r   r8   r9   r  r  ÚUnicodeEncodeErrorr:   )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_strlr4   r0   )r-   r$  r1  zlatin-1zutf-8s   strlsr   r.  s   GSOó    ó   ‚)
r   r8   r9   r:   r,  rÃ  ÚencodeÚsplitÚfindr?  )
r*   rF  r<   ró  rM  rU   ZgsosZgsors  Úsizer   r   r   Útest_strl_latin1(  s    ÿ
zTestStata.test_strl_latin1c                 C   s–   d}|ddddƒ}t jtdd��@}t|ƒ}t|ƒdks:J ‚|d	 jjd	 |ksRJ ‚W d   ƒ n1 sf0    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   r    r!   zstata1_encoding_118.dtaÚonce)Zfilter_levelr   r   u   DÃ¼sseldorfé—   rÛ   r4   )	r8   r}   ÚUnicodeWarningr   r?  Úmessager  r   r;   )r*   r&   r  r<   rÿ  rÝ   rU   r   r   r   Útest_encoding_latin1_118;  s    6z"TestStata.test_encoding_latin1_118c              	   C   sx   t  |ddddƒd¡�N}t|ƒ�&}| ¡  |jdks8J ‚W d   ƒ n1 sL0    Y  W d   ƒ n1 sj0    Y  d S )Nr   r    r!   zstata1_119.dta.gzr1  iç€  )r2  r,  r   r[  Z_nvar)r*   r&   r4  r  r   r   r   Útest_stata_119O  s    ÿ
zTestStata.test_stata_119z)ignore:Downcasting behavior:FutureWarning)r1   r2   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ddddœi}|d  tj¡|d< t ¡ �ê}t|||dg|d||d�}| 	¡  t
|ƒ}	|d  d¡|d< |d  |d ¡ d¡j ¡ |d< t ||	¡ t|ƒ�2}
|
j|k�sJ ‚|
 ¡ |k�sJ ‚W d   ƒ n1 �s*0    Y  |j||dd� t
|ƒ}t ||¡ W d   ƒ n1 �sn0    Y  d S )N)r   õ   Î²õ   Ä‰Tr›   )r   r   u   á´¬u   á´€ relatively long Å�tring)r%  r   u   á´®r¨   )r   r   u   á´°N)õ   Ã…r]  r^  Ústrlsr4   õ	   á´�á´¬áµ€rë  u	   áµˆáµ‰áµŠu   á´Žáƒ¢áƒ„á‚²á‚³á‚´á‚¶á‚ºzLong Stringsr¨   )r_  r]  r^  r`  ra  u   á´…aáµ€a-labelr]  Úlabelu   Ã¦Ã¸Ã¥u   Å‹ot valid latin-1©r   r   r   r`  F)r»   r$  rº   r7   r-   r6  rš   )r-   r7   )r^   r®  r   rR   rF   rJ   r8   r9   r   Ú
write_filer   rE  Úreplacer¤   r   r;   r   r»   rº   r:   )r*   r-   r¤   r    rº   r»   r6  r<   Úwriterrß   r  Zreread_to_statar   r   r   Útest_utf8_writer[  sR    ýúû
ø
ÿ
2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.r  r0   r   zYou must use version 119r1   )
r   rF   ZzerosrH   r8   r9   r  r  r  r   )r*   r`   r<   r   r   r   Útest_writer_118_exceptionsŽ  s    
J
z$TestStata.test_writer_118_exceptionsÚdtype_backendZnumpy_nullableZpyarrow)Zmarksc              
   C   sü   t g d¢g d¢g d¢g d¢tjdddd�d	œtjg d
¢dd�d�}|j|d�}|jddd� t ¡ �$}| |¡ |  |¡}W d   ƒ n1 sŽ0    Y  t ddt	j
gg d¢ddt	j
gg d¢tjdddd�d	œtjg d
¢dt	jd�d�}t | d¡|¡ d S )N)r   r   Nr   )TFN)g      ø?g      @g      @z
2020-12-31r   ÚD)rø  Úfreqr«  ©r   r   r   r$   r¹  ©r$   )ri  ztest_stata.dtar1   r   r   r   r   r   )r%   r?   )r   r^   rú  r@  Zconvert_dtypesr:   r8   r9   r,   rF   rf   rJ   r;   r¾   )r*   ri  r`   r<   rÀ   rU   r   r   r   Útest_read_write_ea_dtypes—  s0    ûø


(

ûøz#TestStata.test_read_write_ea_dtypesN)eÚ__name__Ú
__module__Ú__qualname__r,   r   r  ÚmarkÚparametrizer=   rV   ra   ri   r�   r‡   r¥   r®   r½   rÁ   rÂ   rÏ   rÖ   rÚ   rà   rå   rí   rñ   rö   r  r  r  r  r!  r$  r&  r+  r,  r5  r7  rB  rD  rO  rW  ra  rc  rt  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  rF   Úinfr
  r  r  r  r  r"  r%  r'  r(  r0  r5  rB  rG  rI  rN  rV  r[  Zslowr\  rg  rh  Úparamrõ   Z
skip_if_norn  r   r   r   r   r(   9   s6  

"

>ÿ
ÿ
,(


%ÿÿ


	

	"
;1ÿ4

#


þ
þ 





ÿ
K




1	þr(   r-   )éi   él   éo   éq   r/   c                 C   sT   |dddƒ}t j |d¡}t j |d| › d�¡}t|ƒ}t|ƒ}tj||dd� d S )	Nr   r    r!   ústata-compat-118.dtazstata-compat-rc   Fr¬   )r  r<   rá  r   r8   r;   )r-   r&   Z	data_baseÚrefÚoldrU   Zold_dtar   r   r   Útest_backward_compat»  s    r  c              
   C   sl  | ddddƒ}t |ƒ�0}| ¡ jr&J ‚t|jtjƒr8J ‚W d   ƒ n1 sL0    Y  t|dƒ�T}t |ƒ�,}| ¡ jrzJ ‚|j|u sˆJ ‚W d   ƒ n1 sœ0    Y  W d   ƒ n1 sº0    Y  t|dƒ�ˆ}t | ¡ ¡�X}t |ƒ�.}| ¡ jrøJ ‚|j|u �sJ ‚W d   ƒ n1 �s0    Y  W d   ƒ n1 �s>0    Y  W d   ƒ n1 �s^0    Y  d S )Nr   r    r!   r|  r1  )r   rÃ  Úemptyr]   Z_path_or_bufr   r*  r,  )r&   ZmonkeypatchÚ	file_pathr  Úfpr.  r   r   r   Útest_direct_readÅ  s    
0
J
rƒ  c                 C   s†   | ddddƒ}t jtdd��  t|ƒ}| ¡  W d   ƒ n1 sB0    Y  t jtdd�� | ¡  W d   ƒ n1 sx0    Y  d S )Nr   r    r!   r|  zwithout using a context managerr  zis not part of the public API)r8   r}   ÚResourceWarningr   rÃ  ÚFutureWarningÚclose)r&   r�  r^  r   r   r   Ú0test_statareader_warns_when_used_without_contextÜ  s    þ&þr‡  r.   Úuse_dictTFÚinferc              	   C   s¾  d}| r(|r| }n||  }|d|› �7 }| }|r4d}|r@d| 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  �n | dk�rt |	d¡�&}
t |
 |
jd ¡¡}W d   ƒ n1 �s0    Y  �nN| dk�rpt |	¡�,}t | | ¡ d ¡ ¡ ¡}W d   ƒ n1 �sd0    Y  nú| dk�r¸t |	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k�r\t d¡}| |	d¡�}
t |
 ¡ ¡}W d   ƒ n1 �sP0    Y  n| d u �rj|	}t|d	d�}W d   ƒ n1 �sŒ0    Y  | ¡ }|j tj¡|_t ||¡ d S )Nzdta_inferred_compression.dtarf  r‰  Úmethodr   rÐ   rÑ   r4   r$   )r-   Úcompressionr2  r1  rM  Úrr   ÚtarÚbz2ÚzstdZ	zstandardÚxzÚlzmar  )r   rF   rÒ   rÓ   rÔ   rÕ   r$   r%   r8   r9   r:   r2  r,  r   r*  rÃ  ÚzipfileÚZipFileÚfilelistÚtarfileÚextractfileÚgetnamesrŽ  r  Zimportorskipr   rQ   rR   rJ   r;   )r‹  r-   rˆ  r‰  Úcompression_to_extensionÚ	file_nameÚfile_extZcompression_argr`   r<   Úcompr‚  r�  r�  r‘  ró  rU   r   r   r   Útest_compressionë  sV    ÿ0
:
>
0

0

0
,rœ  rŠ  rM  rš  )Nr/  rM  c              	   C   s(  d|› �}d}t tj d¡ d¡tdƒd�}d|j_t 	|¡�²}| |dœ}|j
||d	� | d
ksh|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�}	W d   ƒ n1 sö0    Y  | ¡ }
|
j tj¡|
_t |	|
¡ d S )Nútest.ztest.dtar   rÐ   rÑ   r4   r$   )rŠ  Úarchive_name©r‹  rM  rŒ  r   r   r  )r   rF   rÒ   rÓ   rÔ   rÕ   r$   r%   r8   r9   r:   r’  r“  r?  r”  Úfilenamer   r*  rÃ  r   rQ   rR   rJ   r;   )rŠ  rš  r™  rž  r`   r<   r‹  Zzpr‚  ró  rU   r   r   r   Útest_compression_dict  s&    
ÿ
6*r¡  c                 C   sî   t dtg d¢dd�iƒ}d|j_| ¡ }|j tj¡|_t 	¡ �š}|j
|| d� t|ddd	��^}t|ƒD ]D\}}| d¡}d|v s†J ‚t |j|jjd| d|d
  … ¡ qhW d   ƒ n1 sÂ0    Y  W 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%   rQ   rR   rF   rJ   r8   r9   r:   r   Ú	enumerater¾   rS   r¢  rÅ  )r-   r`   rU   r<   r  rj  Úblockr   r   r   Útest_chunked_categorical9  s    

ÿr¥  c           	   	   C   sX  | ddd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 )Nr   r    r!   ústata-dta-partially-labeled.dta)r   r   r   r   r   r   rÑ  r   r   r   r   rP   r>   rW   )r   r8   r}   r   r£  rÕ   r¢  r^   r@  r³  r¤   r    Ú__next__r   r;   )	r&   Údta_filer§  r  rj  r¤  ÚidxZlarge_chunkrô  r   r   r   Ú test_chunked_categorical_partialL  s    &PHrª  r½  )rZ  r   rë  c              	   C   sl   | ddddƒ}t jtdd��< t||d�� W d   ƒ n1 s@0    Y  W d   ƒ n1 s^0    Y  d S )Nr   r    r!   r¦  zchunksize must be a positiver  rÑ  )r  r  r  r   )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 g d
¢¡}t|dd��h}t|ƒD ]N\}}tdƒD ]}t 	|j
j| j|¡ qxt || j|d |d d … ¡ qhW d   ƒ n1 sÌ0    Y  W d   ƒ n1 sê0    Y  d S )NÚc_labelÚb_labelÚa_labelrb  c                    s"   i | ]}d |› �t jˆ dd�“qS )r¢   Tr›   )r^   r®  )r;  rU  ©r§  r   r   r<  j  r  z.test_iterator_value_labels.<locals>.<dictcomp>r   FrØ   )r®  r­  r¬  rH  rÑ  r   )r   r\   r8   r9   r:   r^   r@  r   r£  r³  rT   rÅ  r    r;   )r`   r<   rU   r  rx  rË  rj  r   r¯  r   Útest_iterator_value_labelsg  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   ri  r   r   r   Ú	<genexpr>w  r  z&test_precision_loss.<locals>.<genexpr>é<   é4   ÚbigÚlittler4   z&Column converted from int64 to float64r  FrØ   rm  )r   rµ  )r   r´  )r   Úsumr\   r8   r9   r}   r
   r:   r   r   rF   rP   rS   rT   rÙ   Úfloat)r`   r<   ró  Zexpected_dtr   r   r   Útest_precision_lossu  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ÚZr>  r$   rŸ  ©r‹  r  r  )r   r$   r%   r8   r9   r:   r   r;   Zdecompress_filer   r*  rÃ  )r‹  r`   r<   ró  ÚfhÚcontentsr   r   r   Útest_compression_roundtrip†  s    ý
,rÂ  Úto_inferÚ
read_inferc                 C   s®   | }|| }d|› �}t g d¢g d¢gddgg d¢d�}d|j_|rHd	n|}|rTd	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%   r8   r9   r:   r   r;   )Zcompression_onlyrÄ  rÃ  r˜  r‹  Úextr   r`   Zto_compressionZread_compressionr<   rÞ   r   r   r   Útest_stata_compressionš  s    
ýrÆ  c               	   C   sˆ  t g d¢ddtjdtjgg d¢t g d¢¡dœƒ} t ¡ ��6}dd	d
dœdd	dœdœ}i |¥dddddœi¥}t|| |d�}| ¡  t	|ƒ�$}| 
¡ }||ks¢J ‚W d   ƒ n1 s¶0    Y  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 �sZ0    Y  W d   ƒ n1 �sz0    Y  d S )N)r   r   r   r   r   r   r%  g      "@)rq   rq   r”   rp   rt   )rx  rU  re  rU  rx  )Úfully_labelledÚpartially_labelledr½  r¾  rŠ   rŒ   rŽ   rc  )r   r%  )rÇ  rÈ  r¾  rx  rU  re  rl  ©r6  zCCan't create value labels for notY, it wasn't found in the dataset.r  ZnotYrP  rQ  )rq   rp   zUCan't create value labels for Z, value labels can only be applied to numeric columns.r   rj  r   )r   rF   rf   r^   r®  r8   r9   r   rd  r   r6  r  r  r#  r  )r    r<   r6  rU   rf  r  Úreader_value_labelsr  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 ¡ �„}t t¡� | j||d� W d   ƒ n1 s´0    Y  t|ƒ�$}| ¡ }||ksÜJ ‚W d   ƒ n1 sð0    Y  W d   ƒ n1 �s0    Y  d S )N)r   r   r   r   rW   rp   )rp   rp   r”   r”   rp   rp   )r   rW   rW   ru   ru   r”   ræ   )z	invalid~!Z	6_invalidZ&invalid_name_longer_than_32_charactersZ	aggregate©r   r   rP  rQ  rÌ  r�   r�   )rp   r”   rW   r’   r   rŽ   )Z	invalid__Z
_6_invalidZ invalid_name_longer_than_32_charZ
_aggregateZ_1__2_rÉ  )r   r8   r9   r}   r	   r:   r   r6  )r    r6  rU   r<   r  rÊ  r   r   r   Ú0test_non_categorical_value_label_name_conversionÚ  s4    ûÿû	û
,
rÍ  c               	   C   sú   dddddœi} t dg d¢iƒ}t ¡ �¾}|j|| d� t|dd��}| ¡ }W d   ƒ n1 sb0    Y  || 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)rt   ro   é(   )rt   rt   ro   ro   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:
r  T)r   r8   r9   r:   r   r6  rá  r  r  r  r   )r6  r    r<   r  rÊ  r¢   Zrepeatsr  r   r   r   Ú;test_non_categorical_value_label_convert_categoricals_errorÿ  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¨   rK   rJ   ÚboolrH   r   r=  )r   r   r¨   r   r¹  Fr6   Trz  )r   r   r^   ZNAr%   r   r?   Znumpy_dtypere  r   ZBASE_MISSING_VALUESrÄ   r8   r9   r:   r   rS   r   r   )
r?   r-   r`   Z
dtype_nameÚvaluer}  Z
expected_bZ
expected_cr<   ró  r   r   r   Útest_nullable_support%	  s,    

ýÿ

rÔ  c                  C   sÆ   t tdƒg d¢dœd� d¡} t ¡ �Œ}| j|ddd� t|ƒ}d	|v sLJ ‚tt 	d
¡t 	d¡dœƒ}t 
|j|¡ t|dgd�}d	|vsŽJ ‚t 
|j|jdg ¡ W d   ƒ n1 s¸0    Y  d S )Nr   ré  rZ   r  r   Fr0   r6   r   rJ   rP   r   r4   )r   r\   r3  r8   r9   r:   r   r   rF   r?   rS   rT   rÙ   )r`   r<   Zdf2rT   Zdf3r   r   r   Útest_empty_frameO	  s    
rÕ  )ErŽ  r   rñ  r2  r   r  ro  r•  r’  ÚnumpyrF   r  Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrõ   rO  r^   r   Zpandas._testingZ_testingr8   Zpandas.core.framer   r   Zpandas.io.parsersr   Zpandas.io.statar   r	   r
   r   r   r   r   r   r   Zfixturer   r'   r(   rr  rs  r  rƒ  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   r   Ú<module>   sœ   ,


               
	1

&%&÷þ