HOME


sh-3ll 1.0
DIR:/usr/local/lib64/python3.6/site-packages/pandas/tests/io/__pycache__/
Upload File :
Current File : //usr/local/lib64/python3.6/site-packages/pandas/tests/io/__pycache__/test_stata.cpython-36.pyc
3

���h�1�@s�ddlZddlZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
ZddlZddl
mZddlZddljZddlmZmZddlmZddlmZmZmZmZmZmZm Z ej!�dd��Z"ej!d	d
��Z#ej!dd��Z$Gd
d�d�Z%ej&j'ddddddg�dd��Z(ej&j'ddddddg�ej&j'dddg�ej&j'dddg�dd����Z)ej&j'd d!dg�ej&j'd"dd#d!g�d$d%���Z*ej&j'ddddddg�d&d'��Z+d(d)�Z,d*d+�Z-d,d-�Z.d.d/�Z/dS)0�N)�datetime)�is_categorical_dtype)�	DataFrame�Series)�read_csv)�CategoricalConversionWarning�InvalidColumnName�PossiblePrecisionLoss�StataMissingValue�StataReader�StataWriterUTF8�
read_statacCs*tjddddgddddgd	d
ddgd
��S)N����g�?g@g;@g@T@ZAtlantaZ
BirminghamZ
CincinnatiZDetroit)�a�b�c)�pdr�rr�</tmp/pip-build-5_djhm0z/pandas/pandas/tests/io/test_stata.py�mixed_frame!s

rcCs|ddd�S)N�io�data�statar)�datapathrrr�dirpath,srcCs&tjj|d�}t|dd�}d|j_|S)Nzstata5_114.dtaT)�
convert_dates�index)�os�path�joinr
r�name)r�	dta14_114�
parsed_114rrrr%1sr%c
@seZdZejdd�dd��Zdd�Zdd�Zejj	d	d
ddd
dg�dd��Z
ejj	dddg�dd��Zdd�Zejj	dddddg�dd��Z
ejj	dddd d!g�d"d#��Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zejj	d	d
ddd
dg�d,d-��Zd.d/�Zd0d1�Zejj	d	d
ddd
dg�d2d3��Zd4d5�Zejj	d	d
ddd
dg�d6d7��Zd8d9�Zejj	d	d
ddd
dg�ejj	dd:d;d<d=g�d>d?���Zejj	dd@dAdBdCg�dDdE��Zejj	d	d
ddd
dg�dFdG��Zejj	d	d
ddd
dg�dHdI��ZdJdK�Zejj	d	d
ddd
dg�dLdM��ZdNdO�Z dPdQ�Z!dRdS�Z"dTdU�Z#dVdW�Z$dXdY�Z%dZd[�Z&d\d]�Z'ejj	d	d
ddd
dg�ejj	d^d_d`g�dadb���Z(dcdd�Z)dedf�Z*dgdh�Z+didj�Z,ejj	ddkdldmg�dndo��Z-dpdq�Z.drds�Z/dtdu�Z0ejj	d	d
ddd
dg�ejj1dv�dwdx���Z2dydz�Z3ejj	d	d
ddd
dg�d{d|��Z4ejj	dd}d~g�dd���Z5ejj	dd�d�g�d�d���Z6ejj	dd}d~g�d�d���Z7ejj	ddd�dd!d=dCd�dmd�d~d�g�ejj	d�d�d�g�ejj	d�d�dg�ejj	d�d�dg�d�d������Z8e9e:e:d��d�d���Z;d�d��Z<ejj	dd�dd d<dBd�dld�d}d�g
�ejj	d�d�d�g�ejj	d�d�dg�ejj	d�d�dg�d�d������Z=d�d��Z>ejj	d	d
ddd
dg�d�d���Z?ejj	d	d
ddd
dg�d�d���Z@ejj	d	d
dg�d�d���ZAd�d��ZBd�d��ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKejj	d�dd�g�d�d���ZLd�d��ZMejj	d�d�d�d�d�d�d�d�g�d�dƄ�ZNd�dȄZOd�dʄZPd�d̄ZQejj	d	d
ddd
dg�d�d΄�ZRd�dЄZSd�d҄ZTd�dԄZUejj	d	d
ddd
dg�d�dք�ZVejj	d	d
ddd
dg�d�d؄�ZWd�dڄZXd�d܄ZYejjZd�dބ�Z[ejj	d	dd
dg�d�d��Z\d�d�Z]dS)��	TestStataT)ZautousecCs<|ddd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd	�|_	tjj|jd
�|_
tjj|jd�|_tjj|jd�|_tjj|jd
�|_
tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd�|_tjj|jd �|_ tjj|jd!�|_!tjj|jd"�|_"tjj|jd#�|_#tjj|jd$�|_$tjj|jd%�|_%tjj|jd&�|_&tjj|jd'�|_'tjj|jd(�|_(tjj|jd)�|_)tjj|jd*�|_*tjj|jd+�|_+tjj|jd,�|_,tjj|jd-�|_-tjj|jd.�|_.tjj|jd/�|_/tjj|jd0�|_0dS)1Nrrrzstata1_114.dtazstata1_117.dtazstata2_113.dtazstata2_114.dtazstata2_115.dtazstata2_117.dtazstata3_113.dtazstata3_114.dtazstata3_115.dtazstata3_117.dtaz
stata3.csvzstata4_113.dtazstata4_114.dtazstata4_115.dtazstata4_117.dtazstata1_encoding.dtazstata1_encoding_118.dtaz
stata5.csvzstata5_113.dtazstata5_114.dtazstata5_115.dtazstata5_117.dtaz
stata6.csvzstata6_113.dtazstata6_114.dtazstata6_115.dtazstata6_117.dtazstata7_115.dtazstata7_117.dtazstata8_113.dtazstata8_115.dtazstata8_117.dtazstata9_115.dtazstata9_117.dtazstata10_115.dtazstata10_117.dtazstata11_115.dtazstata11_117.dtazstata12_117.dtazstata14_118.dtazstata15.dtazstata7_111.dtazstata16_118.dtazstata1_119.dta.gzzstata13_dates.dta)1rr r!r"�dta1_114�dta1_117Zdta2_113�dta2_114�dta2_115�dta2_117�dta3_113�dta3_114�dta3_115�dta3_117�csv3�dta4_113�dta4_114�dta4_115�dta4_117�dta_encoding�dta_encoding_118�csv14�	dta14_113r$�	dta14_115�	dta14_117�csv15�	dta15_113�	dta15_114�	dta15_115�	dta15_117�	dta16_115�	dta16_117�	dta17_113�	dta17_115�	dta17_117�	dta18_115�	dta18_117�	dta19_115�	dta19_117�	dta20_115�	dta20_117�	dta21_117�	dta22_118�dta23�	dta24_111�	dta25_118�	dta26_119�stata_dates)�selfrrrr�setup_method:s\zTestStata.setup_methodcCst|dd�S)NT)r)r
)rR�filerrr�read_dta{szTestStata.read_dtacCst|dd�S)NT)Zparse_dates)r)rRrTrrrrszTestStata.read_csv�version�r�u�v�wNcCsHtdgd�}tj��*}|j|d|d�t|�}tj||�WdQRXdS)N�unit)�columnsF)�write_indexrV)r�tm�ensure_clean�to_statar
�assert_frame_equal)rRrVZempty_dsr!Z	empty_ds2rrr�test_read_empty_dta�s

zTestStata.test_read_empty_dtarTr'r(cCsdt||�}|j|�}ttjtjtjtjtjfgdddddgd�}|djtj�|d<tj||�dS)N�
float_miss�double_miss�	byte_miss�int_miss�	long_miss)r\)	�getattrrUr�np�nan�astype�float32r^ra)rRrT�parsed�expectedrrr�test_read_dta1�s

zTestStata.test_read_dta1c
Cs�tjtdddddd�dtdd	d�tdd	d
�tdd	d	�tddd	�tdd	d	�tdd	d	�ftd
ddddd�d(tddd�tddd�tdd	d	�tddd	�tdd	d	�tdd	d	�ftjtjtjtjtjtjtjtjfgddddddddgd �}|djd!�|d<tjd"d#��T}tjd$�|j	|j
�}|j	|j�}|j	|j�}d%d&�|D�}t
|�dk�sNt�WdQRXtj||d"d'�tj||d"d'�tj||d"d'�dS))Ni�����
�l*�}ai�r�i��i���ri��i��
ri��i�Z
datetime_cZdatetime_big_c�dateZweekly_dateZmonthly_dateZquarterly_dateZhalf_yearly_dateZyearly_date)r\�OT)�record�alwayscSsg|]}|jtkr|�qSr)�category�UserWarning)�.0�xrrr�
<listcomp>�sz,TestStata.test_read_dta2.<locals>.<listcomp>)�check_datetimelike_compatiZl�)r�from_recordsrr�NaTrk�warnings�catch_warnings�simplefilterrUr)r*r+�len�AssertionErrorr^ra)rRrn�wr%�
parsed_115�
parsed_117rrr�test_read_dta2�sJ









$

zTestStata.test_read_dta2r,r-r.r/cCsdt||�}|j|�}|j|j�}|jtj�}|djtj�|d<|djtj�|d<t	j
||�dS)N�year�quarter)rhrUrr0rkrirl�int16�int8r^ra)rRrTrmrnrrr�test_read_dta3�s

zTestStata.test_read_dta3r1r2r3r4cCs.t||�}|j|�}tjdddddgdddddgdddddgddd	ddgd
ddtjd
gdd
d
tjdgdddtjdgdddtjdgdddtjdgdddtjdgg
dddddgd�}xl|D]d}||j�}tj|d|j��}|dkr�|}|j	d�j
}|j|dd�}|jj
ddd�|||<q�Wtj||�dS)N�one�ten�two�nine�three�eight�four�sevenr�five�six�rzrvru�	�
fully_labeled�fully_labeled2�incompletely_labeled�labeled_with_missings�float_labelled)r\rT)�ordered)�inplace)rhrUrr�rirj�copyZasarrayZnotnark�_values�set_categories�
categories�renamer^ra)rRrTrmrn�col�origr��catrrr�test_read_dta4�s8



zTestStata.test_read_dta4cCsL|j|j�}tjdddgdddgddd	ggd
ddgd
�}tj||dd�dS)Nr�abcZ	abcdefghirZcbaZqwertywertyqwerty�]�Zstrlr��y�z)r\F)�check_dtype)rUrKrr�r^ra)rRr�rnrrr�test_read_dta12s
zTestStata.test_read_dta12cCs|j|j�}|djd�|d<tjdddddddgd	d
dtjtjtjtjgdd
dddddgdddd*dddgddddddd+ggdddddddgd �}|djtj�|d<x"|jD]}t	j
||||�q�Wt|j��>}|j�}d!d"d#d$d%d&d'd(�}t	j
||�|jd)k�st�WdQRXdS),N�Bytesr|ZCatZBogotauBogotárg�?uoption b ÜnicodeZDogZBostonuUzunköprüZPlaneZRomeuTromsørgzoption aZPotatoZTokyou	Elâzığrg@r�g����T�?g@�Things�Cities�Unicode_Cities_Strl�Ints�Floats�Longs)r\u'Here are some strls with Ünicode charsz	long datazHere are some thingsz	byte datazint datazHere are some citiesz
float data)r�r�r�r�r�r�r�uThis is a  Ünicode data label���gUUUUUU�?)rUrLrkrr�rirjrlr\r^Zassert_almost_equalr�variable_labelsZassert_dict_equal�
data_labelr�)rRZ
parsed_118rnr��rdrZvlZvl_expectedrrr�test_read_dta18#s:
zTestStata.test_read_dta18c
Cstttjtjtjtjtjfgdddddgd�}d|j_tj��.}|j|d�|j|�}tj	|j
d�|�WdQRXdS)Nrcrdrerfrg)r\r)rrirjrr#r^r_r`rUra�	set_index)rR�originalr!�written_and_read_againrrr�test_read_write_dta5Ks

