
    dW                    D   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Zd dlmZ d dlZd dlmZ d dlmZmZ d dlmZ d dlm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             Z&ej%        d	             Z' G d
 d          Z(ej)        *                    dg d          d             Z+d Z,d Z-ej)        *                    dg d          ej)        *                    dddg          ej)        *                    dddg          d                                     Z.ej)        *                    dddg          ej)        *                    dg d          d                         Z/ej)        *                    dg d          d             Z0d Z1ej)        *                    dd          d              Z2d! Z3d" Z4d# Z5ej)        *                    d$ddg          ej)        *                    d%ddg          d&                         Z6d' Z7d( Z8d) Z9ej)        *                    dg d          ej)        *                    d*ej:        ej;        ej<        ej=        ej>        ej?        ej@        ejA        ejB        g	          d+                         ZCdS ),    N)datetime)is_categorical_dtype)	DataFrameSeries)_compression_to_extensionread_csv)	CategoricalConversionWarningInvalidColumnNamePossiblePrecisionLossStataMissingValueStataReaderStataWriterStataWriterUTF8ValueLabelTypeMismatch
read_statac                  4    t          g dg dg dd          S )N            )      ?      @g      ;@g     @T@)Atlanta
Birmingham
CincinnatiDetroitabc)r        V/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/io/test_stata.pymixed_framer&   '   s7    '''CCC	
 	
  r$   c                 \     | dddd          }t          |d          }d|j        _        |S )Niodatastatazstata5_114.dtaTconvert_datesindex)r   r-   name)datapath	dta14_114
parsed_114s      r%   r1   r1   2   s;    vw0@AAIIT:::J#Jr$   c                      e Zd Zd Zd Zej                            dg d          d             Zej                            dg d          d             Z	ej                            ddd	g          d
             Z
d Zej                            dg d          d             Zej                            dg d          d             Zd Zd Zd Zd Zej                            dg d          d             Zd Zd Zej                            dg d          d             Zd Zej                            dg d          d             Zd Zej                            dg d          ej                            dg d          d                         Zej                            dg d          d             Zej                            dg d          d             Zej                            dg d          d              Zd! Zej                            dg d          d"             Zd# Zd$ Z d% Z!d& Z"d' Z#d( Z$d) Z%d* Z&ej                            dg d          ej                            d+d,d-g          d.                         Z'd/ Z(d0 Z)d1 Z*d2 Z+ej                            dg d3          d4             Z,d5 Z-d6 Z.d7 Z/ej                            dg d          ej        0                    d8          d9                         Z1d: Z2ej                            dg d          d;             Z3ej                            dd<d=g          d>             Z4ej                            dd?d@g          dA             Z5ej                            dd<d=g          dB             Z6ej                            dg dC          ej                            dDdEdFg          ej                            dGdHdIg          ej                            dJdHdIg          dK                                                 Z7e8dLe9dMe9fdN            Z:dO Z;ej                            dg dP          ej                            dDdEdFg          ej                            dGdHdIg          ej                            dJdHdIg          dQ                                                 Z<dR Z=ej                            dg d          dS             Z>ej                            dg d          dT             Z?ej                            ddUdVg          dW             Z@dX ZAdY ZBdZ ZCd[ ZDd\ ZEd] ZFd^ ZGd_ ZHej                            d`eIjJ        eIjJ         g          da             ZKdb ZLdc ZMej                            dddIdHg          de             ZNdf ZOej                            dgg dh          di             ZPdj ZQdk ZRdl ZSej                            dg d          dm             ZTdn ZUdo ZVdp ZWej                            dg d          dq             ZXej                            dg d          dr             ZYds ZZdt Z[ej        j\        du             Z]ej                            dg dv          dw             Z^dx Z_dyS )z	TestStatac                 $    t          |d          S )NTr+   )r   selffiles     r%   read_dtazTestStata.read_dta;   s    $d3333r$   c                 $    t          |d          S )NT)parse_datesr   r5   s     r%   r	   zTestStata.read_csv?   s    $////r$   versionr   u   v   w   Nc                     t          dg          }t          j                    5 }|                    |d|           t	          |          }t          j        ||           d d d            d S # 1 swxY w Y   d S )NunitcolumnsFwrite_indexr;   )r   tmensure_cleanto_statar   assert_frame_equal)r6   r;   empty_dspath	empty_ds2s        r%   test_read_empty_dtazTestStata.test_read_empty_dtaB   s    fX..._ 	7$dwGGG"4((I!(I666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   =A//A36A3c                    t          t          d          g dd          }t          j                    5 }|                    |d|           t          |          }d d d            n# 1 swxY w Y   t          |j        t          j	                  sJ |
                                }|d                             t          j                  |d<   t          j        ||d           d S )	N   )b1b2b3b4b5)r    r!   FrE   r    Tcheck_index_type)r   rangerG   rH   rI   r   
isinstancer-   pd
RangeIndexcopyastypenpint32rJ   )r6   r;   dfrL   read_dfexpecteds         r%   test_read_index_col_nonez"TestStata.test_read_index_col_noneK   s   U1XX,J,J,JKKLL_ 	'$KK%KAAA &&G	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' '-777777799 ,,RX66
gx$GGGGGGs   (A))A-0A-r7   
stata1_114
stata1_117c                 b    |ddd| d          }|                      |          }t          t          j        t          j        t          j        t          j        t          j        fgg d          }|d                             t          j                  |d<   t          j        ||           d S )Nr(   r)   r*   .dta
float_missdouble_miss	byte_missint_miss	long_missrC   ri   )r8   r   r^   nanr]   float32rG   rJ   r6   r7   r/   parsedrb   s        r%   test_read_dta1zTestStata.test_read_dta1X   s    xfg$}}}==t$$ fbfbfbfbf56WWW
 
 
 "*,!7!>!>rz!J!J
fh/////r$   c                    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<   t          j        d          5 }t          j        d           | 	                     |dd d!d"                    }| 	                     |dd d!d#                    }| 	                     |dd d!d$                    }d% |D             }t          |          dk    sJ 	 d d d            n# 1 swxY w Y   t          j        ||d&           t          j        ||d&           t          j        ||d&           d S )'N                 l   *}ai  r      i     i        r   iZli  
   r   i     i  )
datetime_cdatetime_big_cdateweekly_datemonthly_datequarterly_datehalf_yearly_dateyearly_daterC   r   OTrecordalwaysr(   r)   r*   zstata2_114.dtazstata2_115.dtazstata2_117.dtac                 .    g | ]}|j         t          u |S r#   )categoryUserWarning).0xs     r%   
<listcomp>z,TestStata.test_read_dta2.<locals>.<listcomp>   s$    ;;;q{!:!:!:!:!:r$   check_datetimelike_compat)r   from_recordsr   rZ   NaTr]   warningscatch_warningssimplefilterr8   lenrG   rJ   )r6   r/   rb   wr1   
parsed_115
parsed_117s          r%   test_read_dta2zTestStata.test_read_dta2j   s   ) T2r2r266!T1b))T1a((T1a((T1a((T1a((T1a((	 T2r2q"55T2q))T1b))T1a((T1a((T1a((Q1%%	 P+.	 	 	1"
 "
 "
F #+="9"@"@"E"E$D111 	Q!(+++vw0@AA J vw0@AA J vw0@AA J <;A;;;A q66Q;;;;;)	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2 	j(dSSSS
j(dSSSS
j(dSSSSSSs   BH55H9<H9)
stata3_113
stata3_114
stata3_115
stata3_117c                     |ddd| d          }|                      |          }|                      |dddd                    }|                    t          j                  }|d                             t          j                  |d<   |d                             t          j                  |d<   t          j        ||           d S )Nr(   r)   r*   rg   
stata3.csvyearquarter)	r8   r	   r]   r^   ro   int16int8rG   rJ   rp   s        r%   test_read_dta3zTestStata.test_read_dta3   s     xfg$}}}==t$$ ==$!N!NOO??2:..#F+2228<<&y188AA
fh/////r$   )
stata4_113
stata4_114
stata4_115
stata4_117c                     |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 ]}||                                         }t          j        |d         |                                                   }|dk    r|}|                    d          j	        }|
                    |d          }|j                            d d           |||<   t          j        ||           d S ) Nr(   r)   r*   rg   )onetenr   r   r   )twoniner   r   r   )threeeightr   r   r   )foursevenr   r   r   fivesixrP   r   r   r   r{   r   r   rz   r   r   	   r   r   )fully_labeledfully_labeled2incompletely_labeledlabeled_with_missingsfloat_labelledrC   r   r   r   Torderedinplace)r8   r   r   r^   rn   r\   asarraynotnar]   _valuesset_categories
categoriesrenamerG   rJ   )	r6   r7   r/   rq   rb   colorigr   cats	            r%   test_read_dta4zTestStata.test_read_dta4   s    xfg$}}}==t$$)333444===44426622651&!RVW5'1bfg62662ubfe4  
 
 
.  	  	 CC=%%''DH_$=djjll$KLLJ,,,!
++j))1C$$Z$>>CN!!$!555HSMM 	fh/////r$   c                     |                       |dddd                    }t          j        g dg dg dgg d	          }t          j        ||d
           d S )Nr(   r)   r*   zstata12_117.dta)r   abc	abcdefghi)r   cbaqwertywertyqwerty)]    strl)r   yzrC   Fcheck_dtype)r8   r   r   rG   rJ   )r6   r/   r   rb   s       r%   test_read_dta12zTestStata.test_read_dta12   s    ]]88D&'CT#U#UVV
)'''///   
 $OO
 
 
 	j(FFFFFFr$   c           
         |                       |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                             t          j                  |d<   |j        D ]#}t          j	        ||         ||                    $t           |dddd                    5 }|                                }dddddddd}t          j        ||           |j        dk    sJ 	 d d d            d S # 1 swxY 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   LongsrC   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)r8   r]   r   r   r^   rn   ro   rD   rG   assert_almost_equalr   variable_labelsassert_dict_equal
data_label)r6   r/   
parsed_118rb   r   rdrvlvl_expecteds           r%   test_read_dta18zTestStata.test_read_dta18   s   ]]88D&'CT#U#UVV
(188==
7)NNN-PEEE??????  
 
 
$ &h/66rzBB% 	C 	CC":c?HSMBBBB$9JKKLL 	FPS$$&&B'P$0$"0& K  [111>%EEEEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   AEEEc                 ,   t          t          j        t          j        t          j        t          j        t          j        fgg d          }d|j        _        t          j                    5 }|                    |d            |                     |          }d d d            n# 1 swxY w Y   |	                                }|j        
                    t          j                  |_        t          j        |                    d          |           d S )Nrh   rC   r-   r+   )r   r^   rn   r-   r.   rG   rH   rI   r8   r\   r]   r_   rJ   	set_index)r6   originalrL   written_and_read_againrb   s        r%   test_read_write_dta5zTestStata.test_read_write_dta5   s!   fbfbfbfbf56WWW
 
 
 &_ 	9$d$777%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 ==??!..rx88
4>>wGGRRRRRs   +-B$$B(+B(c                 V   |                       |dddd                    }d|j        _        |j                            t          j                  |_        |d                             t          j                  |d<   |d                             t          j                  |d<   t          j                    5 }|                    |d            | 	                    |          }t          j
        |                    d          |d	
           d d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   r   r-   r   r   r+   FrV   )r	   r-   r.   r]   r^   r_   rG   rH   rI   r8   rJ   r   )r6   r/   r   rL   r   s        r%   test_write_dta6zTestStata.test_write_dta6/  sO   ==$!N!NOO%!..rx88#F+2228<<&y188BB_ 	$d$777%)]]4%8%8"!&0099!&   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   :ADD"%D"c           	      ^   t          ddddt          j        d          ggg d          }t          |d         t                    |d<   d	|j        _        |j                            t          j                  |_        |d
                             t          j                  |d
<   t          j
                    5 }|                    |ddi|           |                     |          }t          j        |                    d	          |d           d d d            d S # 1 swxY w Y   d S )Nstringobjectr   皙?
2003-12-25)r   r   integerfloatingr   r)   rD   dtyper-   r  r   tcr,   r;   FrV   )r   r^   
datetime64r   r   r-   r.   r]   r_   rG   rH   rI   r8   rJ   r   )r6   r;   r   rL   r   s        r%   test_read_write_dta10zTestStata.test_read_write_dta10?  sl   Xq#r}\/J/JKLKKK
 
 
 $HX$6fEEE%!..rx88&y188BB_ 	$d:t2DgVVV%)]]4%8%8"!&0099!&   		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ;AD""D&)D&c                     t          j                    5 }t          t          j                            dd          t          d                    }|                    |           d d d            d S # 1 swxY w Y   d S )Nr~   r   ABrC   )rG   rH   r   r^   randomrandnlistrI   )r6   rL   r`   s      r%   test_stata_doc_examplesz!TestStata.test_stata_doc_examplesT  s    _ 	$29??2q114::FFFBKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA33A7:A7c                    t           j                            d           t          t           j                            dd          t          d                    }t           j        |j        dddf<   |                                }t          j
                    5 }|                    |d	
           d d d            n# 1 swxY w Y   t          j        ||           d S )Ni  rP   r   abcdrC   r   r    r"   FrF   )r^   r  seedr   r  r  rn   locr\   rG   rH   rI   rJ   )r6   r`   df_copyrL   s       r%   test_write_preserves_originalz'TestStata.test_write_preserves_originalY  s    
	sryq!,,d6llCCCVq#c'z''))_ 	1$KK%K000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1
