o
    �¨Êh„h ã                   @   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@)ÚAtlantaÚ
BirminghamÚ
CincinnatiÚDetroit©ÚaÚbÚc)r   © r    r    úL/var/www/html/env/lib/python3.10/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)ÚdatapathÚ	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„ ƒƒƒƒƒZ8e9d€e:d�e:f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 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   ó   t |dd�S )NTr&   )r   ©ÚselfÚfiler    r    r!   Úread_dta:   s   zTestStata.read_dtac                 C   r.   )NT)Ú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 ¡ �}|j|d|d� t|ƒ}t ||¡ W d   ƒ d S 1 s(w   Y  d S )NÚunit©ÚcolumnsF©Úwrite_indexr4   )r   ÚtmÚensure_cleanÚto_statar   Úassert_frame_equal)r0   r4   Úempty_dsÚpathÚ	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 ¡ �#}|j|d	|d
� t|ƒ}t ||¡ t |j|j¡ W d   ƒ d S 1 sµw   Y  d S )Nr   ©Údtype)
Úi8Úi16Úi32Úi64Úu8Úu16Úu32Úu64Úf32Úf64rM   rN   rO   rP   rL   Fr=   )r   ÚnpÚarrayÚint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64Úfloat32Úfloat64ÚcopyÚastyper?   r@   rA   r   rB   Úassert_series_equalÚdtypes)r0   r4   Úempty_df_typedÚexpectedrD   Úempty_rereadr    r    r!   Útest_read_empty_dta_with_dtypesJ   s2   öÿ
"ü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 s&w   Y  t|jtj	ƒs4J ‚| 
¡ }|d  tj¡|d< tj||dd� d S )	Né   )Úb1Úb2Úb3Úb4Úb5©r   r   Fr=   r   T©Úcheck_index_type)r   Úranger?   r@   rA   r   Ú
isinstancer(   ÚpdÚ
RangeIndexr_   r`   rS   rW   rB   )r0   r4   ÚdfrD   Úread_dfrd   r    r    r!   Útest_read_index_col_nonem   s   

þz"TestStata.test_read_index_col_noner1   Ú
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_missÚdouble_missÚ	byte_missÚint_missÚ	long_missr;   r{   )r2   r   rS   Únanr`   r]   r?   rB   ©r0   r1   r*   Úparsedrd   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�w   Y  t t¡� |  	|¡}W d   ƒ n1 s·w   Y  t t¡� |  	|¡}W d   ƒ n1 sÑw   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£  )Ú
datetime_cÚdatetime_big_cÚdateÚweekly_dateÚmonthly_dateÚquarterly_dateÚhalf_yearly_dateÚyearly_dater;   r—   ÚOr#   r$   r%   zstata2_114.dtazstata2_115.dtazstata2_117.dtaT©Úcheck_datetimelike_compat)r   Úfrom_recordsr   rr   ÚNaTr`   r?   Úassert_produces_warningÚUserWarningr2   rB   )	r0   r*   rd   Úpath1Úpath2Úpath3r,   Ú
parsed_115Ú
parsed_117r    r    r!   Útest_read_dta2Œ   sN   





ø





ø"
ëè#ÿÿÿzTestStata.test_read_dta2)Ú
stata3_113Ú
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%   ry   ú
stata3.csvÚyearÚquarter)	r2   r   r`   rS   r]   rV   rU   r?   rB   r�   r    r    r!   Útest_read_dta3Ê   s   
zTestStata.test_read_dta3)Ú
stata4_113Ú
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 ]2}||  ¡ }t |d | ¡  ¡}|dkri|}| d¡j	}|j
|dd�}|jjd dd� |||< qPt ||¡ d S ) Nr#   r$   r%   ry   )ÚoneÚtenr±   r±   r±   )ÚtwoÚniner³   r³   r³   )ÚthreeÚeightrµ   rµ   rµ   )ÚfourÚsevenr   r·   r·   ÚfiveÚsixrg   r�   r¸   r·   r‹   r¶   rµ   rŠ   r´   r³   é	   r²   r±   )Úfully_labeledÚfully_labeled2Úincompletely_labeledÚlabeled_with_missingsÚfloat_labelledr;   r¼   r¾   ÚcategoryT©Úordered©Úinplace)r2   r   r›   rS   r€   r_   ÚasarrayÚnotnar`   Ú_valuesÚset_categoriesÚ
categoriesÚrenamer?   rB   )	r0   r1   r*   r‚   rd   Ú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   ÚabcÚ	abcdefghi)r   ÚcbaÚqwertywertyqwerty)é]   Ú Ústrl)ÚxÚyÚzr;   F©Úcheck_dtype)r2   r   r›   r?   rB   )r0   r*   r£   rd   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 	|| || ¡ qAt
|ddddƒƒ�$}| ¡ }ddddddddœ}t ||¡ |jdkssJ ‚W d   ƒ d S 1 s~w   Y  d S )Nr#   r$   r%   zstata14_118.dtaÚBytesr˜   )ÚCatÚBogotau   BogotÃ¡r   r   u   option b Ãœnicoder   ÚDogÚBostonu   UzunkÃ¶prÃ¼)ÚPlaneÚRomeu   TromsÃ¸r   ç        úoption arä   )ÚPotatoÚTokyou	   ElÃ¢zÄ±ÄŸéüÿÿÿç      @r   r   )rÕ   rÕ   rÕ   r   gþ¤�ÉTÕ?rå   gUUUUUUÕ?)ÚThingsÚCitiesÚUnicode_Cities_StrlÚIntsÚFloatsrÝ   ÚLongsr;   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)r2   r`   r   r›   rS   r€   r]   r<   r?   Úassert_almost_equalr   Úvariable_labelsÚassert_dict_equalÚ
data_label)r0   r*   Ú
parsed_118rd   rÌ   ÚrdrÚvlÚvl_expectedr    r    r!   Útest_read_dta18  s6   ûø
ù	"ó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 s2w   Y  | 	¡ }|j 
tj¡|_t | d¡|¡ d S )Nrz   r;   r(   r&   )r   rS   r€   r(   r)   r?   r@   rA   r2   r_   r`   rW   rB   Ú	set_index)r0   ÚoriginalrD   Úwritten_and_read_againrd   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   ƒ d S 1 sQw   Y  d S )Nr#   r$   r%   r©   r(   rª   r«   r&   Frn   )r   r(   r)   r`   rS   rW   r?   r@   rA   r2   rB   rù   )r0   r*   rú   rD   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� |  |¡}t	j| d	¡|dd� W d   ƒ d S 1 s[w   Y  d S )NÚstringÚobjectr   çš™™™™™ñ?ú
2003-12-25)rþ   rÿ   ÚintegerÚfloatingr   ©r$   r<   rG   r(   r  r   Útc©r'   r4   Frn   )r   rS   Ú
datetime64r   rÿ   r(   r)   r`   rW   r?   r@   rA   r2   rB   rù   )r0   r4   rú   rD   rû   r    r    r!   Útest_read_write_dta10\  s"   þ

ý"üzTestStata.test_read_write_dta10c                 C   sV   t  ¡ �}ttj d¡ d¡tdƒd�}| |¡ W d   ƒ d S 1 s$w   Y  d S )Nr   ©rŽ   r   ÚABr;   )	r?   r@   r   rS   ÚrandomÚdefault_rngÚstandard_normalÚlistrA   )r0   rD   rt   r    r    r!   Útest_stata_doc_examplesq  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 s3w   Y  t	 ||¡ d S )	Nr   )rg   r   Úabcdr;   r   r   F©r>   )r   rS   r  r  r  r  r€   Úlocr_   r?   r@   rA   rB   )r0   rt   Údf_copyrD   r    r    r!   Útest_write_preserves_originalx  s   ÿ
ÿz'TestStata.test_write_preserves_originalc           	      C   s¤   t |ddddƒƒ}t |ddddƒƒ}|jd }|jd }||ks"J ‚t|tƒs)J ‚t ¡ �}|j|d|d� t |ƒ}t ||¡ W d   ƒ d S 1 sKw   Y  d S )Nr#   r$   r%   zstata1_encoding.dtar   Fr=   )r   Ú	kreis1849rq   Ústrr?   r@   rA   rB   )	r0   r4   r*   ÚrawÚencodedÚresultrd   rD   Ú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 ¡ �)}t t	¡� |j
|d d� W d   ƒ n1 s8w   Y  |  |¡}W d   ƒ n1 sLw   Y  | ¡ }|j tj¡|_t | d¡|¡ d S )Nr   )Úgoodu   bÃ¤dÚ8numberÚ%astringwithmorethan32characters______r;   )r  Úb_dÚ_8numberÚ astringwithmorethan32characters_r(   r&   ©r   r(   r)   r`   rS   rW   r?   r@   r�   r	   rA   r2   r_   rB   rù   )r0   rú   Ú	formattedrD   rû   rd   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	¡� |j
|d |d� W d   ƒ n1 s9w   Y  |  |¡}W d   ƒ n1 sMw   Y  | ¡ }|j tj¡|_t | d¡|¡ d S )N©r   r   r   r   rg   r�   )Ú!astringwithmorethan32characters_1Ú!astringwithmorethan32characters_2ú+ú-ÚshortÚdeleter;   )r!  Ú _0astringwithmorethan32characterÚ_Ú_1_Ú_shortÚ_deleter(   r  r"  )r0   r4   rú   r#  rD   rû   rd   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 sFw   Y  | ¡ }|j tj¡|_t
 | d¡|¡ d S )Ni   rG   i   l        )rV   rW   rX   r(   rX   )r   rS   rV   rW   rX   r   r(   r)   r`   r^   r?   r@   rA   r2   r_   rB   rù   )	r0   Ús1Ús2Ús3rú   r#  rD   rû   rd   r    r    r!   Útest_read_write_dta13Õ  s   

þzTestStata.test_read_write_dta13)Ú
stata5_113Ú
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 s7w   Y  | ¡ }|j t	j
¡|_t | d¡|¡ d S )	Nr#   r$   r%   ry   r(   Údate_tdÚtdr  )r2   r(   r)   r?   rB   r@   rA   r_   r`   rS   rW   rù   )	r0   r1   r,   r4   r*   r‚   rD   rû   rd   r    r    r!   Útest_read_write_reread_dta14ç  s   