zTestStata.test_read_write_dta5cCs�|j|j�}d|j_|jjtj�|_|djtj�|d<|djtj�|d<tj��2}|j	|d�|j
|�}tj|jd�|dd�WdQRXdS)Nrr�r�F)�check_index_type)
rr0rr#rkri�int32r^r_r`rUrar�)rRr�r!r�rrr�test_write_dta6Ws

zTestStata.test_write_dta6cCs�tddddtjd�ggdddddgd	�}t|dtd
�|d<d|j_|jjtj�|_|djtj�|d<t	j
��:}|j|ddi|d
�|j|�}t	j
|jd�|dd�WdQRXdS)N�string�objectrg�������?z
2003-12-25�integer�floatingr)rr\)�dtyper�tc)rVF)r�)rri�
datetime64rr�rr#rkr�r^r_r`rUrar�)rRrVr�r!r�rrr�test_read_write_dta10gs

zTestStata.test_read_write_dta10cCs<tj��*}ttjjdd�td�d�}|j|�WdQRXdS)Nryr�AB)r\)r^r_rri�random�randn�listr`)rRr!�dfrrr�test_stata_doc_examples|s
z!TestStata.test_stata_doc_examplescCsvtjjd�tjtjjdd�td�d�}tj|jddd�f<|j	�}t
j��}|j|d	d
�WdQRXt
j
||�dS)Ni�r�rZabcd)r\rrrF)r])rir��seedrrr�r�rj�locr�r^r_r`ra)rRr�Zdf_copyr!rrr�test_write_preserves_original�s
z'TestStata.test_write_preserves_originalcCs~t|j�}t|j�}|jd}|jd}||ks4t�t|t�sBt�tj��*}|j|d|d�t|�}tj	||�WdQRXdS)NrF)r]rV)
r
r5�	kreis1849r��
isinstance�strr^r_r`ra)rRrV�raw�encoded�resultrnr!�reread_encodedrrr�
test_encoding�s




zTestStata.test_encodingcCs�tdgddddgd	�}tdgdd
ddgd	�}d
|j_|jtj�}tj��J}tjt	j
jj��|j
|d�WdQRX|j|�}tj|jd
�|�WdQRXdS)NrrrrZgoodubädZ8numberZ%astringwithmorethan32characters______)r\Zb_dZ_8number� astringwithmorethan32characters_r)rrrr)rrrr)rrr#rkrir�r^r_�assert_produces_warningrrrrr`rUrar�)rRr��	formattedr!r�rrr�test_read_write_dta11�s 


