
    Pi                    p   d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlm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/ej-        .                    dddg          d             Z0ej-        .                    ddg          d             Z1ej-        .                    dg d          d             Z2ej-        .                    dddg          d             Z3d Z4ej-        .                    dg d          ej-        .                    dddg          ej-        .                    dddg          d                                     Z5ej-        .                    dddg          ej-        .                    d g d!          d"                         Z6ej-        .                    dg d          d#             Z7d$ Z8ej-        .                    d%d&          d'             Z9d( Z:d) Z;d* Z<ej-        .                    d+ddg          ej-        .                    d,ddg          d-                         Z=d. Z>d/ Z?d0 Z@ej-        .                    dg d          ej-        .                    d1ejA        ejB        ejC        ejD        ejE        ejF        ejG        ejH        ejI        g	          d2                         ZJd3 ZKej-        .                    dg d          d4             ZLej-        .                    dg d5          d6             ZMej-        .                    dg d5          d7             ZNdS )8    N)datetime)Pandas4Warning)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        n/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/io/test_stata.pymixed_framer&   )   s7    '''CCC	
 	
  r$   c                 \     | dddd          }t          |d          }d|j        _        |S )Niodatastatazstata5_114.dtaTconvert_datesindex)r   r-   name)datapath	dta14_114
parsed_114s      r%   r1   r1   4   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g d          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g d          d             Zej                            dg d          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/d0d1g          d2                         Z)d3 Z*d4 Z+d5 Z,d6 Z-ej                            dg d7          d8             Z.ej                            dg d9          d:             Z/ej                            dd;d<g          d=             Z0d> Z1d? Z2d@ Z3ej                            dg d          ej        4                    dA          dB                         Z5dC Z6ej                            dg d          dD             Z7ej                            ddEdFg          dG             Z8ej                            ddHdIg          dJ             Z9ej                            ddEdFg          dK             Z:ej        4                    dL          ej                            dg dM          ej                            dNdOdPg          ej                            dQdRdSg          ej                            dTdRdSg          dU                                                             Z;e<dVe=dWe=fdX            Z>dY Z?ej        4                    dL          ej                            dg dZ          ej                            dNdOdPg          ej                            dQdRdSg          ej                            dTdRdSg          d[                                                             Z@d\ ZAej                            dg d          d]             ZBej                            dg d          d^             ZCej                            dd_d`g          da             ZDdb ZEdc ZFdd ZGde ZHdf ZIdg ZJdh ZKdi ZLej                            djeMjN        eMjN         g          dk             ZOdl ZPej                            dmdSdRg          dn             ZQdo ZRej                            dpg dq          dr             ZSej                            d/dsdtg          du             ZTdv ZUdw ZVej                            dg d          dx             ZWdy ZXej                            dg dz          d{             ZYd| ZZej                            dg d          d}             Z[ej                            dg d          d~             Z\d Z]d Z^ej        j_        d             Z`ej                            dg d          ej                            d/dsdtg          d                         Zad Zbej                            dd ejc        d edje        d                    g          d             Zfej                            dg d          d             Zgej                            dg d9          d             Zhej                            dd;d<g          d             ZidS )	TestStatac                 $    t          |d          S )NTr+   )r   selffiles     r%   read_dtazTestStata.read_dta=   s    $d3333r$   c                 $    t          |d          S )NT)parse_datesr   r5   s     r%   r	   zTestStata.read_csvA   s    $////r$   versionr   u   v   w   Nc                     t          dg          }|}|                    |d|           t          |          }t          j        ||           d S )NunitcolumnsFwrite_indexr;   r   to_statar   tmassert_frame_equal)r6   r;   	temp_fileempty_dspath	empty_ds2s         r%   test_read_empty_dtazTestStata.test_read_empty_dtaD   sZ    fX...$E7CCCt$$	
h	22222r$   c                    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          |          }|}|d                             t          j                  |d<   |d                             t          j                  |d<   |d                             t          j                  |d<   |d	                             t          j                  |d	<   |d
                             t          j                  |d
<   t!          j        ||           t!          j        |j        |j                   d S )Nr   dtype)
i8i16i32i64u8u16u32u64f32f64FrE   rW   rX   rY   rZ   rV   )r   nparrayint8int16int32int64uint8uint16uint32uint64float32float64rH   r   astyperI   rJ   assert_series_equaldtypes)r6   r;   rK   empty_df_typedrM   empty_rereadexpecteds          r%   test_read_empty_dta_with_dtypesz)TestStata.test_read_empty_dta_with_dtypesM   s   
 #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 
 
 %III!$''!!$..rw77"5/00::"5/00::"5/00::"5/00::
h555
x0CDDDDDr$   c                 ^   t          t          d          g dd          }|}|                    |d|           t          |          }t	          |j        t          j                  sJ |}|d                             t          j
                  |d<   t          j        ||d           d S )	N   )b1b2b3b4b5r    r!   FrE   r    Tcheck_index_type)r   rangerH   r   
isinstancer-   pd
RangeIndexri   r]   ra   rI   rJ   )r6   r;   rK   dfrM   read_dfrn   s          r%   test_read_index_col_nonez"TestStata.test_read_index_col_noneq   s    U1XX,J,J,JKKLL
DeW===T""'-77777 ,,RX66
gx$GGGGGGr$   )f   g   h   i   l   n   o   q   r=   s   r>   r?   r@   c                     |dddd| d          }|                      |          }t          t          j        t          j        t          j        t          j        t          j        fgg d          }|d                             t          j                  |d<   |d	k    r|                    d
ddddd          }t          j        ||           d S )Nr(   r)   r*   stata1_.dta
float_missdouble_miss	byte_missint_miss	long_missrC   r   r   f_missd_missb_missi_missl_miss)	r8   r   r]   nanri   rg   renamerI   rJ   )r6   r;   r/   r7   parsedrn   s         r%   test_read_dta1zTestStata.test_read_dta1~   s     xfg/F/F/F/FGGt$$ fbfbfbfbf56WWW
 
 
 "*,!7!>!>rz!J!J c>>"*#+!) (!)  '  H 	fh/////r$   c                    t          j        t          dddddd          dt          dd	d          t          dd	d
          t          dd	d	          t          ddd	          t          dd	d	          t          dd	d	          ft          dddddd          dt          ddd          t          ddd          t          dd	d	          t          ddd	          t          dd	d	          t          dd	d	          ft          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        fgg d          }|d                             d          |d<   |d                             d          |d<   |d                             d          |d<   |d                             d          |d<   |d                              d          |d <   |d!                             d          |d!<   |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
        ||           t          j
        ||           t          j
        |	|           d S )+N                 l   *}ai  r      i     i        r   iZli  
   r   i     i  )
datetime_cdatetime_big_cdateweekly_datemonthly_datequarterly_datehalf_yearly_dateyearly_daterC   r   M8[ms]r   M8[s]r   r   r   r   r   r(   r)   r*   zstata2_114.dtazstata2_115.dtazstata2_117.dtaz Leaving in Stata Internal Formatmatch)r   from_recordsr   r|   NaTri   rI   assert_produces_warningUserWarningr8   rJ   )
r6   r/   rn   path1path2path3msgr1   
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"
 "
 "