b'*****s   B??CCc                    t           |dddd                    }t           |dddd                    }|j        d         }|j        d         }||k    sJ t          |t                    sJ t	          j                    5 }|                    |d|           t          |          }t	          j        ||           d d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   zstata1_encoding.dtar   FrE   )r   	kreis1849rY   strrG   rH   rI   rJ   )	r6   r;   r/   rawencodedresultrb   rL   reread_encodeds	            r%   test_encodingzTestStata.test_encodingc  s*    $9NOOPPXXdFG=RSSTT"1%=#!!!!&#&&&&&_ 	;$TugFFF'--N!'>:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   =CCCc                    t          dgg d          }t          dgg d          }d|j        _        |                    t          j                  }t          j                    5 }t          j        t                    5  |
                    |d            d d d            n# 1 swxY w Y   |                     |          }d d d            n# 1 swxY w Y   |                                }|j                            t          j                  |_        t          j        |                    d          |           d S )Nr   )goodu   bäd8number%astringwithmorethan32characters______rC   )r!  b_d_8number astringwithmorethan32characters_r-   r+   )r   r-   r.   r]   r^   r_   rG   rH   assert_produces_warningr   rI   r8   r\   rJ   r   )r6   r   	formattedrL   r   rb   s         r%   test_read_write_dta11zTestStata.test_read_write_dta11s  s   N  
 
 
 NSSS
 
 
	  '	$$RX..	_ 	9$+,=>> < <!!$d!;;;< < < < < < < < < < < < < < < &*]]4%8%8"		9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 >>##!..rx88
4>>wGGRRRRRs6   'CB%C%B)	)C,B)	-CCCc                    t          dgg d          }t          dgg d          }d|j        _        |                    t          j                  }t          j                    5 }t          j	        d          5 }t          j
        dt                     |                    |d |	           t          |          d
k    sJ 	 d d d            n# 1 swxY w Y   |                     |          }d d d            n# 1 swxY w Y   |                                }|j                            t          j                  |_        t          j        |                    d          |           d S )Nr   r   r   r   rP   r   )!astringwithmorethan32characters_1!astringwithmorethan32characters_2+-shortdeleterC   )r&   _0astringwithmorethan32character__1__short_deleter-   Tr   r   r  r   )r   r-   r.   r]   r^   r_   rG   rH   r   r   r   r   rI   r   r8   r\   rJ   r   )r6   r;   r   r(  rL   r   r   rb   s           r%   test_read_write_dta12zTestStata.test_read_write_dta12  s      

 

 

    

 

 

	  '	$$RX..	_ 	9$(555 #%h0ABBB!!$dG!LLL1vv{{{{{	# # # # # # # # # # # # # # # &*]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 >>##!..rx88
4>>wGGRRRRRs7   'C>=ACC>C	C>C	C>>DDc                    t          dt          j                  }t          dt          j                  }t          dt          j                  }t          |||d          }d|j        _        |}|d                             t          j	                  |d<   t          j                    5 }|                    |           |                     |          }d d d            n# 1 swxY w Y   |                                }|j                            t          j                  |_        t          j        |                    d          |           d S )Ni   r  i   l        )r   r_   int64r-   r9  )r   r^   r   r_   r9  r   r-   r.   r]   float64rG   rH   rI   r8   r\   rJ   r   )	r6   s1s2s3r   r(  rL   r   rb   s	            r%   test_read_write_dta13zTestStata.test_read_write_dta13  s[   D)))E***E***rBDDEE%	&w/66rzBB	'_ 	9$d###%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 >>##!..rx88
4>>wGGRRRRRs   .+C%%C),C))
stata5_113
stata5_114
stata5_115
stata5_117c                     |ddd| d          }|                      |          }d|j        _        t          j        ||           t          j                    5 }|                    |ddi|           |                      |          }d d d            n# 1 swxY w Y   |                                }|j                            t          j
                  |_        t          j        |                    d          |           d S )	Nr(   r)   r*   rg   r-   date_tdtdr  )r8   r-   r.   rG   rJ   rH   rI   r\   r]   r^   r_   r   )	r6   r7   r1   r;   r/   rq   rL   r   rb   s	            r%   test_read_write_reread_dta14z&TestStata.test_read_write_reread_dta14  s1   
 xfg$}}}==t$$#
j&111_ 	9$Y4EwWWW%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 ??$$!..rx88
4>>wGGRRRRRs   0BBB)
stata6_113
stata6_114
stata6_115
stata6_117c                    |                       |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
                             t          j
        d          |d
<    |ddd| d          }|                     |          }t          j        ||           d S )Nr(   r)   r*   
stata6.csvbyte_int_long_float_double_rD  z%Y-%m-%dargsrg   )r	   r]   r^   r   r   r_   ro   r:  applyr   strptimer8   rG   rJ   )r6   r7   r/   rb   rq   s        r%   test_read_write_reread_dta15z&TestStata.test_read_write_reread_dta15  s3    ==$!N!NOO$W-44RW==#F+2228<<$W-44RX>>%h/66rzBB&y188DD&y177M 8 
 
 xfg$}}}==t$$
h/////r$   c                 d   t          dgdg          }t          ddddd          }d	}t          j                    5 }|                    ||||
           t          |          5 }|j        dk    sJ |j        |k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   variablerC     r            zThis is a data file.)
time_stampr   r;   z29 Feb 2000 14:21)r   r   rG   rH   rI   r   r_  r   )r6   r;   r   r_  r   rL   readers          r%   test_timestamp_and_labelz"TestStata.test_timestamp_and_label  sU   dVj\:::dAr2r22
+
_ 	7$
G     T"" 7f(,?????(J666667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s5   )B%%BB%B	B%B	B%%B),B)c                 f   t          dgdg          }d}t          j                    5 }d}t          j        t
          |          5  |                    |||           d d d            n# 1 swxY w Y   t          j        	                    |          rJ 	 d d d            d S # 1 swxY w Y   d S )NrY  rZ  rC   z01 Jan 2000, 00:00:00z"time_stamp should be datetime typematch)r_  r;   )
r   rG   rH   pytestraises
ValueErrorrI   osrL   isfile)r6   r;   r   r_  rL   msgs         r%   test_invalid_timestampz TestStata.test_invalid_timestamp  sD   dVj\:::,
_ 	,$6Cz555 P P!!$:w!OOOP P P P P P P P P P P P P P Pw~~d++++++		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s5   B&A, B&,A0	0B&3A0	4$B&&B*-B*c                    t          t          j        t          j        d          d                    }d|j        _        t          j                    5 }t          j        t                    5  |
                    |           d d d            n# 1 swxY w Y   |                     |          }d d d            n# 1 swxY w Y   |                    d          }t          |j                  }d }t          ||          |_        |                                }|j                            t          j                  |_        t          j        ||           d S )Ng      9@)rP   rP   r-   c                 ,    t          | d                   S )Nr   )intr   s    r%   <lambda>z5TestStata.test_numeric_column_names.<locals>.<lambda>  s    S1YY r$   )r   r^   reshapearanger-   r.   rG   rH   r'  r   rI   r8   r   r  rD   mapr\   r]   r_   rJ   )r6   r   rL   r   rD   convert_col_namerb   s          r%   test_numeric_column_namesz#TestStata.test_numeric_column_names  s   RZ	$@@AA%_ 	9$+,=>> ( (!!$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( &*]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 "8!A!A'!J!J-566..),-=w)G)G&==??!..rx88
h(>?????s6   B<.BB<B	B<B	B<<C C c                    t          t          j        d          t          j                  }t          t          j        d          t          j                  }t          j        |d d d<   t          j        |dd d<   t          ||d          }d|j        _        t          j
                    5 }|                    ||           |                     |          }d d d            n# 1 swxY w Y   |                    d          }|                                }|j                            t          j                  |_        t          j        ||           d S )Nr   r  r   r   r;  r<  r-   r;   )r   r^   rr  ro   r:  rn   r   r-   r.   rG   rH   rI   r8   r   r\   r]   r_   rJ   )r6   r;   r;  r<  r   rL   r   rb   s           r%   test_nan_to_missing_valuez#TestStata.test_nan_to_missing_value  s\   BIcNN"*555BIcNN"*555&33Q3614a4Bb1122%_ 	9$dG444%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 "8!A!A'!J!J==??!..rx88
4h?????s   0-C))C-0C-c                    ddg}t          t          j        t          j        d          d          |          }d|j        _        t          j                    5 }|                    |d           | 	                    |          }t          j        t          |j        j        	          5  |d          d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr   r         $@)rP   r   rC   index_not_writtenFr  rc  )r   r^   rq  rr  r-   r.   rG   rH   rI   r8   re  rf  KeyError)r6   rD   r   rL   r   s        r%   test_no_indexzTestStata.test_no_index+  sP   *RZ	$@@'RRR1_ 	<$d666%)]]4%8%8"xx~/BCCC < <&':;;< < < < < < < < < < < < < < <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s7   AC,	C5CC	CC		CC Cc                    t          ddg          }t          ddgt          j                  }t          ||d          }d|j        _        t          j                    5 }|                    |           | 	                    |          }d d d            n# 1 swxY w Y   |
                                }|j                            t          j                  |_        t          j        |                    d          |           d S )Nr    zA longer stringr          @r  rw  r-   )r   r^   r:  r   r-   r.   rG   rH   rI   r8   r\   r]   r_   rJ   r   )r6   r;  r<  r   rL   r   rb   s          r%   test_string_no_dateszTestStata.test_string_no_dates5  s"   S+,--S#Jbj111Bb1122%_ 	9$d###%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 ==??!..rx88
