
    bMhj                    H   d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z
d dlZd dlmc mZ d dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ ej%        d             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+ ZDdS ),    N)datetime)CategoricalDtype)	DataFrameSeries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        Z/var/www/html/test/jupyter/venv/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$   r0   r0   1   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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(d0 Z)d1 Z*d2 Z+d3 Z,ej                            dg d4          d5             Z-d6 Z.d7 Z/d8 Z0ej                            dg d          ej        1                    d9          d:                         Z2d; Z3ej                            dg d          d<             Z4ej                            dd=d>g          d?             Z5ej                            dd@dAg          dB             Z6ej                            dd=d>g          dC             Z7ej        1                    dD          ej                            dg dE          ej                            dFdGdHg          ej                            dIdJdKg          ej                            dLdJdKg          dM                                                             Z8e9dNe:dOe:fdP            Z;dQ Z<ej        1                    dD          ej                            dg dR          ej                            dFdGdHg          ej                            dIdJdKg          ej                            dLdJdKg          dS                                                             Z=dT Z>ej                            dg d          dU             Z?ej                            dg d          dV             Z@ej                            ddWdXg          dY             ZAdZ ZBd[ ZCd\ ZDd] ZEd^ ZFd_ ZGd` ZHda ZIej                            dbeJjK        eJjK         g          dc             ZLdd ZMde ZNej                            dfdKdJg          dg             ZOdh ZPej                            dig dj          dk             ZQdl ZRdm ZSdn ZTej                            dg d          do             ZUdp ZVdq ZWdr ZXej                            dg d          ds             ZYej                            dg d          dt             ZZdu Z[dv Z\ej        j]        dw             Z^ej        1                    dx          ej                            dg dy          dz                         Z_d{ Z`ej                            d|d} eja        d~ ebjc        d~                    g          d             ZddS )	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   r4   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)r5   r:   empty_dspath	empty_ds2s        r$   test_read_empty_dtazTestStata.test_read_empty_dtaA   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                 l   t          t          j        dgt          j                  t          j        dgt          j                  t          j        dgt          j                  t          j        dgt          j                  t          j        dgt          j                  t          j        dgt          j                  t          j        dgt          j	                  t          j        dgt          j
                  t          j        dgt          j                  t          j        dgt          j                  d
          }|                                }|d                             t          j                  |d<   |d                             t          j                  |d<   |d                             t          j                  |d<   |d                             t          j                  |d<   |d                             t          j                  |d<   t          j                    5 }|                    |d	|
           t%          |          }t          j        ||           t          j        |j        |j                   d d d            d S # 1 swxY w Y   d S )Nr   dtype)
i8i16i32i64u8u16u32u64f32f64rU   rV   rW   rX   rT   FrD   )r   nparrayint8int16int32int64uint8uint16uint32uint64float32float64copyastyperF   rG   rH   r   rI   assert_series_equaldtypes)r5   r:   empty_df_typedexpectedrK   empty_rereads         r$   test_read_empty_dta_with_dtypesz)TestStata.test_read_empty_dta_with_dtypesJ   st   
 #hs"'222x28444x28444x28444hs"(333x29555x29555x29555x2:666x2:666 
 
 "&&((!$..rw77"5/00::"5/00::"5/00::"5/00:: _ 	I$##DeW#MMM%d++L!(L999"8?L4GHHH		I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is    AJ))J-0J-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    FrD   r   Tcheck_index_type)r   rangerF   rG   rH   r   
isinstancer,   pd
RangeIndexrg   rh   r[   r_   rI   )r5   r:   dfrK   read_dfrl   s         r$   test_read_index_col_nonez"TestStata.test_read_index_col_nonem   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-r6   
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_missrB   r   )r7   r   r[   nanrh   re   rF   rI   r5   r6   r.   parsedrl   s        r$   test_read_dta1zTestStata.test_read_dta1z   s    xfg$}}}==t$$ fbfbfbfbf56WWW
 
 
 "*,!7!>!>rz!J!J
fh/////r#   c                 z   t          j        t          dddddd          dt          dd	d          t          dd	d
          t          dd	d	          t          ddd	          t          dd	d	          t          dd	d	          ft          dddddd          dt          ddd          t          ddd          t          dd	d	          t          ddd	          t          dd	d	          t          dd	d	          ft          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        fgg d          }|d                             d          |d<    |dddd          } |dddd           } |dddd!          }t          j        t                    5  | 	                    |          }d d d            n# 1 swxY w Y   t          j        t                    5  | 	                    |          }d d d            n# 1 swxY w Y   t          j        t                    5  | 	                    |          }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_daterB   r   Or'   r(   r)   zstata2_114.dtazstata2_115.dtazstata2_117.dtaTcheck_datetimelike_compat)r   from_recordsr   r{   NaTrh   rF   assert_produces_warningUserWarningr7   rI   )	r5   r.   rl   path1path2path3r0   