þz&TestStata.test_read_write_reread_dta14)Ú
stata6_113Ú
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©Úargsry   )r   r`   rS   rU   rV   rW   r]   r^   Úapplyr   Ústrptimer2   r?   rB   )r0   r1   r*   rd   r‚   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 ¡ �<}|j||||d
� t|ƒ�}|jdks,J ‚|j|ks3J ‚W d   ƒ n1 s=w   Y  W d   ƒ d S W d   ƒ d S 1 sUw   Y  d S )N©r   Úvariabler;   éÐ  r   é   é   é   zThis is a data file.)Ú
time_stampró   r4   z29 Feb 2000 14:21)r   r   r?   r@   rA   r   rS  ró   )r0   r4   rú   rS  ró   rD   Úreaderr    r    r!   Útest_timestamp_and_label  s   
ÿ
þû"ûz"TestStata.test_timestamp_and_labelc              	   C   s”   t dgdgd�}d}t ¡ �2}d}tjt|d�� |j|||d� W d   ƒ n1 s+w   Y  tj 	|¡r8J ‚W d   ƒ d S 1 sCw   Y  d S )NrM  rN  r;   z01 Jan 2000, 00:00:00z"time_stamp should be datetime type©Úmatch)rS  r4   )
r   r?   r@   ÚpytestÚraisesÚ
ValueErrorrA   ÚosrD   Úisfile)r0   r4   rú   rS  rD   Ú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 s)w   Y  |  |¡}W d   ƒ n1 s=w   Y  | d¡}t|jƒ}dd„ }t||ƒ|_| ¡ }|j tj¡|_t ||¡ d S )Ng      9@)rg   rg   r(   c                 S   s   t | d ƒS )Nr   )Úint©r×   r    r    r!   Ú<lambda>1  s    z5TestStata.test_numeric_column_names.<locals>.<lambda>)r   rS   ÚreshapeÚaranger(   r)   r?   r@   r�   r	   rA   r2   rù   r  r<   Úmapr_   r`   rW   rB   )r0   rú   rD   rû   r<   Úconvert_col_namerd   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 sJw   Y  | d¡}| ¡ }|j tj¡|_t	 ||¡ d S )Nré   rG   r   r   ©r2  r3  r(   ©r4   )r   rS   rc  r]   r^   r€   r   r(   r)   r?   r@   rA   r2   rù   r_   r`   rW   rB   )r0   r4   r2  r3  rú   rD   rû   rd   r    r    r!   Útest_nan_to_missing_value8  s   
þ
z#TestStata.test_nan_to_missing_valuec              	   C   sº   ddg}t t t d¡d¡|d�}d|j_t ¡ �:}|j|dd� |  	|¡}t
jt|jjd	�� |d  W d   ƒ n1 s>w   Y  W d   ƒ d S W d   ƒ d S 1 sVw   Y  d S )
Nr×   rØ   ç      $@)rg   r   r;   Úindex_not_writtenFr  rV  )r   rS   rb  rc  r(   r)   r?   r@   rA   r2   rX  rY  ÚKeyError)r0   r<   rú   rD   rû   r    r    r!   Útest_no_indexJ  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 s3w   Y  | 
¡ }|j tj¡|_t | d¡|¡ d S )Nr   zA longer stringr   ç       @rG   rg  r(   )r   rS   r^   r   r(   r)   r?   r@   rA   r2   r_   r`   rW   rB   rù   )r0   r2  r3  rú   rD   rû   rd   r    r    r!   Útest_string_no_datesT  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 	¡ �'}t 
t¡� | |¡ W d   ƒ n1 sKw   Y  |  |¡}W d   ƒ n1 s_w   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   rG   é   iÿ  l   ÿÿÿÿ )Ús0r2  r3  r4  r(   r2  r3  r4  )r   rS   rU   rV   rX   r   r(   r)   r?   r@   r�   r
   rA   r2   r_   rW   r^   r`   rB   rù   )	r0   rr  r2  r3  r4  rú   rD   rû   Úmodifiedr    r    r!   Útest_large_value_conversiona  s$   
ÿüz%TestStata.test_large_value_conversionc              	   C   sÄ   t tddddddƒgƒ}d|j_t ¡ �+}t t¡� |j|dd	id
� W d   ƒ n1 s.w   Y  |  	|¡}W d   ƒ n1 sBw   Y  | 
¡ }dg|_|j tj¡|_t | d¡|¡ d S )Nr„   r…   r†   r‡   rˆ   r‰   r(   r   r  r&   Ú_0)r   r   r(   r)   r?   r@   r�   r	   rA   r2   r_   r<   r`   rS   rW   rB   rù   )r0   rú   rD   rû   rs  r    r    r!   Útest_dates_invalid_columnu  s   
ÿü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   rx  )r   r   r   rx  )ÚclustnumÚpri_schlÚpsch_numÚpsch_disry  rz  r{  r|  r   )r   r   r<   r`   rS   rV   rU   r]   r?   rB   Úhead)r0   r*   Údpathrt   Údf0r    r    r!   Útest_105ƒ  s   
zTestStata.test_105c                 C   sL   |ddddƒ}t |ƒ�}| ¡ i ksJ ‚W d   ƒ d S 1 sw   Y  d S )Nr#   r$   r%   rw  )r   Úvalue_labels)r0   r*   r~  rT  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 sww   Y  t	 | d
¡|¡ d S )N)r  r;  Útwr?   ÚtqÚthÚtyc                 S   s   i | ]}||“qS r    r    ©Ú.0r   r    r    r!   Ú
<dictcomp>œ  s    z6TestStata.test_date_export_formats.<locals>.<dictcomp>r„   r…   r‰   r‡   rˆ   r;   r(   r†   r   rŽ   r‹   r   ©rH   r)   ©r(   r<   r&   )r   Úlenr   r(   r)   rr   ÚIndexrS   rW   r?   r@   rA   r2   rB   rù   )	r0   r<   Úconversionsr$   rú   Úexpected_valuesrd   rD   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 s9w   Y  t 	| 
d¡|¡ d S )
NÚ1Úfoor;   rÕ   r   r   r(   rŠ  r‹  )r   rr   r�  rS   rW   r?   r@   rA   r2   rB   rù   )r0   rú   rd   rD   rû   r    r    r!   Útest_write_missing_strings¶  s   
ý

þz$TestStata.test_write_missing_stringsÚ	byteorderú>ú<c              	   C   sZ  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 ]\}}||  
|¡||< qqt ¡ �}|
j|||d� |  |¡}W d   ƒ n1 s›w   Y  | d
¡}t ||¡ d S )N)r   r   TrG   )r   r   éd   )r   r   éÿ   )r   r   iœ  )r   r   iÿÿ  )r   r   iœÿÿ)r   r   l   ÿÿ )rr  r2  r3  r4  Ús4Ús5Ús6r(   )r”  r4   )r   rS   Úbool_rY   rZ   r[   r   r(   r)   r_   r`   rW   rU   rV   r^   Úzipr<   r?   r@   rA   r2   rù   rB   )r0   r”  r4   rr  r2  r3  r4  r™  rš  r›  rú   rd   Úexpected_typesr   ÚtrD   rû   r    r    r!   Útest_bool_uintÅ  s:   ÿù	
þ
zTestStata.test_bool_uintc           	      C   sÆ   t |ddddƒƒ�}| ¡ }W d   ƒ n1 sw   Y  t |ddddƒƒ�}| ¡ }W d   ƒ n1 s5w   Y  d}d}| ¡ D ]\}}||v sLJ ‚||| ksTJ ‚||v sZJ ‚||v s`J ‚qBd S )Nr#   r$   r%   zstata7_115.dtazstata7_117.dta)Úvar1Úvar2Úvar3)Úlabel1Úlabel2Úlabel3)r   rñ   Úitems)	r0   r*   rõ   Úsr_115Ú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|ƒ�9}| ¡  t|j	|j
|jƒD ]#\}}}	t|dd … ƒt|dd	… ƒksUJ ‚t|dd … ƒ|	ksaJ ‚q>W d   ƒ n1 slw   Y  W d   ƒ d S W d   ƒ d S 1 s„w   Y  d S )
N)r   r—  éô   r   r   r   ÚsFr  r   éÿÿÿÿ)r   r  r   r?   r@   rA   r   Ú_ensure_openr�  Ú_varlistÚ_fmtlistÚ_typlistr_  )
r0   Ústr_lensr°  Ústr_lenrú   rD   ÚsrrN  Ú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��* t ¡ �}| |¡ W d   ƒ n1 s>w   Y  W d   ƒ d S W d   ƒ d S 1 sVw   Y  d S )N)r   r¯  éô  r   r   r   r°  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\.rV  )	r   r  r   rX  rY  rZ  r?   r@   rA   )r0   r¶  r°  r·  rú   r]  rD   r    r    r!   Útest_excessively_long_string  s    ÿÿ
ÿÿ"ÿz&TestStata.test_excessively_long_stringc              	   C   sf  d}t dggdgd�}t ¡ �$}| |¡ t|ƒ�}|j}W d   ƒ n1 s'w   Y  W d   ƒ n1 s6w   Y  dd„ tdƒD ƒ}| dd	¡ |D ] }|| d
 }tdƒD ]}	t|d
 |	 ƒ}
|
j	||	 kskJ ‚qXqLt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s J ‚tt
 dd¡d ƒ}
|
j	dks±J ‚d S )N)r   ÚhÚlrä   rE  r;   c                 S   s   g | ]
}d t d| ƒ ‘qS )Ú.éa   )Úchr©rˆ  Úir    r    r!   Ú
<listcomp>   s    z:TestStata.test_missing_value_generator.<locals>.<listcomp>é   r   rÀ  r   é   z<fs      s    Ð z.zz<ds         às        à)r   r?   r@   rA   r   ÚVALID_RANGErp   Úinsertr   rþ   ÚstructÚunpack)r0   Útypesrt   rD   rõ   Úvalid_ranger�  rŸ  ÚoffsetrÄ  Úvalr    r    r!   Útest_missing_value_generator  s:   


ÿ€þþÿÿz&TestStata.test_missing_value_generator)Ú
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)Úint8_Úint16_Úint32_Úfloat32_Úfloat64_ée   rÇ  c                    s    g | ]}t ˆˆ |d    ƒ‘qS )rÇ  )r   )rˆ  Új©rÄ  rª  r    r!   rÅ  ?  s     z;TestStata.test_missing_value_conversion.<locals>.<listcomp>rg   r;   r#   r$   r%   ry   T©Úconvert_missing)
r   ÚsortedÚMISSING_VALUESrª  rp   Úappendr   r   r?   rB   )	r0   r1   r*   r<   Úsmvr$   Úrowrd   r‚   r    rÛ  r!   Útest_missing_value_conversion8  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 ]*}|dkrD| t|	|
||||ƒ¡ q1|dkrR| t|	d	d	ƒ¡ q1| t|	|
|ƒ¡ q1| |¡ 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|ddddƒƒ}t|ddddƒƒ}t	j
||dd� t	j
||dd� dd „ |D ƒ}t	 ¡ �}d!|j_|j||d"� |  |¡}W d   ƒ n	1 �s7w   Y  t	j
| d!¡| |j tj¡¡dd� d S )#N)i¨  rO  é'  r—  éÖ  é�  )r   r   rŒ   r   r   r»   )r   r   r�   r   é   r‡   )r   r   r‡   r   r   r   )r   r   é;   r   r   r   r‹   r   r�   r   )Údate_tcr:  Údate_twÚdate_tmÚdate_tqÚdate_thÚdate_tyrä  rŒ   é   r   r   rŽ   r   rg   rå  é   ræ  iŽ  )r<   rH   r#   r$   r%   zstata9_115.dtazstata9_117.dtaTr™   c                 S   s   i | ]	}||d d… “qS )rx  Nr    r‡  r    r    r!   r‰  v  ó    z,TestStata.test_big_dates.<locals>.<dictcomp>r(   r&   )r�  rp   rà  r   rr   rœ   r   rÿ   r   r?   rB   r@   r(   r)   rA   r2   rù   r`   rS   rW   )r0   r*   ÚyrÚmoÚddÚhrÚmmÚssrd   rª   ÚmonthÚdayÚhourÚminuteÚsecondrâ  rÚ  r<   r¢   r£   Údate_conversionrD   rû   r    r    r!   Útest_big_datesH  sV   "  , 
ý
ý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%   rA  rB  rC  rD  rE  rF  r:  rG  rH  ústata6_117.dtaTr&   F)r'   Úpreserve_dtypes)r   r`   rS   rU   rV   rW   r]   r^   rJ  r   rK  r   r?   rB   )r0   r*   rd   Ú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�� ddg}t|ddddƒd|d� W d   ƒ n1 s w   Y  d}tjt|d�� g d¢}t|ddddƒd|d� W d   ƒ d S 1 sÊw   Y  d S )Nr#   r$   r%   rA  rB  rC  rD  rE  rF  r:  rG  rH  )rB  rC  rD  rÿ  T)r'   r<   )rC  rD  rB  z"columns contains duplicate entriesrV  zEThe following columns were not found in the Stata data set: not_found)rB  rC  rD  Ú	not_found)r   r`   rS   rU   rV   rW   r]   r^   rJ  r   rK  r   r?   rB   rX  rY  rZ  )r0   r*   rd   r<   ÚdroppedÚ	reorderedr]  r    r    r!   Útest_drop_column¡  sV   
ÿýýýþý"þ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 ])}||  ¡ }| 	d¡j}| ¡ }|dkr“|j|dd �}|jjd dd!� |||< qvt ¡ �}ˆ j||d"� |  |¡}W d   ƒ n1 s»w   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º   rg   r�   r¸   r·   r‹   r¶   rµ   rŠ   r´   r³   r»   r²   r±   rŽ   )r¼   r½   r¾   r¿   rÀ   Ú	unlabeledr;   c                    ó   g | ]	}ˆ |   d ¡‘qS ©rÁ   ©r`   ©rˆ  rÌ   ©rú   r    r!   rÅ  ñ  rñ  z6TestStata.test_categorical_writing.<locals>.<listcomp>r   ©Úaxisr(   r¾   r  rÁ   TrÂ   rÄ   rh  )r   r›   rS   r€   r_   rr   Úconcatr(   Ú	set_namesr`   rW   rJ  r  rÈ   Ú
as_orderedrÉ   rÊ   rË   r?   r@   rA   r2   rù   rB   )	r0   r4   rd   rÌ   rÍ   rÎ   rD   rû   Úresr    r  r!   Útest_categorical_writingÒ  sF   öóÿ

