o
    Û­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@)ÚAtlantaÚ
BirminghamÚ
CincinnatiÚDetroit©ÚaÚbÚc)r   © r    r    úW/var/www/html/CropPilot/venv/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 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   ó   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� |  |¡}W d   ƒ n1 sOw   Y  | ¡ }|rc|d  d¡|d< t	j| d	¡|dd� d S )NÚstringÚobjectr   çš™™™™™ñ?ú
2003-12-25)rþ   rÿ   ÚintegerÚfloatingr   ©r$   r<   rG   r(   r  r   Útc©r'   r4   ÚstrFrn   )r   rS   Ú
datetime64r   rÿ   r(   r)   r`   rW   r?   r@   rA   r2   r_   rB   rù   )r0   r4   Úusing_infer_stringrú   rD   rû   rd   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_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 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_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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   r  r?   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   rT  ró   )r0   r4   rú   rT  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 )NrN  rO  r;   z01 Jan 2000, 00:00:00z"time_stamp should be datetime type©Úmatch)rT  r4   )
r   r?   r@   ÚpytestÚraisesÚ
ValueErrorrA   ÚosrD   Úisfile)r0   r4   rú   rT  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>6  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   ©r3  r4  r(   ©r4   )r   rS   rd  r]   r^   r€   r   r(   r)   r?   r@   rA   r2   rù   r_   r`   rW   rB   )r0   r4   r3  r4  rú   rD   rû   rd   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 ¡ �:}|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  rW  )r   rS   rc  rd  r(   r)   r?   r@   rA   r2   rY  rZ  ÚKeyError)r0   r<   rú   rD   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 s3w   Y  | 
¡ }|j tj¡|_t | d¡|¡ d S )Nr   zA longer stringr   ç       @rG   rh  r(   )r   rS   r^   r   r(   r)   r?   r@   rA   r2   r_   r`   rW   rB   rù   )r0   r3  r4  rú   rD   rû   rd   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 	¡ �'}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   ÿÿÿÿ )Ús0r3  r4  r5  r(   r3  r4  r5  )r   rS   rU   rV   rX   r   r(   r)   r?   r@   r�   r
   rA   r2   r_   rW   r^   r`   rB   rù   )	r0   rs  r3  r4  r5  rú   rD   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 ¡ �+}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û   rt  r    r    r!   Útest_dates_invalid_columnz  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   ry  )r   r   r   ry  )ÚclustnumÚpri_schlÚpsch_numÚpsch_disrz  r{  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%   rx  )r   Úvalue_labels)r0   r*   r  rU  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   ÿÿ )rs  r3  r4  r5  Ú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   rs  r3  r4  r5  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   ÚsrrO  Ú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\.rW  )	r   r  r   rY  rZ  r[  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ä   rF  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Æ  D  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_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 ]*}|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¨  rP  é'  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 )ry  Nr    rˆ  r    r    r!   rŠ  {  ó    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_datesM  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%   rB  rC  rD  rE  rF  rG  r;  rH  rI  ústata6_117.dtaTr&   F)r'   Úpreserve_dtypes)r   r`   rS   rU   rV   rW   r]   r^   rK  r   rL  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%   rB  rC  rD  rE  rF  rG  r;  rH  rI  )rC  rD  rE  r   T)r'   r<   )rD  rE  rC  z"columns contains duplicate entriesrW  zEThe following columns were not found in the Stata data set: not_found)rC  rD  rE  Ú	not_found)r   r`   rS   rU   rV   rW   r]   r^   rK  r   rL  r   r?   rB   rY  rZ  r[  )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Ä   ri  )r   r›   rS   r€   r_   rr   Úconcatr(   Ú	set_namesr`   rW   rK  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\.rW  c                    r
  r  r  r  r  r    r!   rÆ  &  rò  )r   r›   rr   r  r?   r@   rY  rZ  r[  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Æ  3  rò  r   r  r(   ri  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   ro  r   ré   g      @Úint32_mixed)r  r   r"  r   r   rÂ   rG   r#   r$   r%   ry   )rS   rd  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_orderE  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_sortingi  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_orderingz  s   üz#TestStata.test_categorical_orderingzignore::UserWarning)rx   Ú
stata2_117r¨   r°   r:  rA  Ú
stata7_117rÔ  Ú
stata9_117r   r2  Ú	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   ©rD  r'   T)ÚiteratorrD  r'   r   rg   F©rÛ   rš   ©	r   rp   ÚreadÚStopIterationÚilocr_   Ú_convert_categoricalr?   rB   ©r0   r1   rC  rD  r'   r*   Úfnamer‚   ÚitrÚposrÛ  ÚchunkÚ
from_framer    r    r!   Útest_read_chunks_117†  s<   ýüÿ
ÿ
öù"õzTestStata.test_read_chunks_117rR  Úreturnc                 C   sŒ   | D ]A}| | }t |jtƒrC|j ¡ }|jjtkr'tj 	|jj¡}| 
|¡}n|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   )rq   rH   r   rÈ   r  rÊ   rÿ   rr   rŽ  Ú_with_inferrÉ   r�  r`   )rR  rÌ   ÚserrÎ   rÊ   r    r    r!   rL  ·  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©rF  rg   r   ©rC  r   )	r   rI  r?   rB   rK  r  Ú	get_chunkrr   r  )r0   r*   rN  r‚   rO  rQ  Úfrom_chunksr    r    r!   Útest_iteratorÊ  s,   
 þ$þ
 þ þÿzTestStata.test_iterator)