parsed_115
parsed_117s	            r$   test_read_dta2zTestStata.test_read_dta2   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vw0@AAvw0@AAvw0@AA'44 	. 	.u--J	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.'44 	. 	.u--J	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.'44 	. 	.u--J	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	j(dSSSS
j(dSSSS
j(dSSSSSSs6   =GG#&G#H%%H),H)	I++I/2I/)
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)   r   
stata3.csvyearquarter)	r7   r   rh   r[   re   r^   r]   rF   rI   r   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)   r   )onetenr   r   r   )twoniner   r   r   )threeeightr   r   r   )foursevenr   r   r   fivesixrp   r   r   r   r   r   r   r   r   r   	   r   r   )fully_labeledfully_labeled2incompletely_labeledlabeled_with_missingsfloat_labelledrB   r   r   categoryTorderedinplace)r7   r   r   r[   r   rg   asarraynotnarh   _valuesset_categories
categoriesrenamerF   rI   )	r5   r6   r.   r   rl   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)xyzrB   Fcheck_dtype)r7   r   r   rF   rI   )r5   r.   r   rl   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   LongsrB   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)r7   rh   r   r   r[   r   re   rC   rF   assert_almost_equalr   variable_labelsassert_dict_equal
data_label)r5   r.   
parsed_118rl   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 )Nr   rB   r,   r*   )r   r[   r   r,   r-   rF   rG   rH   r7   rg   rh   r_   rI   	set_index)r5   originalrK   written_and_read_againrl   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*   Frw   )r   r,   r-   rh   r[   r_   rF   rG   rH   r7   rI   r	  )r5   r.   r
  rK   r  s        r$   test_write_dta6zTestStata.test_write_dta6L  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|           |                     |          }d d d            n# 1 swxY w Y   |                                }|r|d                             d          |d<   t          j        |                    d	          |d           d S )Nstringobjectr   皙?
2003-12-25)r  r  integerfloatingr   r(   rC   rO   r,   r  r   tcr+   r:   strFrw   )r   r[   
datetime64r   r  r,   r-   rh   r_   rF   rG   rH   r7   rg   rI   r	  )r5   r:   using_infer_stringr
  rK   r  rl   s          r$   test_read_write_dta10zTestStata.test_read_write_dta10\  s   Xq#r}\/J/JKLKKK
 
 
 $HX$6fEEE%!..rx88&y188BB_ 	9$d:t2DgVVV%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 ==?? 	B!)(!3!:!:5!A!AHX 	",,W55"	
 	
 	
 	
 	
 	
s   ;0C77C;>C;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   r   ABrB   )	rF   rG   r   r[   randomdefault_rngstandard_normallistrH   )r5   rK   r}   s      r$   test_stata_doc_examplesz!TestStata.test_stata_doc_examplesv  s    _ 	$	%%a((88AA4PT::  B KK		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A$BB	B	c                    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 )	Nr   )rp   r   abcdrB   r   r!   FrE   )r   r[   r   r!  r"  r#  r   locrg   rF   rG   rH   rI   )r5   r}   df_copyrK   s       r$   test_write_preserves_originalz'TestStata.test_write_preserves_original}  s     I!!!$$44V<<d6ll
 
 
  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   B22B69B6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   FrD   )r   	kreis1849rz   r  rF   rG   rH   rI   )	r5   r:   r.   rawencodedresultrl   rK   reread_encodeds	            r$   test_encodingzTestStata.test_encoding  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______rB   )r3  b_d_8number astringwithmorethan32characters_r,   r*   r   r,   r-   rh   r[   r_   rF   rG   r   r
   rH   r7   rg   rI   r	  )r5   r
  	formattedrK   r  rl   s         r$   test_read_write_dta11zTestStata.test_read_write_dta11  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        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 )Nr   r   r   r   rp   r   )!astringwithmorethan32characters_1!astringwithmorethan32characters_2+-shortdeleterB   )r8   _0astringwithmorethan32character__1__short_deleter,   r  r9  )r5   r:   r
  r:  rK   r  rl   s          r$   test_read_write_dta12zTestStata.test_read_write_dta12  s      

 

 

    

 

 

	  '	$$RX..	_ 	9$+,=>> M M!!$dG!LLLM M M M M M M M M M M M M M M &*]]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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   rO   i   l        )r^   r_   r`   r,   r`   )r   r[   r^   r_   r`   r   r,   r-   rh   rf   rF   rG   rH   r7   rg   rI   r	  )	r5   s1s2s3r
  r:  rK   r  rl   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)   r   r,   date_tdtdr  )r7   r,   r-   rF   rI   rG   rH   rg   rh   r[   r_   r	  )	r5   r6   r0   r:   r.   r   rK   r  rl   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_rT  z%Y-%m-%dargsr   )r   rh   r[   r]   r^   r_   re   rf   applyr   strptimer7   rF   rI   )r5   r6   r.   rl   r   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   variablerB     r            zThis is a data file.)
time_stampr  r:   z29 Feb 2000 14:21)r   r   rF   rG   rH   r   ro  r  )r5   r:   r
  ro  r  rK   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 )Nri  rj  rB   z01 Jan 2000, 00:00:00z"time_stamp should be datetime typematch)ro  r:   )