zTestStata.test_read_write_dta11cCs�tdgddd	d
ddgd
�}tdgddddddgd
�}d|j_|jtj�}tj��f}tj	dd��2}tj
dt�|j|d|d�t
|�dks�t�WdQRX|j|�}tj|jd�|�WdQRXdS)Nrrrrr�rzZ!astringwithmorethan32characters_1Z!astringwithmorethan32characters_2�+�-�short�delete)r\r�Z _0astringwithmorethan32character�_Z_1_Z_short�_deleterT)r}r~)rV)rrrrr�rz)rrrrr�rz)rrr#rkrir�r^r_r�r�r�rr`r�r�rUrar�)rRrVr�r�r!r�r�rrr�test_read_write_dta12�s2



zTestStata.test_read_write_dta12c
Cs�td	tjd�}td
tjd�}tdtjd�}t|||d��}d|j_|}|djtj	�|d<t
j��,}|j|�|j
|�}t
j|jd�|�WdQRXdS)Nrr�)r���!)r�r��int64rr�iil)rrir�r�r�rrr#rk�float64r^r_r`rUrar�)rR�s1�s2�s3r�r�r!r�rrr�test_read_write_dta13�s


zTestStata.test_read_write_dta13r8r$r9r:c
Cs�t||�}|j|�}d|j_|j|j�}dddddg}x"|D]}||jddd�||<q<W|djtj	�|d<t
j|d	d
d�|d	<tj
||�tj��6}|j|d	di|d
�|j|�}	tj
|	jd�|�WdQRXdS)Nr�byte_�int_�long_�float_�double_T)r�numeric�date_tdZcoerce)�errors�td)rV)rhrUrr#rr7�_convertrkrirlrZto_datetimer^rar_r`r�)
rRrTr%rVrmrn�colsr�r!r�rrr�test_read_write_reread_dta14�s




z&TestStata.test_read_write_reread_dta14r<r=r>r?cCs�|j|j�}|djtj�|d<|djtj�|d<|djtj�|d<|djtj�|d<|djtj�|d<|dj	t
jd	d�|d<t||�}|j
|�}tj||�dS)
Nr�r�r�r�r�r��%Y-%m-%d)�args)r)rr;rkrir�r�r�rlr��applyr�strptimerhrUr^ra)rRrTrnrmrrr�test_read_write_reread_dta15�s

z&TestStata.test_read_write_reread_dta15cCs~tdgdgd�}tddddd�}d	}tj��H}|j||||d
�t|��"}|jdksXt�|j|ksft�WdQRXWdQRXdS)
Nr�variable)r\i�r���zThis is a data file.)�
time_stampr�rVz29 Feb 2000 14:21)r)	rrr^r_r`rrr�r�)rRrVr�rr�r!�readerrrr�test_timestamp_and_labels

z"TestStata.test_timestamp_and_labelcCsZtdgdgd�}d}tj��4}d}tjt|d��|j|||d�WdQRXWdQRXdS)	Nrr)r\z01 Jan 2000, 00:00:00z"time_stamp should be datetime type)�match)rrV)r)rr^r_�pytest�raises�
ValueErrorr`)rRrVr�rr!�msgrrr�test_invalid_timestamp!s
z TestStata.test_invalid_timestampcCs�ttjtjd�d��}d|j_tj��d}tjt	��|j
|�WdQRX|j|�}|jd�}t
|j�}dd�}t||�|_tj||�WdQRXdS)Ng9@r�rcSst|d�S)Nr)�int)r�rrr�<lambda>5sz5TestStata.test_numeric_column_names.<locals>.<lambda>)r�r�)rri�reshape�arangerr#r^r_r�rr`rUr�r�r\�mapra)rRr�r!r�r\Zconvert_col_namerrr�test_numeric_column_names*s



z#TestStata.test_numeric_column_namescCs�ttjd�tjd�}ttjd�tjd�}tj|ddd�<tj|ddd�<t||d��}d|j_t	j
��4}|j||d�|j|�}|j
d�}t	j||�WdQRXdS)Ng@)r�rr)r�r�r)rV)rrirrlr�rjrrr#r^r_r`rUr�ra)rRrVr�r�r�r!r�rrr�test_nan_to_missing_value9s


z#TestStata.test_nan_to_missing_valuecCs�ddg}ttjtjd�d�|d�}d|j_tj��D}|j|dd	�|j	|�}t
jt|jjd
��|dWdQRXWdQRXdS)Nr�r�g$@r�r)r\Zindex_not_writtenF)r])r)r�r)
rrirrrr#r^r_r`rUrr�KeyError)rRr\r�r!r�rrr�
test_no_indexGs

zTestStata.test_no_indexc
Csrtddg�}tddgtjd�}t||d��}d|j_tj��,}|j|�|j	|�}tj
|jd�|�WdQRXdS)NrzA longer stringg�?g@)r�)r�r�r)rrir�rrr#r^r_r`rUrar�)rRr�r�r�r!r�rrr�test_string_no_datesQs


zTestStata.test_string_no_datesc	Cstddgtjd�}tddgtjd�}tddgtjd�}tddgtjd�}t||||d��}d	|j_tj	���}tj
t��|j|�WdQRX|j
|�}|j�}t|d
tjd�|d
<t|dtjd�|d<t|dtjd�|d<tj|jd	�|�WdQRXdS)Nr�c)r��r��?)�s0r�r�r�rr�r�r�i�i�ll����)rrir�r�r�rrr#r^r_r�r	r`rUr�r�r�rar�)	rRr#r�r�r�r�r!r��modifiedrrr�test_large_value_conversion[s

z%TestStata.test_large_value_conversioncCs�ttdddddd�g�}d|j_tj��X}tjt��|j|dd	i�WdQRX|j	|�}|j
�}d
g|_tj|j
d�|�WdQRXdS)Ni�rprqrrrsrtrrr�Z_0)rrrr#r^r_r�rr`rUr�r\rar�)rRr�r!r�r$rrr�test_dates_invalid_columnms

z#TestStata.test_dates_invalid_columncCs�tjj|jd�}tj|�}dddd
gddddgddddgg}tj|�}dddd	g|_|djt	j
�|d<|djt	j�|d<|djt	j�|d<|d	jt	j�|d	<t
j|jd�|�dS)
NzS4_EDUC1.dtarrrrZclustnumZpri_schlZpsch_numZpsch_dis���r'r')r r!r"rrr
rr\rkrir�r�rlr^ra�head)rR�dpathr�Zdf0rrr�test_105ys
"
zTestStata.test_105cCs4tjj|jd�}t|�}|j�iks(t�|j�dS)NzS4_EDUC1.dta)r r!r"rr�value_labelsr��close)rRr)r
rrr�test_value_labels_old_format�sz&TestStata.test_value_labels_old_formatc	
Cs�dddddddg}dd	�|D�}td
ddd
dd�gt|�}t|g|d�}d|j_td
ddd
dd�td
dd�td
dd�td
dd�td
dd�td
dd�td
dd�g}t|g|d�}d|j_tj��.}|j||�|j|�}tj	|j
d�|�WdQRXdS)Nr�r�Ztwr^Ztq�th�tycSsi|]
}||�qSrr)r�rrrr�
<dictcomp>�sz6TestStata.test_date_export_formats.<locals>.<dictcomp>i�rprtrrrs)r\rrqrryrv)rr�rrr#r^r_r`rUrar�)	rRr\Zconversionsrr��expected_valuesrnr!r�rrr�test_date_export_formats�s$