þ
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 ¡ �&}d}tjt|d�� ˆ  	|¡ W d   ƒ n1 sDw   Y  W d   ƒ n1 sSw   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   ƒ d S 1 sŽw   Y  d S )Nr   i'  r   r   ÚdÚToo_longr;   c                    r	  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\.rV  c                    r	  r
  r  r  r  r    r!   rÅ  !  rñ  )r   r›   rr   r  r?   r@   rX  rY  rZ  rA   r�   r   )r0   rD   r]  r    r  r!   Ú$test_categorical_warnings_and_errors
  s0   "þÿ
ÿÿ€ûÿÿ"ÿ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 sEw   Y  | d	¡}ˆ  ¡ }|D ]}|| j}| ¡ j}	|j|	dd�}|||< qU|j tj¡|_t
 ||¡ 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   Úmany_labelsr;   c                    r	  r
  r  r  r  r    r!   rÅ  .  rñ  r   r  r(   rh  TrÂ   )rp   rà  rS   r€   r   r›   rr   r  r(   r)   r?   r@   rA   r2   rù   r_   rÈ   Úremove_unused_categoriesrÊ   rÉ   r`   rW   rB   )
r0   r4   ÚvaluesrD   rû   r  rd   rÌ   rÎ   Ú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 ]#\}}}}|rm| |tjj||dd�f¡ qV| |t|t jd�f¡ qVt	 
t|ƒ¡}|ddd|› d�ƒ}t|ƒ}	t ||	¡ |D ]&}t|| jtƒr½t || jj|	| jj¡ t || jj|	| jj¡ q—d S )NTrÃ   ©r   r   r   r  Úerg   Úreverser±  Únoorder)r   r   r   r   r   r  r   Úfloat_missing)r   r  r!  )r   r   r   r±  r±  FÚnolabel)r   rn  r   ré   g      @Úint32_mixed)r  r   r!  r   r   rÂ   rG   r#   r$   r%   ry   )rS   rc  rT   rà  rr   ÚCategoricalÚ
from_codesr   r]   r   Ú	from_dictÚdictr   r?   rB   rq   rH   r   ra   rÎ   ÚcodesÚassert_index_equalrÊ   )
r0   r1   r*   rd   ÚcolsÚis_catrÌ   r«  r+  r‚   r    r    r!   Útest_categorical_order@  s6   ù	ÿÿ€ý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%   ry   ÚsrhÚfirst)Úna_position)
r±  r±  r   r   r   r   r   r   r   r   )ÚPoorÚFairÚGoodz	Very goodÚ	ExcellentT)r+  rÊ   rÃ   ©r)   )r   Úsort_valuesrr   rs   rŒ  r(   r'  r(  r   r?   ra   )r0   r1   r*   r‚   r+  rÊ   rÎ   rd   r    r    r!   Útest_categorical_sortingd  s   ÿz"TestStata.test_categorical_sortingc                 C   sh   |ddd|› d�ƒ}t |ƒ}t |dd�}|D ]}t|| jtƒs!q|| jjs)J ‚|| jjr1J ‚qd S )Nr#   r$   r%   ry   F)Úorder_categoricals)r   rq   rH   r   rÎ   rÃ   )r0   r1   r*   r‚   Úparsed_unorderedrÌ   r    r    r!   Útest_categorical_orderingu  s   üz#TestStata.test_categorical_orderingzignore::UserWarning)rx   Ú
stata2_117r¨   r°   r9  r@  Ú
stata7_117rÓ  Ú
stata9_117r  r1  Ú	chunksizer   r   Úconvert_categoricalsFTr'   c              
   C   sà   |ddd|› d�ƒ}t |||d�}t |d||d��M}d}	td	ƒD ]5}
z| |¡}W n
 ty3   Y  n+w |j|	|	| …d d …f  ¡ }|  |¡}tj||d
dd� |	|7 }	q W d   ƒ d S W d   ƒ d S 1 siw   Y  d S )Nr#   r$   r%   ry   ©rC  r'   T)ÚiteratorrC  r'   r   rg   F©rÛ   rš   ©	r   rp   ÚreadÚStopIterationÚilocr_   Ú_convert_categoricalr?   rB   ©r0   r1   rB  rC  r'   r*   Úfnamer‚   ÚitrÚposrÚ  ÚchunkÚ
from_framer    r    r!   Útest_read_chunks_117�  s<   ýüÿ
ÿ
öù"õzTestStata.test_read_chunks_117rQ  Úreturnc                 C   sZ   | D ](}| | }t |jtƒr*|j ¡ }|jjtkr&tj 	|jj¡}| 
|¡}|| |< q| S )zX
        Emulate the categorical casting behavior we expect from roundtripping.
        )rq   rH   r   rÈ   r  rÊ   rÿ   rr   r�  Ú_with_inferrÉ   )rQ  rÌ   ÚserrÎ   rÊ   r    r    r!   rK  ²  s   

€zTestStata._convert_categoricalc                 C   s¬  |ddddƒ}t |ƒ}t |dd��}| d¡}t |jdd…d d …f |¡ W d   ƒ n1 s0w   Y  t |dd	��}t|ƒ}t |jdd…d d …f |d ¡ W d   ƒ n1 s[w   Y  t |dd��}| d¡}t |jdd…d d …f |¡ W d   ƒ n1 s…w   Y  t |dd	��}| ¡ }t |jdd…d d …f |¡ W d   ƒ n1 s®w   Y  t |d
d	��}t |¡}W d   ƒ n1 sÉw   Y  t ||¡ d S )Nr#   r$   r%   ústata3_117.dtaT©rE  rg   r   ©rB  r   )	r   rH  r?   rB   rJ  r  Ú	get_chunkrr   r  )r0   r*   rM  r‚   rN  rP  Úfrom_chunksr    r    r!   Útest_iteratorÁ  s,   
 þ$þ
 þ þÿzTestStata.test_iterator)
Ú
stata2_115r§   r¯   r8  r?  Ú
stata7_115rÒ  Ú
stata9_115r  r0  c              
   C   sà   |ddd|› d�ƒ}t |||d�}t |d||d��M}d}	td	ƒD ]5}
z| |¡}W n
 ty3   Y  n+w |j|	|	| …d d …f  ¡ }|  |¡}tj||d
dd� |	|7 }	q W d   ƒ d S W d   ƒ d S 1 siw   Y  d S )Nr#   r$   r%   ry   rD  T)rE  r'   rC  r   rg   FrF  rG  rL  r    r    r!   Útest_read_chunks_115Û  s<   ýüÿ
ÿ
öù"õzTestStata.test_read_chunks_115c                 C   sÆ   |ddddƒ}g d¢}d}t ||d�}t |dd	��@}d
}tdƒD ](}|j||d�}	|	d u r/ n"|j||| …d d …f }
tj|
|	dd� ||7 }q W d   ƒ d S W d   ƒ d S 1 s\w   Y  d S )Nr#   r$   r%   rV  )r«   ÚcpiÚm1r   r;   TrW  r   rg   FrÚ   )r   rp   rH  rJ  r?   rB   )r0   r*   rM  r<   rB  r‚   rN  rO  rÚ  rP  rQ  r    r    r!   Útest_read_chunks_columns  s"   
úþ"ûz"TestStata.test_read_chunks_columnsc              	   C   s  d|j _ddddœ}t ¡ �5}|j|||d� t|ƒ�}| ¡ }W d   ƒ n1 s*w   Y  dddddœ}||ks<J ‚W d   ƒ n1 sFw   Y  d	|d< t ¡ �/}|j|||d� t|ƒ�}| ¡ }W d   ƒ n1 sow   Y  ||kszJ ‚W d   ƒ d S 1 s…w   Y  d S )
Nr(   ú	City RankúCity ExponentÚCityr   ©rñ   r4   rÕ   )r(   r   r   r   z	The Index)r(   r)   r?   r@   rA   r   rñ   )r0   r4   r"   rñ   rD   r¸  Úread_labelsÚexpected_labelsr    r    r!   Útest_write_variable_labels  s,   


ÿüö


ÿ"üz$TestStata.test_write_variable_labelsc              	   C   s”   d|j _ddddœ}t ¡ �2}d}tjt|d�� |j|||d� W d   ƒ n1 s+w   Y  W d   ƒ d S W d   ƒ d S 1 sCw   Y  d S )	Nr(   úZvery longvery longvery longvery longvery longvery longvery longvery longvery longvery longrd  re  r   ú.Variable labels must be 80 characters or fewerrV  rf  ©r(   r)   r?   r@   rX  rY  rZ  rA   )r0   r4   r"   rñ   rD   r]  r    r    r!   Útest_invalid_variable_labels6  s   
ÿÿþ"þz&TestStata.test_invalid_variable_labelsr6   r7   c              	   C   s˜   d|j _ddddœ}d|d< t ¡ �0}tjtdd	�� |j|||d
� W d   ƒ n1 s-w   Y  W d   ƒ d S W d   ƒ d S 1 sEw   Y  d S )Nr(   rj  rd  re  r   u   invalid character Å’r   z,Variable labels must contain only charactersrV  rf  rl  )r0   r4   r"   rñ   rD   r    r    r!   Ú$test_invalid_variable_label_encodingA  s   
ÿÿýÿ"ÿz.TestStata.test_invalid_variable_label_encodingc              	   C   s  g d¢}ddd  |¡dœ}d}tjt|d��# t ¡ �}|j||d� W d   ƒ n1 s-w   Y  W d   ƒ n1 s<w   Y  ddd	dœ}d
}tjt|d��, t ¡ �}|j||d� W d   ƒ n1 sgw   Y  W d   ƒ d S W d   ƒ d S 1 sw   Y  d S )N)u   Î¡õ   Î‘u   Î�u   Î”ro  u   Î£rc  rd  rÕ   r   zKVariable labels must contain only characters that can be encoded in Latin-1rV  )rñ   zqA very, very, very long variable label that is too long for Stata which means that it has more than 80 charactersrk  )ÚjoinrX  rY  rZ  r?   r@   rA   )r0   r"   r  Úvariable_labels_utf8r]  rD   Úvariable_labels_longr    r    r!   Ú test_write_variable_label_errorsN  s2   ýÿ
ÿ€ÿý
ÿÿ"ÿ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 ¡ �P}|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   ƒ d S 1 sƒw   Y  d S )NéÏ  rŒ   r�   éà.  éÜ  rR  éR  éð  r‹   r   é   ©r   rn  r   ©ÚappleÚbananaÚcherry©ÚnumsÚstrsÚdatesFr  Tr&   r‚  r  )r>   r'   )Údtr   r   r?   r@   rA   r   rB   r<   Útolistr(   )r0   r‚  rú   rD   ÚrereadÚdirectÚ	dates_idxr    r    r!   Útest_default_date_conversionl  s,   ýýÿ
"ôz&TestStata.test_default_date_conversionc              	   C   sŠ   t dddgiƒ}d}tjt|d��* t ¡ �}| |¡ W d   ƒ n1 s&w   Y  W d   ƒ d S W d   ƒ d S 1 s>w   Y  d S )Nr   y      ð?       @y       @      @z"Data type complex128 not supportedrV  )r   rX  rY  ÚNotImplementedErrorr?   r@   rA   )r0   rú   r]  rD   r    r    r!   Útest_unsupported_type‰  s   
ÿÿ"ÿzTestStata.test_unsupported_typec                 C   sb  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��% t ¡ �}|j|ddid� W d   ƒ n1 sNw   Y  W d   ƒ n1 s]w   Y  t	j
dddd�}tg d¢g d¢|dœƒ}tjtdd��* t ¡ �}| |¡ W d   ƒ n1 s’w   Y  W d   ƒ d S W d   ƒ d S 1 sªw   Y  d S )Nrt  rŒ   r�   ru  rv  rR  rw  rx  r‹   r   ry  rz  r{  r  zFormat %tC not implementedrV  r‚  ÚtCr&   z1-1-1990r   zAsia/Hong_Kong)ÚperiodsÚtzzData type datetime64)rƒ  r   r   rX  rY  r‰  r?   r@   rA   rr   Ú
date_range)r0   r‚  rú   r]  rD   r    r    r!   Útest_unsupported_datetype‘  s>   ýýÿ
ÿ€ÿýÿ
ÿÿ"ÿz#TestStata.test_unsupported_datetypec                 C   sN   d}t jt|d�� t|ddddƒdd� W d   ƒ d S 1 s w   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
rV  r#   r$   r%   zstata15.dtaT©rC  )rX  rY  rZ  r   )r0   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   rg   r�   )
r   r   r   r  r!  rÕ   Úgr¾  rÄ  rÚ  )rØ   r×   ÚwrÙ   )r   r   rS   r€   r?   rB   )r0   r*   rt   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��* t	 
¡ �}| |¡ W d   ƒ n1 s:w   Y  W d   ƒ d S W d   ƒ d S 1 sRw   Y  d S )Nrä   g      Ð©ÚColumnOkÚColumnTooBigzZColumn ColumnTooBig has a maximum value \(.+\) outside the range supported by Stata \(.+\)rV  )r   rS   ÚfinfoÚdoubleÚepsÚmaxrX  rY  rZ  r?   r@   rA   )r0   rt   r]  rD   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¡||< q)t	 
¡ �}| |¡ t|ƒ}W d   ƒ n1 sNw   Y  |d  tj¡|d< | ¡ }|j tj¡|_t	 | d¡|¡ d S )Nrä   rj  r•  r(   r—  )r   rS   r˜  r]   rš  r›  r(   r)   r`   r?   r@   rA   r   r^   r_   rW   rB   rù   )r0   rú   rÌ   rD   r…  rd   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��* t ¡ �}| |¡ W d   ƒ n1 s)w   Y  W d   ƒ d S W d   ƒ d S 1 sAw   Y  d S )Nrä   r   rn  )Ú
WithoutInfÚWithInfz[Column WithInf contains infinity or -infinitywhich is outside the range supported by Stata.rV  )r   rX  rY  rZ  r?   r@   rA   )r0   rž  rt   r]  rD   r    r    r!   Útest_infþ  s   ÿ
ÿÿ"ÿzTestStata.test_infc                 C   ór   t dt d¡ d¡ tjtdƒtd�tjdd„ tdƒD ƒtd�d	�}d
|j	_
dd„ }t |j|¡}t ||¡ d S )Nr   r  ©é   r   ÚABCDrG   c                 S   ó   g | ]}d |› �‘qS ©zi-r    rÃ  r    r    r!   rÅ    ó    z/TestStata.test_path_pathlib.<locals>.<listcomp>r¤  ©r<   r(   r(   c                 S   ó   t | ƒ d¡S ©Nr(   ©r   rù   r`  r    r    r!   ra    ó    z-TestStata.test_path_pathlib.<locals>.<lambda>)r   rS   rc  rb  rr   r�  r  rÿ   rp   r(   r)   r?   Úround_trip_pathlibrA   rB   ©r0   rt   rT  r  r    r    r!   Útest_path_pathlib
  ó   ýzTestStata.test_path_pathlibc                 C   r¢  )Nr   r  r£  r¥  rG   c                 S   r¦  r§  r    rÃ  r    r    r!   rÅ    r¨  z8TestStata.test_pickle_path_localpath.<locals>.<listcomp>r¤  r©  r(   c                 S   rª  r«  r¬  r`  r    r    r!   ra    r­  z6TestStata.test_pickle_path_localpath.<locals>.<lambda>)r   rS   rc  rb  rr   r�  r  rÿ   rp   r(   r)   r?   Úround_trip_localpathrA   rB   r¯  r    r    r!   Útest_pickle_path_localpath  r±  z$TestStata.test_pickle_path_localpathr>   c              	   C   s°   dg d¢i}t |d�}|d  d¡|d< t ¡ �)}|j||d� t|dd��}| ¡ }W d   ƒ n1 s5w   Y  W d   ƒ n1 sDw   Y  |dddd	d