4>>wGGRRRRRs    +BBBc                    t          ddgt          j                  }t          ddgt          j                  }t          ddgt          j                  }t          ddgt          j                  }t          ||||d          }d|j        _        t          j	                    5 }t          j
        t                    5  |                    |           d d d            n# 1 swxY w Y   |                     |          }d d d            n# 1 swxY w Y   |                                }t          |d	         t          j                  |d	<   t          |d
         t          j                  |d
<   t          |d         t          j                  |d<   |j                            t          j                  |_        t          j        |                    d          |           d S )Nr   c   r     i  l    )s0r;  r<  r=  r-   r;  r<  r=  )r   r^   r   r   r9  r   r-   r.   rG   rH   r'  r   rI   r8   r\   r_   r:  r]   rJ   r   )	r6   r  r;  r<  r=  r   rL   r   modifieds	            r%   test_large_value_conversionz%TestStata.test_large_value_conversionB  s   QG27+++QHBG,,,Q	N"(333Q	N"(333Bb"EEFF%_ 	9$+,ABB ( (!!$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( &*]]4%8%8"		9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 ==??bh???bh???bjAAA!..rx88
4>>wGGRRRRRs6   (DC$D$C(	(D+C(	,DDDc           
      P   t          t          dddddd          g          }d|j        _        t	          j                    5 }t	          j        t                    5  |                    |dd	i
           d d d            n# 1 swxY w Y   | 	                    |          }d d d            n# 1 swxY w Y   |
                                }dg|_        |j                            t          j                  |_        t	          j        |                    d          |           d S )Nrt   ru   rv   rw   rx   ry   r-   r   r  r+   _0)r   r   r-   r.   rG   rH   r'  r   rI   r8   r\   rD   r]   r^   r_   rJ   r   )r6   r   rL   r   r  s        r%   test_dates_invalid_columnz#TestStata.test_dates_invalid_columnV  s   htRRR@@ABB%_ 	9$+,=>> A A!!$q$i!@@@A A A A A A A A A A A A A A A &*]]4%8%8"		9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 ==?? 6!..rx88
4>>wGGRRRRRs6   B.B6B.B	B.	B	
B..B25B2c                     |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          j	        |
                    d          |           d S )Nr(   r)   r*   S4_EDUC1.dta)r   r   r   )r   r   r   r  )r   r   r   r  )clustnumpri_schlpsch_numpsch_disr  r  r  r  r   )r   r   rD   r]   r^   r   r   ro   rG   rJ   head)r6   r/   dpathr`   df0s        r%   test_105zTestStata.test_105d  s     vw??}}mmm]]];nnFFFj/00::Jj/0099Jj/0099Jj/00<<J
bggajj#.....r$   c                      |dddd          }t          |          5 }|                                i k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   r  )r   value_labels)r6   r/   r  r`  s       r%   test_value_labels_old_formatz&TestStata.test_value_labels_old_formatr  s    
 vw?? 	/6&&((B.....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AAAc                    g d}d |D             }t          dddddd          gt          |          z  }t          |g|          }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	          |          }t          j
                    5 }|                    ||           |                     |          }d d d            n# 1 swxY w Y   t          j        |                    d	          |           d S )N)r  rE  twrG   tqthtyc                     i | ]}||S r#   r#   r   r"   s     r%   
<dictcomp>z6TestStata.test_date_export_formats.<locals>.<dictcomp>}  s    ---q!---r$   rt   ru   ry   rw   rx   rC   r-   rv   r   r~   r{   r   r  r.   r-   rD   r+   )r   r   r   r-   r.   rZ   Indexr^   r_   rG   rH   rI   r8   rJ   r   )	r6   rD   conversionsr)   r   expected_valuesrb   rL   r   s	            r%   test_date_export_formatsz"TestStata.test_date_export_formats{  s   <<<--W---r2r2r223c'llBdVW555%T2r2r2..T2r""T2r""T2q!!T2q!!T1a  T1a  
 (A3bhW===
 
 
 _ 	9$d+>>>%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	4>>wGGRRRRRs   -EEEc                    t          dgd ggdg          }t          dgdggt          j        ddgt          j        d          dg	          }t          j                    5 }|                    |           |                     |          }d d d            n# 1 swxY w Y   t          j	        |
                    d          |           d S )
N1foorC   r   r   r   r-   r  r  )r   rZ   r  r^   r_   rG   rH   rI   r8   rJ   r   )r6   r   rb   rL   r   s        r%   test_write_missing_stringsz$TestStata.test_write_missing_strings  s   sedV_ug>>>URDM(Aq6@@@G
 
 
 _ 	9$d###%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	4>>wGGRRRRRs   "+BB B	byteorder><c           
      p   t          g dt          j                  }t          g dt          j                  }t          g dt          j                  }t          g dt          j                  }t          g dt          j                  }t          g dt          j                  }t          g dt          j                  }	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 ]#\  }}||         
                    |          ||<   $t#          j                    5 }|
                    |||           |                     |          }d d d            n# 1 swxY w Y   |                    d
          }t#          j        ||           d S )N)r   r   Tr  )r   r   d   )r   r      )r   r   i  )r   r   i  )r   r   i)r   r   l    )r  r;  r<  r=  s4s5s6r-   )r  r;   )r   r^   bool_uint8uint16uint32r   r-   r.   r\   r]   r_   r   r   r:  ziprD   rG   rH   rI   r8   r   rJ   )r6   r  r;   r  r;  r<  r=  r  r  r  r   rb   expected_typesr"   trL   r   s                    r%   test_bool_uintzTestStata.test_bool_uint  s4    LLL111KKKrx000KKKrx000'''ry999%%%RY777'''ry999%%%RY777Rr2RrRR
 
 &==??!..rx88GGHHHHJ
 (.99 	0 	0DAq"1+,,Q//HQKK_ 	9$diIII%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 "8!A!A'!J!J
4h?????s   .HHHc                    t           |dddd                    5 }|                                }d d d            n# 1 swxY w Y   t           |dddd                    5 }|                                }d d d            n# 1 swxY w Y   d}d}|                                D ]%\  }}||v sJ |||         k    sJ ||v sJ ||v sJ &d S )Nr(   r)   r*   zstata7_115.dtazstata7_117.dta)var1var2var3)label1label2label3)r   r   items)	r6   r/   r   sr_115sr_117keyslabelskvs	            r%   test_variable_labelszTestStata.test_variable_labels  so   $9IJJKK 	+s((**F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+$9IJJKK 	+s((**F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+'/LLNN 	 	DAq;;;;q	>>>>9999;;;;;		 	s!   =AA#BBBc           	      |   d}i }|D ]0}t          d|z  d|z  d|z  g          |dt          |          z   <   1t          |          }t          j                    5 }|                    |d           t          |          5 }|                                 t          |j	        |j
        |j                  D ]U\  }}}	t          |dd                    t          |dd	                   k    sJ t          |dd                    |	k    sJ V	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
N)r   r     r    r!   r"   sFr  r   )r   r  r   rG   rH   rI   r   _ensure_openr  _varlist_fmtlist_typlistrn  )
r6   str_lensr  str_lenr   rL   srrZ  fmttyps
             r%   test_minimal_size_colzTestStata.test_minimal_size_col  s     	 	G$*wgsW}=% %AcCLL !! Q<<_ 	4$d666T"" 4b!!!*-bk2;*T*T 4 4&Hc3x|,,C"I>>>>x|,,3333344 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s7   'D1BDD1D	D1 D	!D11D58D5c                 ~   d}i }|D ]0}t          d|z  d|z  d|z  g          |dt          |          z   <   1t          |          }d}t          j        t
          |          5  t          j                    5 }|                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N)r   r    r    r!   r"   r  zFixed 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\.rc  )	r   r  r   re  rf  rg  rG   rH   rI   )r6   r  r  r  r   rj  rL   s          r%   test_excessively_long_stringz&TestStata.test_excessively_long_string  sY     	 	G$*wgsW}=% %AcCLL !! Q<<9 	 ]:S111 	( 	("" (d!!$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s6   $B28BB2B	B2!B	"B22B69B6c                    d}t          dggdg          }t          j                    5 }|                    |           t	          |          5 }|j        }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d t          d          D             }|                    dd           |D ]K}||         d	         }t          dd
          D ]*}	t          |d	z   |	z             }
|
j	        ||	         k    sJ +Lt          t          j        dd          d                   }
|
j	        dk    sJ t          t          j        dd          d                   }
|
j	        dk    sJ t          t          j        dd          d                   }
|
j	        dk    sJ t          t          j        dd          d                   }
|
j	        dk    sJ d S )N)r!   hlr   rP  rC   c                 8    g | ]}d t          d|z             z   S ).a   )chrr   is     r%   r   z:TestStata.test_missing_value_generator.<locals>.<listcomp>  s'    @@@3R!V,@@@r$      r   r  r      z<fs      s     z.zz<ds         s        )r   rG   rH   rI   r   VALID_RANGErX   insertr   r   structunpack)r6   typesr`   rL   r   valid_ranger  r  offsetr  vals              r%   test_missing_value_generatorz&TestStata.test_missing_value_generator  ss   w
333_ 	.$KKT"" .c!o. . . . . . . . . . . . . . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. A@eBii@@@q#&&& 	8 	8A ^A&F1b\\ 8 8'
Q77z_Q%7777778
  d4G H H KLLzS    d4G H H KLLzT!!!!  M$ CDDQG
 
 zS    M$ CDDQG
 
 zT!!!!!!s5   %A:A#A:#A'	'A:*A'	+A::A>A>)
stata8_113
stata8_115
stata8_117c           	        	
 g d}t          d          }t          |j                                                  
g }t	          d          D ]3		
fdt	          d          D             }|                    |           4t          ||          }t           |ddd	| d
          d          }t          j	        ||           d S )N)int8_int16_int32_float32_float64_e   r  c                 F    g | ]}t          |d z  z                      S )r  )r   )r   jr  r  s     r%   r   z;TestStata.test_missing_value_conversion.<locals>.<listcomp>   s/    KKKQ$T!q2v,%788KKKr$   rP   rC   r(   r)   r*   rg   Tconvert_missing)