Ú
stata2_115r§   r¯   r9  r@  Ú
stata7_115rÓ  Ú
stata9_115r  r1  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   rE  T)rF  r'   rD  r   rg   FrG  rH  rM  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%   rW  )r«   ÚcpiÚm1r   r;   TrX  r   rg   FrÚ   )r   rp   rI  rK  r?   rB   )r0   r*   rN  r<   rC  r‚   rO  rP  rÛ  rQ  rR  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 longre  rf  r   ú.Variable labels must be 80 characters or fewerrW  rg  ©r(   r)   r?   r@   rY  rZ  r[  rA   )r0   r4   r"   rñ   rD   r^  r    r    r!   Útest_invalid_variable_labels?  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(   rk  re  rf  r   u   invalid character Å’r   z,Variable labels must contain only charactersrW  rg  rm  )r0   r4   r"   rñ   rD   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��# 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   Î”rp  u   Î£rd  re  rÕ   r   zKVariable labels must contain only characters that can be encoded in Latin-1rW  )rñ   zqA very, very, very long variable label that is too long for Stata which means that it has more than 80 charactersrl  )ÚjoinrY  rZ  r[  r?   r@   rA   )r0   r"   r  Úvariable_labels_utf8r^  rD   Úvariable_labels_longr    r    r!   Ú test_write_variable_label_errorsW  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�   éà.  éÜ  rS  éR  éð  r‹   r   é   ©r   ro  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_conversionu  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 supportedrW  )r   rY  rZ  Ú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 )Nru  rŒ   r�   rv  rw  rS  rx  ry  r‹   r   rz  r{  r|  r€  zFormat %tC not implementedrW  rƒ  ÚtCr&   z1-1-1990r   zAsia/Hong_Kong)ÚperiodsÚtzzData type datetime64)r„  r   r   rY  rZ  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
rW  r#   r$   r%   zstata15.dtaT©rD  )rY  rZ  r[  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 \(.+\)rW  )r   rS   ÚfinfoÚdoubleÚepsÚmaxrY  rZ  r[  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ä   rk  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   ro  )Ú
WithoutInfÚWithInfz[Column WithInf contains infinity or -infinitywhich is outside the range supported by Stata.rW  )r   rY  rZ  r[  r?   r@   rA   )r0   rŸ  rt   r^  rD   r    r    r!   Útest_inf  s   ÿ
ÿÿ"ÿzTestStata.test_infc                 C   ój   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   ó   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ù   ra  r    r    r!   rb    ó    z-TestStata.test_path_pathlib.<locals>.<lambda>)r   rS   rd  rc  rr   rŽ  r  rp   r(   r)   r?   Úround_trip_pathlibrA   rB   ©r0   rt   rU  r  r    r    r!   Útest_path_pathlib  ó   ýzTestStata.test_path_pathlibc                 C   r£  )Nr   r  r¤  r¦  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­  ra  r    r    r!   rb  %  r®  z6TestStata.test_pickle_path_localpath.<locals>.<lambda>)r   rS   rd  rc  rr   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  TrX  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 tdƒ¡t dd„ tdƒD ƒ¡d�}d	|j_	t
 ¡ �}| |¡ t|d	d
�}W d   ƒ n1 s<w   Y  t
 ||¡ d S )Nr   r  r¤  r¦  c                 S   r§  r¨  r    rÄ  r    r    r!   rÆ  ;  r©  z,TestStata.test_set_index.<locals>.<listcomp>r¥  rª  r(   ©Ú	index_col)r   rS   rd  rc  rr   rŽ  r  rp   r(   r)   r?   r@   rA   r   rB   )r0   rt   rD   r†  r    r    r!   Útest_set_index6  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_detailsC  s   z2TestStata.test_date_parsing_ignores_format_detailsc                 C   sl  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� |  |¡}W d   ƒ n1 s�w   Y  |d d … }|r¥|d  d¡|d< t | d¡|¡ t ||¡ 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   r3  Ús2045ÚsrtlÚforced_strlr  rG   rU   rV   rW   r]   r(   r   r  rË  r7   )r'   Úconvert_strlr4   r  )r   rS   r  r   rÿ   rU   rV   r`   rW   r]   r(   r)   r_   r?   r@   rA   r2   rB   rù   )r0   r	  rú   r_   rD   rû   rd   r    r    r!   Útest_writer_117W  sn   ôôñá.