dœiksVJ ‚d S )NÚA)ÚBÚEÚCr´  r¶  ©r$   rÁ   r  TrW  rµ  r·  r¶  )r   r   r   r   )r   r`   r?   r@   rA   r   r�  )r0   r>   r  rt   rD   Údta_iterr�  r    r    r!   Útest_value_labels_iterator   s   


ÿ€ýz$TestStata.test_value_labels_iteratorc                 C   sš   t dt d¡ d¡ tjtdƒtd�tjdd„ tdƒD ƒtd�d	�}d
|j	_
t ¡ �}| |¡ t|d
d�}W d   ƒ n1 s@w   Y  t ||¡ d S )Nr   r  r£  r¥  rG   c                 S   r¦  r§  r    rÃ  r    r    r!   rÅ  2  r¨  z,TestStata.test_set_index.<locals>.<listcomp>r¤  r©  r(   ©Ú	index_col)r   rS   rc  rb  rr   r�  r  rÿ   rp   r(   r)   r?   r@   rA   r   rB   )r0   rt   rD   r…  r    r    r!   Útest_set_index-  s   ý

þzTestStata.test_set_indexÚcolumn)Úmsrù  Úweekrø  ÚqtrÚ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  )r0   r¾  r*   rt   Ú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 ¡ �+}|j|ddidgdd� |  |¡}tj| d¡|dd� t ||¡ W d   ƒ d S 1 s¡w   Y  d S )Nrþ   rÿ   r   r   r  r   Áý  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiˆ  zstring-1zobject-1z
2003-12-26r   Áý  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrÕ   )rþ   rÿ   rU   rV   rW   r]   r^   r   r2  Ús2045ÚsrtlÚforced_strlr  rG   rU   rV   rW   r]   r(   r   r  rÊ  r7   )r'   Úconvert_strlr4   Frn   )r   rS   r  r   rÿ   rU   rV   r`   rW   r]   r(   r)   r_   r?   r@   rA   r2   rB   rù   )r0   rú   r_   rD   rû   r    r    r!   Útest_writer_117N  sj   ôôñá.
ü
ý"òzTestStata.test_writer_117c              	   C   sÌ   t g d¢g d¢gg d¢d�}d|j_t t¡�E t ¡ �(}|j|ddgdd	� |  |¡}| 	d¡}|j
|_
tj||d
d� W d   ƒ n1 sGw   Y  W d   ƒ d S W d   ƒ d S 1 s_w   Y  d S )N)Á¸  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar´  r|  )Áè  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrµ  r}  )Ú2long1long1long1long1long1long1long1long1long1long1Úlongr   r;   r(   rÐ  r   r7   )rË  r4   Frn   )r   r(   r)   r?   r�   r	   r@   rA   r2   rù   r<   rB   )r0   rú   rD   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 ¡ �3}d}tjt|d�� |j|ddid� W d   ƒ n1 sNw   Y  W d   ƒ d S W d   ƒ d S 1 sfw   Y  d S )Nrt  rŒ   r�   ru  rv  rR  rw  rx  r‹   r   ry  rz  r{  r  z0convert_dates key must be a column or an integerrV  Ú
wrong_namer  r&   )	rƒ  r   r   r?   r@   rX  rY  rZ  rA   )r0   r‚  rú   rD   r]  r    r    r!   Útest_invalid_date_conversion¤  s$   ýýÿ
ÿþ"þz&TestStata.test_invalid_date_conversionc              	   C   sè   t  ¡ }tdt d¡ d¡ tjtdƒt	d�tjdd„ t
dƒD ƒt	d�d	�}d
|j_t ¡ �6}|j||d� | d¡ t|dƒ�}| | ¡ ¡ W d   ƒ n1 sRw   Y  t|d
d�}W d   ƒ n1 sgw   Y  t ||¡ d S )Nr   r  r£  r¥  rG   c                 S   r¦  r§  r    rÃ  r    r    r!   rÅ  ¿  r¨  z2TestStata.test_nonfile_writing.<locals>.<listcomp>r¤  r©  r(   rh  r   Úwbr»  )r#   ÚBytesIOr   rS   rc  rb  rr   r�  r  rÿ   rp   r(   r)   r?   r@   rA   ÚseekÚopenÚwriterH  r   rB   )r0   r4   Úbiort   rD   Údtar…  r    r    r!   Útest_nonfile_writing¸  s    ý