z"TestStata.test_date_export_formatsc
Csrtdgdggdgd�}tdgdggdgd�}d|j_tj��,}|j|�|j|�}tj|jd�|�WdQRXdS)N�1Zfoo)r\r�r)	rrr#r^r_r`rUrar�)rRr�rnr!r�rrr�test_write_missing_strings�s


z$TestStata.test_write_missing_strings�	byteorder�>�<cCsJtdddgtjd�}tdddgtjd�}tdddgtjd�}tdddgtjd�}tdddgtjd�}tdddgtjd�}tdddgtjd�}	t|||||||	d��}
d
|
j_|
j	�}tj
tj
tjtjtjtjtj
f}x,t|j|�D]\}
}||
j|�||
<�q�Wtj��6}|
j|||d�|j|�}|jd
�}tj||�WdQRXdS)NrrT)r��d�rr!�rx� )r#r�r�r��s4�s5�s6r)r5rVi�i�ii��li���ll��)rriZbool_Zuint8Zuint16Zuint32rrr#r�r�r�r�r��zipr\rkr^r_r`rUr�ra)rRr5rVr#r�r�r�r<r=r>r�rnZexpected_typesr�tr!r�rrr�test_bool_uint�s2


zTestStata.test_bool_uintcCs�t|j��}|j�}WdQRXt|j��}|j�}WdQRXd}d}xH|j�D]<\}}||ksbt�|||ksrt�||ks~t�||ksNt�qNWdS)	N�var1�var2�var3�label1�label2�label3)rBrCrD)rErFrG)rr@r�rA�itemsr�)rRr�Zsr_115Zsr_117�keys�labels�k�vrrr�test_variable_labels�szTestStata.test_variable_labelsc
Cs�d
}i}x2|D]*}td|d|d|g�|dt|�<qWt|�}tj���}|j|dd	�t|��p}|j}|j}|j	}	xVt
||	|�D]F\}
}}t|
dd��t|dd��ks�t�t|
dd��|ks�t�q�WWdQRXWdQRXdS)Nrr8��rrr�sF)r])rr8rN���)
rr�rr^r_r`r�typlistZvarlistZfmtlistr?rr�)
rR�str_lensrO�str_lenr�r!�srrQ�	variables�formatsr�fmt�typrrr�test_minimal_size_col�s
(

$zTestStata.test_minimal_size_colcCs�d
}i}x2|D]*}td|d|d|g�|dt|�<qWt|�}d}tjt|d	��$tj��}|j|�WdQRXWdQRXdS)NrrN��rrrrOz�Fixed width strings in Stata \.dta files are limited to 244 \(or fewer\)\ncharacters\.  Column 's500' does not satisfy this restriction\. Use the\n'version=117' parameter to write the newer \(Stata 13 and later\) format\.)r)rrNrZ)	rr�rrrrr^r_r`)rRrRrOrSr�rr!rrr�test_excessively_long_string�s
(
z&TestStata.test_excessively_long_stringcCsNd}tdggdgd�}tj��*}|j|�t|��}|j}WdQRXWdQRXdd�td	�D�}|jd
d�xN|D]F}||d}x4td
d
�D]&}	t|d|	�}
|
j	||	ks�t
�q�WqrWttjdd�d
�}
|
j	dks�t
�ttjdd�d
�}
|
j	dk�st
�ttjdd�d
�}
|
j	dk�s&t
�ttjdd�d
�}
|
j	dk�sJt
�dS)Nr�h�lgr�)r\cSsg|]}dtd|��qS)�.�a)�chr)r��irrrr�sz:TestStata.test_missing_value_generator.<locals>.<listcomp>�rr^r�z<fss�z.zz<ds�s�)rr\r])
rr^r_r`rZVALID_RANGE�range�insertr
r�r��struct�unpack)rR�typesr�r!r�Zvalid_ranger1r@�offsetra�valrrr�test_missing_value_generators.



z&TestStata.test_missing_value_generatorrBrCrDcs�dddddg}td�}t|jj���g}x2td�D]&���fdd	�td
�D�}|j|�q2Wt||d�}tt||�dd
�}t	j
||�dS)NZint8_Zint16_Zint32_Zfloat32_Zfloat64_�erccs g|]}t��|d��qS)rc)r
)r��j)rarIrrr�+sz;TestStata.test_missing_value_conversion.<locals>.<listcomp>r�)r\T)Zconvert_missing)r
�sortedZMISSING_VALUESrIrd�appendrr
rhr^ra)rRrTr\Zsmvr�rowrnrmr)rarIr�test_missing_value_conversion$sz'TestStata.test_missing_value_conversioncCs�ddddddg}ddddd	d
g}dddddd
g}ddd
dddg}ddddddg}ddddddg}g}x�tt|��D]�}g}	x�td�D]|}
|
dkr�|	jt||||||||||||��q�|
dkr�|	jt||dd��q�|	jt||||||��q�W|j|	�qrW|jtjgd�dddddddg}tddd�|dd<tddd�|dd<tddd�|dd	<tddd�|dd<tdd	d�|d	d<tdd	d�|d	d<|d	d	<tddd�|d	d<|d	d<tddd�|dd<|dd<|dd	<tddd�|dd<|dd<t||td �}t|j	�}t|j
�}
tj||d!d"�tj||
d!d"�d#d$�|D�}tj
��:}d%|j_|j||�|j|�}tj|jd%�|d!d"�WdQRXdS)&Ni�i�i'r8i�i�rrwrr�rx�rrr�;rvrzZdate_tcr�Zdate_twZdate_tmZdate_tqZdate_thZdate_ty�rrryr�r:i�)r\r�T)r�cSsi|]}|dd�|�qS)rNr'r)r�rrrrr0`sz,TestStata.test_big_dates.<locals>.<dictcomp>r)rdr�rorrr�rr�r
rErFr^rar_rr#r`rUr�)rR�yr�mo�dd�hr�mm�ssrnrarprmr\r�r�Zdate_conversionr!r�rrr�test_big_dates2s^2"  , 