üù	þ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 )Nru  rŒ   r�   rv  rw  rS  rx  ry  r‹   r   rz  r{  r|  r€  z0convert_dates key must be a column or an integerrW  Ú
wrong_namer  r&   )	r„  r   r   r?   r@   rY  rZ  r[  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 tdƒ¡t dd„ t	dƒD ƒ¡d�}d	|j
_t ¡ �6}|j||d
� | d¡ t|dƒ�}| | ¡ ¡ W d   ƒ n1 sNw   Y  t|d	d�}W d   ƒ n1 scw   Y  t ||¡ d S )Nr   r  r¤  r¦  c                 S   r§  r¨  r    rÄ  r    r    r!   rÆ  Ì  r©  z2TestStata.test_nonfile_writing.<locals>.<listcomp>r¥  rª  r(   ri  r   Úwbr¼  )r#   ÚBytesIOr   rS   rd  rc  rr   rŽ  r  rp   r(   r)   r?   r@   rA   ÚseekÚopenÚwriterI  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 tdƒ¡t dd„ tdƒD ƒ¡d�}d	|j_	t
 ¡ �A}t |d
¡�}|j|dd� W d   ƒ n1 s?w   Y  t |d¡�}t|d	d�}W d   ƒ n1 s[w   Y  W d   ƒ n1 sjw   Y  t
 ||¡ d S )Nr   r  r¤  r¦  c                 S   r§  r¨  r    rÄ  r    r    r!   rÆ  Ü  r©  z/TestStata.test_gzip_writing.<locals>.<listcomp>r¥  rª  r(   rÕ  r6   ri  Úrbr¼  )r   rS   rd  rc  rr   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 ¡ �L}|j|ddd� t|ƒ}| d	¡}t ||¡ d |d
< |j|dd
gdd� t|ƒ}| 	¡ }|rR|d
  d¡|d
< | d	¡}t ||¡ W d   ƒ d S 1 shw   Y  d S )NÁ¸  stringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringr   )ÚmixedÚnumberr   rW   Fr7   r=   rÕ   ró  )r>   rÌ  r4   r  )
r   rô  r`   r?   r@   rA   r   ÚfillnarB   r_   )r0   r	  Ú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 exportedrW  ri  )r   r?   r@   rY  rZ  r[  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\)ú|rW  )r   r?   r@   rY  rZ  Ú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   ry  s   GSOó    ó   ‚)
r   r?   r@   rA   rØ  rI  Ú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�  ÚmessagerJ  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à  rU  r    r    r!   Útest_stata_119O  s   ÿ
þý"ýzTestStata.test_stata_119z)ignore:Downcasting behavior:FutureWarning)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)ro  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  rU  Úreread_to_statar    r    r!   Útest_utf8_writer[  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.rW  r7   ri  zYou must use version 119r8   )
r   rS   ÚzerosrU   r?   r@   rY  rZ  r[  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(   r:  ©r(   )r#  ztest_stata.dtar8   ri  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   rY  ÚmarkÚparametrizerF   rf   rv   rƒ   r¤   r¬   rÏ   rÜ   rø   rü   rý   r
  r  r  r  r%  r2  r6  r=  rM  rV  r_  rg  rj  rn  rp  ru  rw  r�  rƒ  r‘  r”  r¡  r¯  r¼  r¾  rÑ  rä  rÿ  r  r  Úfilterwarningsr  r  r  r0  r<  r?  rS  Ústaticmethodr   rL  r\  r`  rc  rj  rn  ro  rt  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   s8   

"

>ÿ
ÿ
,(


%ÿÿ


	

	"
;1ÿ4

#


þ
þ 





ÿ
K




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   rq  r   r?   rB   )r4   r*   Ú	data_baseÚrefÚoldrd   Úold_dtar    r    r!   Útest_backward_compat»  s   rA  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   rI  Úemptyrq   Ú_path_or_bufr#   rÖ  rØ  )r*   ÚmonkeypatchÚ	file_pathrU  ÚfprÚ  r    r    r!   Útest_direct_readÅ  s.   
ý
þ€ÿ
þ€ÿÿ"ÿrG  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 managerrW  zis not part of the public API)r?   r�   ÚResourceWarningr   rI  ÚFutureWarningÚclose)r*   rE  r¹  r    r    r!   Ú0test_statareader_warns_when_used_without_contextÜ  s   þ
ûþ
"ürK  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Á  rM  Ú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Ö  rI  ÚzipfileÚZipFileÚfilelistÚtarfileÚextractfileÚgetnamesrR  rY  Úimportorskipr   r_   r`   rW   rB   )rO  r4   rL  rM  Úcompression_to_extensionÚ	file_nameÚfile_extÚcompression_argrt   rD   ÚcomprF  rQ  rS  rV  r†  rd   r    r    r!   Útest_compressionë  sp   ÿÿ€ÿ€ÿ€ÿ€
ÿ€