ÿûzTestStata.test_nonfile_writingc              	   C   sö   t dt d¡ d¡ tjtdƒtd�tjdd„ tdƒD ƒtd�d	�}d
|j	_
t ¡ �A}t |d¡�}|j|dd� W d   ƒ n1 sCw   Y  t |d¡�}t|d
d�}W d   ƒ n1 s_w   Y  W d   ƒ n1 snw   Y  t ||¡ d S )Nr   r  r£  r¥  rG   c                 S   r¦  r§  r    rÃ  r    r    r!   rÅ  Ï  r¨  z/TestStata.test_gzip_writing.<locals>.<listcomp>r¤  r©  r(   rÔ  r6   rh  Úrbr»  )r   rS   rc  rb  rr   r�  r  rÿ   rp   r(   r)   r?   r@   ÚgzipÚGzipFilerA   r   rB   )r0   rt   rD   Úgzr…  r    r    r!   Útest_gzip_writingÊ  s    ý
ÿÿ€ý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ÚasciiÚ	utf8_strlÚ
ascii_strl)õ   Ï�Î±Î·Î´Î±Ï‚u   PÃ„NDÃ„SÚpræ  rç  )õ   Æ¤Ä€Å„Ä�Ä…Åœõ   Ã–r   rè  r   )õ   á´˜á´€á´Žá´…á´€Sõ   ÃœÚnrê  rì  )ú      rí  r  rí  r  )ú rÕ   r   rî  r   )rÕ   rÕ   r°  rÕ   r°  )rÕ   rÕ   rî  rÕ   rî  r;   )r2   r   r?   rB   )r0   r*   Ú
unicode_dfr<   r  rd   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|ƒ}| d	¡}t ||¡ W d   ƒ d S 1 sYw   Y  d S )NÁ¸  stringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringr   )ÚmixedÚnumberr   rW   Fr7   r=   rÕ   rò  )r>   rË  r4   )	r   ró  r`   r?   r@   rA   r   ÚfillnarB   )r0   ÚoutputrD   r…  rd   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 ¡ �/}tjtdd�� |j||d� W d   ƒ n1 s0w   Y  W d   ƒ d S W d   ƒ d S 1 sHw   Y  d S )NÚnoner   )r÷  ró  r   z Column `none` cannot be exportedrV  rh  )r   r?   r@   rX  rY  rZ  rA   )r0   r4   rõ  rD   r    r    r!   Útest_all_none_exceptionÿ  s   
ÿÿ"ÿz!TestStata.test_all_none_exceptionc              	   C   sœ   d}t |gdgd�}t ¡ �6}d}d}tjt|› d|› �d�� | |¡ W d   ƒ n1 s/w   Y  W d   ƒ d S W d   ƒ d S 1 sGw   Y  d S )Nu9   Here is one __ï¿½__ Another one __Â·__ Another one __Â½__Úinvalidr;   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\)ú|rV  )r   r?   r@   rX  rY  ÚUnicodeEncodeErrorrA   )r0   r4   Úcontentrt   rD   Úmsg1Ú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 ¡ �x}|j|ddgd� t|d	ƒ�Q}| ¡ }d}| d
¡|v s3J ‚| d¡|v s<J ‚| d¡d dd… }| d¡dd … D ]}| d¡d }|| d¡d  }	t	|ƒ|	d kslJ ‚qPW d   ƒ n1 sww   Y  W d   ƒ d S W d   ƒ d S 1 s�w   Y  d S )NÚpandasr   u   Ã¾Ã¢Ã‘Ã�Ã…Â§Úvar_strÚvar_strlr;   r7   )r4   rË  rÜ  zlatin-1zutf-8s   strlsr   rx  s   GSOó    ó   ‚)
r   r?   r@   rA   r×  rH  ÚencodeÚsplitÚfindrŒ  )
r0   rõ  rD   r…  rü  rd   ÚgsosÚgsorÏ  Ú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s)J ‚W d   ƒ n1 s3w   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)Úfilter_levelr   r   u   DÃ¼sseldorfé—   r  r;   )	r?   r�   ÚUnicodeWarningr   rŒ  ÚmessagerI  r   rB   )r0   r*   r]  rD   r“  r  rd   r    r    r!   Útest_encoding_latin1_118+  s   üz"TestStata.test_encoding_latin1_118c              	   C   sŠ   t  |ddddƒd¡�0}t|ƒ�}| ¡  |jdksJ ‚W d   ƒ n1 s&w   Y  W d   ƒ d S W d   ƒ d S 1 s>w   Y  d S )Nr#   r$   r%   zstata1_119.dta.gzrÜ  iç€  )rÝ  r×  r   r²  Ú_nvar)r0   r*   rß  rT  r    r    r!   Útest_stata_119?  s   ÿ
þý"ýzTestStata.test_stata_119)r8   r9   Nc                 C   sv  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 ¡ �s}t|||dg|d||d�}| 	¡  t
|ƒ}	|d  d¡|d< |d  |d ¡ d¡j ¡ |d< t ||	¡ t|ƒ�}
|
j|ks€J ‚|
 ¡ |ksˆJ ‚W d   ƒ n1 s’w   Y  |j||dd� t
|ƒ}t ||¡ W d   ƒ d S 1 s´w   Y  d S )N)r   õ   Î²õ   Ä‰TrÂ   )r   r   u   á´¬u   á´€ relatively long Å�tring)rn  r   u   á´®rÕ   )r   r   u   á´°N)õ   Ã…r  r  Ústrlsr;   õ	   á´�á´¬áµ€r|  u	   áµˆáµ‰áµŠu   á´Žáƒ¢áƒ„á‚²á‚³á‚´á‚¶á‚ºzLong StringsrÕ   )r  r  r  r  r  u   á´…aáµ€a-labelr  Úlabelu   Ã¦Ã¸Ã¥u   Å‹ot valid latin-1©r   r   r   r  F)ró   rË  rñ   r>   r4   r�  rÁ   )r4   r>   )rr   r'  r   r`   rS   rW   r?   r@   r   Ú
write_filer   rô  ÚreplacerÎ   r  rB   r   ró   rñ   rA   )r0   r4   rÎ   r$   rñ   ró   r�  rD   Úwriterr  rT  Úreread_to_statar    r    r!   Útest_utf8_writerK  sV   ýúû
ø
ÿ
þ"æzTestStata.test_utf8_writerc              	   C   sò   t tjdtjd�ƒ}t ¡ �&}tjtdd�� t	||dd� W d   ƒ n1 s(w   Y  W d   ƒ n1 s7w   Y  t ¡ �/}tjtdd�� t	||dd� W d   ƒ n1 sZw   Y  W d   ƒ d S W d   ƒ d S 1 srw   Y  d S )	N)r   iè€  rG   z"version must be either 118 or 119.rV  r7   rh  zYou must use version 119r8   )
r   rS   ÚzerosrU   r?   r@   rX  rY  rZ  r   )r0   rt   rD   r    r    r!   Útest_writer_118_exceptions}  s   
ÿ€ÿ
ÿÿ"ÿz$TestStata.test_writer_118_exceptionsÚdtype_backendÚnumpy_nullableÚpyarrow)Ú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 sGw   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(   r9  ©r(   )r"  ztest_stata.dtar8   rh  r   r   r   r   )r)   rH   )r   rr   rŽ  r�  Úconvert_dtypesrA   r?   r@   r2   rS   r€   rW   rB   rù   )r0   r"  rt   rD   rû   rd   r    r    r!   Útest_read_write_ea_dtypes†  s2   ûø