zTestStata.test_big_datescCs�|j|j�}|djtj�|d<|djtj�|d<|djtj�|d<|djtj�|d<|djtj�|d<|dj	t
jd
d�|d<t|j
d	d
�}tj||�t|j
d	dd�}|j|j�}|dj	t
jdd�|d<tj||�dS)Nr�r�r�r�r�r��%Y-%m-%d)rT)rF)rZpreserve_dtypes)r|)r|)rr;rkrir�r�r�rlr�rrrr
r?r^ra)rRrnZ
no_conversion�
conversionrrr�test_dtype_conversionls zTestStata.test_dtype_conversioncCsX|j|j�}|djtj�|d<|djtj�|d<|djtj�|d<|djtj�|d<|djtj�|d<|dj	t
jdd�|d<dddg}||}t|j
d	|d
�}tj||�dddg}||}t|j
d	|d
�}tj||�d}tjt|d��ddg}t|j
d	|d
�WdQRXd
}tjt|d��"ddddg}t|j
d	|d
�WdQRXdS)Nr�r�r�r�r�r��%Y-%m-%d)rT)rr\z"columns contains duplicate entries)rzEThe following columns were not found in the Stata data set: not_found�	not_found)r)rr;rkrir�r�r�rlr�rrrr
r?r^rarrr)rRrnr\ZdroppedZ	reorderedrrrr�test_drop_column�s0

zTestStata.test_drop_columnz;ignore:\nStata value:pandas.io.stata.ValueLabelTypeMismatchc	s�tjddddddgddddddgdddddd	gd
ddd
d
dgd
ddtjd
dgdd
dtjddgdd
dtjddgdddtjddgdddtjddgdddtjddgg
ddddddgd���j�}tj�fdd��D�dd��d|j_|dj	t
�|d<|dj	t
�|d<x^|D]V}||j�}|jd �j}|j
�}|dk�rD|j|d!d"�}|jjdd!d#�|||<�qWtj��4}�j||d$�|j|�}|jd�}tj||�WdQRXdS)%Nr�r�rr�r�rr�r�rr�r�rr�r�r�rzrvrur�ryr�r�r�r�r�Z	unlabeled)r\csg|]}�|jd��qS)r)rk)r�r�)r�rrr��sz6TestStata.test_categorical_writing.<locals>.<listcomp>)�axisrrT)r�)r�)rV)rr�rirjr�r�concatrr#rr�rkr�Z
as_orderedr�r�r�r^r_r`rUr�ra)	rRrVrnr�r�r�r!r��resr)r�r�test_categorical_writing�sH





z"TestStata.test_categorical_writingcs�tjjddgddgddgddggdgd��tj�fdd	��D�d
d��tj��.}d}tjt|d
���j	|�WdQRXWdQRXtjjdgdgdgdgd
ggdgd��tj�fdd	��D�d
d��tj
tjjj
���j	|�WdQRXdS)Nri'rr�dZToo_long)r\csg|]}�|jd��qS)r)rk)r�r�)r�rrr��szBTestStata.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\.)rcsg|]}�|jd��qS)r)rk)r�r�)r�rrr��s)rrr�r�r^r_rrrr`r�rrZValueLabelTypeMismatch)rRr!rr)r�r�$test_categorical_warnings_and_errors�s"

 z.TestStata.test_categorical_warnings_and_errorsc
s�dd�td�D�}|jtjg�tjj|dgd��tj�fdd��D�dd��d	�j_	t
j��t}�j||d
�|j
|�}|jd	�}�j�}x6|D].}||j}|j�j}	|j|	dd�}|||<q�Wt
j||�WdQRXdS)
NcSsg|]}dt|�g�qS)r)r�)r�rarrrr��szHTestStata.test_categorical_with_stata_missing_values.<locals>.<listcomp>�xZmany_labels)r\csg|]}�|jd��qS)r)rk)r�r�)r�rrr�sr)r�r)rVT)r�)rdrorirjrrr�r�rr#r^r_r`rUr�r�r��remove_unused_categoriesr�r�ra)
rRrV�valuesr!r�r�rnr�r�Znew_catsr)r�r�*test_categorical_with_stata_missing_values�s"





z4TestStata.test_categorical_with_stata_missing_valuesrGrHc	
Cs�dddddddgtjd�fdd	dddddgtjd�ddd�fdddddddgtjdd
d
ddg�fdddddddgtjdd�fdddddgtjdd
dddg�fdddddddgtjd�fdddddddgtjd�fg}g}xR|D]J\}}}}|�r|j|tjj||dd�f�q�|j|tj|tjd�f�q�Wt	j
t|��}t||�}t
|�}tj||�xV|D]N}t||j��r`tj||jj||jj�tj||jj||jj��q`WdS)NTr�rrrr��er��reverserZnoorderrrrrr�Z
float_missingFZnolabelg�?g@g@g@g@Zint32_mixed)r�)r�rPrPrP)rir�arrayror�Categorical�
from_codesrrlrZ	from_dict�dictrhr
r^rarr��assert_series_equalr��codes�assert_index_equalr�)	rRrTrnrZis_catr�rJr�rmrrr�test_categorical_orders,$$ 

z TestStata.test_categorical_orderrIrJc
Cs�tt||��}|jddd�}tj|jd�|_ddddddddddg
}d	d
ddd
g}tjj	||dd�}tj
|dd�}tj||d�dS)NZsrh�first)Zna_positionrrrrrZPoorZFairZGoodz	Very goodZ	ExcellentT)r�r�r�)r#rPrP)
r
rhZsort_valuesrir�shaperrr�r�rr^r�)rRrTrmr�r�r�rnrrr�test_categorical_sorting6sz"TestStata.test_categorical_sortingcCsbt||�}t|�}t|dd�}x>|D]6}t||j�s8q$||jjsHt�||jjs$t�q$WdS)NF)�order_categoricals)rhr
rr�r�r�r�)rRrTrmZparsed_unorderedr�rrr�test_categorical_orderingGs

z#TestStata.test_categorical_orderingr+rArF�	chunksizerr�convert_categoricalsFrc
Cs�t||�}tjdd��}tjd�t|||d�}WdQRXt|d||d�}d}	x�td�D]�}
tjdd��6}tjd�y|j|�}Wntk
r�PYnXWdQRX|j|	|	|�dd�fj	�}|j
|�}tj||ddd	�|	|7}	qXW|j
�dS)
NT)r}r~)r�r)�iteratorr�rrr�F)r�r�)rhr�r�r�r
rd�read�
StopIteration�ilocr��_convert_categoricalr^rar,)
rRrTr�r�r�fnamer�rm�itr�posrm�chunk�
from_framerrr�test_read_chunks_117Ss4



zTestStata.test_read_chunks_117)r��returncCsZxT|D]L}||}t|j�r|jj�}|jjtkrJtj|jj�}|j|�}|||<qW|S)zX
        Emulate the categorical casting behavior we expect from roundtripping.
        )	rr�r�r�r�r�r�Indexr�)r�r�Zserr�r�rrrr��s



zTestStata._convert_categoricalc&Cs@|j}t|�}t|dd��.}|jd�}tj|jdd�dd�f|�WdQRXt|dd��0}t|�}tj|jdd�dd�f|d�WdQRXt|dd��.}|jd�}tj|jdd�dd�f|�WdQRXt|dd��,}|j�}tj|jdd�dd�f|�WdQRXt|dd��}tj	|�}WdQRXtj||�dS)NT)r�r�r)r�r)
r/r
r�r^rar�r�Z	get_chunkrr�)rRr�rmr�r�Zfrom_chunksrrr�
test_iterator�s"
(,
((zTestStata.test_iteratorr*r@rEc
Cs�t||�}tjdd��}tjd�t|||d�}WdQRXt|d||d�}d}	x�td�D]�}
tjdd��6}tjd�y|j|�}Wntk
r�PYnXWdQRX|j|	|	|�dd�fj	�}|j
|�}tj||ddd	�|	|7}	qXW|j
�dS)
NT)r}r~)r�r)r�rr�rr�F)r�r�)rhr�r�r�r
rdr�r�r�r�r�r^rar,)
rRrTr�r�rr�r�rmr�r�rmr�r�rrr�test_read_chunks_115�s4