H "*,!7!>!>x!H!H#F+227;;"*="9"@"@"I"I#+N#;#B#B7#K#K %-.>%?%F%Fw%O%O!"'/0B'C'J'J7'S'S#$"*="9"@"@"I"Ivw0@AAvw0@AAvw0@AA0'3??? 	. 	.u--J	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.'3??? 	. 	.u--J	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.'3??? 	. 	.u--J	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	j(333
j(333
j(33333s6   5JJJ=KK#&K#L''L+.L+r7   )
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)	r8   r	   ri   r]   rg   r`   r_   rI   rJ   r6   r7   r/   r   rn   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$   )r   r   r   r=   r   r>   c                     |d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*   stata4_r   onetenr   r   r   twoniner   r   r   threeeightr   r   r   foursevenr   r   r   fivesixrq   r   r   r   r   r   r   r   r   r   	   r   r   )fully_labeledfully_labeled2incompletely_labeledlabeled_with_missingsfloat_labelledrC   r   r   categoryTorderedinplacer8   r   r   r]   r   copyasarraynotnari   _valuesset_categories
categoriesr   rI   rJ   
r6   r;   r/   r7   r   rn   colorigr   cats
             r%   test_read_dta4zTestStata.test_read_dta4   s   xfg/F/F/F/FGG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$   )r   r   r   r   r   c                     |d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   r   r   r   r   r   r   r   rq   r   r   r   r   r   r   r   r   r   r   r   r   )fulllabfulllab2incmplabmisslabfloatlabrC   r   r   r   Tr   r   r   r   s
             r%   test_readold_dta4zTestStata.test_readold_dta4  s    xfg/F/F/F/FGG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HY$7

$EFFJj  !
++j))1C$$Z$>>CN!!$!555HSMM 	fh/////r$   )stata12_117stata12_be_117stata12_118stata12_be_118stata12_119stata12_be_119c           	          |                       |ddd| d                    }t          j        g dg dg dgg d	          }t          j        ||d
           d S )Nr(   r)   r*   r   )r   abc	abcdefghi)r   cbaqwertywertyqwerty)]    strl)xyzrC   Fcheck_dtype)r8   r   r   rI   rJ   r   s        r%   test_read_dta_strlzTestStata.test_read_dta_strlN  s     xxfg$}}}MMNN)'''///   
 $OO
 
 
 	fhEBBBBBBr$   )stata14_118stata14_be_118stata14_119stata14_be_119c           
         |                       |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*   r   BytesO)CatBogotau   Bogotár   r   u   option b Ünicoder   DogBostonu   Uzunköprü)PlaneRomeu   Tromsør           option ar  )PotatoTokyou	   Elâzığ      @r   r   )r  r  r  r   gT?r  gUUUUUU?)ThingsCitiesUnicode_Cities_StrlIntsFloatsr  LongsrC   r#  u'   Here are some strls with Ünicode charsz	long datazHere are some thingsz	byte datazint datazHere are some citiesz
float data)r!  r$  r  r  r"  r   r#  u   This is a  Ünicode data label)r8   ri   r   r   r]   r   rg   rD   rI   assert_almost_equalr   variable_labelsassert_dict_equal
data_label)	r6   r7   r/   
parsed_118rn   r   rdrvlvl_expecteds	            r%   test_read_dta118_119zTestStata.test_read_dta118_119g  s    ]]88D&'d===#Q#QRR
(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$DGGHH 	FC$$&&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        _        |}|                    |d            |                     |          }|}|j                            t          j                  |_        t          j
        |                    d          |           d S )Nr   rC   r-   r+   )r   r]   r   r-   r.   rH   r8   ri   ra   rI   rJ   	set_index)r6   rK   originalrM   written_and_read_againrn   s         r%   test_read_write_dta5zTestStata.test_read_write_dta5  s    fbfbfbfbf56WWW
 
 
 &$d333!%t!4!4!..rx88
4>>wGGRRRRRr$   c                    |                       |dddd                    }d|j        _        |j                            t          j                  |_        |d                             t          j                  |d<   |d                             t          j                  |d<   |}|                    |d            |                     |          }t          j	        |
                    d          |d	
           d S )Nr(   r)   r*   r   r-   r   r   r+   Frx   )r	   r-   r.   ri   r]   ra   rH   r8   rI   rJ   r/  )r6   r/   rK   r0  rM   r1  s         r%   test_write_dta6zTestStata.test_write_dta6  s    ==$!N!NOO%!..rx88#F+2228<<&y188BB$d333!%t!4!4
",,W55"	
 	
 	
 	
 	
 	
r$   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
<   |}|	                    |ddi|           | 
                    |          }|                                }|d                             d          |d<   |r|d                             d          |d<   t          j        |                    d	          |           d S )Nstringobjectr   皙?
2003-12-25)r6  r7  integerfloatingr   r)   rD   rQ   r-   r:  r   tcr,   r;   r   str)r   r]   
datetime64r   r7  r-   r.   ri   ra   rH   r8   r   rI   rJ   r/  )r6   r;   rK   using_infer_stringr0  rM   r1  rn   s           r%   test_read_write_dta10zTestStata.test_read_write_dta10  sT   Xq#r}\/J/JKLKKK
 
 
 $HX$6fEEE%!..rx88&y188BB$z4.@'RRR!%t!4!4==??'
3::8DD 	B!)(!3!:!:5!A!AHX
",,W55	
 	
 	
 	
 	
r$   c                     |}t          t          j                            d                              d          t          d                    }|                    |           d S )Nr   r   r   ABrC   )r   r]   randomdefault_rngstandard_normallistrH   )r6   rK   rM   r~   s       r%   test_stata_doc_examplesz!TestStata.test_stata_doc_examples  s^    I!!!$$44W==tDzz
 
 
 	Dr$   c                 V   t          t          j                            d                              d          t          d                    }t          j        |j        dddf<   |                                }|}|	                    |d           t          j        ||           d S )	Nr   )rq   r   abcdrC   r    r"   FrF   )r   r]   rF  rG  rH  rI  r   locr   rH   rI   rJ   )r6   rK   r~   df_copyrM   s        r%   test_write_preserves_originalz'TestStata.test_write_preserves_original  s     I!!!$$44V<<d6ll
 
 
  Vq#c'z''))
De,,,
b'*****r$   c                 `   t           |dddd                    }t           |dddd                    }|j        d         }|j        d         }||k    sJ t          |t                    sJ |}|                    |d|           t          |          }	t          j        ||	           d S )Nr(   r)   r*   zstata1_encoding.dtar   FrE   )r   	kreis1849r{   r?  rH   rI   rJ   )
r6   r;   r/   rK   rawencodedresultrn   rM   reread_encodeds
             r%   test_encodingzTestStata.test_encoding  s     $9NOOPPXXdFG=RSSTT"1%=#!!!!&#&&&&&5'BBB#D))
g~66666r$   c                    t          dgg d          }t          dgg d          }d|j        _        |                    t          j                  }|}d}t          j        t          |          5  |	                    |d            d d d            n# 1 swxY w Y   | 
                    |          }|}|j                            t          j                  |_        t          j        |                    d          |           d S )	Nr   )goodu   bäd8number%astringwithmorethan32characters______rC   )rY  b_d_8number astringwithmorethan32characters_r-   ;Not all pandas column names were valid Stata variable namesr   r+   r   r-   r.   ri   r]   ra   rI   r   r   rH   r8   rJ   r/  )r6   rK   r0  	formattedrM   r   r1  rn   s           r%   test_read_write_dta11zTestStata.test_read_write_dta11  sX   N  
 
 
 NSSS
 
 
	  '	$$RX..	K'(9EEE 	8 	8d$777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 "&t!4!4!..rx88
4>>wGGRRRRRs   3BBBc                    t          dgg d          }t          dgg d          }d|j        _        |                    t          j                  }|}d}t          j        t          |          5  |	                    |d |           d d d            n# 1 swxY w Y   | 
                    |          }|}|j                            t          j                  |_        t          j        |                    d          |           d S )	Nr   r   r   r   rq   r   )!astringwithmorethan32characters_1!astringwithmorethan32characters_2+-shortdeleterC   )r^   _0astringwithmorethan32character__1__short_deleter-   r_  r   r>  r`  )	r6   r;   rK   r0  ra  rM   r   r1  rn   s	            r%   test_read_write_dta12zTestStata.test_read_write_dta12  ss      

 

 

    

 

 

	  '	$$RX..	K'(9EEE 	I 	Id$HHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I "&t!4!4!..rx88
4>>wGGRRRRRs   3BBBc                 8   t          dt          j                  }t          dt          j                  }t          dt          j                  }t          |||d          }d|j        _        |}|d                             t          j	                  |d<   |}|
                    |           |                     |          }|}	|	j                            t          j                  |	_        t          j        |                    d          |	           d S )Ni   rQ   i   l        )r`   ra   rb   r-   rb   )r   r]   r`   ra   rb   r   r-   r.   ri   rh   rH   r8   rI   rJ   r/  )
r6   rK   s1s2s3r0  ra  rM   r1  rn   s
             r%   test_read_write_dta13zTestStata.test_read_write_dta137  s    D)))E***E***rBDDEE%	&w/66rzBB	'$!%t!4!4!..rx88
4>>wGGRRRRRr$   )
stata5_113
stata5_114
stata5_115
stata5_117c                 n    |ddd| d          }|                      |          }d|j        _        t          j        ||           |}|                    |ddi|           |                      |          }|                                }	t          j        |                    d          |	           d S )	Nr(   r)   r*   r   r-   date_tdtdr>  )r8   r-   r.   rI   rJ   rH   r   r/  )
r6   r7   r1   r;   r/   rK   r   rM   r1  rn   s
             r%   test_read_write_reread_dta14z&TestStata.test_read_write_reread_dta14I  s     xfg$}}}==t$$#
j&111DD0A7SSS!%t!4!4??$$
4>>wGGRRRRRr$   )
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
                             d          j        	                    dd          }|
                    d          |d
<    |ddd| d          }|                     |          }t          j        ||           d S )Nr(   r)   r*   
stata6.csvbyte_int_long_float_double_r{  z	Period[D]sS)howr   r   )r	   ri   r]   r_   r`   ra   rg   rh   r   asfreqviewr8   rI   rJ   )r6   r7   r/   rn   arrr   s         r%   test_read_write_reread_dta15z&TestStata.test_read_write_reread_dta15]  sK    ==$!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!((55=DDScDRR!hhw//xfg$}}}==t$$
h/////r$   c                    t          dgdg          }t          ddddd          }d	}|}|                    ||||
           t          |          5 }|j        dk    sJ |j        |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   variablerC     r            zThis is a data file.)
time_stampr(  r;   z29 Feb 2000 14:21)r   r   rH   r   r  r(  )r6   r;   rK   r0  r  r(  rM   readers           r%   test_timestamp_and_labelz"TestStata.test_timestamp_and_labelq  s    dVj\:::dAr2r22
+
ZJ 	 	
 	
 	
  	3&$(;;;;;$
22222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   A<<B B c                    t          dgdg          }d}|}d}t          j        t          |          5  |                    |||           d d d            n# 1 swxY w Y   t
          j                            |          rJ d S )Nr  r  rC   z01 Jan 2000, 00:00:00z"time_stamp should be datetime typer   )r  r;   )r   pytestraises
ValueErrorrH   osrM   isfile)r6   r;   rK   r0  r  rM   r   s          r%   test_invalid_timestampz TestStata.test_invalid_timestamp  s    dVj\:::,
2]:S111 	L 	Ldz7KKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L7>>$'''''''s   AA!Ac                    t          t          j        t          j        d          d                    }d|j        _        |}d}t          j        t          |          5  |	                    |           d d d            n# 1 swxY w Y   | 
                    |          }|                    d          }t          |j                  }d }t          ||          |_        |}t          j        ||           d S )Ng      9@)rq   rq   r-   r_  r   c                 ,    t          | d                   S )Nr   )intr  s    r%   <lambda>z5TestStata.test_numeric_column_names.<locals>.<lambda>  s    S1YY r$   )r   r]   reshapearanger-   r.   rI   r   r   rH   r8   r/  rI  rD   maprJ   )	r6   rK   r0  rM   r   r1  rD   convert_col_namern   s	            r%   test_numeric_column_namesz#TestStata.test_numeric_column_names  s,   RZ	$@@AA%K'(9EEE 	$ 	$d###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ "&t!4!4!7!A!A'!J!J-566..),-=w)G)G&