þ

ûøz#TestStata.test_read_write_ea_dtypesN)eÚ__name__Ú
__module__Ú__qualname__r2   r   rX  ÚmarkÚparametrizerF   rf   rv   rƒ   r¤   r¬   rÏ   rÜ   rø   rü   rý   r  r  r  r  r$  r1  r5  r<  rL  rU  r^  rf  ri  rm  ro  rt  rv  r€  r‚  r�  r“  r   r®  r»  r½  rÐ  rã  rþ  r  r  Úfilterwarningsr  r  r  r/  r;  r>  rR  Ústaticmethodr   rK  r[  r_  rb  ri  rm  rn  rs  rˆ  rŠ  r�  r‘  r”  rœ  r�  rS   Úinfr¡  r°  r³  rº  r½  rÅ  rÌ  rÑ  rÓ  rÛ  rà  rð  rö  rø  rÿ  r  r  Úslowr  r  r!  Úparamr;  Ú
skip_if_nor+  r    r    r    r!   r-   9   s6   

"

>ÿ
ÿ
,(


%ÿÿ


	

	"
;1ÿ4

#


þ
þ 





ÿ
G




1	þr-   r4   )éi   él   éo   éq   r6   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-ry   FrÚ   )r[  rD   rp  r   r?   rB   )r4   r*   Ú	data_baseÚrefÚoldrd   Úold_dtar    r    r!   Útest_backward_compatª  s   r@  c              
   C   sv  | ddddƒ}t |ƒ�}| ¡ jrJ ‚t|jtjƒrJ ‚W d   ƒ n1 s&w   Y  t|dƒ�*}t |ƒ�}| ¡ jr=J ‚|j|u sDJ ‚W d   ƒ n1 sNw   Y  W d   ƒ n1 s]w   Y  t|dƒ�J}t | ¡ ¡�*}t |ƒ�}| ¡ jr|J ‚|j|u sƒJ ‚W d   ƒ n1 s�w   Y  W d   ƒ n1 sœw   Y  W d   ƒ d S W d   ƒ d S 1 s´w   Y  d S )Nr#   r$   r%   r;  rÜ  )r   rH  Úemptyrq   Ú_path_or_bufr#   rÕ  r×  )r*   ÚmonkeypatchÚ	file_pathrT  ÚfprÙ  r    r    r!   Útest_direct_read´  s.   