r   sortedMISSING_VALUESr  rX   appendr   r   rG   rJ   )r6   r7   r/   rD   smvr)   rowrb   rq   r  r  s            @@r%   test_missing_value_conversionz'TestStata.test_missing_value_conversion  s    GGG$$c(--//00r 	 	AKKKKK%((KKKCKKT7333HT67tMMM::D
 
 
 	fh/////r$   c                    g d}g d}g d}g d}g d}g d}g }t          ||||||          D ]\  }	}
}}}}g }t          d          D ]}|dk    r(|                    t          |	|
||||                     0|dk    r%|                    t          |	d	d	                     [|                    t          |	|
|                     |                    |           |                    t          j        gdz             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	          x|d         d<   |d         d<   t          dd	d	          x|d         d<   |d         d<   t          ddd	          x|d         d<   x|d         d<   |d         d<   t          dd	d	          x|d         d<   |d         d<   t          ||t                    }t           |dddd                    }t           |dddd                    }t          j
        ||d           t          j
        ||d           d |D             }t          j                    5 }d |j        _        |                    ||!           |                     |          }d d d            n# 1 swxY w Y   t          j
        |                    d           |                    |j                            t$          j                            d           d S )"N)i  r[  '  r      )r   r   r|   r   r   r   )r   r   r}   r      rw   )r   r   rw   r   r   r   )r   r   ;   r   r   r   r{   r   r   r   )date_tcrD  date_twdate_tmdate_tqdate_thdate_tyr  r|      r   r   r~   r   rP   r     r  i  )rD   r  r(   r)   r*   zstata9_115.dtazstata9_117.dtaTr   c                 $    i | ]}||d d         S )r  Nr#   r  s     r%   r  z,TestStata.test_big_dates.<locals>.<dictcomp>W  s"    6661af666r$   r-   r+   )r  rX   r   r   rZ   r   r   r   r   rG   rJ   rH   r-   r.   rI   r8   r   r]   r^   r_   )r6   r/   yrmoddhrmmssrb   r   monthdayhourminutesecondr  r  rD   r   r   date_conversionrL   r   s                          r%   test_big_dateszTestStata.test_big_dates)  s   000   """         69"b"b"b6Q6Q 		! 		!2D%dFFC1XX ; ;66JJxeS$OOPPPP!VVJJxa334444JJxeS99::::OOC    1%%%
 
 
 "$B//A!$A..A!$A..A!$1--A!$2..A*24A*>*>>A!Q*24A*>*>>A!Q;CD"a;P;PPAP!Q(1+a.*24A*>*>>A!QXwfEEEvw@P Q QRR
vw@P Q QRR

h
dSSSS
h
dSSSS66g666_ 	9$")HNd/BBB%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9
 	",,W55x~44RX>>??&*	
 	
 	
 	
 	
 	
s   9LL
L
c                    |                       |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
                             t          j
        d          |d
<   t           |dddd          d          }t          j        ||           t           |dddd          dd          }|                       |dddd                    }|d
                             t          j
        d          |d
<   t          j        ||           d S )Nr(   r)   r*   rL  rM  rN  rO  rP  rQ  rD  rR  rS  stata6_117.dtaTr+   F)r,   preserve_dtypes)r	   r]   r^   r   r   r_   ro   r:  rU  r   rV  r   rG   rJ   )r6   r/   rb   no_conversion
conversions        r%   test_dtype_conversionzTestStata.test_dtype_conversiond  s   ==$!N!NOO$W-44RW==#F+2228<<$W-44RX>>%h/66rzBB&y188DD&y177M 8 
 
 #HT67,<==T
 
 
 	h666HT67,<==!
 
 

 ==$!N!NOO&y177M 8 
 
 	h
33333r$   c           	         |                       |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
                             t          j
        d          |d
<   g d}||         }t           |dddd          d|          }t          j        ||           g d}||         }t           |dddd          d|          }t          j        ||           d}t          j        t           |          5  ddg}t           |dddd          d|           d d d            n# 1 swxY w Y   d}t          j        t           |          5  g d}t           |dddd          d|           d d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   rL  rM  rN  rO  rP  rQ  rD  rR  rS  )rM  rN  rO  r!  T)r,   rD   )rN  rO  rM  z"columns contains duplicate entriesrc  zEThe following columns were not found in the Stata data set: not_found)rM  rN  rO  	not_found)r	   r]   r^   r   r   r_   ro   r:  rU  r   rV  r   rG   rJ   re  rf  rg  )r6   r/   rb   rD   dropped	reorderedrj  s          r%   test_drop_columnzTestStata.test_drop_column  s   ==$!N!NOO$W-44RW==#F+2228<<$W-44RX>>%h/66rzBB&y188DD&y177M 8 
 
 -,,G$HT67,<==
 
 
 	h000 -,,G$HT67,<==
 
 
	
 	h	2222]:S111 	 	(Gvw0@AA"   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V]:S111 	 	===Gvw0@AA"   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   /#GG"%G"#H66H:=H:z;ignore:\nStata value:pandas.io.stata.ValueLabelTypeMismatchc                   	 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          		                                }t          j        	fd	D             d          	|j                            d          	                    t          j
                  |_        |d                             t                    |d<   |d                             t                    |d<   |D ]}||                                         }|	                    d          j        }|                                }|dk    r|                    |d          }|j                            d d            |||<   t%          j                    5 }	                    ||!           |                     |          }d d d            n# 1 swxY w Y   |                    d          }t%          j        ||           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   rP   r   r   r   r{   r   r   rz   r   r   r   r   r   r~   )r   r   r   r   r   	unlabeledrC   c                 F    g | ]}|                              d           S r   r]   r   r   r   s     r%   r   z6TestStata.test_categorical_writing.<locals>.<listcomp>  +    BBB#Xc]!!*--BBBr$   r   axisr-   r   r,  r   Tr   r   rx  )r   r   r^   rn   r\   rZ   concatr-   	set_namesr]   r_   rU  r  r   
as_orderedr   r   r   rG   rH   rI   r8   r   rJ   )
r6   r;   rb   r   r   r   rL   r   resr   s
            @r%   test_categorical_writingz"TestStata.test_categorical_writing  s   
 )666777@@@77726615265!4&!RVWa8'1bfgq926615ubfeR8  
 
 
, ==?? 9BBBBBBB
 
 
 "11'::AA"(KK+34J+K+Q+QRU+V+V'( ( 5 ; ;C @ @ 
	  
	 CC=%%''D++j))1C..""Ck!!((t(<<N!!$!555HSMM_ 	9$dG444%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 %..w77
c8,,,,,s   "-HH"Hc                    t          j        ddz  gddz  gddz  gddz  ggdg          t          j        fdD             d	
          t	          j                    5 }d}t          j        t          |          5  	                    |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        dgdgdgdgd	ggdg          t          j        fdD             d	
          t	          j
        t                    5  	                    |           d d d            d S # 1 swxY w Y   d S )Nr    i'  r!   r"   dToo_longrC   c                 F    g | ]}|                              d           S r.  r/  r0  s     r%   r   zBTestStata.test_categorical_warnings_and_errors.<locals>.<listcomp>  r1  r$   r   r2  zbStata value labels for a single variable must have a combined length less than 32,000 characters\.rc  c                 F    g | ]}|                              d           S r.  r/  r0  s     r%   r   zBTestStata.test_categorical_warnings_and_errors.<locals>.<listcomp>  r1  r$   )r   r   rZ   r4  rG   rH   re  rf  rg  rI   r'  r   )r6   rL   rj  r   s      @r%   $test_categorical_warnings_and_errorsz.TestStata.test_categorical_warnings_and_errors  sU    )Ek]S5[MC%K=3;-HL
 
 

 9BBBBBBB
 
 
 _ 	($C  z555 ( (!!$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( )USEC53%!-
|
 
 
 9BBBBBBB
 
 
 '(>?? 	$ 	$d###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$sH   "B9 B"B9"B&	&B9)B&	*B99B= B= EE
Ec                   
 d t          d          D             }|                    t          j        g           t	          j        |dg          
t          j        
fd
D             d          
d
j        _	        t          j                    5 }
                    ||	           |                     |          }d d d            n# 1 swxY w Y   |                    d          }
                                }|D ]D}||         j        }|                                j        }	|                    |	d
          }|||<   E|j                            t          j                  |_        t          j        ||           d S )Nc                 4    g | ]}d t          |          z   gS )r    )r  r  s     r%   r   zHTestStata.test_categorical_with_stata_missing_values.<locals>.<listcomp>  s$    555Q3Q<.555r$   x   many_labelsrC   c                 F    g | ]}|                              d           S r.  r/  r0  s     r%   r   zHTestStata.test_categorical_with_stata_missing_values.<locals>.<listcomp>  r1  r$   r   r2  r-   rx  Tr   )rX   r   r^   rn   r   r   rZ   r4  r-   r.   rG   rH   rI   r8   r   r\   r   remove_unused_categoriesr   r   r]   r_   rJ   )r6   r;   valuesrL   r   r7  rb   r   r   new_catsr   s             @r%   *test_categorical_with_stata_missing_valuesz4TestStata.test_categorical_with_stata_missing_values	  s   55%**555rvh)&=/JJJ9BBBBBBB
 
 
 &_ 	9$dG444%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 %..w77==?? 	  	 C3-'C3355@H$$Xt$<<CHSMM!..rx88
c8,,,,,s   -CCCstata10_115stata10_117c                 .   ddg dt          j        d          fddg dt          j        d          d d d         fddg dt          j        g d          fdd	g dt          j        d
d          fddg dt          j        g d          fddg dt          j        d          fddg dt          j        d          fg}g }|D ]q\  }}}}|r8|                    |t          j                            ||d          f           A|                    |t          |t           j                  f           rt          j
        t          |                    } |ddd| d          }t          |          }	t          j        ||	           |D ]}t          ||         j                  rjt          j        ||         j        j        |	|         j        j                   t          j        ||         j        j        |	|         j        j                   d S )NTr   )r    r!   r"   r:  erP   reverser  noorder)r   r   r   r   r   r  r   float_missing)r    r:  rK  )r   r   r   r  r  Fnolabel)r   r  r   r   g      @int32_mixed)r:  r   rK  r!   r    r   r  r(   r)   r*   rg   )r^   rr  arrayr   rZ   Categorical
from_codesr   ro   r   	from_dictdictr   rG   rJ   r   r  assert_series_equalr   codesassert_index_equalr   )
r6   r7   r/   rb   colsis_catr   r  rW  rq   s
             r%   test_categorical_orderz TestStata.test_categorical_order!  sI   
 97771F97771ddd9KL9777///9R9RS:888")Aq//J?OOORX>O>O>O5P5PQI888")A,,G="9"9"929Q<<H
 *2 	E 	E&FC E".33E643PPQ    S&rz"B"B"BCDDDD&tDzz22 xfg$}}}==D!!
h///  	 	C#HSM$788 &x}'8'>s@UVVV%SM%0&+/2L  	 	r$   stata11_115stata11_117c           	      h   t           |ddd| d                    }|                    dd          }t          j        t	          |                    |_        g d}g d	}t          j                            ||d
          }t          |d          }t          j
        ||d                    d S )Nr(   r)   r*   rg   srhfirst)na_position)
r  r  r   r   r   r   r   r   r   r   )PoorFairGoodz	Very good	ExcellentT)rW  r   r   r.   )r   sort_valuesrZ   r[   r   r-   rR  rS  r   rG   rV  )r6   r7   r/   rq   rW  r   r   rb   s           r%   test_categorical_sortingz"TestStata.test_categorical_sortingE  s    HHT67tMMMJJKK ##Ew#?? }S[[11000GGG
n''J ( 
 
 #E***
x77777r$   c                      |ddd| d          }t          |          }t          |d          }|D ]E}t          ||         j                  s||         j        j        sJ ||         j        j        rJ Fd S )Nr(   r)   r*   rg   F)order_categoricals)r   r   r  r   r   )r6   r7   r/   rq   parsed_unorderedr   s         r%   test_categorical_orderingz#TestStata.test_categorical_orderingV  s    xfg$}}}==D!!%duEEE 	9 	9C's(9:: #;?****',088888		9 	9r$   )re   
stata2_117r   r   rB  rJ  
stata7_117r  
stata9_117rI  r]  	chunksizer   r   convert_categoricalsFTr,   c                     |ddd| d          }t          j        d          5  t          j        d           t          |||          }d d d            n# 1 swxY w Y   t          |d||	          5 }d
}	t	          d          D ]}
t          j        d          5  t          j        d           	 |                    |          }n# t          $ r Y d d d             nww xY w	 d d d            n# 1 swxY w Y   |j        |	|	|z   d d f                                         }| 	                    |          }t          j        ||dd           |	|z  }	d d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   rg   Tr   r   rq  r,   )iteratorrq  r,   r   rP   Fr   r   r   r   r   r   rX   readStopIterationilocr\   _convert_categoricalrG   rJ   r6   r7   rp  rq  r,   r/   fnamerq   itrposr  chunk
from_frames                r%   test_read_chunks_117zTestStata.test_read_chunks_117b  s   , vw4>>$D111 	 	!(+++%9+  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !5'	
 
 
 	!
 C1XX ! !,D999  )(333 # 3 3(                          $[sY)>)ABGGII
!66zBB
%5TX    y '	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!r   'AA!A8)E)!C67CC6
C&	C6E)%C&	&C6*E)6C::E)=C:>AE))E-0E-r  returnc                 *   | D ]}| |         }t          |j                  rq|j                                        }|j        j        t
          k    r>t          j                            |j        j                  }|	                    |          }|| |<   | S )zX
        Emulate the categorical casting behavior we expect from roundtripping.
        )
r   r  r   rD  r   r   rZ   r  _with_inferr   )r  r   serr   r   s        r%   rz  zTestStata._convert_categorical  s    
  	& 	&CS/C#CI.. &k::<<>'611!#!5!5cn6L!M!MJ,,Z88C"%
3r$   c                     |dddd          }t          |          }t          |d          5 }|                    d          }t          j        |j        ddd d f         |           d d d            n# 1 swxY w Y   t          |d	          5 }t          |          }t          j        |j        ddd d f         |d                    d d d            n# 1 swxY w Y   t          |d          5 }|                    d          }t          j        |j        ddd d f         |           d d d            n# 1 swxY w Y   t          |d	          5 }|                                }t          j        |j        ddd d f         |           d d d            n# 1 swxY w Y   t          |d
	          5 }t          j        |          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr(   r)   r*   stata3_117.dtaTrt  rP   r   rp  r   )	r   rw  rG   rJ   ry  r  	get_chunkrZ   r4  )r6   r/   r|  rq   r}  r  from_chunkss          r%   test_iteratorzTestStata.test_iterator  s0   vw0@AAE""--- 	>HHQKKE!&+ac111f"5u===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> +++ 	AsIIE!&+ac111f"5uQx@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A --- 	>MM!$$E!&+ac111f"5u===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> +++ 	>sMMOOE!&+ac111f"5u===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>
 +++ 	)s)C..K	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)
fk22222sY   <A77A;>A;<CC"C7<D??EE;F""F&)F&>GG#&G#)

stata2_115r   r   rA  rI  
stata7_115r  
stata9_115rH  r\  c                     |ddd| d          }t          j        d          5  t          j        d           t          |||          }d d d            n# 1 swxY w Y   t          |d||	          5 }d
}	t	          d          D ]}
t          j        d          5  t          j        d           	 |                    |          }n# t          $ r Y d d d             nww xY w	 d d d            n# 1 swxY w Y   |j        |	|	|z   d d f                                         }| 	                    |          }t          j        ||dd           |	|z  }	d d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   rg   Tr   r   rs  )rt  r,   rq  r   rP   Fru  rv  r{  s                r%   test_read_chunks_115zTestStata.test_read_chunks_115  s   * vw4>> $D111 	 	!(+++%9+  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 '!5	
 
 
 	!
 C1XX ! !,D999  )(333 # 3 3(                          $[sY)>)ABGGII
!66zBB
%5TX    y '	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!r  c                 f    |dddd          }g d}d}t          ||          }t          |d	          5 }d
}t          d          D ]O}|                    ||          }	|	 n3|j        |||z   d d f         }
t	          j        |
|	d           ||z  }Pd d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   r  )r   cpim1r   rC   Tr  r   rP   Fr   )r   rX   rw  ry  rG   rJ   )r6   r/   r|  rD   rp  rq   r}  r~  r  r  r  s              r%   test_read_chunks_columnsz"TestStata.test_read_chunks_columns  s)   vw0@AA***	E7333--- 	!C1XX ! !G<<=E#[sY)>)AB
%j%UKKKKy 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   A"B&&B*-B*c                 `   d|j         _        dddd}t          j                    5 }|                    |||           t          |          5 }|                                }d d d            n# 1 swxY w Y   ddddd}||k    sJ 	 d d d            n# 1 swxY w Y   d	|d<   t          j                    5 }|                    |||           t          |          5 }|                                }d d d            n# 1 swxY w Y   ||k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nr-   	City RankCity ExponentCityr   r   r;   r   )r-   r    r!   r"   z	The Index)r-   r.   rG   rH   rI   r   r   )r6   r;   r&   r   rL   r  read_labelsexpected_labelss           r%   test_write_variable_labelsz$TestStata.test_write_variable_labels  sW    ") +/OO_ 
	2$  PW XXXT"" 3b 00223 3 3 3 3 3 3 3 3 3 3 3 3 3 3  $	 O /11111
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 $/ _ 	2$  PW XXXT"" 3b 00223 3 3 3 3 3 3 3 3 3 3 3 3 3 3/11111		2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2sk   (BA/#B/A3	3B6A3	7BBB9(D#!D6D#D	D#	D	
D##D'*D'c                    d|j         _        dddd}t          j                    5 }d}t	          j        t          |          5  |                    |||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr-   Zvery longvery longvery longvery longvery longvery longvery longvery longvery longvery longr  r  r   .Variable labels must be 80 characters or fewerrc  r  r-   r.   rG   rH   re  rf  rg  rI   )r6   r;   r&   r   rL   rj  s         r%   test_invalid_variable_labelsz&TestStata.test_invalid_variable_labels  s   !( 0VTT_ 	$BCz555  $$/7 %                 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   BA)B)A-	-B0A-	1BBBr=   r>   c                 "   d|j         _        dddd}d|d<   t          j                    5 }t	          j        t          d	          5  |                    |||
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr-   r  r  r  r   u   invalid character Œr    z,Variable labels must contain only charactersrc  r  r  )r6   r;   r&   r   rL   s        r%   $test_invalid_variable_label_encodingz.TestStata.test_invalid_variable_label_encoding(  s-   !( 0VTT5_ 	$"P     $$/7 %                 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   BA, B,A0	0B3A0	4BBBc                 *   g d}ddd                     |          d}d}t          j        t          |          5  t	          j                    5 }|                    ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ddd	d}d
}t          j        t          |          5  t	          j                    5 }|                    ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N)u   Ρ   Αu   Νu   Δr  u   Σr  r  r   r   zKVariable labels must contain only characters that can be encoded in Latin-1rc  )r   zqA very, very, very long variable label that is too long for Stata which means that it has more than 80 charactersr  )joinre  rf  rg  rG   rH   rI   )r6   r&   rE  variable_labels_utf8rj  rL   variable_labels_longs          r%    test_write_variable_label_errorsz*TestStata.test_write_variable_label_errors5  sx   MMM   
  
! 	 ]:S111 	Q 	Q"" Qd$$T;O$PPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q
  2 
  
 ?]:S111 	Q 	Q"" Qd$$T;O$PPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qsk   B
A3'B
3A7	7B
:A7	;B

BB8DC0$D0C4	4D7C4	8DDDc                    t          j        ddddddd          t          j        ddddddd          t          j        dd	d
d	d
d	d          g}t          g dg d|d          }t          j                    5 }|                    |d           t          |d          }t          j        ||           |                    |dddi           t          |d          }t          j        ||           |j        	                                
                    d          }|                    |d|di           t          |d          }t          j        ||           d d d            d S # 1 swxY w Y   d S )N  r|   r}   .    r^  R    r{   r     r   r  r   applebananacherrynumsstrsdatesFr  Tr+   r  r  )rF   r,   )dtr   r   rG   rH   rI   r   rJ   rD   tolistr-   )r6   r  r   rL   rereaddirect	dates_idxs          r%   test_default_date_conversionz&TestStata.test_default_date_conversionS  s    Kb"b"b%88Kb"b"b%88KaAq!T22

 '555 
 
 _ 	2$d666D999F!(F333dgt_UUUD999F!&&111 (//1177@@IdiQUEVWWWD999F!&&111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   8C*E//E36E3c                    t          dddgi          }d}t          j        t          |          5  t	          j                    5 }|                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr    y      ?       @y       @      @z"Data type complex128 not supportedrc  )r   re  rf  NotImplementedErrorrG   rH   rI   )r6   r   rj  rL   s       r%   test_unsupported_typezTestStata.test_unsupported_typep  s   cFF#34552].c::: 	( 	("" (d!!$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s5   A?A'A?'A+	+A?.A+	/A??BBc                    t          j        ddddddd          t          j        ddddddd          t          j        dd	d
d	d
d	d          g}t          g dg d|d          }d}t          j        t
          |          5  t          j                    5 }|                    |ddi           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j
        ddd          }t          g dg d|d          }t          j        t
          d          5  t          j                    5 }|                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r|   r}   r  r  r^  r  r  r{   r   r  r  r  r  zFormat %tC not implementedrc  r  tCr+   z1-1-1990r   zAsia/Hong_Kong)periodstzzData type datetime64)r  r   r   re  rf  r  rG   rH   rI   rZ   
date_range)r6   r  r   rj  rL   s        r%   test_unsupported_datetypez#TestStata.test_unsupported_datetypex  s   Kb"b"b%88Kb"b"b%88KaAq!T22

 '555 
 
 +].c::: 	G 	G"" Gd!!$wo!FFFG G G G G G G G G G G G G G G	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G j!8HIII'555 
 
 ].6LMMM 	( 	("" (d!!$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(sl   CB<0C<C 	 CC 	CCC'E5;EE5E!	!E5$E!	%E55E9<E9c           	          d}t          j        t          |          5  t           |dddd          d           d d d            d S # 1 swxY 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
rc  r(   r)   r*   zstata15.dtaTrq  )re  rf  rg  r   )r6   r/   rj  s      r%   test_repeated_column_labelsz%TestStata.test_repeated_column_labels  s    	 ]:S111 	 	vw>>%)   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A		AAc                    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	          j        ||           d S )Nr(   r)   r*   zstata7_111.dtar   r   r   r   r   rP   r   )
r    r!   r"   r:  rK  r   gr  r  r  )r   r   r   r   )r   r   r^   NaNrG   rJ   )r6   r/   r`   r   s       r%   test_stata_111zTestStata.test_stata_111  s     vw8HIIJJAq!Q261a8Aq"&!Q1a8Aq!Q1a8FFF	 
 
 0001
h+++++r$   c                    t          dt          j        t          j                  j        dgdt          j        t          j                  j        t          j        t          j                  j        gd          }d}t          j        t          |          5  t          j
                    5 }|                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   g      ColumnOkColumnTooBigzZColumn ColumnTooBig has a maximum value \(.+\) outside the range supported by Stata \(.+\)rc  )r   r^   finfodoubleepsmaxre  rf  rg  rG   rH   rI   )r6   r`   rj  rL   s       r%   test_out_of_range_doublez"TestStata.test_out_of_range_double  sT    "(29"5"5"9;OP!$bhry&9&9&=rx	?R?R?V W 
 
) 	 ]:S111 	" 	""" "dD!!!" " " " " " " " " " " " " " "	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s6   C'-CC'C	C'C	C''C+.C+c                 n   t          dt          j        t          j                  j        t          j        t          j                  j        dz  gdt          j        t          j                  j        t          j        t          j                  j        gd          }d|j        _        |D ]*}||                             t          j                  ||<   +t          j
                    5 }|                    |           t          |          }d d d            n# 1 swxY w Y   |d                             t          j                  |d<   |                                }|j                            t          j                  |_        t          j        |                    d          |           d S )Nr   r{  r  r-   r  )r   r^   r  ro   r  r  r-   r.   r]   rG   rH   rI   r   r:  r\   r_   rJ   r   )r6   r   r   rL   r  rb   s         r%   test_out_of_range_floatz!TestStata.test_out_of_range_float  s    HRZ((,HRZ((,t3 HRZ((,HRZ((,! 
 
 & 	= 	=C$SM00<<HSMM_ 	&$d###%%F	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& $,N#;#B#B2:#N#N ==??!..rx88