r   rF   rG   pytestraises
ValueErrorrH   osrK   isfile)r5   r:   r
  ro  rK   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>6  s    S1YY r#   )r   r[   reshapearanger,   r-   rF   rG   r   r
   rH   r7   r	  r#  rC   maprg   rh   r_   rI   )r5   r
  rK   r  rC   convert_col_namerl   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   rO   r   r   rK  rL  r,   r:   )r   r[   r  re   rf   r   r   r,   r-   rF   rG   rH   r7   r	  rg   rh   r_   rI   )r5   r:   rK  rL  r
  rK   r  rl   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   rB   index_not_writtenFr'  rs  )r   r[   r  r  r,   r-   rF   rG   rH   r7   ru  rv  KeyError)r5   rC   r
  rK   r  s        r$   test_no_indexzTestStata.test_no_indexO  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          @rO   r  r,   )r   r[   rf   r   r,   r-   rF   rG   rH   r7   rg   rh   r_   rI   r	  )r5   rK  rL  r
  rK   r  rl   s          r$   test_string_no_dateszTestStata.test_string_no_datesY  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   rO      i  l    )s0rK  rL  rM  r,   rK  rL  rM  )r   r[   r]   r^   r`   r   r,   r-   rF   rG   r   r   rH   r7   rg   r_   rf   rh   rI   r	  )	r5   r  rK  rL  rM  r
  rK   r  modifieds	            r$   test_large_value_conversionz%TestStata.test_large_value_conversionf  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 )Nr   r   r   r   r   r   r,   r   r  r*   _0)r   r   r,   r-   rF   rG   r   r
   rH   r7   rg   rC   rh   r[   r_   rI   r	  )r5   r
  rK   r  r  s        r$   test_dates_invalid_columnz#TestStata.test_dates_invalid_columnz  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   rC   rh   r[   r^   r]   re   rF   rI   head)r5   r.   dpathr}   df0s        r$   test_105zTestStata.test_105  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)r5   r.   r  rp  s       r$   test_value_labels_old_formatz&TestStata.test_value_labels_old_format  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  rU  twrF   tqthtyc                     i | ]}||S r"   r"   .0r!   s     r$   
<dictcomp>z6TestStata.test_date_export_formats.<locals>.<dictcomp>  s    ---q!---r#   r   r   r   r   r   rB   r,   r   r   r   r   r   rP   r-   r,   rC   r*   )r   lenr   r,   r-   r{   Indexr[   r_   rF   rG   rH   r7   rI   r	  )	r5   rC   conversionsr(   r
  expected_valuesrl   rK   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foorB   r   r   r   r,   r  r  )r   r{   r  r[   r_   rF   rG   rH   r7   rI   r	  )r5   r
  rl   rK   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   TrO   )r   r   d   )r   r      )r   r   i  )r   r   i  )r   r   i)r   r   l    )r  rK  rL  rM  s4s5s6r,   )r  r:   )r   r[   bool_ra   rb   rc   r   r,   r-   rg   rh   r_   r]   r^   rf   ziprC   rF   rG   rH   r7   r	  rI   )r5   r  r:   r  rK  rL  rM  r  r  r  r
  rl   expected_typesr!   trK   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)	r5   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   rF   rG   rH   r   _ensure_openr  _varlist_fmtlist_typlistr~  )
r5   str_lensr  str_lenr
  rK   srrj  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\.rs  )	r   r  r   ru  rv  rw  rF   rG   rH   )r5   r  r  r  r
  rz  rK   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 ]J}||         d	         }t          d
          D ]*}	t          |d	z   |	z             }
|
j	        ||	         k    sJ +Kt          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   r`  rB   c                 8    g | ]}d t          d|z             z   S ).a   )chrr  is     r$   
<listcomp>z:TestStata.test_missing_value_generator.<locals>.<listcomp>%  s'    @@@3R!V,@@@r#      r   r  r      z<fs      s     z.zz<ds         s        )r   rF   rG   rH   r   VALID_RANGEry   insertr   r  structunpack)r5   typesr}   rK   r  valid_ranger  r  offsetr  vals              r$   test_missing_value_generatorz&TestStata.test_missing_value_generator  sq   w
333_ 	.$KKT"" .c!o. . . . . . . . . . . . . . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. A@eBii@@@q#&&& 	8 	8A ^A&F2YY 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>D  s/    KKKQ$T!q2v,%788KKKr#   rp   rB   r'   r(   r)   r   Tconvert_missing)
r   sortedMISSING_VALUESr  ry   appendr   r   rF   rI   )r5   r6   r.   rC   smvr(   rowrl   r   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  rk  '  r      )r   r   r   r   r   r   )r   r   r   r      r   )r   r   r   r   r   r   )r   r   ;   r   r   r   r   r   r   r   )date_tcrT  date_twdate_tmdate_tqdate_thdate_tyr  r      r   r   r   r   rp   r     r  i  )rC   rP   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>{  s"    6661af666r#   r,   r*   )r  ry   r  r   r{   r   r   r  r   rF   rI   rG   r,   r-   rH   r7   r	  rh   r[   r_   )r5   r.   yrmoddhrmmssrl   r   monthdayhourminutesecondr  r  rC   r   r   date_conversionrK   r  s                          r$   test_big_dateszTestStata.test_big_datesM  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)   r\  r]  r^  r_  r`  ra  rT  rb  rc  stata6_117.dtaTr*   F)r+   preserve_dtypes)r   rh   r[   r]   r^   r_   re   rf   re  r   rf  r   rF   rI   )r5   r.   rl   no_conversion
conversions        r$   test_dtype_conversionzTestStata.test_dtype_conversion  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)   r\  r]  r^  r_  r`  ra  rT  rb  rc  )r]  r^  r_  r1  T)r+   rC   )r^  r_  r]  z"columns contains duplicate entriesrs  zEThe following columns were not found in the Stata data set: not_found)r]  r^  r_  	not_found)r   rh   r[   r]   r^   r_   re   rf   re  r   rf  r   rF   rI   ru  rv  rw  )r5   r.   rl   rC   dropped	reorderedrz  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   r   r   r   r   r   r   r   )r   r   r   r   r   	unlabeledrB   c                 F    g | ]}|                              d           S r   rh   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   r  )r   r   r[   r   rg   r{   concatr,   	set_namesrh   r_   re  r  r   
as_orderedr   r   r   rF   rG   rH   r7   r	  rI   )
r5   r:   rl   r   r   r   rK   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_longrB   c                 F    g | ]}|                              d           S r>  r?  r@  s     r$   r  zBTestStata.test_categorical_warnings_and_errors.<locals>.<listcomp>  rA  r#   r   rB  zbStata value labels for a single variable must have a combined length less than 32,000 characters\.rs  c                 F    g | ]}|                              d           S r>  r?  r@  s     r$   r  zBTestStata.test_categorical_warnings_and_errors.<locals>.<listcomp>&  rA  r#   )r   r   r{   rD  rF   rG   ru  rv  rw  rH   r   r   )r5   rK   rz  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_labelsrB   c                 F    g | ]}|                              d           S r>  r?  r@  s     r$   r  zHTestStata.test_categorical_with_stata_missing_values.<locals>.<listcomp>3  rA  r#   r   rB  r,   r  Tr   )ry   r  r[   r   r   r   r{   rD  r,   r-   rF   rG   rH   r7   r	  rg   r   remove_unused_categoriesr   r   rh   r_   rI   )r5   r:   valuesrK   r  rG  rl   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        t"                    rjt          j        ||         j        j        |	|         j        j                   t          j        ||         j        j        |	|         j        j                   d S )NTr   r   r    r!   rJ  erp   reverser  noorder)r   r   r   r   r   r  r   float_missing)r   rJ  r\  )r   r   r   r  r  Fnolabel)r   r  r   r   g      @int32_mixed)rJ  r   r\  r    r   r   rO   r'   r(   r)   r   )r[   r  r\   r  r{   Categorical
from_codesr   re   r   	from_dictdictr   rF   rI   rz   rP   r   ri   r   codesassert_index_equalr   )
r5   r6   r.   rl   colsis_catr   r  rf  r   s
             r$   test_categorical_orderz TestStata.test_categorical_orderE  sL   
 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(3--/?@@ &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)   r   srhfirst)na_position)
r  r  r   r   r   r   r   r   r   r   )PoorFairGoodz	Very good	ExcellentT)rf  r   r   r-   )r   sort_valuesr{   r|   r  r,   rb  rc  r   rF   ri   )r5   r6   r.   r   rf  r   r   rl   s           r$   test_categorical_sortingz"TestStata.test_categorical_sortingi  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 ]K}t          ||         j        t                    s#||         j        j        sJ ||         j        j        rJ Ld S )Nr'   r(   r)   r   F)order_categoricals)r   rz   rP   r   r   r   )r5   r6   r.   r   parsed_unorderedr   s         r$   test_categorical_orderingz#TestStata.test_categorical_orderingz  s    xfg$}}}==D!!%duEEE 	9 	9CfSk/1ABB #;?****',088888		9 	9r#   zignore::UserWarning)r   
stata2_117r   r   rR  rZ  
stata7_117r  
stata9_117rY  rl  	chunksizer   r   convert_categoricalsFTr+   c                     |ddd| d          }t          |||          }t          |d||          5 }d}	t          d	          D ]}
	 |                    |          }n# t          $ r Y  n_w xY w|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)   r   r  r+   T)iteratorr  r+   r   rp   Fr   r   	r   ry   readStopIterationilocrg   _convert_categoricalrF   rI   r5   r6   r  r  r+   r.   fnamer   itrposr  chunk
from_frames                r$   test_read_chunks_117zTestStata.test_read_chunks_117  s   . vw4>>!5'
 
 

 !5'	
 
 
 	!
 C1XX 
! 
!HHY//EE$   EE#[sY)>)ABGGII
!66zBB
%5TX    y #	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!6   CA"!C"
A0,C/A00ACC"Cr  returnc                    | D ]}| |         }t          |j        t                    r|j                                        }|j        j        t          k    r?t          j        	                    |j        j                  }|
                    |          }n\|j        j        dk    rLt          |j                  dk    r4|j                            t                    }|
                    |          }|| |<   | S )zX
        Emulate the categorical casting behavior we expect from roundtripping.
        r  r   )rz   rP   r   r   rT  r   r  r{   r  _with_inferr   r  rh   )r  r   serr   r   s        r$   r  zTestStata._convert_categorical  s    
  	& 	&CS/C#)%566 	&k::<<>'611!#!5!5cn6L!M!MJ,,Z88CC^)X55#cn:M:MQR:R:R!$!6!6v!>!>J,,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r  rp   r   r  r   )	r   r  rF   rI   r  r#  	get_chunkr{   rD  )r5   r.   r  r   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   rQ  rY  
stata7_115r  
stata9_115rX  rk  c                     |ddd| d          }t          |||          }t          |d||          5 }d}	t          d	          D ]}
	 |                    |          }n# t          $ r Y  n_w xY w|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)   r   r  T)r  r+   r  r   rp   Fr  r  r  s                r$   test_read_chunks_115zTestStata.test_read_chunks_115  s   , vw4>> !5'
 
 
 '!5	
 
 
 	!
 C1XX 
! 
!HHY//EE$   EE#[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   rB   Tr  r   rp   Fr   )r   ry   r  r  rF   rI   )r5   r.   r  rC   r  r   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-   rF   rG   rH   r   r   )r5   r:   r%   r   rK   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 fewerrs  r  r,   r-   rF   rG   ru  rv  rw  rH   )r5   r:   r%   r   rK   rz  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 charactersrs  r  r  )r5   r:   r%   r   rK   s        r$   $test_invalid_variable_label_encodingz.TestStata.test_invalid_variable_label_encodingJ  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-1rs  )r   zqA very, very, very long variable label that is too long for Stata which means that it has more than 80 charactersr  )joinru  rv  rw  rF   rG   rH   )r5   r%   rU  variable_labels_utf8rz  rK   variable_labels_longs          r$    test_write_variable_label_errorsz*TestStata.test_write_variable_label_errorsW  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   .    rn  R    r   r     r   r  r   applebananacherrynumsstrsdatesFr'  Tr*   r  r  )rE   r+   )dtr   r   rF   rG   rH   r   rI   rC   tolistr,   )r5   r  r
  rK   rereaddirect	dates_idxs          r$   test_default_date_conversionz&TestStata.test_default_date_conversionu  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 supportedrs  )r   ru  rv  NotImplementedErrorrF   rG   rH   )r5   r
  rz  rK   s       r$   test_unsupported_typezTestStata.test_unsupported_type  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  rn  r  r  r   r   r  r  r  r  zFormat %tC not implementedrs  r  tCr*   z1-1-1990r   zAsia/Hong_Kong)periodstzzData type datetime64)r  r   r   ru  rv  r  rF   rG   rH   r{   
date_range)r5   r  r
  rz  rK   s        r$   test_unsupported_datetypez#TestStata.test_unsupported_datetype  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
rs  r'   r(   r)   zstata15.dtaTr  )ru  rv  rw  r   )r5   r.   rz  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!   rJ  r\  r   gr  r  r  )r   r   wr   )r   r   r[   r   rF   rI   )r5   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 \(.+\)rs  )r   r[   finfodoubleepsmaxru  rv  rw  rF   rG   rH   )r5   r}   rz  rK   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  re   r  r  r,   r-   rh   rF   rG   rH   r   rf   rg   r_   rI   r	  )r5   r
  r   rK   r  rl   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.rs  )r   ru  rv  rw  rF   rG   rH   )r5   r  r}   rz  rK   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          dt          j        d                              d          z  t	          j        t          d                    t	          j        d t          d          D                                 }d|j        _	        d	 }t          j        |j        |          }t          j        ||           d S )
Nr  rQ     r   ABCDc                     g | ]}d | S zi-r"   r  s     r$   r  z/TestStata.test_path_pathlib.<locals>.<listcomp>      888HHH888r#   r  rC   r,   r,   c                 F    t          |                               d          S Nr,   r   r	  r  s    r$   r  z-TestStata.test_path_pathlib.<locals>.<lambda>      :a==227;; r#   )r   r[   r  r  r{   r  r#  ry   r,   r-   rF   round_trip_pathlibrH   rI   r5   r}   rp  r/  s       r$   test_path_pathlibzTestStata.test_path_pathlib  s    ")C..((111HT&\\**(88eBii88899
 
 

  ;;&r{F;;
b&)))))r#   c           
         t          dt          j        d                              d          z  t	          j        t          d                    t	          j        d t          d          D                                 }d|j        _	        d	 }t          j        |j        |          }t          j        ||           d S )
Nr  rQ  r  r  c                     g | ]}d | S r  r"   r  s     r$   r  z8TestStata.test_pickle_path_localpath.<locals>.<listcomp>"  r  r#   r  r  r,   c                 F    t          |                               d          S r  r  r  s    r$   r  z6TestStata.test_pickle_path_localpath.<locals>.<lambda>%  r  r#   )r   r[   r  r  r{   r  r#  ry   r,   r-   rF   round_trip_localpathrH   rI   r  s       r$   test_pickle_path_localpathz$TestStata.test_pickle_path_localpath  s    ")C..((111HT&\\**(88eBii88899
 
 

  ;;(f==
b&)))))r#   rE   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   rh   rF   rG   rH   r   r  )r5   rE   rJ  r}   rK   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          dt          j        d                              d          z  t	          j        t          d                    t	          j        d t          d          D                                 }d|j        _	        t          j                    5 }|                    |           t          |d	          }d d d            n# 1 swxY w Y   t          j        ||           d S )
Nr  rQ  r  r  c                     g | ]}d | S r  r"   r  s     r$   r  z,TestStata.test_set_index.<locals>.<listcomp>;  r  r#   r  r  r,   	index_col)r   r[   r  r  r{   r  r#  ry   r,   r-   rF   rG   rH   r   rI   )r5   r}   rK   r  s       r$   test_set_indexzTestStata.test_set_index6  s   ")C..((111HT&\\**(88eBii88899
 
 

  _ 	9$KK888F	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	b&)))))s   "'CCC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(  )r5   r  r.   r}   unformattedr:  s         r$   (test_date_parsing_ignores_format_detailsz2TestStata.test_date_parsing_ignores_format_detailsC  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           |                     |          }d d d            n# 1 swxY w Y   |d d          }|r|d                             d          |d<   t          j        |                    d          |           t          j        ||           d S )Nr  r  r   r  r  r     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai  zstring-1zobject-1z
2003-12-26r      bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr   )r  r  r]   r^   r_   re   rf   r   rK  s2045srtlforced_strlr  rO   r]   r^   r_   re   r,   r   r  r   r=   )r+   convert_strlr:   r  )r   r[   r  r   r  r]   r^   rh   r_   re   r,   r-   rg   rF   rG   rH   r7   rI   r	  )r5   r  r
  rg   rK   r  rl   s          r$   test_writer_117zTestStata.test_writer_117W  s}    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}}_ 	9$)40+_	     &*]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 AAA; 	B!)(!3!:!:5!A!AHX
",,W55	
 	
 	
 	h-----s   $2F""F&)F&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   rB   r,   r'  r   r=   )r!  r:   Frw   )r   r,   r-   rF   r   r
   rG   rH   r7   r	  rC   rI   )r5   r
  rK   r  s       r$   test_convert_strl_name_swapz%TestStata.test_convert_strl_name_swap  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  rn  r  r  r   r   r  r  r  r  z0convert_dates key must be a column or an integerrs  
wrong_namer  r*   )	r  r   r   rF   rG   ru  rv  rw  rH   )r5   r  r
  rK   rz  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          dt          j        d                              d          z  t          j        t          d                    t          j        d t          d          D                                 }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  rQ  r  r  c                     g | ]}d | S r  r"   r  s     r$   r  z2TestStata.test_nonfile_writing.<locals>.<listcomp>  r  r#   r  r  r,   r  r   wbr  )r'   BytesIOr   r[   r  r  r{   r  r#  ry   r,   r-   rF   rG   rH   seekopenwriter  r   rI   )r5   r:   bior}   rK   dtar  s          r$   test_nonfile_writingzTestStata.test_nonfile_writing  s    jll")C..((111HT&\\**(88eBii88899
 
 

  _ 	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   5=E2(D&E&D*	*E-D*	.EEEc           
         t          dt          j        d                              d          z  t	          j        t          d                    t	          j        d t          d          D                                 }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  rQ  r  r  c                     g | ]}d | S r  r"   r  s     r$   r  z/TestStata.test_gzip_writing.<locals>.<listcomp>  r  r#   r  r  r,   r.  r<   r  rbr  )r   r[   r  r  r{   r  r#  ry   r,   r-   rF   rG   gzipGzipFilerH   r   rI   )r5   r}   rK   gzr  s        r$   test_gzip_writingzTestStata.test_gzip_writing  s   ")C..((111HT&\\**(88eBii88899
 
 

  _ 	;$tT** -bB,,,- - - - - - - - - - - - - - -tT** ;b#B':::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;
 	b&)))))sZ   "D18CD1C 	 D1#C 	$D1<DD1D	D1!D	"D11D58D5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prC  rD  )   ƤĀńĐąŜ   Ör   rE  r   )   ᴘᴀᴎᴅᴀS   ÜnrG  rI  )      rJ  rJ  rJ  rJ  ) r   r   rK  r   )r   r   r  r   r  )r   r   rK  r   rK  rB   )r7   r   rF   rI   )r5   r.   
unicode_dfrC   rU  rl   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          |          }|	                                }|r|d
                             d          |d
<   |                    d	          }t          j        ||           d d d            d S # 1 swxY w Y   d S )N  stringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringr   )mixednumberr   r_   Fr=   rD   r   rP  )rE   r!  r:   r  )
r   rQ  rh   rF   rG   rH   r   fillnarI   rg   )r5   r  outputrK   r  rl   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{{}}H! D$,W$5$<$<U$C$C!r**H!&(333!	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   CD77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   )rV  rQ  r   z Column `none` cannot be exportedrs  r  )r   rF   rG   ru  rv  rw  rH   )r5   r:   rS  rK   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 __½__invalidrB   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\)|rs  )r   rF   rG   ru  rv  UnicodeEncodeErrorrH   )r5   r:   contentr}   rK   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_strlrB   r=   )r:   r!  r8  zlatin-1zutf-8s   strlsr   r  s   GSO       )
r   rF   rG   rH   r1  r  encodesplitfindr  )
r5   rS  rK   r  r\  rl   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                 j   d} |dddd          }t          j        t          d          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once)filter_levelr   r   u   Düsseldorf   r,  rB   )	rF   r   UnicodeWarningr   r  messagerd  r   rI   )r5   r.   rz  rK   r  r.  rl   s          r$   test_encoding_latin1_118z"TestStata.test_encoding_latin1_118;  s   + xfg/HII'VLLL 	/PQ &&Gq66Q;;;;Q4<$Q'3.....		/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ }o.4{mLLL
gx00000s   AA<<B B c                    t          j         |dddd          d          5 }t          |          5 }|                                 |j        d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 )Nr'   r(   r)   zstata1_119.dta.gzr8  i  )r9  r1  r   r  _nvar)r5   r.   r;  rp  s       r$   test_stata_119zTestStata.test_stata_119O  s   
 YHT67,?@@$
 
 	-R -F##%%%|u,,,,,- - - - - - - - - - - - - - -	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s4   A9"A!A9!A%	%A9(A%	)A99A= A=z)ignore:Downcasting behavior:FutureWarning)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)   Årx  ry  strlsrB   	   ᴐᴬᵀr  u	   ᵈᵉᵊu   ᴎტჄႲႳႴႶႺzLong Stringsr   )rz  rx  ry  r{  r|  u   ᴅaᵀa-labelrx  labelu   æøåu   ŋot valid latin-1r   r   r   r{  F)r  r!  r   rE   r:   r  r   )r:   rE   )r{   rb  r   rh   r[   r_   rF   rG   r   
write_filer   rR  replacer   rF  rI   r   r  r   rH   )r5   r:   r   r(   r   r  r  rK   writerr0  rp  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  rO   z"version must be either 118 or 119.rs  r=   r  zYou must use version 119r>   )
r   r[   zerosr]   rF   rG   ru  rv  rw  r   )r5   r}   rK   s      r$   test_writer_118_exceptionsz$TestStata.test_writer_118_exceptions  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dtype_backendnumpy_nullablepyarrow)marksc                    t          g dg dg dg dt          j        ddd          d	t          j        g d
d                    }|                    |          }|                    dd           t          j                    5 }|                    |           |                     |          }d d d            n# 1 swxY w Y   t          ddt          j
        gg dddt          j
        gg dt          j        ddd          d	t          j        g d
dt          j                            }t          j        |                    d          |           d S )N)r   r   Nr   )TFN)g      ?g      @g      @z
2020-12-31r   D)r  freqr[  r   r   r   r,   ru  r,   )r  ztest_stata.dtar>   r  r   r   r   r   )r-   rP   )r   r{   r  r  convert_dtypesrH   rF   rG   r7   r[   r   r_   rI   r	  )r5   r  r}   rK   r  rl   s         r$   test_read_write_ea_dtypesz#TestStata.test_read_write_ea_dtypes  s   
 !\\$__((($__]<EEE  (9997333	
 	
 	
 ];;
$c222_ 	9$KK%)]]4%8%8"	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 BF^$__1bf%$__]<EEE  (9997"(CCC	
 	
 	
 	4>>wGGRRRRRs   +CC	CN)e__name__
__module____qualname__r7   r   ru  markparametrizerM   rn   r   r   r   r   r   r   r  r  r  r  r$  r*  r1  r;  rI  rN  rV  rg  rq  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r/  r5  r:  filterwarningsrH  rN  rW  rj  rw  r{  r  staticmethodr   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r[   infr  r  r  r  r  r  r"  r(  r+  r5  r<  rM  rT  rW  r_  rl  rs  slowrv  r  r  paramrU  
skip_if_nor  r"   r#   r$   r2   r2   9   s       4 4 40 0 0 [Y(B(B(BCC7 7 DC7 [Y(B(B(BCC I  I DC ID [Y(B(B(BCC
H 
H DC
H [VlL%ABB0 0 CB0"<T <T <T| [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
2  
+ 
+ 
+ [Y(B(B(BCC; ; DC;S S S6 [Y(B(B(BCC#S #S DC#SJ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 [ 566[	
 	
 	
   [[1a&11[3eT]CC[_udm<<! ! =< DC 21!  76(!:  y    \$3 3 34 [ 566[	
 	
 	
  [[1a&11[3eT]CC[_udm<<! ! =< DC 21  76&!@! ! !  [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 ( ( ("I. I. I.VP P PL L L( [Y(B(B(BCC* * DC*"* * *4 4 4"4 4 40 [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( [	- 	- 	- [ KLL[Y(8(8(899/9 /9 :9 ML/9b7 7 7 [	<6<	y9Q9QRRRS S S	 S S Sr#   r2   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-r   Fr   )rx  rK   r  r   rF   rI   )r:   r.   	data_baserefoldrl   old_dtas          r$   test_backward_compatr    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  r8  )r   r  emptyrz   _path_or_bufr'   r/  r1  )r.   monkeypatch	file_pathrp  fpr3  s         r$   test_direct_readr    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 managerrs  zis not part of the public API)rF   r   ResourceWarningr   r  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                 X   d}| r|r| }n||          }|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  rB   r,   )r:   compressionr9  r8  r  rr   tarbz2zstd	zstandardxzlzmar  )r   r[   r   r!  r"  r#  r,   r-   rF   rG   rH   r9  r1  r'   r/  r  zipfileZipFilefilelisttarfileextractfilegetnamesr  ru  importorskipr   rg   rh   r_   rI   )r  r:   r  r  compression_to_extension	file_namefile_extcompression_argr}   rK   compr  r  r  r  r  rl   s                    r$   test_compressionr    s    /I $ 	="HH/<H^^^#	!O "! 2#[1	
	a  00994::
 
 
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;C?	?MC?	 M#3E"M"E&	&M)E&	*M	AG'M'G+	+M.G+	/ M'I6MI	M	I	
4M>'J1%M1J5	5M8J5	94M-'L M L$	$M'L$	(MMMr  r  r  )Nr4  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  rB   r,   )r  archive_namer  r  r  r   r   r  )r   r[   r   r!  r"  r#  r,   r-   rF   rG   rH   r  r  r  r  filenamer'   r/  r  r   rg   rh   r_   rI   )r  r  r  r  r}   rK   r  zpr  r  rl   s              r$   test_compression_dictr    s    #""IL	
	a  00994::
 
 
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   6>E4A%D%E%D)	)E,D)	-E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   rO   r,   r  r   F)r  ry  r   )r   r   r,   r-   rg   rh   r[   r_   rF   rG   rH   r   	enumerater	  ri   r  r  )r:   r}   rl   rK   rp  r  blocks          r$   test_chunked_categoricalr  9  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   rf   rO   rp   )r   rF   r   r	   r  r#  r  r{   r  rg  r   r   __next__r   rI   )	r.   dta_filerU  rp  r  r  idxlarge_chunkr  s	            r$    test_chunked_categorical_partialr  L  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-r  )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 positivers  r  )ru  rv  rw  r   )r.   r  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            
      l   ddgdgdz  z   t          fdt          d          D                       } t          j                    5 }|                     |d           t          j        g d	          }t          |d
          5 }t          |          D ]l\  }}t          d          D ],}t          j	        |j
        j        |         j        |           -t          j        || j        |d
z  |dz   d
z                      m	 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   )r{   rb  )r  r  rU  s     r$   r  z.test_iterator_value_labels.<locals>.<dictcomp>j  s0    VVVI!IIr~fdCCCVVVr#   r   Fr'  )r  r  r  r  r  r   )r   ry   rF   rG   rH   r{   r  r   r  rg  rj   r  r   rI   )r}   rK   rl   rp  r  r  r  rU  s          @r$   test_iterator_value_labelsr  g  s   #ykC&77F	VVVVUSTXXVVV	W	WB			 Od
De,,,8===>>,,, 	O%f-- O O5q U UA)%,*;A*>*I8TTTT%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s7   ?D)A=DD)D	D)D	D))D-0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>w  s&      &&qad&&&&&&r#   <   c              3       K   | ]	}d |z  V  
dS r  r"   r  s     r$   r  z&test_precision_loss.<locals>.<genexpr>w  s&      +D+DQAqD+D+D+D+D+D+Dr#   4   biglittlerB   z&Column converted from int64 to float64rs  Fr'  r  )r   r  )r   r  )r   sumry   rF   rG   r   r   rH   r   r   r[   rf   ri   rj   r(  float)r}   rK   r  expected_dts       r$   test_precision_lossr  u  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-   rF   rG   rH   r   rI   decompress_filer'   r/  r  )r  r}   rK   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                 b   | }||         }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-   rF   rG   rH   r   rI   )compression_onlyr  r  r  r  extr  r}   to_compressionread_compressionrK   r/  s               r$   test_stata_compressionr    s,   
 #K
";
/Cs}}H		'	'	')G)G)GHCj
 
 
B
 BHM (9WWkN",=ww+		"	" *d
Dn555D.>'RRR
fb)))* * * * * * * * * * * * * * * * * *s   ?B$$B(+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   r   r   )r  r  r  r  r  )fully_labelledpartially_labelledr  r  r   r   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.rs  notYr  r  )r   r   zUCan't create value labels for Z, value labels can only be applied to numeric columns.r   r  r   )r   r[   r   r{   rb  rF   rG   r   r  r   r  ru  rv  r  rw  )r(   rK   r  rl   r  rp  reader_value_labelsrz  s           r$   !test_non_categorical_value_labelsr    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   r   )r   r   r   r   r   r   )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   )r   r   rp   r   r   r   )	invalid__
_6_invalid invalid_name_longer_than_32_char
_aggregate_1__2_r  )r   rF   rG   r   r
   rH   r   r  )r(   r  rl   rK   rp  r  s         r$   0test_non_categorical_value_label_name_conversionr    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   r   (   )r   r   r   r   r  r  r  Fr  zQ--------------------------------------------------------------------------------

z
Value labels for column a    are not unique. These cannot be converted to
pandas categoricals.

Either read the file with `convert_categoricals` set to False or use the
low level interface in `StataReader` to separately read the values and the
value_labels.

The repeated labels are:
rs  T)r   rF   rG   rH   r   r  r  ru  rv  rw  r   )r  r(   rK   rp  r  r   repeatsrz  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rP   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   rO   )r   r    Nr   ur   r`   r_   boolr]   r    r  )r   r    r   r!   ru  FrD   Tr  )r   r   r{   NAr-   r    rP   numpy_dtyper  r   BASE_MISSING_VALUESr  rF   rG   rH   r   ri   r   r!   )
rP   r:   r}   
dtype_namevaluer  
expected_b
expected_crK   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	c                  >   t          t          d          g dd                              d          } t          j                    5 }|                     |dd           t          |          }d	|v sJ t          t          j	        d
          t          j	        d          d          }t          j
        |j        |           t          |dg          }d	|vsJ t          j
        |j        |j        dg                    d d d            d S # 1 swxY w Y   d S )Nr   r  rv   r
  r   Fr=   rD   r    r_   rf   r   rB   )r   ry   r  rF   rG   rH   r   r   r[   rP   ri   rj   r(  )r}   rK   df2rj   df3s        r$   test_empty_framer0  O	  sR    
eAhh___==	>	>	>	C	CA	F	FB			 >d
DeS999czzzzbhw//bhy6I6IJJKK
sz6222u---#~~~~
sz6:se+<===> > > > > > > > > > > > > > > > > >s   	B<DDD)Er  r   r  r9  r'   rx  r  r  r  numpyr[   ru  pandas.util._test_decoratorsutil_test_decoratorsrU  ra  r{   r   pandas._testing_testingrF   pandas.core.framer   r   pandas.io.parsersr   pandas.io.statar	   r
   r   r   r   r   r   r   r   fixturer%   r0   r2   r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r!  BooleanDtype	Int8Dtype
Int16Dtype
Int32Dtype
Int64Dtype
UInt8DtypeUInt16DtypeUInt32DtypeUInt64Dtyper,  r0  r"   r#   r$   <module>rD     s   



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