zTestStata.test_read_chunks_115c

Cs�|j}dddg}d}t||d�}t|dd��f}d}xZtd	�D]N}|j||d�}|dkrXP|j|||�dd�f}	tj|	|d
d�||7}q<WWdQRXdS)Nr�Zcpi�m1r)r\T)r�rr�F)r�)r/r
rdr�r�r^ra)
rRr�r\r�rmr�r�rmr�r�rrr�test_read_chunks_columns�s
z"TestStata.test_read_chunks_columnscCs�d|j_dddd�}tj��L}|j|||d�t|��}|j�}WdQRXddddd�}||ksdt�WdQRXd	|d<tj��>}|j|||d�t|��}|j�}WdQRX||ks�t�WdQRXdS)
Nrz	City Rankz
City Exponent�City)rrr)r�rVr�)rrrrz	The Index)rr#r^r_r`rr�r�)rRrVrr�r!rTZread_labelsZexpected_labelsrrr�test_write_variable_labels�s"



z$TestStata.test_write_variable_labelscCs^d|j_ddddd�}tj��4}d}tjt|d��|j|||d	�WdQRXWdQRXdS)
Nrz	very longryz
City Exponentr�)rrrz.Variable labels must be 80 characters or fewer)r)r�rV)rr#r^r_rrrr`)rRrVrr�r!rrrr�test_invalid_variable_labelss
z&TestStata.test_invalid_variable_labelscCsbd|j_ddddd�}d|d<tj��0}tjtd	d
��|j|||d�WdQRXWdQRXdS)Nrz	very longryz
City Exponentr�)rrruinvalid character Œrz,Variable labels must contain only characters)r)r�rV)rr#r^r_rrrr`)rRrVrr�r!rrr�$test_invalid_variable_label_encodings
z.TestStata.test_invalid_variable_label_encodingc Cs�ddddddg}dddj|�d	�}d
}tjt|d��(tj��}|j||d�WdQRXWdQRXddd
d	�}d}tjt|d��(tj��}|j||d�WdQRXWdQRXdS)NuΡuΑuΝuΔuΣz	City Rankz
City Exponentr�)rrrzKVariable labels must contain only characters that can be encoded in Latin-1)r)r�zqA very, very, very long variable label that is too long for Stata which means that it has more than 80 charactersz.Variable labels must be 80 characters or fewer)r"rrrr^r_r`)rRrr�Zvariable_labels_utf8rr!Zvariable_labels_longrrr� test_write_variable_label_errors,s
"
z*TestStata.test_write_variable_label_errorscCstjddddddd�tjddddddd�tjdd	d
d	d
d	d�g}tjdd
dgdddg|d��}tj���}|j|dd�t|dd�}tj||�|j|dddid�t|dd�}tj||�|j	j
�jd�}|j|d|did�t|dd�}tj||�WdQRXdS)Ni�rwrxi�.i�riRi�rvri�g�?g@g@�apple�banana�cherry)�nums�strs�datesF)r]T)rr�r�)r]r)�dtrrrr^r_r`r
rar\�tolistr)rRr�r�r!�reread�directZ	dates_idxrrr�test_default_date_conversionJs$

z&TestStata.test_default_date_conversioncCsRtjddd	gi�}d}tjt|d��$tj��}|j|�WdQRXWdQRXdS)
Nrry@ry@z"Data type complex128 not supported)ry�?@y@@)rrrr�NotImplementedErrorr^r_r`)rRr�rr!rrr�test_unsupported_typegs

zTestStata.test_unsupported_typecCstjddddddd�tjddddddd�tjdd	d
d	d
d	d�g}tjdd
dgdddg|d��}d}tjt|d��,tj��}|j	|ddid�WdQRXWdQRXtj
dddd�}tjdd
dgdddg|d��}tjtdd��$tj��}|j	|�WdQRXWdQRXdS)Ni�rwrxi�.i�riRi�rvri�g�?g@g@r�r�r�)r�r�r�zFormat %tC not implemented)rr�ZtC)rz1-1-1990rzAsia/Hong_Kong)Zperiods�tzzData type datetime64)r�rrrrrr�r^r_r`Z
date_range)rRr�r�rr!rrr�test_unsupported_datetypeos&

&

z#TestStata.test_unsupported_datetypecCs0d}tjt|d��t|jdd�WdQRXdS)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
)rT)r�)rrrr
rM)rRrrrr�test_repeated_column_labels�sz%TestStata.test_repeated_column_labelscCs�t|j�}tjdddddddtjddg
ddddtjdddddg
dtjddddddddg
dd	d
ddd
ddddg
d��}|ddddg}tj||�dS)Nrrrrrr�rzrrrr�r�r��gr\rarm)r�r�r�r�r�r�r�r�)r
rNrrri�NaNr^ra)rRr�r�rrr�test_stata_111�s
zTestStata.test_stata_111cCs�tdtjtj�jdgdtjtj�jtjtj�jgd��}d}tjt|d��$t	j
��}|j|�WdQRXWdQRXtj|j
d	<d}tjt|d��$t	j
��}|j|�WdQRXWdQRXdS)
Ngg�)�ColumnOk�ColumnTooBigzZColumn ColumnTooBig has a maximum value \(.+\) outside the range supported by Stata \(.+\))rrr�zaColumn ColumnTooBig has a maximum value of infinity which is outside the range supported by Stata)rr�)rri�finfo�double�eps�maxrrrr^r_r`�infr�)rRr�rr!rrr�test_out_of_range_double�s$

z"TestStata.test_out_of_range_doublecCstdtjtj�jtjtj�jdgdtjtj�jtjtj�jgd��}d|j_x |D]}||jtj�||<qTWt	j
��>}|j|�t|�}|djtj
�|d<t	j||jd��WdQRXtj|jd	<d}tjt|d��$t	j
��}|j|�WdQRXWdQRXdS)
Ngg$@)r�r�rr�rzaColumn ColumnTooBig has a maximum value of infinity which is outside the range supported by Stata)r)rr�)rrir�rlr�r�rr#rkr^r_r`r
r�rar�r�r�rrr)rRr�r�r!r�rrrr�test_out_of_range_float�s(



z!TestStata.test_out_of_range_floatcCs6tj�}d|j_dd�}tj|j|�}tj||�dS)NrcSst|�jd�S)Nr)r
r�)r�rrrr�sz-TestStata.test_path_pathlib.<locals>.<lambda>)r^�
makeDataFramerr#Zround_trip_pathlibr`ra)rRr�r
r�rrr�test_path_pathlib�s
zTestStata.test_path_pathlibcCs6tj�}d|j_dd�}tj|j|�}tj||�dS)NrcSst|�jd�S)Nr)r
r�)r�rrrr�sz6TestStata.test_pickle_path_localpath.<locals>.<lambda>)r^r�rr#Zround_trip_localpathr`ra)rRr�r
r�rrr�test_pickle_path_localpath�s
z$TestStata.test_pickle_path_localpathr]cCs�ddddddgi}tj|d�}|djd�|d<tj��6}|j||d�tj|dd	��}|j�}WdQRXWdQRX|dddddd
�iks�t�dS)N�A�B�E�C)rr)r]T)r�)rrrr)	rrrkr^r_r`r
r+r�)rRr]r�r�r!Zdta_iterr+rrr�test_value_labels_iterator�s
z$TestStata.test_value_labels_iteratorcCsLtj�}d|j_tj��}|j|�tj|dd�}WdQRXtj||�dS)Nr)�	index_col)	r^r�rr#r_r`rr
ra)rRr�r!r�rrr�test_set_indexs