ý
þ€ÿ
þ€ÿÿ"ÿrF  c                 C   sˆ   | ddddƒ}t jtdd�� t|ƒ}| ¡  W d   ƒ n1 s!w   Y  t jtdd�� | ¡  W d   ƒ d S 1 s=w   Y  d S )Nr#   r$   r%   r;  zwithout using a context managerrV  zis not part of the public API)r?   r�   ÚResourceWarningr   rH  ÚFutureWarningÚclose)r*   rD  r¸  r    r    r!   Ú0test_statareader_warns_when_used_without_contextË  s   þ
ûþ
"ürJ  r5   Úuse_dictTFÚinferc              	   C   s¨  d}| r|r	| }n||  }|d|› �7 }| }|rd}|r d| i}t tj d¡ d¡tdƒd�}d	|j_t 	|¡�ÿ}	|j
|	||d
� | dkrct |	d¡�}
t |
 ¡ ¡}W d   ƒ n1 s]w   Y  nÇ| dkr‰t |	d¡�}
t |
 |
jd ¡¡}W d   ƒ n1 sƒw   Y  n¡| dkr±t |	¡�}t | | ¡ d ¡ ¡ ¡}W d   ƒ n1 s«w   Y  ny| dkrÓt |	d¡�}
t |
 ¡ ¡}W d   ƒ n1 sÍw   Y  nW| dkrút d¡}| |	d¡�}
t |
 ¡ ¡}W d   ƒ n1 sôw   Y  n0| dk�r#t d¡}| |	d¡�}
t |
 ¡ ¡}W d   ƒ n	1 �sw   Y  n| d u �r*|	}t|d	d�}W d   ƒ n	1 �s;w   Y  | ¡ }|j tj¡|_t ||¡ d S )Nzdta_inferred_compression.dtarÀ  rL  Úmethodr   r	  r
  r;   r(   )r4   ÚcompressionrÝ  rÜ  r�  Úrr   ÚtarÚbz2ÚzstdÚ	zstandardÚxzÚlzmar»  )r   rS   r  r  r  r  r(   r)   r?   r@   rA   rÝ  r×  r#   rÕ  rH  ÚzipfileÚZipFileÚfilelistÚtarfileÚextractfileÚgetnamesrQ  rX  Úimportorskipr   r_   r`   rW   rB   )rN  r4   rK  rL  Úcompression_to_extensionÚ	file_nameÚfile_extÚcompression_argrt   rD   ÚcomprE  rP  rR  rU  r…  rd   r    r    r!   Útest_compressionÚ  sp   ÿÿ€ÿ€ÿ€ÿ€
ÿ€

ÿ€
èrb  rM  r�  r_  )NrÚ  r�  c              	   C   s(  d|› �}d}t tj d¡ d¡tdƒd�}d|j_t 	|¡�Y}| |dœ}|j
||d	� | d
ks4|d
krit |d¡�&}t|jƒdksDJ ‚|jd j|ksNJ ‚t | |jd ¡¡}W d   ƒ n1 scw   Y  n|}t|dd�}	W d   ƒ n1 s{w   Y  | ¡ }
|
j tj¡|
_t |	|
¡ d S )Nútest.ztest.dtar   r	  r
  r;   r(   )rM  Úarchive_name©rN  r�  rO  r   r   r»  )r   rS   r  r  r  r  r(   r)   r?   r@   rA   rV  rW  rŒ  rX  Úfilenamer#   rÕ  rH  r   r_   r`   rW   rB   )rM  r_  r^  rd  rt   rD   rN  ÚzprE  r…  rd   r    r    r!   Útest_compression_dict  s,   