f..w77BBBBBs   ,%DD!$D!infvalc                    t          ddgd|gd          }d}t          j        t          |          5  t	          j                    5 }|                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r  )
WithoutInfWithInfz[Column WithInf contains infinity or -infinitywhich is outside the range supported by Stata.rc  )r   re  rf  rg  rG   rH   rI   )r6   r  r`   rj  rL   s        r%   test_infzTestStata.test_inf  s    sCjc6]KKLL= 	 ]:S111 	" 	""" "dD!!!" " " " " " " " " " " " " " "	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s5   BA*B*A.	.B1A.	2BB	Bc                     t          j                    }d|j        _        d }t          j        |j        |          }t          j        ||           d S )Nr-   c                 F    t          |                               d          S Nr-   r   r   ro  s    r%   rp  z-TestStata.test_path_pathlib.<locals>.<lambda>      :a==227;; r$   )rG   makeDataFramer-   r.   round_trip_pathlibrI   rJ   r6   r`   r`  r  s       r%   test_path_pathlibzTestStata.test_path_pathlib  sN    ;;&r{F;;
b&)))))r$   c                     t          j                    }d|j        _        d }t          j        |j        |          }t          j        ||           d S )Nr-   c                 F    t          |                               d          S r  r  ro  s    r%   rp  z6TestStata.test_pickle_path_localpath.<locals>.<lambda>  r  r$   )rG   r  r-   r.   round_trip_localpathrI   rJ   r  s       r%   test_pickle_path_localpathz$TestStata.test_pickle_path_localpath  sN    ;;(f==
b&)))))r$   rF   c                    dg di}t          |          }|d                             d          |d<   t          j                    5 }|                    ||           t          |d          5 }|                                }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |dddd	d
dik    sJ d S )NA)BECr  r  )r)   r   r  Tr  r  r  r  )r   r   r   r   )r   r]   rG   rH   rI   r   r  )r6   rF   r:  r`   rL   dta_iterr  s          r%   test_value_labels_iteratorz$TestStata.test_value_labels_iterator  sT    +++,AS'..,,3_ 	7$KK+K666D4000 7H'44667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
 %E%EFFFFFFFs6   )B)1BB)B	B)B	B))B-0B-c                    t          j                    }d|j        _        t          j                    5 }|                    |           t          |d          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr-   	index_col)rG   r  r-   r.   rH   rI   r   rJ   )r6   r`   rL   r  s       r%   test_set_indexzTestStata.test_set_index  s    _ 	9$KK888F	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	b&)))))s   'A&&A*-A*column)msr  weekr  qtrhalfr  c                     t           |dddd                    }|j        d|f         }|j        d|dz   f         }||k    sJ d S )Nr(   r)   r*   zstata13_dates.dtar   _fmt)r   r  )r6   r  r/   r`   unformattedr(  s         r%   (test_date_parsing_ignores_format_detailsz2TestStata.test_date_parsing_ignores_format_details  s^     vw8KLLMMfQY'F1fvo-.	i''''''r$   c                    t          dddddddt          j        d          ddddz  dgd	d
dddddt          j        d          ddddggg d          }t          |d         t                    |d<   t          |d         t          j                  |d<   t          |d         t          j                  |d<   |d                             t          j                  |d<   t          |d         t          j	                  |d<   d|j
        _        |j
                            t          j                  |_
        |                                }t          j                    5 }|                    |ddidgd           |                     |          }t          j        |                    d          |d           t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r  r      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai  zstring-1zobject-1z
2003-12-26r!     bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr   )r   r   r   r   r_   ro   r:  r   r;  s2045srtlforced_strlr  r  r   r   r_   ro   r-   r   r  r  r>   )r,   convert_strlr;   FrV   )r   r^   r	  r   r   r   r   r]   r_   ro   r-   r.   r\   rG   rH   rI   r8   rJ   r   )r6   r   r\   rL   r   s        r%   test_writer_117zTestStata.test_writer_117)  sY    M,//$J M,//<  ?-
 -
 -
\ $HX$6fEEE!(6"2"'BBB"8G#4BHEEE$W-44RX>>$Xi%8
KKK%!..rx88}}_ 	2$)40+_	     &*]]4%8%8"!&0099!&   
 !(D111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   $A1G""G&)G&c                    t          g dg dgg d          }d|j        _        t          j        t
                    5  t          j                    5 }|                    |ddgd	           |                     |          }|	                    d          }|j
        |_
        t          j        ||d
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N)  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar  r  )  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr  r  )2long1long1long1long1long1long1long1long1long1long1longr   rC   r-   r  r   r>   )r	  r;   FrV   )r   r-   r.   rG   r'  r   rH   rI   r8   r   rD   rJ   )r6   r   rL   r  s       r%   test_convert_strl_name_swapz%TestStata.test_convert_strl_name_swapp  s   ''')D)D)DE---
 
 
 &'(9:: 	P 	P"" Pd!!$fa[#!NNNt,,))'22!)!1%fhOOOOP P P P P P P P P P P P P P P	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps6   CA(C;CC	CC	CC#&C#c                    t          j        ddddddd          t          j        ddddddd          t          j        dd	d
d	d
d	d          g}t          g dg d|d          }t          j                    5 }d}t          j        t          |          5  |                    |ddi           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r|   r}   r  r  r^  r  r  r{   r   r  r  r  r  z0convert_dates key must be a column or an integerrc  
wrong_namer  r+   )	r  r   r   rG   rH   re  rf  rg  rI   )r6   r  r   rL   rj  s        r%   test_invalid_date_conversionz&TestStata.test_invalid_date_conversion  s    Kb"b"b%88Kb"b"b%88KaAq!T22

 '555 
 
 _ 	L$DCz555 L L!!$|T6J!KKKL L L L L L L L L L L L L L L	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls6   8CB<0C<C 	 CC 	CCCc                    t          j                    }t          j                    }d|j        _        t          j                    5 }|                    ||           |                    d           t          |d          5 }|
                    |                                           d d d            n# 1 swxY w Y   t          |d          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr-   rx  r   wbr  )r(   BytesIOrG   r  r-   r.   rH   rI   seekopenwriterw  r   rJ   )r6   r;   bior`   rL   dtar  s          r%   test_nonfile_writingzTestStata.test_nonfile_writing  sT    jll_ 	9$KKWK---HHQKKKdD!! &S		#((**%%%& & & & & & & & & & & & & & &888F	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	b&)))))s6   =C(B7+C7B;	;C>B;	?CC#&C#c                    t          j                    }d|j        _        t          j                    5 }t          j        |d          5 }|                    |d           d d d            n# 1 swxY w Y   t          j        |d          5 }t          |d          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j	        ||           d S )Nr-   r  r=   rx  rbr  )