zTestStata.test_set_index�column�ms�day�week�monthZqtrZhalfrucCs:t|j�}|jd|f}|jd|df}||ks6t�dS)Nr�_fmt)r
rQr�r�)rRr�r�Zunformattedr�rrr�(test_date_parsing_ignores_format_detailss
z2TestStata.test_date_parsing_ignores_format_detailscCsVtdddddddtjd�ddddddgd	d
dddddtjd�dddd
d
ggddddddddddddgd�}t|dtd�|d<t|dtjd�|d<t|dtjd�|d<|djtj�|d<t|dtj	d�|d<d|j
_|j
jtj�|_
|j�}t
j��J}|j|ddidgdd�|j|�}t
j|jd�|dd�t
j||�WdQRXdS) Nr�r�rg�������?z
2003-12-25ri�i�zstring-1zobject-1z
2003-12-26rr�r�r�r�rlr�rr�Zs2045ZsrtlZforced_strl)rr\)r�rr�rX)r�convert_strlrVF)r�)rrir�rr�r�r�rkr�rlrr#r�r^r_r`rUrar�)rRr�r�r!r�rrr�test_writer_117 sr


zTestStata.test_writer_117cCs�tddddgddddggd	d
ddgd
�}d|j_tjtjjj��Ztj	��F}|j
|ddgdd�|j|�}|jd�}|j
|_
tj||dd�WdQRXWdQRXdS)Nri�r�r�ri�r�r�Zlong1ry�longr)r\rrX)r�rVF)r�)rrr#r^r�rrrrr_r`rUr�r\ra)rRr�r!r�rrr�test_convert_strl_name_swapgs


z%TestStata.test_convert_strl_name_swapcCs�tjddddddd�tjddddddd�tjdd	d
d	d
d	d�g}tjdd
dgdddg|d��}tj��6}d}tjt|d��|j	|ddid�WdQRXWdQRXdS)Ni�rwrxi�.i�riRi�rvri�g�?g@g@r�r�r�)r�r�r�z0convert_dates key must be a column or an integer)rZ
wrong_namer�)r)
r�rrrr^r_rrrr`)rRr�r�r!rrrr�test_invalid_date_conversionvs

z&TestStata.test_invalid_date_conversioncCs�tj�}tj�}d|j_tj��P}|j||d�|jd�t	|d��}|j
|j��WdQRXtj
|dd�}WdQRXtj||�dS)Nr)rVr�wb)r�)r�BytesIOr^r�rr#r_r`�seek�open�writer�rr
ra)rRrVZbior�r!�dtar�rrr�test_nonfile_writing�s

zTestStata.test_nonfile_writingcCs�tj�}d|j_tj��R}tj|d��}|j|dd�WdQRXtj|d��}tj	|dd�}WdQRXWdQRXtj
||�dS)Nrr�rW)rV�rb)r�)r^r�rr#r_�gzip�GzipFiler`rr
ra)rRr�r!�gzr�rrr�test_gzip_writing�s
"zTestStata.test_gzip_writingcCs�|j|j�}dddddg}dddddgd	d
dd	dgdd
dddgdddddgdddddgdddddgdddddgg}tj||d�}tj||�dS)N�utf8�latin1�asciiZ	utf8_strlZ
ascii_strluραηδαςuPÄNDÄS�puƤĀńĐąŜ�ÖruᴘᴀᴎᴅᴀS�Ü�nz      r�� r�rO)r\)rUrOrrr^ra)rRZ
unicode_dfr\r�rnrrr�test_unicode_dta_118�szTestStata.test_unicode_dta_118c
Cs�dddd�ddd�g}tj|�}|jjd�|_tj��x}|j|ddd	�t|�}|jd
�}tj	||�d|j
dd�df<|j|ddgdd�t|�}|jd
�}tj	||�WdQRXdS)
Nr�i�r)�mixed�numberrr�FrX)r]rVr�r�)r]r�rV)rrr�rkr^r_r`r
�fillnarar�)rR�outputr!r�rnrrr�test_mixed_string_strl�s



z TestStata.test_mixed_string_strlcCspddd�ddd�g}tj|�}d|jdd�df<tj��.}tjtdd��|j||d�WdQRXWdQRXdS)N�noner)r�r�rz Column `none` cannot be exported)r)rV)	rrr�r^r_rrrr`)rRrVr�r!rrr�test_all_none_exception�s