ÿ
ý€örh  c                 C   s   t dtg d¢dd�iƒ}d|j_| ¡ }|j tj¡|_t 	¡ �V}|j
|| d� t|ddd	��/}t|ƒD ]"\}}| d¡}d|v sCJ ‚t |j|jjd| d|d
  … ¡ q4W d   ƒ n1 saw   Y  W d   ƒ d S W d   ƒ d S 1 syw   Y  d S )NÚcats)r   r   r   r   r   rÁ   rG   r(   rh  r   F)rB  r<  r   )r   r   r(   r)   r_   r`   rS   rW   r?   r@   rA   r   Ú	enumeraterù   ra   ri  rJ  )r4   rt   rd   rD   rT  rÄ  Úblockr    r    r!   Útest_chunked_categorical(  s$   

ÿýÿþ"þrl  c           	   	   C   sT  | ddddƒ}g d¢}t |dd��V}t t¡�A t|ƒD ]4\}}t|jƒ|d| d|d  … ks3J ‚|dk r?t d	d
g¡}ntjdgdd�}t 	|jj
j|¡ qW d   ƒ n1 s[w   Y  W d   ƒ n1 sjw   Y  t t¡�" t |dd��}| ¡ }W d   ƒ n1 sŠw   Y  W d   ƒ n1 s™w   Y  t|ƒ}t ||¡ d S )Nr#   r$   r%   ústata-dta-partially-labeled.dta)r   r   r   r   r   r   rX  r   r   r   r   r^   rG   rg   )r   r?   r�   r   rj  r  ri  rr   r�  r,  rÎ   rÊ   Ú__next__r   rB   )	r*   Údta_filer  rT  rÄ  rk  ÚidxÚlarge_chunkr†  r    r    r!   Ú test_chunked_categorical_partial;  s,   &úÿ€ÿ	
ÿ€ÿrr  rB  )r±  r   r|  c              	   C   s~   | ddddƒ}t jtdd��' t||d�� W d   ƒ n1 s w   Y  W d   ƒ d S W d   ƒ d S 1 s8w   Y  d S )Nr#   r$   r%   rm  zchunksize must be a positiverV  rX  )rX  rY  rZ  r   )r*   rB  ro  r    r    r!   Útest_iterator_errorsN  s   ÿÿ"ÿrs  c               
      s  ddgdgd  ‰ t ‡ fdd„tdƒD ƒƒ} t ¡ �c}| j|dd	� tjg d
¢dd�}t|dd��4}t|ƒD ]'\}}tdƒD ]}t 	|j
j| j|¡ q>t || j|d |d d … ¡ q6W d   ƒ n1 shw   Y  W d   ƒ d S W d   ƒ d S 1 s€w   Y  d S )NÚc_labelÚb_labelÚa_labelr¼  c                    s"   i | ]}d |› �t jˆ dd�“qS )rÌ   TrÂ   )rr   r'  )rˆ  r¬  ©r  r    r!   r‰  Y  s   " z.test_iterator_value_labels.<locals>.<dictcomp>r   Fr  )rv  ru  rt  rÿ   rG   r—  rX  r   )r   rp   r?   r@   rA   rr   r�  r   rj  r,  rb   rJ  rÊ   rB   )rt   rD   rd   rT  rÚ  rP  rÄ  r    rw  r!   Útest_iterator_value_labelsV  s   
$ýÿý"ýrx  c               	   C   s  t tdd„ tdƒD ƒƒtdd„ tdƒD ƒƒggddgd�} t ¡ �X}tjtdd	�� | j|d
d� W d   ƒ n1 s;w   Y  t|ƒ}t	t
jt
jgddgd�}t |j|¡ |jd | jd kscJ ‚|jd t| jd ƒksqJ ‚W d   ƒ d S 1 s|w   Y  d S )Nc                 s   s   � | ]}d | V  qdS )r   Nr    rÃ  r    r    r!   Ú	<genexpr>f  s   € z&test_precision_loss.<locals>.<genexpr>é<   é4   ÚbigÚlittler;   z&Column converted from int64 to float64rV  Fr  r)  )r   r}  )r   r|  )r   Úsumrp   r?   r@   r�   r
   rA   r   r   rS   r^   ra   rb   r  Úfloat)rt   rD   r…  Úexpected_dtr    r    r!   Útest_precision_lossd  s    ,þ
ÿý"÷r�  c              	   C   sÒ   t g d¢g d¢gddgg d¢d�}d|j_t ¡ �F}|j|| d� t|| dd	�}t ||¡ t || ¡�}t	 
| ¡ ¡}W d   ƒ n1 sFw   Y  t|dd
�}t ||¡ W d   ƒ d S 1 sbw   Y  d S )N©g¿¶~úÏš¿?g9DÜœJÎ?g>éD‚)â?©gÜ.4×i¤(@g33333þ@gÍÌÌÌ¤œAr´  rµ  ©ÚXÚYÚZr‹  r(   re  ©rN  r¼  r»  )r   r(   r)   r?   r@   rA   r   rB   Údecompress_filer#   rÕ  rH  )rN  rt   rD   r…  ÚfhÚcontentsr    r    r!   Útest_compression_roundtripu  s    ý
ÿ"÷rŒ  Úto_inferÚ
read_inferc                 C   s°   | }|| }d|› �}t g d¢g d¢gddgg d¢d�}d|j_|r$d	n|}|r*d	n|}	t |¡�}
|j|
|d
� t|
|	dd�}t ||¡ W d   ƒ d S 1 sQw   Y  d S )Nrc  r‚  rƒ  r´  rµ  r„  r‹  r(   rL  re  rˆ  )r   r(   r)   r?   r@   rA   r   rB   )Úcompression_onlyrŽ  r�  r]  rN  Úextrf  rt   Úto_compressionÚread_compressionrD   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 ¡ �¢}dd	d
dœdd	dœdœ}i |¥dddddœi¥}t|| |d�}| ¡  t	|ƒ�}| 
¡ }||ksPJ ‚W d   ƒ n1 sZw   Y  d}tjt|d�� ddddœi}t|| |d� W d   ƒ n1 s�w   Y  d}tjt|d�� ddddddœi}t|| |d� W d   ƒ n1 sªw   Y  W d   ƒ d S W d   ƒ d S 1 sÂw   Y  d S )N)r   r   r   r   r   r   rn  g      "@)r‹   r‹   r»   rŠ   rŽ   )rÚ  r¬  r¿  r¬  rÚ  )Úfully_labelledÚpartially_labelledr†  r‡  r±   r³   rµ   r  )r   rn  )r”  r•  r‡  rÚ  r¬  r¿  r(  ©r�  zCCan't create value labels for notY, it wasn't found in the dataset.rV  ÚnotYr¤  r¥  )r‹   rŠ   zUCan't create value labels for Z, value labels can only be applied to numeric columns.r   rÄ  r   )r   rS   r€   rr   r'  r?   r@   r   r  r   r�  rX  rY  rl  rZ  )r$   rD   r�  rd   r  rT  Úreader_value_labelsr]  r    r    r!   Ú!test_non_categorical_value_labels£  s@   üÿ
	
þ
þþÿþé"é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 ¡ �K}t t¡� | j||d� W d   ƒ n1 sZw   Y  t|ƒ�}| ¡ }||ksnJ ‚W d   ƒ n1 sxw   Y  W d   ƒ d S W d   ƒ d S 1 s�w   Y  d S )N)r   r   r   r   rg   rŠ   )rŠ   rŠ   r»   r»   rŠ   rŠ   )r   rg   rg   r�   r�   r»   r%  )z	invalid~!Ú	6_invalidÚ&invalid_name_longer_than_32_charactersÚ	aggregate©r   r   r¤  r¥  r�  r¶   r´   )rŠ   r»   rg   r¹   r   rµ   )Ú	invalid__Ú
_6_invalidÚ invalid_name_longer_than_32_charÚ
_aggregateÚ_1__2_r–  )r   r?   r@   r�   r	   rA   r   r�  )r$   r�  rd   rD   rT  r˜  r    r    r!   Ú0test_non_categorical_value_label_name_conversionÉ  s>   ûÿû	û
ÿ
þü"ür£  c               	   C   s  dddddœi} t dg d¢iƒ}t ¡ �h}|j|| d� t|dd��}| ¡ }W d   ƒ n1 s1w   Y  || ks<J ‚d}d	d
 dg¡ }d|› d|› d
�}tjt	|d�� t
|dd� W d   ƒ n1 sgw   Y  W d   ƒ d S W d   ƒ d S 1 sw   Y  d S )NÚrepeated_labelsÚ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:
rV  T)r   r?   r@   rA   r   r�  rp  rX  rY  rZ  r   )r�  r$   rD   rT  r˜  rÌ   Úrepeatsr]  r    r    r!   Ú;test_non_categorical_value_label_convert_categoricals_errorî  s2   ÿÿÿ

ÿÿ	÷ÿë"ër©  rH   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r-d	}n|d
kr3d}t	j
| }t	|ƒ}td||gtdd�}tg d¢dd�}t ¡ �-}|j|d|d� t|dd�}	t |j|	j¡ t |	j|¡ t |	j|¡ W d   ƒ d S 1 s‚w   Y  d S )Nrz  r   rG   )r   r   Nr   ÚurÕ   rX   rW   ÚboolrU   r   rŠ  )r   r   rÕ   r   r9  Fr=   TrÜ  )r   r   rr   ÚNAr)   r   rH   Únumpy_dtyper  r   ÚBASE_MISSING_VALUESrÿ   r?   r@   rA   r   ra   r   r   )
rH   r4   rt   Ú
dtype_nameÚvaluerá  Ú
expected_bÚ
expected_crD   r…  r    r    r!   Útest_nullable_support	  s.   

ýÿ

"ûr³  c                  C   sÈ   t tdƒg d¢dœd� d¡} t ¡ �G}| j|ddd� t|ƒ}d	|v s&J ‚tt 	d
¡t 	d¡dœƒ}t 
|j|¡ t|dgd�}d	|vsGJ ‚t 
|j|jdg ¡ W d   ƒ d S 1 s]w   Y  d S )Nr   rz  rm   r¸  r   Fr7   r=   r   rW   r^   r   r;   )r   rp   r}  r?   r@   rA   r   r   rS   rH   ra   rb   r  )rt   rD   Údf2rb   Údf3r    r    r!   Útest_empty_frame>	  s   
"õr¶  )ErQ  r   rƒ  rÝ  r#   r[  rÊ  rY  rV  ÚnumpyrS   rX  Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsr;  r   rr   r   Úpandas._testingÚ_testingr?   Úpandas.core.framer   r   Úpandas.io.parsersr   Úpandas.io.statar   r	   r
   r   r   r   r   r   r   Úfixturer"   r,   r-   r/  r0  r@  rF  rJ  rb  rh  rl  rr  rs  rx  r�  rŒ  r“  r™  r£  r©  ÚBooleanDtypeÚ	Int8DtypeÚ
Int16DtypeÚ
Int32DtypeÚ
Int64DtypeÚ
UInt8DtypeÚUInt16DtypeÚUInt32DtypeÚUInt64Dtyper³  r¶  r    r    r    r!   Ú<module>   sœ    ,


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