rG   r  r-   r.   rH   gzipGzipFilerI   r   rJ   )r6   r`   rL   gzr  s        r%   test_gzip_writingzTestStata.test_gzip_writing  s   _ 	;$tT** -bB,,,- - - - - - - - - - - - - - -tT** ;b#B':::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;
 	b&)))))sY   C	A-!C-A1	1C4A1	5CB+C+B/	/C2B/	3CC	Cc                     |                       |dddd                    }g d}g dg dg dg d	g d
g dg dg}t          ||          }t          j        ||           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/  )      r0  r:  r0  r:  ) r   r    r1  r    )r   r   r  r   r  )r   r   r1  r   r1  rC   )r8   r   rG   rJ   )r6   r/   
unicode_dfrD   rE  rb   s         r%   test_unicode_dta_118zTestStata.test_unicode_dta_118  s    ]]88D&'CT#U#UVV
HHHBBB<<<DDD444$$$""""""
 VW555
j(33333r$   c                     dddd ddg}t          |          }|j                            d          |_        t          j                    5 }|                    |dd           t          |          }|                    d	          }t          j        ||           d |d
<   |                    |dd
gd           t          |          }|                    d	          }t          j        ||           d d d            d S # 1 swxY w Y   d S )N  stringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringr   )mixednumberr   r_   Fr>   rE   r   r6  )rF   r	  r;   )	r   r7  r]   rG   rH   rI   r   fillnarJ   )r6   outputrL   r  rb   s        r%   test_mixed_string_strlz TestStata.test_mixed_string_strl  s]   *a88DTU:V:VW6"",,W55_ 	4$OODeSOAAA%%F}}R((H!&(333 #F7OOO%wi      %%F}}R((H!&(333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   B*DD
Dc                 .   dddd ddg}t          |          }d |d<   t          j                    5 }t          j        t
          d          5  |                    ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nnoner   )r<  r7  r   z Column `none` cannot be exportedrc  rx  )r   rG   rH   re  rf  rg  rI   )r6   r;   r9  rL   s       r%   test_all_none_exceptionz!TestStata.test_all_none_exception  s"   !Q//$!1L1LM6""v_ 	7$z1STTT 7 7g6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s5   B
A2&B
2A6	6B
9A6	:B

BBc                 *   d}t          |gdg          }t          j                    5 }d}d}t          j        t
          | d|           5  |                    |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nu9   Here is one __�__ Another one __·__ Another one __½__invalidrC   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\)|rc  )r   rG   rH   re  rf  UnicodeEncodeErrorrI   )r6   r;   contentr`   rL   msg1msg2s          r%   test_invalid_file_not_writtenz'TestStata.test_invalid_file_not_written  s-   My9+666_ 
	"$? 
/  1D9I9I49I9IJJJ " "D!!!" " " " " " " " " " " " " " "
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	" 
	"s5   %BA0$B0A4	4B7A4	8BBBc                    t          dgdz  dgdz  gddg          }t          j                    5 }|                    |ddg           t	          |d	          5 }|                                }d}|                    d
          |v sJ |                    d          |v sJ |                    d          d         dd         }|                    d          dd          D ]S}|                    d          d         }||                    d          dz            }	t          |          |	dz
  k    sJ T	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Npandasr   u   þâÑÐÅ§var_strvar_strlrC   r>   )r;   r	  r  zlatin-1zutf-8s   strlsr   r  s   GSO       )
r   rG   rH   rI   r  rw  encodesplitfindr   )
r6   r9  rL   r  rB  rb   gsosgsor  sizes
             r%   test_strl_latin1zTestStata.test_strl_latin1  s   Z!^n-12Y
<S
 
 
 _ 	0$OOD#ZLOIIIdD!! 	0V ++--)y11W<<<<w//7::::}}X..q1!B$7::f--abb1 0 0C))G,,R0Csxx00145Ds88tax/////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s6   *ECE9EE			EE		EE!$E!c                 f   d} |dddd          }t          j        t                    5 }t          |          }t	          |          dk    sJ |d         j        j        d         |k    sJ 	 d d d            n# 1 swxY w Y   t          dggdz  d	g
          }t          j        ||           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   r   u   Düsseldorfr  rC   )	rG   r'  UnicodeWarningr   r   messagerT  r   rJ   )r6   r/   rj  rL   r   r  rb   s          r%   test_encoding_latin1_118z"TestStata.test_encoding_latin1_118  s    + xfg/HII'77 	/1 &&Gq66S====Q4<$Q'3.....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/
 }o.4{mLLL
gx00000s   AA::A>A>c                    t          j         |dddd          d          5 }t          |          }d d d            n# 1 swxY w Y   |j        dk    sJ |j        d         dk    sJ |j        d	         d
k    sJ |j        d         dk    sJ |j        d         t          j        t          dddddd                    k    sJ d S )Nr(   r)   r*   zstata1_119.dta.gzr  )r   i  )r   r     AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)r   r{   gQ	@)r   r  r   )r   r   r  r|   r^  )r  r  r   shapery  rZ   	Timestampr   )r6   r/   r!  r`   s       r%   test_stata_119zTestStata.test_stata_119  s    YHT67,?@@$
 
 	 BB	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  x:%%%%wt}
****wt}$$$$wu~""""wt}XdBBB-O-O P PPPPPPPs   >AA)r?   r@   Nc                    t          j        g 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i}|d                             t          j                  |d<   t          j                    5 }t          |||dg|d||          }|	                                 t          |          }	|d                             d          |d<   |d                             |d                                       d          j                                        |d<   t          j        ||	           t!          |          5 }
|
j        |k    sJ |
                                |k    sJ 	 d d d            n# 1 swxY w Y   |                    ||d           t          |          }t          j        ||           d d d            d S # 1 swxY w Y   d S )N)r       β   ĉTr   )r   r   u   ᴬu   ᴀ relatively long ŝtring)r  r   u   ᴮr   )r   r   u   ᴰN)   År^  r_  strlsrC   	   ᴐᴬᵀr  u	   ᵈᵉᵊu   ᴎტჄႲႳႴႶႺzLong Stringsr   )r`  r^  r_  ra  rb  u   ᴅaᵀa-labelr^  labelu   æøåu   ŋot valid latin-1r   r   r   ra  F)r   r	  r   rF   r;   r  r   )r;   rF   )rZ   rR  r   r]   r^   r_   rG   rH   r   