h(>?????s    BB	B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        _        |}|	                    ||           | 
                    |          }|                    d          }|}t          j        ||           d S )Nr  rQ   r   r   rr  rs  r-   r;   )r   r]   r  rg   rh   r   r   r-   r.   rH   r8   r/  rI   rJ   )	r6   r;   rK   rr  rs  r0  rM   r1  rn   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%$000!%t!4!4!7!A!A'!J!J
4h?????r$   c                 z   ddg}t          t          j        t          j        d          d          |          }d|j        _        |}|                    |d           |                     |          }t          j	        t          |j        j        	          5  |d          d d d            d S # 1 swxY w Y   d S )
Nr  r        $@)rq   r   rC   index_not_writtenFrM  r   )r   r]   r  r  r-   r.   rH   r8   r  r  KeyError)r6   rK   rD   r0  rM   r1  s         r%   test_no_indexzTestStata.test_no_index  s    *RZ	$@@'RRR1$E222!%t!4!4]88>+>??? 	8 	8"#677	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   	B00B47B4c                 J   t          ddg          }t          ddgt          j                  }t          ||d          }d|j        _        |}|                    |           |                     |          }|}t          j	        |
                    d          |           d S )Nr    zA longer stringr          @rQ   r  r-   )r   r]   rh   r   r-   r.   rH   r8   rI   rJ   r/  )r6   rK   rr  rs  r0  rM   r1  rn   s           r%   test_string_no_dateszTestStata.test_string_no_dates  s    S+,--S#Jbj111Bb1122%$!%t!4!4
4>>wGGRRRRRr$   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	        t          d	
          5  |                    |           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<   t          j        |                    d          |	           d S )Nr   c   rQ      i  l    )s0rr  rs  rt  r-   zfrom int64 tor   rr  rs  rt  )r   r]   r_   r`   rb   r   r-   r.   rI   r   r   rH   r8   ra   rh   rJ   r/  )
r6   rK   r  rr  rs  rt  r0  rM   r1  modifieds
             r%   test_large_value_conversionz%TestStata.test_large_value_conversion  s   QG27+++QHBG,,,Q	N"(333Q	N"(333Bb"EEFF%'(=_UUU 	$ 	$d###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ "&t!4!4bh???bh???bjAAA
4>>wGGRRRRRs   2CCCc           
      B   t          t          dddddd          g          }d|j        _        |}d}t	          j        t          |	          5  |                    |d
di           d d d            n# 1 swxY w Y   |                     |          }|	                                }dg|_
        |j                            t          j                  |_        |d                             d          |d<   t	          j        |                    d          |           d S )Nr   r   r   r   r   r   r-   r_  r   r   r=  r+   _0r   )r   r   r-   r.   rI   r   r   rH   r8   r   rD   ri   r]   ra   rJ   r/  )r6   rK   r0  rM   r   r1  rn   s          r%   test_dates_invalid_columnz#TestStata.test_dates_invalid_column  sH   htRRR@@ABB%K'(9EEE 	= 	=d1d)<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= "&t!4!4==?? 6!..rx88!$..x88
4>>wGGRRRRRs   A44A8;A8c                     |dddd          }t          |          }g dg dg dg}t          |          }g d|_        |d	                             t          j                  |d	<   |d
                             t          j                  |d
<   |d                             t          j                  |d<   |d                             t          j                  |d<   t          j	        |
                    d          |           d S )Nr(   r)   r*   S4_EDUC1.dta)r   r   r   )r   r   r   r  )r   r   r   r  )clustnumpri_schlpsch_numpsch_disr  r  r  r  r   )r   r   rD   ri   r]   r`   r_   rg   rI   rJ   head)r6   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)r6   r/   r  r  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	          |d          }|d         	                    d          |d<   |}|
                    ||           |                     |          }	t          j        |	                    d	          |           d S )N)r=  r|  twrI   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   rC   r-   r   r   r   r   r   rR   r.   r   )r-   rD   rR   r=  r   r+   )r   lenr   r-   r.   r|   Indexr]   ra   ri   rH   r8   rI   rJ   r/  )
r6   rK   rD   conversionsr)   r0  expected_valuesrn   rM   r1  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===	
 
 
 "$..x88$k:::!%t!4!4
4>>wGGRRRRRr$   c                 0   t          dgd ggdg          }t          dgdggt          j        dd          dg          }|}|                    |           |                     |          }t          j        |                    d          |           d S )	N1foorC   r  r   r-   r.   r-   rD   )r   r|   r}   rH   r8   rI   rJ   r/  )r6   rK   r0  rn   rM   r1  s         r%   test_write_missing_stringsz$TestStata.test_write_missing_strings  s    sedV_ug>>>URDM-000G
 
 
 $!%t!4!4
4>>wGGRRRRRr$   	byteorder><c           
         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        _        |}|	                    |||           | 
                    |          }|                    d
          }|}t          j        t          j        t          j        t          j        t          j        t          j        t          j        f}t!          |j        |          D ]#\  }}||                             |          ||<   $t'          j        ||           d S )N)r   r   TrQ   )r   r   d   )r   r      )r   r   i  )r   r   i  )r   r   i)r   r   l    )r  rr  rs  rt  s4s5s6r-   )r  r;   )r   r]   bool_rc   rd   re   r   r-   r.   rH   r8   r/  r_   r`   ra   rh   ziprD   ri   rI   rJ   )r6   r  r;   rK   r  rr  rs  rt  r  r  r  r0  rM   r1  rn   expected_typesr"   ts                     r%   test_bool_uintzTestStata.test_bool_uint*  s    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
 
 &$)WEEE!%t!4!4!7!A!A'!J!JGGHHHHJ
 (.99 	0 	0DAq"1+,,Q//HQKK
4h?????r$   c                    t           |dddd                    5 }|                                }d d d            n# 1 swxY w Y   t           |dddd                    5 }|                                }d d d            n# 1 swxY w Y   d}d}|                                D ]%\  }}||v sJ |||         k    sJ ||v sJ ||v sJ &d S )Nr(   r)   r*   zstata7_115.dtazstata7_117.dta)var1var2var3)label1label2label3)r   r&  items)	r6   r/   r*  sr_115sr_117keyslabelskvs	            r%   test_variable_labelszTestStata.test_variable_labelsO  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          |          }|}|                    |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            d S # 1 swxY w Y   d S )
N)r   r     r    r!   r"   r  FrM  r   )r   r?  r   rH   r   _ensure_openr  _varlist_fmtlist_typlistr  )r6   rK   str_lensr  str_lenr0  rM   srr  fmttyps              r%   test_minimal_size_colzTestStata.test_minimal_size_col\  s}     	 	G$*wgsW}=% %AcCLL !! Q<<$E222 	0"OO&)"+r{BK&P&P 0 0"#s8ABB<((CAbD	NN::::8ABB<((C/////0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   /BDDDc                 ,   d}i }|D ]0}t          d|z  d|z  d|z  g          |dt          |          z   <   1t          |          }d}t          j        t
          |          5  |}|                    |           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\.r   )r   r?  r   r  r  r  rH   )r6   rK   r  r  r  r0  r   rM   s           r%   test_excessively_long_stringz&TestStata.test_excessively_long_stringm  s      	 	G$*wgsW}=% %AcCLL !! Q<<9 	 ]:S111 	$ 	$Dd###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   $B		BBc                 \   d}t          dggdg          }|}|                    |           t          |          5 }|j        }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  rC   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   rH   r   VALID_RANGErz   insertr   r6  structunpack)r6   rK   typesr~   rM   r*  valid_ranger  r  offsetr  vals               r%   test_missing_value_generatorz&TestStata.test_missing_value_generator  s   w
333
D 	*#/K	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*@@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!!!!!!s   AAA)r   r   r>   c           
        	
 g d}t          d          }t          |j                                                  
g }t	          d          D ]3		
fdt	          d          D             }|                    |           4t          ||          }t           |ddd	d
| d          d          }t          j	        ||           d S )Nint8_int16_int32_float32_float64_e   r  c                 F    g | ]}t          |d z  z                      S r  r   )r  jr  r  s     r%   r  z;TestStata.test_missing_value_conversion.<locals>.<listcomp>  s/    KKKQ$T!q2v,%788KKKr$   rq   rC   r(   r)   r*   stata8_r   Tconvert_missing
r   sortedMISSING_VALUESr  rz   appendr   r   rI   rJ   )r6   r;   r/   rD   smvr)   rowrn   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HT67,Cg,C,C,CDD 
 
 
 	fh/////r$   )r   r   r   r   r   c           
      l  	 g d}t          d          }t          |j                                                  	g }	fdt	          d          D             }|                    |           t          ||          }t           |dddd	| d
          d          }t          j	        ||           d S )Nr&  r,  c                 @    g | ]}t          |d z                     S r.  r/  r  r0  r  s     r%   r  zBTestStata.test_missing_value_conversion_compat.<locals>.<listcomp>  s*    AAA1 a"f..AAAr$   rq   rC   r(   r)   r*   r1  r   Tr2  r4  