z!TestStata.test_all_none_exceptioncCsxd}t|gdgd�}tj��R}d}d}tjt|�d|��d��&tjt��|j|�WdQRXWdQRXWdQRXdS)Nu9Here is one __�__ Another one __·__ Another one __½__�invalid)r\z\'latin-1' codec can't encode character '\\ufffd' in position 14: ordinal not in range\(256\)zP'ascii' codec can't decode byte 0xef in position 14: ordinal not in range\(128\)�|)r)	rr^r_rr�UnicodeEncodeErrorr��ResourceWarningr`)rRrV�contentr�r!Zmsg1Zmsg2rrr�test_invalid_file_not_written�s
z'TestStata.test_invalid_file_not_writtenc
Cs�tdgddgdgddgd�}tj���}|j|ddgd�t|d	���}|j�}d}|jd
�|ksft�|jd�|ksxt�|jd�d
d
d�}xN|jd�d
d�D]8}|jd�d}||j	d�d
}	t
|�|	d
ks�t�q�WWdQRXWdQRXdS)N�pandasruþâÑÐŧZvar_strZvar_strl)r\rX)rVr�r�zlatin-1zutf-8sstrlsrsGSO���r'r')rr^r_r`r�r��encoder��split�findr�)
rRr�r!r�rrnZgsosZgsorj�sizerrr�test_strl_latin1�s
zTestStata.test_strl_latin1cCstd}tjt��8}t|j�}t|�dks*t�|djjd|ksBt�WdQRXt	j
dggddgd�}tj||�dS)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.�ruDüsseldorfr�)r\)r^r��UnicodeWarningr
r6r�r��messagerrrra)rRrr�r�rnrrr�test_encoding_latin1_118�s
"z"TestStata.test_encoding_latin1_118cCs�tj|jd��}t|�}WdQRX|jd
ks0t�|jdddksFt�|jdd	ksXt�|jddksjt�|jdtjt	d
ddddd��ks�t�dS)Nr�r��rrzr�i�rvg��Q�	@i�rwr)rr)rrz)rrvrP)rrP)rr)
r�r�rPr
r�r�r�rZ	Timestampr)rRr�r�rrr�test_stata_119szTestStata.test_stata_119cCs tjdddgdd�}tjdddd	gd
ddd
gddddggddddgd�}||d<ddddd
d�}d}|djtj�|d<tj���}t|||dg|d|d�}|j	�t
|�}|djd
�|d<tj||�t
|�}	|	j|ks�t�|	j�|ks�t�|j||dd�t
|�}
tj||
�WdQRXdS)NruβuĉT)r�g�?ruᴬuᴀ relatively long ŝtringg@ruᴮr�g@ruᴰ�strls)r\u	ᴐᴬᵀr�u	ᵈᵉᵊuᴎტჄႲႳႴႶႺzLong Strings)ruβuĉru	ᴐᴬᵀuᴅaᵀa-labelF)r�r�r�r]rV)rVr])rr�rrkrir�r^r_r�
write_filer
r�rarr�r�r�r`)rRrVr�rr�r�r!�writerr�r
Zreread_to_statarrr�test_utf8_writersB


zTestStata.test_utf8_writerc!Cs�ttjd
tjd��}tj��.}tjtdd��t	||dd�WdQRXWdQRXtj��.}tjtdd��t	||d	d�WdQRXWdQRXdS)Nr��)r�z"version must be either 118 or 119.)rrX)rVzYou must use version 119rY)rr)
rri�zerosr�r^r_rrrr)rRr�r!rrr�test_writer_118_exceptions<s
"
z$TestStata.test_writer_118_exceptions)^�__name__�
__module__�__qualname__r�fixturerSrUr�mark�parametrizerbror�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrr%r&r*r-r2r4rArMrYr[rkrqr{r~r��filterwarningsr�r�r�r�r�r�r��staticmethodrr�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�rrrrZslowrrrrrrrr&9s�A 	<.
( 
  %  	 


	!
:!5 $ % '  
"
	G  	 ,r&rV�i�l�o�qrWcCsX|ddd�}tjj|d�}tjj|d|�d��}tj|�}tj|�}tj||dd�dS)	Nrrrzstata-compat-118.dtaz
stata-compat-z.dtaF)r�)r r!r"rr
r^ra)rVrZ	data_base�ref�oldrnZold_dtarrr�test_backward_compatFs

r*rXrYrZ�use_dictTF�infercCs�d}|r,|dkr|rdn|}|d|��7}|}|r8d}|rDd|i}ttjjdd�td	�d
�}d|j_tj|���}|j	|||d�|dkr�t
j|d
��}	tj
|	j��}
WdQRXn�|dkr�tj|d��}	tj
|	j|	jd��}
WdQRXnr|dk�rtj|d
��}	tj
|	j��}
WdQRXn@|dk�rPtj|d
��}	tj
|	j��}
WdQRXn|dk�r^|}
t|
dd�}tj||�WdQRXdS)Nzdta_inferred_compression.dtar�r�r^r,�methodryrr�)r\r)rV�compressionr�r?�rr�bz2�xz)r�)rrir�r�r�rr#r^r_r`r�r�rr�r��zipfile�ZipFile�filelistr0�lzmar
ra)r.rVr+r,�	file_name�file_extZcompression_argr�r!�comp�fpr�rrr�test_compressionPs:"


r:r-r?r7r�c
Cs�d|��}d}ttjjdd�td�d�}d|j_tj|���}||d�}|j	||d	�|d
ksd|d
kr�t
j|d�}t|j
�dks�t�|j
d
j|ks�t�tj|j|j
d
��}n|}t|dd�}	tj|	|�WdQRXdS)Nztest.ztest.dtaryrr�)r\r)r-�archive_name)r.r?r/rr)r�)rrir�r�r�rr#r^r_r`r2r3r�r4r��filenamerr�r�r
ra)
r-r7r6r;r�r!r.Zzpr9r�rrr�test_compression_dictts

r=cCs�tdtdddddgdd�i�}d|j_tj��t}|j||d�t|d	d
d�}xPt|�D]D\}}|j	d�}d|kstt
�tj|j|jj
d	|d	|d��qVWWdQRXdS)
N�catsrrrr)r�r)rVrF)r�r�r)rrrr#r^r_r`r�	enumerater�r�r�r>r�)rVr�r!r
ra�blockrrr�test_chunked_categorical�s

rAc	Cs
tjj|d�}dddddg}t|dd���}tjt��xxpt|�D]d\}}t|j	�|d|d|d�ksnt
�|dkr�tjddg�}ntj
dg�}tj|j	jj|�q@WWdQRXWdQRXtjt��&t|dd��}|j�}WdQRXWdQRXt|�}tj||�dS)	Nzstata-dta-partially-labeled.dtarrg@r)r�rr�)r r!r"rr^r�rr?r�r>r�rr�ZFloat64Indexr�r�r��__next__r
ra)	r�dta_filer�r
rar@�idxZlarge_chunkr�rrr� test_chunked_categorical_partial�s&*rEcCs�tjj|d�}tjtdd��t|dd�WdQRXtjtdd��t|dd�WdQRXtjtdd��t|dd�WdQRXdS)	Nzstata-dta-partially-labeled.dtazchunksize must be a positive)rr)r�rr�rP)r r!r"rrrr)rrCrrr�test_iterator_errors�srFcs�ddgdgd�t�fdd�td�D��}tj���}|j|dd	�tj|d
d�}tjdddgdd
�}x\t|�D]P\}}x$td�D]}tj	|j
|j|�q�Wtj||j
|d
|dd
��qpWWdQRXdS)NZc_labelZb_labelZa_labeli�cs"i|]}tj�dd�d|���qS)T)r�r�)rr�)r�rK)r�rrr0�sz.test_iterator_value_labels.<locals>.<dictcomp>rF)r]r8)r�r�)r�r)rrdr^r_r`rr
r�r?r��dtypesr�rar�)r�r!r
rnrmr�rar)r�r�test_iterator_value_labels�s
rHcCs�ttdd�td�D��tdd�td�D��ggddgd�}tj���}tjt��|j|dd	�WdQRXt|�}t	t
jt
jgddgd
�}tj|j
|�|jd|jd
ks�t�|jdt|jd�ks�t�WdQRXdS)Ncss|]}d|VqdS)rNr)r�rarrr�	<genexpr>�sz&test_precision_loss.<locals>.<genexpr>�<�4�big�little)r\F)r])rr)rrM)rrM)rrL)rrL)r�sumrdr^r_r�r	r`r
rrir�r�rGr�r��float)r�r!r�Zexpected_dtrrr�test_precision_loss�s,
rP)0r0rr�r�rr5r rfr�r2ZnumpyrirZpandas.core.dtypes.commonrrrZpandas._testingZ_testingr^Zpandas.core.framerrZpandas.io.parsersrZpandas.io.statarrr	r
rrr
rrrr%r&r r!r*r:r=rArErFrHrPrrrr�<module>s\
$ 
"