write_filer   r8  replacer   r6  rJ   r   r   r   rI   )r6   r;   r   r)   r   r   r  rL   writerr  r`  reread_to_statas               r%   test_utf8_writerzTestStata.test_utf8_writer  s   n...===>>>###%%%
 0//
 
 
  [,#
 
 &
'h;OPPQ$Z&&rx00T
_ 	9$$%%Y /!)	 	 	F '--N M0044DM T
""<#566==jIIMXXZZ J !$777T"" Cf(J6666--//?BBBBBC C C C C C C C C C C C C C C MM$UMCCC(..O!$8885	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s7   CG(F<GF	GF	?GG #G c                 "   t          t          j        dt          j                            }t	          j                    5 }t          j        t          d          5  t          ||d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t	          j                    5 }t          j        t          d          5  t          ||d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	N)r   i  r  z"version must be either 118 or 119.rc  r>   rx  zYou must use version 119r?   )
r   r^   zerosr   rG   rH   re  rf  rg  r   )r6   r`   rL   s      r%   test_writer_118_exceptionsz$TestStata.test_writer_118_exceptionsP  s   rx
"':::;;_ 	7$z1UVVV 7 7b#66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 _ 	7$z1KLLL 7 7b#66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7sl   BA<0B<B 	 BB 	BBB1DC, D,C0	0D3C0	4DDDN)`__name__
__module____qualname__r8   r	   re  markparametrizerN   rc   rr   r   r   r   r   r   r   r   r
  r  r  r  r)  r7  r>  rF  rW  ra  rk  ru  ry  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r*  filterwarningsr8  r>  rG  r[  rh  rl  r  staticmethodr   rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r^   infr  r  r  r  r  r  r
  r  r  r  r"  r3  r:  r=  rE  rR  rW  slowr\  ri  rl  r#   r$   r%   r3   r3   :   s       4 4 40 0 0 [Y(B(B(BCC7 7 DC7 [Y(B(B(BCC
H 
H DC
H [VlL%ABB0 0 CB0"AT AT ATF [HHH 
0 
0 
0 [HHH )0 )0 )0XG G G&F &F &FPS S S    [Y(B(B(BCC  DC(  
+ + + [Y(B(B(BCC; ; DC;S S S6 [Y(B(B(BCC%S %S DC%SNS S S$ [Y(B(B(BCC[HHH S S  DCS [HHH 0 0 0  [Y(B(B(BCC7 7 DC7 [Y(B(B(BCC, , DC,@ @ @& [Y(B(B(BCC@ @ DC@"< < <S S SS S S(S S S/ / // / /S S S8S S S [Y(B(B(BCC[[3*55 @  @ 65 DC @D  4 4 4"( ( ($" " "> [V%O%O%OPP0 0 QP09
 9
 9
v4 4 4</ / /b [Y(B(B(BCC[F 2- 2-  DC2-h$ $ $< [Y(B(B(BCC- - DC-. [Vm]%CDD! ! ED!F [Vm]%CDD8 8 ED8  [Vm]%CDD	9 	9 ED	9 [	
 	
 	
   [[1a&11[3eT]CC[_udm<<! ! =< DC 21! &!B  y    \3 3 34 [	
 	
 	
  [[1a&11[3eT]CC[_udm<<"! "! =< DC 21 $"!H! ! !  [Y(B(B(BCC2 2 DC2. [Y(B(B(BCC  DC [Yc
33
 
 43
Q Q Q<2 2 2:( ( (( ( (>  $, , , " " " C C C8 [X'899	" 	" :9	"* * ** * * []T5M::
G 
G ;:
G* * * [EEE ( ( ("E2 E2 E2NP P PL L L( [Y(B(B(BCC* * DC*	* 	* 	*4 4 4"4 4 4* [Y(B(B(BCC7 7 DC7 [Y(B(B(BCC" " DC"0 0 0&1 1 1& [
Q 
Q 
Q [Y(8(8(899/9 /9 :9/9b7 7 7 7 7r$   r3   r;   )i   l   o   q   r=   c                     |ddd          }t           j                            |d          }t           j                            |d|  d          }t          |          }t          |          }t	          j        ||d           d S )	Nr(   r)   r*   stata-compat-118.dtazstata-compat-rg   Fr   )rh  rL   r  r   rG   rJ   )r;   r/   	data_baserefoldrb   old_dtas          r%   test_backward_compatr  Z  s    vw//I
',,y"8
9
9C
',,y"?'"?"?"?
@
@C#HooG'8??????r$   c                 @    | dddd          }t          |          5 }|                                j        rJ t          |j        t
          j                  rJ 	 d d d            n# 1 swxY w Y   t          |d          5 }t          |          5 }|                                j        rJ |j        |u sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |d          5 }t          j        |                                          5 }t          |          5 }|                                j        rJ |j        |u sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   r{  r  )r   rw  emptyrY   _path_or_bufr(   r  r  )r/   monkeypatch	file_pathr`  fpr  s         r%   test_direct_readr  d  s
   vw0FGGI 
Y		 ?6;;==&&&&f12:>>>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
i		 -"__ 	-{{}}****&",,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-- - - - - - - - - - - - - - - 
i		 2"Z		"" 	2cS!! 2V!;;==....*c111112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   =A((A,/A,C'C;CC	CC	CC"%C"9'F E;0'E$E;$E((E;+E(,E;/F;E?	?FE?	FFFc                 ^    | dddd          }t          j        t          d          5  t          |          }|                                 d d d            n# 1 swxY w Y   t          j        t
          d          5  |                                 d d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   r{  zwithout using a context managerrc  zis not part of the public API)rG   r'  ResourceWarningr   rw  FutureWarningclose)r/   r  r  s      r%   0test_statareader_warns_when_used_without_contextr  {  s:   vw0FGGI		#/
 
 
   ##
			               
	#-
 
 
   	


	                 s#   $AA!A B""B&)B&r<   use_dictTFinferc                 >   d}| r|r| }nt           |          }|d| z  }| }|rd}|rd| i}t          t          j                            dd          t          d                    }d	|j        _        t          j	        |          5 }|
                    |||
           | dk    rUt          j        |d          5 }	t          j        |	                                          }
d d d            n# 1 swxY w Y   n(| dk    rat!          j        |d          5 }	t          j        |	                    |	j        d                             }
d d d            n# 1 swxY w Y   n| dk    rt'          j        |          5 }t          j        |                    |                                d                                                             }
d d d            n# 1 swxY w Y   n<| dk    rTt-          j        |d          5 }	t          j        |	                                          }
d d d            n# 1 swxY w Y   n| dk    rit/          j        d          }|                    |d          5 }	t          j        |	                                          }
d d d            n# 1 swxY w Y   ns| dk    rit/          j        d          }|                    |d          5 }	t          j        |	                                          }
d d d            n# 1 swxY w Y   n| |}
t3          |
d	          }d d d            n# 1 swxY w Y   |                                }|j                            t          j                  |_        t          j        ||           d S )Nzdta_inferred_compression.dtar  r  methodr~   r   r  rC   r-   )r;   compressionr  r  r  rr   tarbz2zstd	zstandardxzlzmar  )r   r   r^   r  r  r  r-   r.   rG   rH   rI   r  r  r(   r  rw  zipfileZipFilefilelisttarfileextractfilegetnamesr  re  importorskipr   r\   r]   r_   rJ   )r  r;   r  r  	file_namefile_extcompression_argr`   rL   compr  r  r  r  r  rb   s                   r%   test_compressionr    s    /I $ 	>"HH0=H^^^#	!O "! 2#[1	29??2q))4::	>	>	>BBHM		#	# 3t
D'GGG&  4&& -$Z		,,- - - - - - - - - - - - - - -E!!s++ =tZ		$-*: ; ;<<= = = = = = = = = = = = = = =E!!d## KsZq0A B B G G I IJJK K K K K K K K K K K K K K KE!!$%% -Z		,,- - - - - - - - - - - - - - -F""&{33D4&& -$Z		,,- - - - - - - - - - - - - - -D  &v..D4&& -$Z		,,- - - - - - - - - - - - - - - BB'22213 3 3 3 3 3 3 3 3 3 3 3 3 3 34 wwyyH^**2844HN&(+++++s   4M ;'C."M .C2	2M 5C2	6 M 3E	M E	M E	M <AGM G	M !G	" M 'H5)M 5H9	9M <H9	=4M 1'J$M $J(	(M +J(	,4M  'LM L	M L	M  MMr  r  r  )Nr  r  c                 :   d| }d}t          t          j                            dd          t	          d                    }d|j        _        t          j        |          5 }| |d}|	                    ||	           | d
k    s|d
k    rt          j        |d          5 }t          |j                  dk    sJ |j        d         j        |k    sJ t          j        |                    |j        d                             }d d d            n# 1 swxY w Y   n|}t%          |d          }	d d d            n# 1 swxY w Y   |                                }
|
j                            t          j                  |
_        t          j        |	|
           d S )Ntest.ztest.dtar~   r   r  rC   r-   )r  archive_namer  r  r  r   r   r  )r   r^   r  r  r  r-   r.   rG   rH   rI   r  r  r   r  filenamer(   r  rw  r   r\   r]   r_   rJ   )r  r  r  r  r`   rL   r  zpr  r  rb   s              r%   test_compression_dictr    s    #""IL	29??2q))4::	>	>	>BBHM		#	# 
3t!'FF
Dk222U??h%//s++ 9r2;''1,,,,{1~.,>>>>ZA 7 7889 9 9 9 9 9 9 9 9 9 9 9 9 9 9
 BB'222
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 
3 wwyyH^**2844HN&(+++++s7   $>D>"A%DD>D	D>D	D>>EEc                    t          dt          g dd          i          }d|j        _        |                                }|j                            t          j                  |_        t          j	                    5 }|
                    ||            t          |dd	          5 }t          |          D ]U\  }}|                    d          }d|v sJ t          j        |j        |j        j        d|z  d|d
z   z                      V	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Ncats)r    r!   r    r!   r"   r   r  r-   rx  r   F)rp  rj  r   )r   r   r-   r.   r\   r]   r^   r_   rG   rH   rI   r   	enumerater   rV  r  ry  )r;   r`   rb   rL   r`  r  blocks          r%   test_chunked_categoricalr    s   	FF#<#<#<JOOOP	Q	QBBHMwwyyH^**2844HN			 d
D'***uEEE 	%f--  500&J 21q51A;3F G   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s7   ?*D4)A&DD4D 	 D4#D 	$D44D8;D8c           	      4    | dddd          }g d}t          |d          5 }t          j        t                    5  t	          |          D ]\  }}t          |j                  |d|z  d|dz   z           k    sJ |dk     rt          j        d	d
g          }nt          j        dgd          }t          j	        |j        j
        j        |           	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t                    5  t          |d          5 }|                                }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |          }t          j        ||           d S )Nr(   r)   r*   stata-dta-partially-labeled.dta)r    r!   r    r!   r   r   r  r   r    r!   r   r:  r  rP   )r   rG   r'  r
   r  r  r  rZ   r  rX  r   r   __next__r   rJ   )	r/   dta_filerE  r`  r  r  idxlarge_chunkr  s	            r%    test_chunked_categorical_partialr    s   xfg/PQQH&&&F	X	+	+	+ Fv'(DEE 	F 	F%f-- F F5EJ''6!a%!q1u+2E+FFFFFq55(C:..CC(C5	:::C%ejn&?EEEEF	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	FF F F F F F F F F F F F F F F 
	#$@	A	A , ,Q/// 	,6 //++K	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, , , , , , , , , , , , , , , !!F&+.....sk   C;BC$C;$C(	(C;+C(	,C;;C?C?E)1EE)E	E)E	E))E-0E-rp  )r  r   r  c                      | dddd          }t          j        t          d          5  t          ||          5  	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   r  zchunksize must be a positiverc  r  )re  rf  rg  r   )r/   rp  r  s      r%   test_iterator_errorsr    s    xfg/PQQH	z)G	H	H	H  Y777 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s3   A"A
A"
A	A"A	A""A&)A&c            
      f   ddgdgdz  z   t          fdt          d          D                       } t          j                    5 }|                     |d           t          j        g d	d
          }t          |d          5 }t          |          D ]g\  }}t          d          D ]'}t          j	        |j
        |         j        |           (t          j        || j        |dz  |dz   dz                      h	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc_labelb_labela_labelr  c                 D    i | ]}d | t          j        d          S )r   Tr   )rZ   rR  )r   r  rE  s     r%   r  z.test_iterator_value_labels.<locals>.<dictcomp>  s0    VVVI!IIr~fdCCCVVVr$   r   Fr  )r  r  r  r   r  r  r  r   )r   rX   rG   rH   rI   rZ   r  r   r  rX  dtypesr   rJ   ry  )r`   rL   rb   r`  r  r  r  rE  s          @r%   test_iterator_value_labelsr    s   #ykC&77F	VVVVUSTXXVVV	W	WB			 Od
De,,,8===XNNN,,, 	O%f-- O O5q P PA)%,q/*DhOOOO%eRWQWA}5L-MNNNNO	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	OO O O O O O O O O O O O O O O O O Os8   AD&	A8DD&D	D&D	D&&D*-D*c            	         t          t          d t          d          D                       t          d t          d          D                       ggddg          } t          j                    5 }t          j        t          d	          5  |                     |d
           d d d            n# 1 swxY w Y   t          |          }t          t          j        t          j        gddg          }t          j        |j        |           |j        d         | j        d         k    sJ |j        d         t          | j        d                   k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nc              3       K   | ]	}d |z  V  
dS r   Nr#   r  s     r%   	<genexpr>z&test_precision_loss.<locals>.<genexpr>  s&      &&qad&&&&&&r$   <   c              3       K   | ]	}d |z  V  
dS r  r#   r  s     r%   r  z&test_precision_loss.<locals>.<genexpr>  s&      +D+DQAqD+D+D+D+D+D+Dr$   4   biglittlerC   z&Column converted from int64 to float64rc  Fr  )r-   )r   r  )r   r  )r   sumrX   rG   rH   r'  r   rI   r   r   r^   r:  rV  r  r  float)r`   rL   r  expected_dts       r%   test_precision_lossr    s   	
&&E"II&&&
&
&+D+D%))+D+D+D(D(D	EF!
 
 
B 
		 	?d'!)Q
 
 
 	1 	1 KK%K000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 D!!bj"*5eX=NOOO
v}k:::z+&"&*=====z(#uRVH-='>'>>>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s7   2E&B2&E&2B6	6E&9B6	:BE&&E*-E*c                    t          g dg dgddgg d          }d|j        _        t          j                    5 }|                    ||            t          || d	          }t          j        ||           t          j        ||           5 }t          j
        |                                          }d d d            n# 1 swxY w Y   t          |d
          }t          j        ||           d d d            d S # 1 swxY w Y   d S )Ng~Ϛ?g9DܜJ?g>D)?g.4i(@g33333@g̤Ar  r  XYZr  r-   r  r  r  r  )r   r-   r.   rG   rH   rI   r   rJ   decompress_filer(   r  rw  )r  r`   rL   r  fhcontentss         r%   test_compression_roundtripr  !  s   		'	'	')G)G)GHCj
 
 
B
 BHM			 	*d
Dk222DkWMMM
b&))) k22 	-bz"'')),,H	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-H888
b&)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s6   AD'C7DC	D
C	)DDDto_infer
read_inferc                 l   | }t           |         }d| }t          g dg dgddgg d          }d|j        _        |rd	n|}|rd	n|}t	          j        |          5 }	|                    |	|
           t          |	|d          }
t	          j        |
|           d d d            d S # 1 swxY w Y   d S )Nr  r  r  r  r  r  r  r-   r  r  r  )	r   r   r-   r.   rG   rH   rI   r   rJ   )compression_onlyr  r  r  extr  r`   to_compressionread_compressionrL   r  s              r%   test_stata_compressionr  5  s,    #K
#K
0Cs}}H		'	'	')G)G)GHCj
 
 
B
 BHM (9WWkN",=ww+		"	" *d
Dn555D.>'RRR
fb)))* * * * * * * * * * * * * * * * * *s   ?B))B-0B-c            	      (   t          g dddt          j        dt          j        gg dt          j        g d          d          } t          j                    5 }dd	d
ddd	dd}i |dddddi}t          || |          }|                                 t          |          5 }|
                                }||k    sJ 	 d d d            n# 1 swxY w Y   d}t          j        t          |          5  ddddi}t          || |           d d d            n# 1 swxY w Y   d}t          j        t          |          5  ddddddi}t          || |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N)r   r   r   r   r   r   r  g      "@)r{   r{   r   rz   r~   )r  r  r  r  r  )fully_labelledpartially_labelledr  r  r   r   r   rd  )r   r  )r  r  r  r  r  r  )r   r   r   r  zCCan't create value labels for notY, it wasn't found in the dataset.rc  notYr  r  )r{   rz   zUCan't create value labels for Z, value labels can only be applied to numeric columns.r    r  r   )r   r^   rn   rZ   rR  rG   rH   r   re  r   r  re  rf  r}  rg  )r)   rL   r  rb   rg  r`  reader_value_labelsrj  s           r%   !test_non_categorical_value_labelsr  M  s   -oo#&RVS"&"A!!! 9 9 9::		
 	
 D 
		 ?d"'Eg>>(-E":":
 
 ClBCSSS)A)ABBT4lCCC 	3&"("5"5"7"7&(22222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 T]83/// 	? 	?"X$>$>?Ld>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?
6 	 ]:S111 	? 	?SSSS!A!ABLd>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?/? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s   AF'CFC	FC	 F9DFD#	#F&D#	' FE/#F/E3	3F6E3	7FFFc                     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          j                    5 }t          j        t                    5  |                     ||           d d d            n# 1 swxY w Y   t          |          5 }|                                }||k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N)r   r   r   r   rP   rz   )rz   rz   r   r   rz   rz   )r   rP   rP   r   r   r   r+  )z	invalid~!	6_invalid&invalid_name_longer_than_32_characters	aggregater   r   r  r  r  r   r   )rz   r   rP   r   r   r   )	invalid__
_6_invalid invalid_name_longer_than_32_char
_aggregate_1__2_r  )r   rG   rH   r'  r   rI   r   r  )r)   r  rb   rL   r`  r  s         r%   0test_non_categorical_value_label_name_conversionr  s  s8   ++++++6H6H6H+++&&&	
 	
 D "h//!h//6=&2I2I[G L "h//"x0007F,C,C&kg, H 
		 3d'(9:: 	; 	;MM$\M:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;  	3&"("5"5"7"7&(22222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3	3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3sZ   C77BC7B	C7"B	#C75CC7C#	#C7&C#	'C77C;>C;c                     dddddi} t          dg di          }t          j                    5 }|                    ||            t	          |d          5 }|                                }d d d            n# 1 swxY w Y   || k    sJ d}d	d
                    dg          z   }d| d| d
}t          j        t          |          5  t          |d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrepeated_labelsTenzMore than ten)r~   ry   (   )r~   r~   ry   ry   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:
rc  T)r   rG   rH   rI   r   r  r  re  rf  rg  r   )r  r)   rL   r`  r  r   repeatsrj  s           r%   ;test_non_categorical_value_label_convert_categoricals_errorr    s    	?PPL 777	
 D 
		 8dd666E::: 	8f"("5"5"7"7	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8"l2222!DII.?$@$@@

 
 	
 
 
 ]:S111 	8 	8t$7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8+8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8sZ   )DA9-D9A=	=D A=	A
DC)D)C-	-D0C-	1DDDr  c                 $   t          t          g d          t          dt          j        t          j        g| j                  t          g d          d          }|j        j        j        j        }|                    dd          }|dk    rd	}n|d
k    rd}t          j
        |         }t          |          }t          d||gt          d          }t          g dd          }t          j                    5 }|                    |d|           t          |d          }	t          j        |j        |	j                   t          j        |	j        |           t          j        |	j        |           d d d            d S # 1 swxY w Y   d S )Nr  r   r  )r    r!   Nr   ur   r9  r_   boolr   r!   r  )r    r!   r   r"   rf  FrE   Tr  )r   r   rZ   NAr.   r!   r  numpy_dtyperf  r   BASE_MISSING_VALUESr   rG   rH   rI   r   rV  r    r"   )
r  r;   r`   
dtype_namevaluer  
expected_b
expected_crL   r  s
             r%   test_nullable_supportr    s     
((BE25)<<<((())	
 	

 
B ',J##C,,JW

	v		
1*=E
E
"
"CCV#>>>JS111J			 5d
DeW===D$777
rtVX...
vx444
vx4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   ;A=FF	F	)Dr  r   r  r  r(   rh  r  r  r   r  numpyr^   re  pandas.core.dtypes.commonr   rG  rZ   pandas._testing_testingrG   pandas.core.framer   r    pandas.tests.io.test_compressionr   pandas.io.parsersr	   pandas.io.statar
   r   r   r   r   r   r   r   r   fixturer&   r1   r3   rp  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  BooleanDtype	Int8Dtype
Int16Dtype
Int32Dtype
Int64Dtype
UInt8DtypeUInt16DtypeUInt32DtypeUInt64Dtyper  r#   r$   r%   <module>r     s   



            				 				          : : : : : :                  G F F F F F & & & & & &
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
      ]7 ]7 ]7 ]7 ]7 ]7 ]7 ]7@9 $=$=$=>>@ @ ?>@2 2 2.   $>$>$>??dE]334-00,, ,, 10 43 @?,,^ E7#344%9%9%9::, , ;: 54,, $>$>$>??  @?$/ / /& &677  87O O O? ? ?"* * *( dE]33e}55* * 65 43*,#? #? #?L"3 "3 "3J#8 #8 #8L $>$>$>??









 5 5  @?5 5 5r$   