ÿ€
èrc  rN  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(   )rN  Úarchive_name©rO  rž  rP  r   r   r¼  )r   rS   r  r  r  r  r(   r)   r?   r@   rA   rW  rX  r�  rY  Úfilenamer#   rÖ  rI  r   r_   r`   rW   rB   )rN  r`  r_  re  rt   rD   rO  ÚzprF  r†  rd   r    r    r!   Útest_compression_dict  s,   
ÿ
ý€öri  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(   ri  r   F)rC  r=  r   )r   r   r(   r)   r_   r`   rS   rW   r?   r@   rA   r   Ú	enumeraterù   ra   rj  rK  )r4   rt   rd   rD   rU  rÅ  Úblockr    r    r!   Útest_chunked_categorical9  s$   

ÿýÿþ"þrm  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   rY  r   r   r   r   r^   rG   rg   )r   r?   r�   r   rk  r  rj  rr   rŽ  r-  rÎ   rÊ   Ú__next__r   rB   )	r*   Údta_filer  rU  rÅ  rl  ÚidxÚlarge_chunkr‡  r    r    r!   Ú test_chunked_categorical_partialL  s,   &úÿ€ÿ	
ÿ€ÿrs  rC  )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%   rn  zchunksize must be a positiverW  rY  )rY  rZ  r[  r   )r*   rC  rp  r    r    r!   Útest_iterator_errors_  s   ÿÿ"ÿrt  c               
      s
  ddgdgd  ‰ t ‡ fdd„tdƒD ƒƒ} t ¡ �a}| j|dd	� t g d
¢¡}t|dd��4}t|ƒD ]'\}}tdƒD ]}t 	|j
j| j|¡ q<t || j|d |d d … ¡ q4W d   ƒ n1 sfw   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Š  j  s   " z.test_iterator_value_labels.<locals>.<dictcomp>r   Fr  )rw  rv  ru  r˜  rY  r   )r   rp   r?   r@   rA   rr   rŽ  r   rk  r-  rb   rK  rÊ   rB   )rt   rD   rd   rU  rÛ  rQ  rÅ  r    rx  r!   Útest_iterator_value_labelsg  s   
$ýÿý"ýry  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>w  s   € z&test_precision_loss.<locals>.<genexpr>é<   é4   ÚbigÚlittler;   z&Column converted from int64 to float64rW  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_lossu  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(   rf  ©rO  r½  r¼  )r   r(   r)   r?   r@   rA   r   rB   Údecompress_filer#   rÖ  rI  )rO  rt   rD   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_|r$d	n|}|r*d	n|}	t |¡�}
|j|
|d
� t|
|	dd�}t ||¡ W d   ƒ d S 1 sQw   Y  d S )Nrd  rƒ  r„  rµ  r¶  r…  rŒ  r(   rM  rf  r‰  )r   r(   r)   r?   r@   rA   r   rB   )Úcompression_onlyr�  rŽ  r^  rO  Úextrg  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   ro  g      "@)r‹   r‹   r»   rŠ   rŽ   )rÛ  r­  rÀ  r­  rÛ  )Úfully_labelledÚpartially_labelledr‡  rˆ  r±   r³   rµ   r  )r   ro  )r•  r–  rˆ  rÛ  r­  rÀ  r)  ©r‚  zCCan't create value labels for notY, it wasn't found in the dataset.rW  Ú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‚  rY  rZ  rm  r[  )r$   rD   r‚  rd   r  rU  Ú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   rU  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:
rW  T)r   r?   r@   rA   r   r‚  rq  rY  rZ  r[  r   )r‚  r$   rD   rU  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 )Nr{  r   rG   )r   r   Nr   ÚurÕ   rX   rW   ÚboolrU   r   r‹  )r   r   rÕ   r   r:  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   r{  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_frameO	  s   
"õr·  )ErR  r   r„  rÞ  r#   r\  rË  rZ  rW  ÚnumpyrS   rY  Ú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-   r0  r1  rA  rG  rK  rc  ri  rm  rs  rt  ry  r‚  r�  r”  rš  r¤  rª  ÚBooleanDtypeÚ	Int8DtypeÚ
Int16DtypeÚ
Int32DtypeÚ
Int64DtypeÚ
UInt8DtypeÚUInt16DtypeÚUInt32DtypeÚUInt64Dtyper´  r·  r    r    r    r!   Ú<module>   sž    ,


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