r6   r;   r/   rD   r8  r)   r9  rn   r   r  s
            @r%   $test_missing_value_conversion_compatz.TestStata.test_missing_value_conversion_compat  s    GGG$$c(--//00AAAAaAAACT7333HT67,Cg,C,C,CDD 
 
 
 	fh/////r$   r   r   c           
      R  	 g d}t          d          }t          |j                                                  	g }	fddD             }|                    |           t          ||          }t           |dddd	| d
          d          }t          j        ||           d S )Nr&  r,  c                 @    g | ]}t          |d z                     S r.  r/  r=  s     r%   r  zITestStata.test_missing_value_conversion_compat_nobyte.<locals>.<listcomp>  s*    HHH1 a"f..HHHr$   )r   r   r   r   r   rC   r(   r)   r*   r1  r   Tr2  )	r   r5  r6  r  r7  r   r   rI   rJ   r>  s
            @r%   +test_missing_value_conversion_compat_nobytez5TestStata.test_missing_value_conversion_compat_nobyte  s    GGG$$c(--//00HHHHHHHCT7333HT67,Cg,C,C,CD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                    }	|	d                             d          |	d<   |	d                             d          |	d<   |	d                             d          |	d<   |	d                             d          |	d<   |	d                             d          |	d<   |	d                             d          |	d<   |	d                              d          |	d <   t           |d!d"d#d$                    }t           |d!d"d#d%                    }t          j        |	|           t          j        |	|           d& |D             }|}d'|	j        _        d(}|	                    t                    }t          j        t          |)          5  |                    ||*           d d d            n# 1 swxY w Y   |                     |          }t          j        |                    d'          |	                    |	j                            t&          j                                       d S )+N)i  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   r   )date_tcr{  date_twdate_tmdate_tqdate_thdate_tyrD  r      r   r   r   r   rq   rE     rF  i  )rD   rR   rI  r   r{  r   rK  rJ  rL  rM  rN  r(   r)   r*   zstata9_115.dtazstata9_117.dtac                 $    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-   z^Converting object-dtype columns of datetimes to datetime64 when writing to stata is deprecatedr   r+   )r  rz   r7  r   r|   r   r   r7  ri   r   rI   rJ   r-   r.   r   r   rH   r8   r/  r]   ra   )r6   r/   rK   yrmoddhrmmssrn   r   monthdayhourminutesecondr9  r0  rD   r   r   date_conversionrM   r   
exp_objectr1  s                             r%   test_big_dateszTestStata.test_big_dates  s   000   """         69"b"b"b6Q6Q 		! 		!2D%dFFC1XX ; ;66JJxeS$OOPPPP!VVJJxa334444JJxeS99::::OOC    1%%%
 
 
 "$B//A!$A..A!$A..A!$1--A!$2..A*24A*>*>>A!Q*24A*>*>>A!Q;CD"a;P;PPAP!Q(1+a.*24A*>*>>A!QXwfEEE&y188BB&y188AA&y188AA&y188AA&y188AA&y188AA&y188AAvw@P Q QRR
vw@P Q QRR

h
333
h
33366g666%2 	 __V,,
'cBBB 	E 	EODDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E!%t!4!4
",,W55x~44RX>>??	
 	
 	
 	
 	
s   O%%O),O)c                 6   |                       |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
                             d          |d
<   t           |dddd          d          }t          j
        ||           t           |dddd          dd          }|                       |dddd                    }|d
         |d
<   t          j
        ||           d S )Nr(   r)   r*   r  r  r  r  r  r  r{  r   stata6_117.dtaTr+   F)r,   preserve_dtypes)r	   ri   r]   r_   r`   ra   rg   rh   r   rI   rJ   )r6   r/   rn   no_conversion
conversion	expected2s         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88AA"HT67,<==T
 
 
 	h666HT67,<==!
 
 

 MM((4,"O"OPP	'	2	)
i44444r$   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  t           |dddd          dddg           d d d            n# 1 swxY w Y   d}t          j        t           |          5  t           |dddd          dg d           d d d            d S # 1 swxY w Y   d S )Nr(   r)   r*   r  r  r  r  r  r  r{  )z%Y-%m-%d)args)r  r  r  ra  T)r,   rD   )r  r  r  z"columns contains duplicate entriesr   zEThe following columns were not found in the Stata data set: not_found)r  r  r  	not_found)r	   ri   r]   r_   r`   ra   rg   rh   applyr   strptimer   rI   rJ   r  r  r  )r6   r/   rn   rD   dropped	reorderedr   s          r%   test_drop_columnzTestStata.test_drop_column2  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 	 	vw0@AA" '*   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V]:S111 	 	vw0@AA"???   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   /!GG #G !H22H69H6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          }|}|                    d                              ||           |                     |          }|                    d          }|}|j        	                    d          |_        |d         
                    t                    |d<   |d         
                    t                    |d<   |D ]v}||         }	|	                    d          j        }
|
                                }
|dk    r|
                    |	d          }
|
j                            d d           |
||<   wt#          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   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   	unlabeledrC   r   r  r-   r   rp  Tr   r   )r   r   r]   r   ri   rH   r8   r/  r-   	set_namesrj  r?  r   
as_orderedr   r   r   rI   rJ   )r6   r;   rK   r0  rM   r1  resrn   r   r   r   s              r%   test_categorical_writingz"TestStata.test_categorical_writinga  s   
 )666777@@@77726615265!4&!RVWa8'1bfgq926615ubfeR8  
 
 
, 
##,,T7,CCC!%t!4!4$..w77!11'::+34J+K+Q+QRU+V+V'( ( 5 ; ;C @ @ 
	  
	 CC=D++j))1C..""Ck!!((t(<<N!!$!555HSMM
c8,,,,,r$   c                    t          j        dgdgdgdgdggdg                              d          }d	}t          j        t
          |
          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr    r!   r"   dr   Too_longrC   r   zBdata file created has not lost information due to duplicate labelsr   )r   r   ri   rI   r   r   rH   )r6   rK   r0  r   s       r%   $test_categorical_warnings_and_errorsz.TestStata.test_categorical_warnings_and_errors  s    )USEC53%!-
|
 
 

&

 	 S'(>cJJJ 	) 	)i(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   A55A9<A9c                 F   d t          d          D             }|                    t          j        g           t	          j        |dg          t          j        fdD             d          dj        _	        |}
                    ||	           |                     |          }|                    d          }}|D ]D}||         j        }	|	                                j        }
|	                    |
d
          }	|	||<   Et#          j        ||           d S )Nc                 4    g | ]}d t          |          z   gS )r    )r?  r  s     r%   r  zHTestStata.test_categorical_with_stata_missing_values.<locals>.<listcomp>  s$    555Q3Q<.555r$   x   many_labelsrC   c                 F    g | ]}|                              d           S )r   )ri   )r  r   r0  s     r%   r  zHTestStata.test_categorical_with_stata_missing_values.<locals>.<listcomp>  s+    BBB#Xc]!!*--BBBr$   r   )axisr-   r  Tr   )rz   r7  r]   r   r   r   r|   concatr-   r.   rH   r8   r/  r   remove_unused_categoriesr   r   rI   rJ   )r6   r;   rK   valuesrM   r1  rs  rn   r   r   new_catsr0  s              @r%   *test_categorical_with_stata_missing_valuesz4TestStata.test_categorical_with_stata_missing_values  s7   55%**555rvh)&=/JJJ9BBBBBBB
 
 
 &$000!%t!4!4$..w77 	  	 C3-'C3355@H$$Xt$<<CHSMM
c8,,,,,r$   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"   rv  erq   reverser  noorder)r   r   r   r   r   r;  r   float_missing)r    rv  r  )r   r   r   r  r  Fnolabel)r   r  r   r  g      @int32_mixed)rv  r   r  r!   r    r   rQ   r(   r)   r*   r   )r]   r  r^   r7  r|   Categorical
from_codesr   rg   r   	from_dictdictr   rI   rJ   r{   rR   r   rj   r   codesassert_index_equalr   )
r6   r7   r/   rn   colsis_catr   r  r  r   s
             r%   test_categorical_orderz TestStata.test_categorical_order  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)r  r   r   r  )r   sort_valuesr|   r}   r  r-   r  r  r   rI   rj   )r6   r7   r/   r   r  r   r   rn   s           r%   test_categorical_sortingz"TestStata.test_categorical_sorting  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   r{   rR   r   r   r   )r6   r7   r/   r   parsed_unorderedr   s         r%   test_categorical_orderingz#TestStata.test_categorical_ordering  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)
stata1_117
stata2_117r   
stata4_117ry  r  
stata7_117
stata8_117
stata9_117r  r  	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
           |	|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   rq   Fr	  	r   rz   readStopIterationilocr   _convert_categoricalrI   rJ   r6   r7   r  r  r,   r/   fnamer   itrposr0  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
% %   
 y '	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!6   CA"!C"
A0,C/A00ACC!Cr  returnc                    | D ]}| |         }t          |j        t                    r|j                                        }|j        j        t          k    rAt          j        	                    |j        j        d          }|
                    |          }n\|j        j        dk    rLt          |j                  dk    r4|j                            t                    }|
                    |          }|| |<   | S )zX
        Emulate the categorical casting behavior we expect from roundtripping.
        F)r   r6  r   )r{   rR   r   r   r  r   r7  r|   r  _with_inferr   r  ri   )r  r   serr   r   s        r%   r  zTestStata._convert_categorical+  s    
  	& 	&CS/C#)%566 &k::<<>'611!#!5!5.U "6 " "J ,,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          |          }|j        ddd d f         }t          |d          5 }|                    d          }t          j        ||           d d d            n# 1 swxY w Y   t          |d	          5 }t          |          }t          j        ||           d d d            n# 1 swxY w Y   t          |d          5 }|                    d          }t          j        ||           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          |d
	          5 }t          j        |          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr(   r)   r*   zstata12_117.dtar   rq   Tr  r  r   )	r   r  r  rI   rJ   next	get_chunkr|   r  )r6   r/   r  r   rn   r  r  from_chunkss           r%   test_iteratorzTestStata.test_iterator@  s   vw0ABBE"";qsAAAv&--- 	3HHQKKE!(E222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 +++ 	3sIIE!(E222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 --- 	3MM!$$E!(E222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 +++ 	3sMMOOE!(E222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3
 +++ 	)s)C..K	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)
fk22222sZ   +A99A= A=%CC
C
"+DD D5*E++E/2E/F((F,/F,)

stata2_115r   
stata4_115rx  r  
stata7_115
stata8_115
stata9_115r  r  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
           |	|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   rq   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
% %   
 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*   zstata3_117.dta)r   cpim1r   rC   Tr  r   rq   Fr	  )r   rz   r  r  rI   rJ   )r6   r/   r  rD   r  r   r  r  r0  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          |          5 }|                                }d d d            n# 1 swxY w Y   ddddd}||k    sJ d	|d<   |}|                    |||           t          |          5 }|                                }d d d            n# 1 swxY w Y   ||k    sJ d S )
Nr-   	City RankCity ExponentCityr   r&  r;   r  )r-   r    r!   r"   z	The Index)r-   r.   rH   r   r&  )	r6   r;   r&   rK   r&  rM   r	  read_labelsexpected_labelss	            r%   test_write_variable_labelsz$TestStata.test_write_variable_labels  s    ") +/OOT?GTTT 	/",,..K	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/  	
 
 o----#. T?GTTT 	/",,..K	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/o------s#   AA!$A!%CC
C
c                     d|j         _        dddd}|}d}t          j        t          |          5  |                    |||           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 fewerr   r  r-   r.   r  r  r  rH   )r6   r;   r&   rK   r&  rM   r   s          r%   test_invalid_variable_labelsz&TestStata.test_invalid_variable_labels  s    !( 0VTT>]:S111 	Y 	Y  PW XXX	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Ys   AAAr=   r>   c                     d|j         _        dddd}d|d<   |}t          j        t          d	          5  |                    |||
           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 charactersr   r  r  )r6   r;   r&   rK   r&  rM   s         r%   $test_invalid_variable_label_encodingz.TestStata.test_invalid_variable_label_encoding  s    !( 0VTT5]L
 
 
 	Y 	Y   PW XXX	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Ys   AA"Ac                    g d}ddd                     |          d}d}t          j        t          |          5  |}|                    ||           d d d            n# 1 swxY w Y   ddd	d}d
}t          j        t          |          5  |}|                    ||           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-1r   )r&  zqA very, very, very long variable label that is too long for Stata which means that it has more than 80 charactersr  )joinr  r  r  rH   )r6   r&   rK   r  variable_labels_utf8r   rM   variable_labels_longs           r%    test_write_variable_label_errorsz*TestStata.test_write_variable_label_errors  s   MMM   
  
! 	 ]:S111 	M 	MD  7K LLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M
  2 
  
 ?]:S111 	M 	MD  7K LLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms#   A!!A%(A%B66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 d          }|d                             d          |d<   |}|                    |d           t          |d          }t          j        ||           |                    |dddi           t          |d          }t          j        ||           |j        	                                
                    d          }|                    |d|di           t          |d          }t          j        ||           d S )N  r   r   .    r  R    r   r     r   r  r   applebananacherrynumsstrsdatesr  r   FrM  Tr+   r=  )rF   r,   )dtr   r   ri   rH   r   rI   rJ   rD   tolistr-   )	r6   rK   r  r0  rn   rM   rereaddirect	dates_idxs	            r%   test_default_date_conversionz&TestStata.test_default_date_conversion  s    Kb"b"b%88Kb"b"b%88KaAq!T22

 '555 
 
 AAA;$W-44X>>$E222D555
h///$E'4QQQD555
ff---$++--33G<<	$E)TARSSSD555
ff-----r$   c                     t          dddgi          }d}t          j        t          |          5  |}|                    |           d d d            d S # 1 swxY w Y   d S )Nr    y      ?       @y       @      @z"Data type complex128 not supportedr   )r   r  r  NotImplementedErrorrH   )r6   rK   r0  r   rM   s        r%   test_unsupported_typezTestStata.test_unsupported_type  s    cFF#34552].c::: 	$ 	$Dd###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   AAA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  |}|                    |ddi           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  |}|                    |           d d d            d S # 1 swxY w Y   d S )Nr  r   r   r  r  r  r  r  r   r   r  r  r  r  zFormat %tC not implementedr   r  tCr+   z1-1-1990r   zAsia/Hong_Kong)periodstzzData type datetime64)	r  r   r   r  r  r  rH   r|   
date_range)r6   rK   r  r0  r   rM   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::: 	C 	CDd7D/BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C j!8HIII'555 
 
 ].6LMMM 	$ 	$Dd###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s$   B**B.1B.>D##D'*D'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
r   r(   r)   r*   zstata15.dtaTr  )r  r  r  r   )r6   r/   r   s      r%   test_repeated_column_labelsz%TestStata.test_repeated_column_labels2  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   rq   r   )
r    r!   r"   rv  r  r  gr  r  r0  )r  r  wr  )r   r   r]   r   rI   rJ   )r6   r/   r~   r0  s       r%   test_stata_111zTestStata.test_stata_111D  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  |}|	                    |           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 \(.+\)r   )
r   r]   finfodoubleepsmaxr  r  r  rH   )r6   rK   r~   r   rM   s        r%   test_out_of_range_doublez"TestStata.test_out_of_range_doubleT  s     "(29"5"5"9;OP!$bhry&9&9&=rx	?R?R?V W 
 
) 	 ]:S111 	 	DKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   B>>CCc                    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          |          }|d                             t          j                  |d<   |}t          j        |                    d          |           d S )Nr  r  r  r-   r  )r   r]   r  rg   r  r  r-   r.   ri   rH   r   rh   rI   rJ   r/  )r6   rK   r0  r   rM   r  rn   s          r%   test_out_of_range_floatz!TestStata.test_out_of_range_floatd  s'    HRZ((,HRZ((,t3 HRZ((,HRZ((,! 
 
 & 	= 	=C$SM00<<HSMM$D!!#+N#;#B#B2:#N#N 
f..w77BBBBBr$   infvalc                     t          ddgd|gd          }d}t          j        t          |          5  |}|                    |           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.r   r   r  r  r  rH   )r6   r  rK   r~   r   rM   s         r%   test_infzTestStata.test_inf  s     sCjc6]KKLL= 	 ]:S111 	 	DKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA A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 )
Nr8  r{     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#  rD   r-   r-   c                 F    t          |                               d          S )Nr-   )r   r/  r  s    r%   r  z-TestStata.test_path_pathlib.<locals>.<lambda>  s    :a==227;; r$   )r   r]   r  r  r|   r  rI  rz   r-   r.   rI   round_trip_pathlibrH   rJ   )r6   rK   r~   r  rU  s        r%   test_path_pathlibzTestStata.test_path_pathlib  s    ")C..((111HT&\\**(88eBii88899
 
 

  ;;&r{FIFF
b&)))))r$   rF   c                 8   dg di}t          |          }|d                             d          |d<   |}|                    ||           t          |d          5 }|                                }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   rM  Tr  r.  r0  r/  )r   r   r   r   )r   ri   rH   r   r  )r6   rF   rK   rv  r~   rM   dta_iterr  s           r%   test_value_labels_iteratorz$TestStata.test_value_labels_iterator  s     +++,AS'..,,3
Dk222t,,, 	3#0022L	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3%E%EFFFFFFFs   B  BBc           
         t          dt          j        d                              d          z  t	          j        t          d                    t	          j        d t          d          D                                 }d|j        _	        |}|
                    |           t          |d	          }t          j        ||           d S )
Nr8  r{  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  rI  rz   r-   r.   rH   r   rI   rJ   )r6   rK   r~   rM   r  s        r%   test_set_indexzTestStata.test_set_index  s    ")C..((111HT&\\**(88eBii88899
 
 

  
DDG444
b&)))))r$   column)msrY  weekrX  qtrhalfrR  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   rN  )r6   r9  r/   r~   unformattedra  s         r%   (test_date_parsing_ignores_format_detailsz2TestStata.test_date_parsing_ignores_format_details  s^     vw8KLLMMfQY'F1fvo-.	i''''''r$   littlebigc                    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
        _        |                                }|}|                    |ddi|dgd           |                     |          }|d d          }|d                             d          |d<   |r|d                             d          |d<   t          j        |                    d          |           t          j        ||           d S )Nr6  r7  r   r8  r9  r      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai  zstring-1zobject-1z
2003-12-26r!     bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr  )r6  r7  r_   r`   ra   rg   rh   r   rr  s2045srtlforced_strlr<  rQ   r_   r`   ra   rg   r-   r   r=  rI  r>   )r,   r  convert_strlr;   r   r?  )r   r]   r@  r   r7  r_   r`   ri   ra   rg   r-   r.   r   rH   r8   rI   rJ   r/  )	r6   r  rK   rA  r0  r   rM   r1  rn   s	            r%   test_writer_117zTestStata.test_writer_117  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%}}%t,' 	 	
 	
 	
 "&t!4!4AAA;'
3::8DD 	B!)(!3!:!:5!A!AHX
",,W55	
 	
 	
 	h-----r$   c                    t          g dg dgg d          }d|j        _        d}t          j        t
          |          5  |}|                    |dd	gd
           |                     |          }|                    d          }|j	        |_	        t          j
        ||d           d d d            d S # 1 swxY w Y   d S )N)  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar-  r  )  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr.  r  )2long1long1long1long1long1long1long1long1long1long1longr   rC   r-   r_  r   rP  r   r>   )rJ  r;   Frx   )r   r-   r.   rI   r   r   rH   r8   r/  rD   rJ   )r6   rK   r0  r   rM   r  s         r%   test_convert_strl_name_swapz%TestStata.test_convert_strl_name_swap  s>   ''')D)D)DE---
 
 
 &K'(9EEE 	L 	LDd&!cJJJ]]4((F%%g..F%-FN!&(UKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls   A*B::B>B>c                 p   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  |                    |ddi           d d d            d S # 1 swxY w Y   d S )Nr  r   r   r  r  r  r  r  r   r   r  r  r  r  z0convert_dates key must be a column or an integerr   
wrong_namer=  r+   )r  r   r   r  r  r  rH   )r6   rK   r  r0  rM   r   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 
 
 @]:S111 	H 	Hd<2FGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   B++B/2B/c           
         t          j                    }t          dt          j        d                              d          z  t          j        t          d                    t          j        d t          d          D                                 }d|j
        _        |}|                    ||	           |                    d
           t          |d          5 }|                    |                                           d d d            n# 1 swxY w Y   t#          |d          }t%          j        ||           d S )Nr8  r{  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   wbr6  )r(   BytesIOr   r]   r  r  r|   r  rI  rz   r-   r.   rH   seekopenwriter  r   rI   rJ   )r6   r;   rK   bior~   rM   dtar  s           r%   test_nonfile_writingzTestStata.test_nonfile_writing6  sR    jll")C..((111HT&\\**(88eBii88899
 
 

  
C)))$ 	"IIchhjj!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"DG444
b&)))))s    (DDDc           
      T   t          dt          j        d                              d          z  t	          j        t          d                    t	          j        d t          d          D                                 }d|j        _	        |}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   t          j        ||           d S )Nr8  r{  r"  r$  c                     g | ]}d | S r&  r#   r  s     r%   r  z/TestStata.test_gzip_writing.<locals>.<listcomp>M  r'  r$   r#  r(  r-   rW  r=   r  rbr6  )r   r]   r  r  r|   r  rI  rz   r-   r.   gzipGzipFilerH   r   rI   rJ   )r6   rK   r~   rM   gzr  s         r%   test_gzip_writingzTestStata.test_gzip_writingH  s   ")C..((111HT&\\**(88eBii88899
 
 

  ]4&& 	)"KKCK(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)]4&& 	7"g666F	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
b&)))))s$   &C

CC*DDD)stata16_118stata16_be_118stata16_119stata16_be_119c           	          |                       |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*   r   )utf8latin1ascii	utf8_strl
ascii_strl)   ραηδαςu   PÄNDÄSprp  rq  )   ƤĀńĐąŜ   Ör    rr  r    )   ᴘᴀᴎᴅᴀS   Ünrt  rv  )      rw  rv  rw  rv  ) r  r    rx  r    )r  r  r  r  r  )r  r  rx  r  rx  rC   )r8   r   rI   rJ   )r6   r7   r/   
unicode_dfrD   r  rn   s          r%   test_unicode_dta_118_119z"TestStata.test_unicode_dta_118_119X  s     ]]88D&'d===#Q#QRR
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          |_        |}|                    |dd           t	          |          }|                    d	          }t          j        ||           d |d
<   |                    |dd
gd           t	          |          }|                    d	          }|r|d
                             d          |d
<   t          j        ||           d S )N  stringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringr   )mixednumberr   ra   Fr>   rE   r  r}  )rF   rJ  r;   r?  )r   r~  ri   rH   r   fillnarI   rJ   )r6   rK   rA  outputrM   r  rn   s          r%   test_mixed_string_strlz TestStata.test_mixed_string_strlr  s   *a88DTU:V:VW6"",,W55%===D!!==$$
fh/// w%wiQTUUUD!!==$$ 	@ ( 1 8 8 ? ?HW
fh/////r$   c                     dddd ddg}t          |          }d |d<   t          j        t          d          5  |                    ||           d d d            d S # 1 swxY w Y   d S )Nnoner   )r  r~  r   z Column `none` cannot be exportedr   r  r  )r6   r;   rK   r  s       r%   test_all_none_exceptionz!TestStata.test_all_none_exception  s    !Q//$!1L1LM6""v]:-OPPP 	8 	8OOIwO777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   AA#&A#c                     d}t          |gdg          }d}d}t          j        t          | d|           5  |                    |           d d d            d S # 1 swxY w Y   d S )Nu9   Here is one __�__ Another one __·__ Another one __½__invalidrC   z\'latin-1' codec can't encode character '\\ufffd' in position 14: ordinal not in range\(256\)zP'ascii' codec can't decode byte 0xef in position 14: ordinal not in range\(128\)|r   )r   r  r  UnicodeEncodeErrorrH   )r6   r;   rK   contentr~   msg1msg2s          r%   test_invalid_file_not_writtenz'TestStata.test_invalid_file_not_written  s    My9+666; 	
+ 	 ]-5E5Et5E5EFFF 	# 	#KK	"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   AA!$A!c                 ~   t          dgdz  dgdz  gddg          }|                    |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            d S # 1 swxY w Y   d S )Npandasr   u   þâÑÐÅ§var_strvar_strlrC   r>   )r;   rJ  ra  zlatin-1zutf-8s   strlsr   r  s   GSO       )r   rH   rZ  r  encodesplitfindr  )
r6   rK   r  r  r  rn   gsosgsor#  sizes
             r%   test_strl_latin1zTestStata.test_strl_latin1  s   Z!^n-12Y
<S
 
 
 		3j\JJJ)T"" 		,fkkmmG%H??9--8888??7++w6666==**1-ad3Dzz&))!""- , ,ii((,388G,,q013xx4!8+++++,		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		, 		,s   CD22D69D6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   rR  rC   )	rI   r   UnicodeWarningr   r  messagerh  r   rJ   )r6   r/   r   rM   r  rT  rn   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.gzra  i  )rb  rZ  r   r  _nvar)r6   r/   rd  r  s       r%   test_stata_119zTestStata.test_stata_119  s   
 YHT67,?@@$
 
 	-R -F##%%%|u,,,,,- - - - - - - - - - - - - - -	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s4   A9"A!A9!A%	%A9(A%	)A99A= A=)r?   r@   Nc                 |   t          j        g dd          }t          g dg dg dgg d          }||d	<   d
ddddd}d}dddddi}|d                             t          j                  |d<   t          |||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 S )N)r       β   ĉTr   )r   r   u   ᴬu   ᴀ relatively long ŝtring)r  r   u   ᴮr  )r   r   u   ᴰN)   År  r  strlsrC   	   ᴐᴬᵀr  u	   ᵈᵉᵊu   ᴎტჄႲႳႴႶႺzLong Stringsr  )r  r  r  r  r  u   ᴅaᵀa-labelr  labelu   æøåu   ŋot valid latin-1r   r   r   r  F)r(  rJ  r&  rF   r  r;   r  r   )r;   rF   )r|   r  r   ri   r]   ra   r   
write_filer   r  replacer   rr  rI   rJ   r   r(  r&  rH   )r6   r;   r  rK   r   r)   r&  r(  r  writerrV  r  reread_to_statas                r%   test_utf8_writerzTestStata.test_utf8_writer  sV    n...===>>>###%%%
 0//
 
 
  [,#
 
 &
'h;OPPQ$Z&&rx00T
 !!+%

 

 

 	#I..W,,R00W J|D12299*EEITTVV 	T
 	dN333## 	?v$
2222))++>>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	ieDDD$Y//
dO44444s    (E55E9<E9c                 v   t          t          j        dt          j                            }t	          j        t          d          5  t          ||d           d d d            n# 1 swxY w Y   t	          j        t          d          5  t          ||d           d d d            d S # 1 swxY w Y   d S )	N)r   i  rQ   z"version must be either 118 or 119.r   r>   r  zYou must use version 119r?   )r   r]   zerosr_   r  r  r  r   )r6   rK   r~   s      r%   test_writer_118_exceptionsz$TestStata.test_writer_118_exceptions  s/   rx
"':::;;]:-QRRR 	8 	8Ir37777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]:-GHHH 	8 	8Ir37777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s$   	A((A,/A,B..B25B2dtype_backendnumpy_nullablepyarrow)marksc                    |dk    rdnd}t          t          j        g d|          g dg dg dt          j        d	d
d          dt          j        g dd                    }|                    |          }|dz  }|                    |d           |                    |           |                     |          }t          ddt          j	        gg dddt          j	        gg dt          j        d	d
dd          dt          j
        t          d
          d                    }t          j        |                    d          |           d S )Nr  Int64zint64[pyarrow])r   r   NrQ   r   )TFN)g      ?g      @g      @z
2020-12-31r   D)r  freqr  r   r   r   r-   r  r-   )r  ztest_stata.dtar?   r  r   r   r   r   r:  )r  r  rB   )r   r|   r^   r  r  convert_dtypesrH   r8   r]   r   r}   rz   rI   rJ   r/  )	r6   r  rK   tmp_pathrR   r~   
stata_pathr1  rn   s	            r%   test_read_write_ea_dtypesz#TestStata.test_read_write_ea_dtypes
  s   
 ),<<<BRXlll%888$__((($__]<EEE  (9997333	
 	
 	
 ];; 00

J,,,
I!%y!9!9BF^$__1bf%$__]<4PPP  -aw777

 

 

 	4>>wGGRRRRRr$   )r   r=   r   r>   r?   r@   c           
      T   t          t          j        ddgt          j                  t          j        ddgt          j                  t          j        ddgt          j                  d          }t           |d	d
dd| d                    }t          j        ||           d S )Nir  rQ   ii  i  ibyter  rP  r(   r)   r*   stata_int_validranges_r   	r   r]   r^   r_   r`   ra   r   rI   rJ   r6   r;   r/   rn   r   s        r%   test_read_data_int_validrangesz(TestStata.test_read_data_int_validranges/      $BG<<<xrx@@@+z!:"(KKK 
 
 HT67,RW,R,R,RSS
 
 	fh/////r$   c           
      T   t          t          j        ddgt          j                  t          j        ddgt          j                  t          j        ddgt          j                  d          }t           |d	d
dd| d                    }t          j        ||           d S Ni~   rQ   i i  i   ir  r(   r)   r*   r  r   r  r  s        r%   %test_read_data_int_validranges_compatz/TestStata.test_read_data_int_validranges_compat>  r  r$   c           
      T   t          t          j        ddgt          j                  t          j        ddgt          j                  t          j        ddgt          j                  d          }t           |d	d
dd| d                    }t          j        ||           d S r  )r   r]   r^   r`   ra   r   rI   rJ   r  s        r%   ,test_read_data_int_validranges_compat_nobytez6TestStata.test_read_data_int_validranges_compat_nobyteN  s    $BH===xrx@@@+z!:"(KKK 
 
 HT67,RW,R,R,RSS
 
 	fh/////r$   N)j__name__
__module____qualname__r8   r	   r  markparametrizerO   ro   r   r   r   r   r   r   r  r-  r2  r4  rB  rJ  rP  rW  rb  rp  ru  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r:  r?  rB  r_  rf  rn  filterwarningsrt  rx  r  r  r  r  r  staticmethodr   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r]   infr   r+  r3  r8  rA  rK  rQ  rT  r^  re  rz  r  r  r  r  r  slowr  r  r  paramr|  
skip_if_nor  r  r  r  r#   r$   r%   r3   r3   <   s       4 4 40 0 0 [Y(B(B(BCC3 3 DC3 [Y(B(B(BCC!E !E DC!EF [Y(B(B(BCC
H 
H DC
H [TTT 0 0 0:D4 D4 D4L [HHH 
0 
0 
0 [Y(F(F(FGG)0 )0 HG)0V [Y(A(A(ABB+0 +0 CB+0\ [	
 	
 	

 
C C
 
C [	
 	
 	
 &F &F &FPS S S
 
 
  [Y(B(B(BCC
 
 DC
2  
+ 
+ 
+ [Y(B(B(BCC7 7 DC7S S S8 [Y(B(B(BCC$S $S DC$SL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3 3 DC3 [Y(B(B(BCC( ( DC(@ @ @& [Y(B(B(BCC@ @ DC@ 8 8 8
S 
S 
SS S S&S S S / / // / /S S S<S S S [Y(B(B(BCC[[3*55!@ !@ 65 DC!@F  0 0 0"$ $ $$" " "> [Y880 0 980  [Y(A(A(ABB0 0 CB0  [Yc
330 0 430F
 F
 F
P5 5 54- - -^ [Y(B(B(BCC[F .- .-  DC.-`) ) ) [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 36 [ 566[	
 	
 	
  [[1a&11[3eT]CC[_udm<< !  ! =< DC 21  76& !D! ! !  [Y(B(B(BCC. . DC.. [Y(B(B(BCCY Y DCY [Yc
33Y Y 43YM M M<. . .B$ $ $$ $ $>  $, , ,    C C C6 [X'899	 	 :9		* 	* 	* []T5M::
G 
G ;:
G* * * [EEE ( ( (" [[8U*;<<K. K. =<K.ZL L L H H H( [Y(B(B(BCC* * DC*"* * *  [	
 	
 	
 4 4 4"0 0 0* [Y(B(B(BCC8 8 DC8 [Y(B(B(BCC# # DC#, , ,$1 1 1( [	- 	- 	- [Y(8(8(899[[8U*;<</5 /5 =< :9/5b8 8 8 [	<6<	y9Q9QRRRS S S	 SB [Y(F(F(FGG0 0 HG0 [Y(A(A(ABB0 0 CB0 [Yc
330 0 430 0 0r$   r3   r;   )r   r   r   r   r   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.dtastata-compat-r   Fr	  r  rM   r  r   rI   rJ   r;   r/   	data_baserefoldrn   old_dtas          r%   test_backward_compatr  ^  s    vw//I
',,y"8
9
9C
',,y"?'"?"?"?
@
@C#HooG'8??????r$   r   r   c                     |ddd          }t           j                            |d          }t           j                            |d|  d          }t          |d          }t          |d          }t	          j        ||d	           d S )
Nr(   r)   r*   r  r  r   Fr+   r	  r  r  s          r%   %test_backward_compat_nodateconversionr  h  s     vw//I
',,y"8
9
9C
',,y"?'"?"?"?
@
@C#U333HE222G'8??????r$   r   c                      |dddd          } |dddd|  d          }t          |d          }|                    d	g
          }t          |d          }t          j        ||d           d S )Nr(   r)   r*   r  r  r   Fr+   s10rC   r	  )r   droprI   rJ   )r;   r/   r  r  rn   r  s         r%   test_backward_compat_nostringr  t  s     (4*@
A
AC
(4*G'*G*G*G
H
HC#U333H}}eW}--HE222G'8??????r$   )r   r   r   r   r   r=   r?   c                      |dddd|  d          } |dddd|  d          }t          |          }t          |          }t          j        ||           d S )Nr(   r)   r*   r  r   stata-compat-be-r   rI   rJ   r;   r/   r  rC  rn   big_dtas         r%   test_bigendianr    ss    
(4*G'*G*G*G
H
HC
(4*JW*J*J*J
K
KC#HooG'8,,,,,r$   c                      |dddd|  d          } |dddd|  d          }t          |d          }t          |d          }t          j        ||           d S )	Nr(   r)   r*   r  r   r  Fr+   r  r  s         r%   test_bigendian_nodateconversionr    s     (4*G'*G*G*G
H
HC
(4*JW*J*J*J
K
KC#U333HE222G'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  ra  )r   r  emptyr{   _path_or_bufr(   rX  rZ  )r/   monkeypatch	file_pathr  fpr\  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r<   use_dictTFinferc                    d}| r|r| }n||          }|d| z  }| }|rd}|rd| i}t          t          j                            d                              d          t          d                    }	d	|	j        _        ||z  }
|
                                 |		                    |
||
           | 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| |
}t1          |d	          }|	}t3          j        ||           d S )Nzdta_inferred_compression.dtar  r  methodr   rD  rE  rC   r-   )r;   compressionrb  ra  r  rr   tarbz2zstd	zstandardxzlzmar6  )r   r]   rF  rG  rH  rI  r-   r.   touchrH   rb  rZ  r(   rX  r  zipfileZipFilefilelisttarfileextractfilegetnamesr  r  importorskipr   rI   rJ   )r  r;   r  r  compression_to_extensionr  	file_namefile_extcompression_argr~   rM   compr  r   r  r  r  rn   s                     r%   test_compressionr    s    /I $ 	="HH/<H^^^#	!O "! 2#[1	
	a  00994::
 
 
B BHMiDJJLLLKKg?KCCCfYtT"" 	)dDIIKK((B	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)			_T3'' 	94DIIdmA&67788B	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9			\$ 	G3COOCLLNN1,=>>CCEEFFB	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G			XdD!! 	)TDIIKK((B	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)			";//YYtT"" 	)dDIIKK((B	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)			"6**YYtT"" 	)dDIIKK((B	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)		g...FH&(+++++sm   'C??DD'3E&&E*-E*AG++G/2G/'II
I
'J55J9<J91'L$$L(+L(r  r  r  )Nr]  r  c                    d| }d}t          t          j                            d                              d          t          d                    }d|j        _        | |d}||z  }|                                 |	                    ||	           | 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          }
|}t'          j        |
|           d S )Ntest.ztest.dtar   rD  rE  rC   r-   )r  archive_namer  r  r  r   r   r6  )r   r]   rF  rG  rH  rI  r-   r.   r  rH   r  r  r  r	  filenamer(   rX  r  r   rI   rJ   )r  r  r  r  r  r~   r  rM   zpr  r  rn   s               r%   test_compression_dictr    s    #""IL	
	a  00994::
 
 
B BHM#\BBKiDJJLLLKK+K...(e++_T3'' 	52r{##q((((;q>*l::::BGGBKN3344B	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5
 g...FH&(+++++s   8A%D))D-0D-c           
          t          dt          g dd          i          }d|j        _        |                                }|                    ||            t          |dd	          5 }t          |          D ]h\  }}|                    d          }d|v sJ t          j
        |j        |j        j        d|z  d|d
z   z           t          |          d
k               i	 d d d            d S # 1 swxY w Y   d S )Ncats)r    r!   r    r!   r"   r   rQ   r-   r  r   F)r  r  r   rx   )r   r   r-   r.   r   rH   r   	enumerater/  rI   rj   r  r  r  )r;   rK   r~   rn   r  r  blocks          r%   test_chunked_categoricalr    sW   	FF#<#<#<JOOOP	Q	QBBHMwwyyHKK	7K+++	Y!	F	F	F &!&)) 	 	HAuOOG,,EU????"
"1q51A;#67!$Ua    	                 s   ,A9C33C7:C7c           	      @    | dddd          }g d}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   z.series with value labels are not fully labeledr   r  r   r   r    r!   r   rh   rQ   rq   )r   rI   r   r
   r  rI  r  r|   r  r  r   r   __next__r   rJ   )
r/   dta_filer  r   r  r  r  idxlarge_chunkr  s
             r%    test_chunked_categorical_partialr&  	  s   xfg/PQQH&&&F
:C	X	+	+	+ Fv'(DCPPP 	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 
	#$@	L	L	L , ,Q/// 	,6 //++K	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, , , , , , , , , , , , , , , !!F&+.....sl   C?BC(C?(C,	,C?/C,	0C??DD%E/7EE/E	E/E	 E//E36E3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 positiver   r  )r  r  r  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           	         ddgdgdz  z   t          fdt          d          D                       }|                    | 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            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|   r  )r  r  r  s     r%   r  z.test_iterator_value_labels.<locals>.<dictcomp>/	  s0    VVVI!IIr~fdCCCVVVr$   r   FrM  )r,  r+  r*  r  r  r   )r   rz   rH   r|   r  r   r  rI   r  rk   r  r   rJ   )rK   r~   rn   r  r0  r  r  r  s          @r%   test_iterator_value_labelsr.  ,	  s   #ykC&77F	VVVVUSTXXVVV	W	WBKK	uK---x999::H	I	-	-	- K!&)) 	K 	KHAu1XX Q Q%el&7&:&ExPPPP!%SAES=1H)IJJJJ	KK K K K K K K K K K K K K K K K K Ks   3A=C>>DDc           	         t          t          d t          d          D                       t          d t          d          D                       ggddg          }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 S )Nc              3       K   | ]	}d |z  V  
dS r   Nr#   r  s     r%   	<genexpr>z&test_precision_loss.<locals>.<genexpr>;	  s&      &&qad&&&&&&r$   <   c              3       K   | ]	}d |z  V  
dS r1  r#   r  s     r%   r2  z&test_precision_loss.<locals>.<genexpr>;	  s&      +D+DQAqD+D+D+D+D+D+Dr$   4   rC  rB  rC   z&Column converted from int64 to float64r   FrM  r  )r   rB  )r   rC  )r   sumrz   rI   r   r   rH   r   r   r]   rh   rj   rk   rN  float)rK   r~   r  expected_dts       r%   test_precision_lossr9  9	  s   	
&&E"II&&&
&
&+D+D%))+D+D+D(D(D	EF!
 
 
B 
	#%M
 
 
 2 2 	I51112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 	""F"*bj1%9JKKKK6=+666:k"bf[&99999:h5)9#:#:::::::s   :BB"%B"c                    t          g dg dgddgg d          }d|j        _        |                    ||            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 S )Ng~Ϛ?g9DܜJ?g>D)?g.4i(@g33333@g̤Ar-  r.  XYZr  r-   r  r  r7  r6  )r   r-   r.   rH   r   rI   rJ   decompress_filer(   rX  r  )r  rK   r~   r  fhcontentss         r%   test_compression_roundtriprE  I	  s*   		'	'	')G)G)GHCj
 
 
B
 BHMKK	{K333	{gNNNF"f%%% 
	I{	3	3 )r:bggii(() ) ) ) ) ) ) ) ) ) ) ) ) ) )G444F"f%%%%%s   <'B//B36B3to_infer
read_inferc                 :   | }||         }d| }t          g dg dgddgg d          }d|j        _        |rd	n|}	|rd	n|}
||z  }|                                 |                    ||	
           t          ||
d          }t          j        ||           d S )Nr  r;  r<  r-  r.  r=  r  r-   r  r  rA  )r   r-   r.   r  rH   r   rI   rJ   )compression_onlyrG  rF  r  r  r  extr  r~   to_compressionread_compressionrM   rU  s                r%   test_stata_compressionrM  \	  s    
 #K
";
/Cs}}H		'	'	')G)G)GHCj
 
 
B
 BHM (9WWkN",=ww+hDJJLLLKK.K111*:gNNNF&"%%%%%r$   c           	         t          g dddt          j        dt          j        gg dt          j        g d          d          }| }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}ddddi}t          j
        t          |          5  t          |||           d d d            n# 1 swxY w Y   d}ddddddi}t          j
        t          |          5  t          |||           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   )r0  r  r  r  r0  )fully_labelledpartially_labelledr?  r@  r   r   r   r  )r   r  )rO  rP  r@  r0  r  r  r  r  zCCan't create value labels for notY, it wasn't found in the dataset.notYr  r  )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|   r  r   r  r   r  r  r  r  r  )	rK   r)   rM   r  rn   r  r  reader_value_labelsr   s	            r%   !test_non_categorical_value_labelsrT  w	  s   -oo#&RVS"&"A!!! 9 9 9::		
 	
 D D#'::$)66 L ?,>%=%=>>Ht,???F
	T		 /f$1133"h...../ / / / / / / / / / / / / / / PCX667L	xs	+	+	+ ; ;D$\::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	2  SSSS99:L	z	-	-	- ; ;D$\::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s6   B??CC.DDD>EE"%E"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}d}t          j        t          |          5  |                    | |           d d d            n# 1 swxY w Y   t          |           5 }|                                }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )N)r   r   r   r   rq   r   )r   r   r   r   r   r   )r   rq   rq   r   r   r   rd  )z	invalid~!	6_invalid&invalid_name_longer_than_32_characters	aggregater   r   r  r  rY  r   r   )r   r   rq   r   r   r   )	invalid__
_6_invalid invalid_name_longer_than_32_char
_aggregate_1__2_r_  r   rQ  )r   rI   r   r   rH   r   r  )rK   r)   r  rn   r   r  rS  s          r%   0test_non_categorical_value_label_name_conversionr_  	  s   ++++++6H6H6H+++&&&	
 	
 D "h//!h//6=&2I2I[G L "h//"x0007F,C,C&kg, H HC		#$5S	A	A	A < <il;;;< < < < < < < < < < < < < < < 
Y		 /6$1133"h...../ / / / / / / / / / / / / / / / / /s$   'BBB%CCCc                    dddddi}t          dg di          }|                    | |           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            d S # 1 swxY w Y   d S )Nrepeated_labelsTenzMore than ten)r   r   (   )r   r   r   r   rc  rc  rQ  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:
r   T)	r   rH   r   r  r  r  r  r  r   )rK   r  r)   r  rS  r   repeatsr   s           r%   ;test_non_categorical_value_label_convert_categoricals_errorrf  	  s    	?PPL 777	
 D 	MM),M777	YU	;	;	; 4v$11334 4 4 4 4 4 4 4 4 4 4 4 4 4 4,....
C		?*; < <<G

 
 	
 
 
C 
z	-	-	- 9 99488889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s$   A%%A),A)7CCCrR   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          }|                    |d|           t          |d          }	t          j        |j        |	j                   t          j        |	j        |           t          j        |	j        |           d S )Nr  r   rQ   )r    r!   Nr   ur  rb   ra   boolr_   r!   r  )r    r!   r  r"   r  FrE   Tr2  )r   r   r|   NAr.   r!   rR   numpy_dtyper  r   BASE_MISSING_VALUESr7  rH   r   rI   rj   r    r"   )
rR   r;   rK   r~   
dtype_namevaluer8  
expected_b
expected_cr  s
             r%   test_nullable_supportrq  	  s^     
((BE25)<<<((())	
 	

 
B ',J##C,,JW

	v		
1*=E
E
"
"CCV#>>>JS111JKK	ugK>>>	4888F24***68Z00068Z00000r$   c                    t          t          d          g dd                              d          }| }|                    |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 S )Nr   r  rw   r1  r   Fr>   rE   r!   ra   rh   r    rC   )r   rz   r  rH   r   r   r]   rR   rI   rj   rk   rN  )rK   r~   rM   df2rk   df3s         r%   test_empty_frameru  
  s     
eAhh___==	>	>	>	C	CA	F	FBDKK%K555
T

C#::::"(7++"(92E2EFFGGF3:v...
TC5
)
)
)Cc>>>>3:vz3%'899999r$   c                 
   d}t          t          j        |          dg          }d t          j        t
          j        gdz   D             dfdt          |          D             i}|                    | ||           d S )Ni  r   rC   c                 8    g | ]}d                      |          S )r  )r  )r  r  s     r%   r  z"test_many_strl.<locals>.<listcomp>&
  s"    QQQ1BGGAJJQQQr$   r   c                 "    i | ]}||         S r#   r#   )r  r  lblss     r%   r  z"test_many_strl.<locals>.<dictcomp>'
  s    9991AtAw999r$   )r  r;   )	r   r]   r  	itertoolsproductr6  ascii_lettersrz   rH   )rK   r;   rv  r~   r  ry  s        @r%   test_many_strlr}  "
  s    A	29Q<<%	1	1	1BQQ	 1V5I4JQ4N PQQQD9999a999:LKK	gKFFFFFr$   )r>   r?   r@   Nc                 ~    t          dddd ddt          j        ddg          }|                    | |           d S )Nr|  r   )str1r~  r   r  )r   r|   rj  rH   )rK   r;   r~   s      r%   test_strl_missingsr  +
  sY     
#q11Q''Ua((	

 
B KK	7K+++++r$   c                     t          ddgi          }|                    | d|           t          |           }t          j        ||           d S )NdoubleByteColu  §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§r   rE   rG   )rK   r;   r~   df_inputs       r%   test_ascii_errorr  9
  sV     
Ok]3	4	4BKK	q'K:::)$$H"h'''''r$   )Or  r   r  rb  r(   rz  r  r6  r  r
  r  numpyr]   r  pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsr|  r  r|   r   pandas._testing_testingrI   pandas.core.framer   r   pandas.io.parsersr	   pandas.io.statar
   r   r   r   r   r   r   r   r   fixturer&   r1   r3   r  r  r  r  r  r  r  r  r  r  r  r&  r(  r.  r9  rE  rM  rT  r_  rf  BooleanDtype	Int8Dtype
Int16Dtype
Int32Dtype
Int64Dtype
UInt8DtypeUInt16DtypeUInt32DtypeUInt64Dtyperq  ru  r}  r  r  r#   r$   r%   <module>r     sT   



            				     				          ( ( ( ( ( ( ) ) ) ) ) ) ) ) )     # # # # # #             
 ' & & & & &
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
      _ 0 _ 0 _ 0 _ 0 _ 0 _ 0 _ 0 _ 0DA $B$B$BCC@ @ DC@ S#J//@ @ 0/@ SE**	@ 	@ +*	@ $G$G$GHH- - IH- S#J//- - 0/-2 2 2. $>$>$>??dE]334-000, 0, 10 43 @?0,f E7#344%9%9%9::, , ;: 54,0 $>$>$>??  @?$/ / /( &677  87
K 
K 
K; ; ; & & && dE]33e}55& & 65 43&2#; #; #;L"/ "/ "/J"9 "9 "9J $>$>$>??









 1 1  @?14: : :$ $>$>$>??G G @?G $9$9$9::
, 
, ;:
, $9$9$9::( ( ;:( ( (r$   