
    Owgh                    r   d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z
d dlZd dlmc mZ d dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ ejJ                  d        Z&ejJ                  d        Z' G d	 d
      Z(ejR                  jU                  dg d      d        Z+d Z,d Z-ejR                  jU                  dg d      ejR                  jU                  dddg      ejR                  jU                  dddg      d                      Z.ejR                  jU                  dddg      ejR                  jU                  dg d      d               Z/ejR                  jU                  dg d      d        Z0d Z1ejR                  jU                  dd      d        Z2d  Z3d! Z4d" Z5ejR                  jU                  d#ddg      ejR                  jU                  d$ddg      d%               Z6d& Z7d' Z8d( Z9ejR                  jU                  dg d      ejR                  jU                  d)ejt                  ejv                  ejx                  ejz                  ej|                  ej~                  ej                  ej                  ej                  g	      d*               ZCd+ ZDy),    N)datetime)CategoricalDtype)	DataFrameSeriesread_csv)	CategoricalConversionWarningInvalidColumnNamePossiblePrecisionLossStataMissingValueStataReaderStataWriterStataWriterUTF8ValueLabelTypeMismatch
read_statac                  ,    t        g dg dg dd      S )N            )      ?      @g      ;@g     @T@)Atlanta
Birmingham
CincinnatiDetroitabc)r        Q/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/io/test_stata.pymixed_framer%   &   s    'C	
 r#   c                 X     | dddd      }t        |d      }d|j                  _        |S )Niodatastatazstata5_114.dtaTconvert_datesindex)r   r,   name)datapath	dta14_114
parsed_114s      r$   r0   r0   1   s3    vw0@AIIT:J#Jr#   c            
       L   e Zd Zd Zd Zej                  j                  dg d      d        Zej                  j                  dg d      d        Z	ej                  j                  dg d      d        Z
ej                  j                  dd	d
g      d        Zd Zej                  j                  dg d      d        Zej                  j                  dg d      d        Zd Zd Zd Zd Zej                  j                  dg d      d        Zd Zd Zej                  j                  dg d      d        Zd Zej                  j                  dg d      d        Zd Zej                  j                  dg d      ej                  j                  dg d      d               Zej                  j                  dg d      d        Zej                  j                  dg d      d         Zej                  j                  dg d      d!        Zd" Zej                  j                  dg d      d#        Zd$ Z d% Z!d& Z"d' Z#d( Z$d) Z%d* Z&d+ Z'ej                  j                  dg d      ej                  j                  d,d-d.g      d/               Z(d0 Z)d1 Z*d2 Z+d3 Z,ej                  j                  dg d4      d5        Z-d6 Z.d7 Z/d8 Z0ej                  j                  dg d      ej                  jc                  d9      d:               Z2d; Z3ej                  j                  dg d      d<        Z4ej                  j                  dd=d>g      d?        Z5ej                  j                  dd@dAg      dB        Z6ej                  j                  dd=d>g      dC        Z7ej                  jc                  dD      ej                  j                  dg dE      ej                  j                  dFdGdHg      ej                  j                  dIdJdKg      ej                  j                  dLdJdKg      dM                                    Z8e9dNe:dOe:fdP       Z;dQ Z<ej                  jc                  dD      ej                  j                  dg dR      ej                  j                  dFdGdHg      ej                  j                  dIdJdKg      ej                  j                  dLdJdKg      dS                                    Z=dT Z>ej                  j                  dg d      dU        Z?ej                  j                  dg d      dV        Z@ej                  j                  ddWdXg      dY        ZAdZ ZBd[ ZCd\ ZDd] ZEd^ ZFd_ ZGd` ZHda ZIej                  j                  dbeJj                  eJj                   g      dc        ZLdd ZMde ZNej                  j                  dfdKdJg      dg        ZOdh ZPej                  j                  dig dj      dk        ZQdl ZRdm ZSdn ZTej                  j                  dg d      do        ZUdp ZVdq ZWdr ZXej                  j                  dg d      ds        ZYej                  j                  dg d      dt        ZZdu Z[dv Z\ej                  j                  dw        Z^ej                  j                  dg dx      dy        Z_dz Z`ej                  j                  d{d| ej                  d} ebj                  d}      ~      g      d        Zdy)	TestStatac                     t        |d      S )NTr*   )r   selffiles     r$   read_dtazTestStata.read_dta:   s    $d33r#   c                     t        |d      S )NT)parse_datesr   r4   s     r$   r   zTestStata.read_csv>   s    $//r#   versionr   u   v   w   Nc                     t        dg      }t        j                         5 }|j                  |d|       t	        |      }t        j
                  ||       d d d        y # 1 sw Y   y xY w)NunitcolumnsFwrite_indexr:   )r   tmensure_cleanto_statar   assert_frame_equal)r5   r:   empty_dspath	empty_ds2s        r$   test_read_empty_dtazTestStata.test_read_empty_dtaA   s^    fX.__ 	7$dwG"4(I!!(I6	7 	7 	7s   6A!!A*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
      }|j                         }|d   j                  t        j                        |d<   |d   j                  t        j                        |d<   |d   j                  t        j
                        |d<   |d   j                  t        j
                        |d<   |d   j                  t        j
                        |d<   t        j                          5 }|j#                  |d	|
       t%        |      }t        j&                  ||       t        j(                  |j*                  |j*                         d d d        y # 1 sw Y   y xY w)Nr   dtype)
i8i16i32i64u8u16u32u64f32f64rU   rV   rW   rX   rT   FrD   )r   nparrayint8int16int32int64uint8uint16uint32uint64float32float64copyastyperF   rG   rH   r   rI   assert_series_equaldtypes)r5   r:   empty_df_typedexpectedrK   empty_rereads         r$   test_read_empty_dta_with_dtypesz)TestStata.test_read_empty_dta_with_dtypesJ   s   
 #hhs"''2xx2884xx2884xx2884hhs"((3xx2995xx2995xx2995xx2::6xx2::6
 "&&(!$..rww7"5/00:"5/00:"5/00:"5/00: __ 	I$##DeW#M%d+L!!(L9""8??L4G4GH		I 	I 	Is   A KKc                    t        t        d      g dd      }t        j                         5 }|j	                  |d|       t        |      }d d d        t        j                  t        j                        sJ |j                         }|d   j                  t        j                        |d<   t        j                  ||d       y # 1 sw Y   }xY w)	N   )b1b2b3b4b5r   r    FrD   r   Tcheck_index_type)r   rangerF   rG   rH   r   
isinstancer,   pd
RangeIndexrg   rh   r[   r_   rI   )r5   r:   dfrK   read_dfrl   s         r$   test_read_index_col_nonez"TestStata.test_read_index_col_nonem   s    U1X,JKL__ 	'$KK%KA &G	' '--777779 ,,RXX6
gx$G	' 	's    C

Cr6   
stata1_114
stata1_117c                 n    |ddd| d      }| j                  |      }t        t        j                  t        j                  t        j                  t        j                  t        j                  fgg d      }|d   j	                  t        j
                        |d<   t        j                  ||       y )Nr'   r(   r)   .dta
float_missdouble_miss	byte_missint_miss	long_missrB   r   )r7   r   r[   nanrh   re   rF   rI   r5   r6   r.   parsedrl   s        r$   test_read_dta1zTestStata.test_read_dta1z   s    fg$t}=t$ ffbffbffbffbff56W
 "*,!7!>!>rzz!J
fh/r#   c                    t        j                  t        dddddd      dt        dd	d      t        dd	d
      t        dd	d	      t        ddd	      t        dd	d	      t        dd	d	      ft        dddddd      dt        ddd      t        ddd      t        dd	d	      t        ddd	      t        dd	d	      t        dd	d	      ft        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  fgg d      }|d   j                  d      |d<    |dddd      } |dddd       } |dddd!      }t        j                  t              5  | j                  |      }d d d        t        j                  t              5  | j                  |      }d d d        t        j                  t              5  | j                  |      }d d d        t        j                  |d"#       t        j                  |d"#       t        j                  |d"#       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   jxY w)$N                 l   *}ai  r      i     i        r   iZli  
   r   i     i  )
datetime_cdatetime_big_cdateweekly_datemonthly_datequarterly_datehalf_yearly_dateyearly_daterB   r   Or'   r(   r)   zstata2_114.dtazstata2_115.dtazstata2_117.dtaTcheck_datetimelike_compat)r   from_recordsr   r{   NaTrh   rF   assert_produces_warningUserWarningr7   rI   )	r5   r.   rl   path1path2path3r0   
parsed_115
parsed_117s	            r$   test_read_dta2zTestStata.test_read_dta2   s5   )) T2r2r26!T1b)T1a(T1a(T1a(T1a(T1a(	 T2r2q"5T2q)T1b)T1a(T1a(T1a(Q1%	 P+.	1"
F #+="9"@"@"Evw0@Avw0@Avw0@A''4 	.u-J	.''4 	.u-J	.''4 	.u-J	. 	j(dS
j(dS
j(dS%	. 	.	. 	.	. 	.s$   I	I+<I7I(+I47J )
stata3_113
stata3_114
stata3_115
stata3_117c                 t    |ddd| d      }| j                  |      }| j                   |dddd            }|j                  t        j                        }|d   j                  t        j
                        |d<   |d   j                  t        j                        |d<   t        j                  ||       y )Nr'   r(   r)   r   
stata3.csvyearquarter)	r7   r   rh   r[   re   r^   r]   rF   rI   r   s        r$   test_read_dta3zTestStata.test_read_dta3   s     fg$t}=t$ ==$!NO??2::.#F+22288<&y188A
fh/r#   )
stata4_113
stata4_114
stata4_115
stata4_117c                     |ddd| d      }| j                  |      }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 ]  }||   j                         }t        j                  |d   |j                                  }|dk(  r|}|j                  d      j                  }|j                  |d      }|j                  j                  d d       |||<    t        j                  ||       y ) Nr'   r(   r)   r   )onetenr   r   r   )twoniner   r   r   )threeeightr   r   r   )foursevenr   r   r   fivesixrp   r   r   r   r   r   r   r   r   r   	   r   r   )fully_labeledfully_labeled2incompletely_labeledlabeled_with_missingsfloat_labelledrB   r   r   categoryTorderedinplace)r7   r   r   r[   r   rg   asarraynotnarh   _valuesset_categories
categoriesrenamerF   rI   )	r5   r6   r.   r   rl   colorigr   cats	            r$   test_read_dta4zTestStata.test_read_dta4   sd    fg$t}=t$))34=42666226651&!RVVW5'1bffg626662ubffe4
.  	 CC=%%'DH_$=djjl$KLJ,,!
++j)11C$$Z$>CNN!!$!5HSM	  	fh/r#   c                     | j                   |dddd            }t        j                  g dg dg dgg d	      }t        j                  ||d
       y )Nr'   r(   r)   zstata12_117.dta)r   abc	abcdefghi)r   cbaqwertywertyqwerty)]    strl)xyzrB   Fcheck_dtype)r7   r   r   rF   rI   )r5   r.   r   rl   s       r$   test_read_dta12zTestStata.test_read_dta12  sS    ]]8D&'CT#UV
))'/ 
 $
 	j(Fr#   c           
         | j                   |dddd            }|d   j                  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   j                  t        j                        |d<   |j                  D ]  }t        j                  ||   ||            t         |dddd            5 }|j                         }dddddddd}t        j                  ||       |j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr'   r(   r)   zstata14_118.dtaBytesr   )CatBogotau   Bogotár   r   u   option b Ünicoder   DogBostonu   Uzunköprü)PlaneRomeu   Tromsør           option ar   )PotatoTokyou	   Elâzığ      @r   r   )r   r   r   r   gT?r   gUUUUUU?)ThingsCitiesUnicode_Cities_StrlIntsFloatsr   LongsrB   r   u'   Here are some strls with Ünicode charsz	long datazHere are some thingsz	byte datazint datazHere are some citiesz
float data)r   r   r   r   r   r   r   u   This is a  Ünicode data label)r7   rh   r   r   r[   r   re   rC   rF   assert_almost_equalr   variable_labelsassert_dict_equal
data_label)r5   r.   
parsed_118rl   r   rdrvlvl_expecteds           r$   test_read_dta18zTestStata.test_read_dta18  sN   ]]8D&'CT#UV
(188=
7))N-PE??
$ &h/66rzzB%% 	CC"":c?HSMB	C $9JKL 	FPS$$&B'P$0$"0&K   [1>>%EEEE	F 	F 	Fs   =AE		Ec                 <   t        t        j                  t        j                  t        j                  t        j                  t        j                  fgg d      }d|j                  _        t        j                         5 }|j                  |d        | j                  |      }d d d        |j                         }|j                  j                  t        j                        |_        t        j                  j                  d      |       y # 1 sw Y   mxY w)Nr   rB   r,   r*   )r   r[   r   r,   r-   rF   rG   rH   r7   rg   rh   r_   rI   	set_index)r5   originalrK   written_and_read_againrl   s        r$   test_read_write_dta5zTestStata.test_read_write_dta5=  s    ffbffbffbffbff56W
 &__ 	9$d$7%)]]4%8"	9 ==?!..rxx8
4>>wGR	9 	9s   %DDc                 2   | j                   |dddd            }d|j                  _        |j                  j                  t        j
                        |_        |d   j                  t        j
                        |d<   |d   j                  t        j
                        |d<   t        j                         5 }|j                  |d        | j                  |      }t        j                  |j                  d      |d	
       d d d        y # 1 sw Y   y xY w)Nr'   r(   r)   r   r,   r   r   r*   Frw   )r   r,   r-   rh   r[   r_   rF   rG   rH   r7   rI   r	  )r5   r.   r
  rK   r  s        r$   test_write_dta6zTestStata.test_write_dta6L  s    ==$!NO%!..rxx8#F+22288<&y188B__ 	$d$7%)]]4%8"!!&009!&	 	 	s   8ADDc           	      8   t        ddddt        j                  d      ggg d      }t        |d   t              |d<   d	|j
                  _        |j
                  j                  t        j                        |_        |d
   j                  t        j                        |d
<   t        j                         5 }|j                  |ddi|       | j                  |      }t        j                  |j                  d	      |d       d d d        y # 1 sw Y   y xY w)Nstringobjectr   皙?
2003-12-25)r  r  integerfloatingr   r(   rC   rO   r,   r  r   tcr+   r:   Frw   )r   r[   
datetime64r   r  r,   r-   rh   r_   rF   rG   rH   r7   rI   r	  )r5   r:   r
  rK   r  s        r$   test_read_write_dta10zTestStata.test_read_write_dta10\  s    Xq#r}}\/JKLK
 $HX$6fE%!..rxx8&y188B__ 	$d:t2DgV%)]]4%8"!!&009!&		 	 	s   8ADDc                     t        j                         5 }t        t        j                  j                  d      j                  d      t        d            }|j                  |       d d d        y # 1 sw Y   y xY w)Nr   r   r   ABrB   )	rF   rG   r   r[   randomdefault_rngstandard_normallistrH   )r5   rK   r}   s      r$   test_stata_doc_examplesz!TestStata.test_stata_doc_examplesq  s_    __ 	$		%%a(88A4PT:B KK		 	 	s   AA22A;c                    t        t        j                  j                  d      j	                  d      t        d            }t        j                  |j                  dddf<   |j                         }t        j                         5 }|j                  |d       d d d        t        j                  ||       y # 1 sw Y    xY w)	Nr   )rp   r   abcdrB   r   r!   FrE   )r   r[   r  r  r   r!  r   locrg   rF   rG   rH   rI   )r5   r}   df_copyrK   s       r$   test_write_preserves_originalz'TestStata.test_write_preserves_originalx  s     II!!!$44V<d6l
  VVq#c'z'')__ 	1$KK%K0	1
b'*	1 	1s   B;;Cc                 ~   t         |dddd            }t         |dddd            }|j                  d   }|j                  d   }||k(  sJ t        |t              sJ t	        j
                         5 }|j                  |d|       t        |      }t	        j                  ||       d d d        y # 1 sw Y   y xY w)Nr'   r(   r)   zstata1_encoding.dtar   FrD   )r   	kreis1849rz   strrF   rG   rH   rI   )	r5   r:   r.   rawencodedresultrl   rK   reread_encodeds	            r$   test_encodingzTestStata.test_encoding  s     $9NOPXdFG=RST""1%==#!!!&#&&&__ 	;$TugF'-N!!'>:	; 	; 	;s   46B33B<c                 `   t        dgg d      }t        dgg d      }d|j                  _        |j                  t        j
                        }t        j                         5 }t        j                  t              5  |j                  |d        d d d        | j                  |      }d d d        |j                         }|j                  j                  t        j
                        |_        t        j                  j                  d      |       y # 1 sw Y   xY w# 1 sw Y   yxY w)Nr   )goodu   bäd8number%astringwithmorethan32characters______rB   )r2  b_d_8number astringwithmorethan32characters_r,   r*   r   r,   r-   rh   r[   r_   rF   rG   r   r
   rH   r7   rg   rI   r	  )r5   r
  	formattedrK   r  rl   s         r$   test_read_write_dta11zTestStata.test_read_write_dta11  s    N
 NS
	  '	$$RXX.	__ 	9$++,=> <!!$d!;< &*]]4%8"		9 >>#!..rxx8
4>>wGR< <	9 	9s$   %D$?DD$D!	D$$D-c                 b   t        dgg d      }t        dgg d      }d|j                  _        |j                  t        j
                        }t        j                         5 }t        j                  t              5  |j                  |d |       d d d        | j                  |      }d d d        |j                         }|j                  j                  t        j
                        |_        t        j                  j                  d      |       y # 1 sw Y   xY w# 1 sw Y   yxY w)Nr   r   r   r   rp   r   )!astringwithmorethan32characters_1!astringwithmorethan32characters_2+-shortdeleterB   )r7   _0astringwithmorethan32character__1__short_deleter,   r  r8  )r5   r:   r
  r9  rK   r  rl   s          r$   test_read_write_dta12zTestStata.test_read_write_dta12  s    

  

	  '	$$RXX.	__ 	9$++,=> M!!$dG!LM &*]]4%8"	9 >>#!..rxx8
4>>wGRM M	9 	9s$   %D%?DD%D"	D%%D.c                    t        dt        j                        }t        dt        j                        }t        dt        j                        }t        |||d      }d|j                  _        |}|d   j                  t        j                        |d<   t        j                         5 }|j                  |       | j                  |      }d d d        |j                         }|j                  j                  t        j                        |_        t        j                  j!                  d      |       y # 1 sw Y   mxY w)Ni   rO   i   l        )r^   r_   r`   r,   r`   )r   r[   r^   r_   r`   r   r,   r-   rh   rf   rF   rG   rH   r7   rg   rI   r	  )	r5   s1s2s3r
  r9  rK   r  rl   s	            r$   test_read_write_dta13zTestStata.test_read_write_dta13  s    D)E*E*rBDE%	&w/66rzzB	'__ 	9$d#%)]]4%8"	9 >>#!..rxx8
4>>wGR	9 	9s   -#D<<E)
stata5_113
stata5_114
stata5_115
stata5_117c                     |ddd| d      }| j                  |      }d|j                  _        t        j                  ||       t        j
                         5 }|j                  |ddi|       | j                  |      }d d d        |j                         }|j                  j                  t        j                        |_        t        j                  j                  d      |       y # 1 sw Y   mxY w)	Nr'   r(   r)   r   r,   date_tdtdr  )r7   r,   r-   rF   rI   rG   rH   rg   rh   r[   r_   r	  )	r5   r6   r0   r:   r.   r   rK   r  rl   s	            r$   test_read_write_reread_dta14z&TestStata.test_read_write_reread_dta14  s    
 fg$t}=t$#
j&1__ 	9$Y4EwW%)]]4%8"	9 ??$!..rxx8
4>>wGR	9 	9s   (C//C8)
stata6_113
stata6_114
stata6_115
stata6_117c                 b   | j                   |dddd            }|d   j                  t        j                        |d<   |d   j                  t        j                        |d<   |d   j                  t        j
                        |d<   |d   j                  t        j                        |d<   |d	   j                  t        j                        |d	<   |d
   j                  t        j                  d      |d
<    |ddd| d      }| j                  |      }t        j                  ||       y )Nr'   r(   r)   
stata6.csvbyte_int_long_float_double_rS  z%Y-%m-%dargsr   )r   rh   r[   r]   r^   r_   re   rf   applyr   strptimer7   rF   rI   )r5   r6   r.   rl   r   s        r$   test_read_write_reread_dta15z&TestStata.test_read_write_reread_dta15  s    ==$!NO$W-44RWW=#F+22288<$W-44RXX>%h/66rzzB&y188D&y177M 8 
 fg$t}=t$
h/r#   c                 F   t        dgdg      }t        ddddd      }d	}t        j                         5 }|j	                  ||||
       t        |      5 }|j                  dk(  sJ |j                  |k(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   variablerB     r            zThis is a data file.)
time_stampr  r:   z29 Feb 2000 14:21)r   r   rF   rG   rH   r   rn  r  )r5   r:   r
  rn  r  rK   readers          r$   test_timestamp_and_labelz"TestStata.test_timestamp_and_label  s    dVj\:dAr2r2
+
__ 	7$
G   T" 7f((,????((J6667	7 	7
7 7	7 	7s#   !B#B:BB	BB c                 H   t        dgdg      }d}t        j                         5 }d}t        j                  t
        |      5  |j                  |||       d d d        t        j                  j                  |      rJ 	 d d d        y # 1 sw Y   4xY w# 1 sw Y   y xY w)Nrh  ri  rB   z01 Jan 2000, 00:00:00z"time_stamp should be datetime typematch)rn  r:   )
r   rF   rG   pytestraises
ValueErrorrH   osrK   isfile)r5   r:   r
  rn  rK   msgs         r$   test_invalid_timestampz TestStata.test_invalid_timestamp  s    dVj\:,
__ 	,$6Cz5 P!!$:w!OPww~~d++++		, 	,P P	, 	,s#   BB)BB	BB!c                    t        t        j                  t        j                  d      d            }d|j                  _        t        j                         5 }t        j                  t              5  |j                  |       d d d        | j                  |      }d d d        j                  d      }t        |j                        }d }t        ||      |_        |j!                         }|j                  j#                  t        j$                        |_        t        j&                  ||       y # 1 sw Y   xY w# 1 sw Y   xY w)Ng      9@)rp   rp   r,   c                     t        | d         S )Nr   )intr   s    r$   <lambda>z5TestStata.test_numeric_column_names.<locals>.<lambda>1  s    S1Y r#   )r   r[   reshapearanger,   r-   rF   rG   r   r
   rH   r7   r	  r!  rC   maprg   rh   r_   rI   )r5   r
  rK   r  rC   convert_col_namerl   s          r$   test_numeric_column_namesz#TestStata.test_numeric_column_names%  s    RZZ		$@A%__ 	9$++,=> (!!$'( &*]]4%8"	9 "8!A!A'!J-556.),-=w)G&==?!..rxx8
h(>?( (	9 	9s$   E 2D4E 4D=	9E  E	c                    t        t        j                  d      t        j                        }t        t        j                  d      t        j                        }t        j
                  |d d d<   t        j
                  |dd d<   t        ||d      }d|j                  _        t        j                         5 }|j                  ||       | j                  |      }d d d        j                  d      }|j                         }|j                  j                  t        j                         |_        t        j"                  ||       y # 1 sw Y   oxY w)Nr   rO   r   r   rJ  rK  r,   r:   )r   r[   r  re   rf   r   r   r,   r-   rF   rG   rH   r7   r	  rg   rh   r_   rI   )r5   r:   rJ  rK  r
  rK   r  rl   s           r$   test_nan_to_missing_valuez#TestStata.test_nan_to_missing_value8  s    BIIcN"**5BIIcN"**5&&3Q36614a4Bb12%__ 	9$dG4%)]]4%8"	9 "8!A!A'!J==?!..rxx8
4h?	9 	9s   <%EEc                    ddg}t        t        j                  t        j                  d      d      |      }d|j                  _        t        j                         5 }|j                  |d       | j                  |      }t        j                  t        |j                  j
                  	      5  |d    d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nr   r         $@)rp   r   rB   index_not_writtenFr%  rr  )r   r[   r  r  r,   r-   rF   rG   rH   r7   rt  ru  KeyError)r5   rC   r
  rK   r  s        r$   test_no_indexzTestStata.test_no_indexJ  s    *RZZ		$@'R1__ 	<$d6%)]]4%8"xx~~/B/BC <&':;<	< 	<< <	< 	<s%   AC2C	8C	C	CCc                    t        ddg      }t        ddgt        j                        }t        ||d      }d|j                  _        t        j                         5 }|j                  |       | j                  |      }d d d        |j                         }|j                  j                  t        j                        |_        t        j                  j                  d      |       y # 1 sw Y   mxY w)Nr   zA longer stringr          @rO   r  r,   )r   r[   rf   r   r,   r-   rF   rG   rH   r7   rg   rh   r_   rI   r	  )r5   rJ  rK  r
  rK   r  rl   s          r$   test_string_no_dateszTestStata.test_string_no_datesT  s    S+,-S#Jbjj1Bb12%__ 	9$d#%)]]4%8"	9 ==?!..rxx8
4>>wGR	9 	9s   #C--C6c                    t        ddgt        j                        }t        ddgt        j                        }t        ddgt        j                        }t        ddgt        j                        }t        ||||d      }d|j                  _        t        j                         5 }t        j                  t              5  |j                  |       d d d        | j                  |      }d d d        |j                         }t        |d	   t        j                        |d	<   t        |d
   t        j                        |d
<   t        |d   t        j                         |d<   |j                  j#                  t        j                        |_        t        j$                  j'                  d      |       y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   c   rO      i  l    )s0rJ  rK  rL  r,   rJ  rK  rL  )r   r[   r]   r^   r`   r   r,   r-   rF   rG   r   r   rH   r7   rg   r_   rf   rh   rI   r	  )	r5   r  rJ  rK  rL  r
  rK   r  modifieds	            r$   test_large_value_conversionz%TestStata.test_large_value_conversiona  s`   QG277+QHBGG,Q	N"((3Q	N"((3Bb"EF%__ 	9$++,AB (!!$'( &*]]4%8"		9 ==?bhh?bhh?bjjA!..rxx8
4>>wGR( (	9 	9s$   *G
F>G
>G	G

Gc           
      *   t        t        dddddd      g      }d|j                  _        t	        j
                         5 }t	        j                  t              5  |j                  |dd	i
       d d d        | j                  |      }d d d        |j                         }dg|_        |j                  j                  t        j                        |_        t	        j                  j!                  d      |       y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   r   r   r   r   r,   r   r  r*   _0)r   r   r,   r-   rF   rG   r   r
   rH   r7   rg   rC   rh   r[   r_   rI   r	  )r5   r
  rK   r  r  s        r$   test_dates_invalid_columnz#TestStata.test_dates_invalid_columnu  s    htRRR@AB%__ 	9$++,=> A!!$q$i!@A &*]]4%8"		9 ==? 6!..rxx8
4>>wGRA A	9 	9s$    D	C=0D	=D	D		Dc                     |dddd      }t        |      }g dg dg dg}t        |      }g d|_        |d	   j                  t        j
                        |d	<   |d
   j                  t        j                        |d
<   |d   j                  t        j                        |d<   |d   j                  t        j                        |d<   t        j                  |j                  d      |       y )Nr'   r(   r)   S4_EDUC1.dta)r   r   r   )r   r   r   r  )r   r   r   r  )clustnumpri_schlpsch_numpsch_disr  r  r  r  r   )r   r   rC   rh   r[   r^   r]   re   rF   rI   head)r5   r.   dpathr}   df0s        r$   test_105zTestStata.test_105  s     vw?m];nFj/00:Jj/009Jj/009Jj/00<J
bggaj#.r#   c                      |dddd      }t        |      5 }|j                         i k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr'   r(   r)   r  )r   value_labels)r5   r.   r  ro  s       r$   test_value_labels_old_formatz&TestStata.test_value_labels_old_format  sJ    
 vw? 	/6&&(B...	/ 	/ 	/s	   7A c                    g d}|D ci c]  }|| }}t        dddddd      gt        |      z  }t        |g|      }d|j                  _        t        dddddd      t        ddd      t        ddd	      t        ddd
      t        ddd
      t        ddd
      t        dd
d
      g}t        |gt        j                  dgt        j                  d      |      }t        j                         5 }|j                  ||       | j                  |      }	d d d        t        j                  	j                  d      |       y c c}w # 1 sw Y   4xY w)N)r  rT  twrF   tqthtyr   r   r   r   r   rB   r,   r   r   r   r   r   rP   r-   r,   rC   r*   )r   lenr   r,   r-   r{   Indexr[   r_   rF   rG   rH   r7   rI   r	  )
r5   rC   r!   conversionsr(   r
  expected_valuesrl   rK   r  s
             r$   test_date_export_formatsz"TestStata.test_date_export_formats  sL   <%,-q!t--r2r2r23c'lBdVW5%T2r2r2.T2r"T2r"T2q!T2q!T1a T1a 
 ((A3bhhW=
 __ 	9$d+>%)]]4%8"	9 	4>>wGR1 .(	9 	9s   
E2%E

Ec                 z   t        dgd ggdg      }t        dgdggt        j                  ddgt        j                  d      dg	      }t        j                         5 }|j                  |       | j                  |      }d d d        t        j                  j                  d      |       y # 1 sw Y   /xY w)
N1foorB   r   r   r   r,   r  r  )r   r{   r  r[   r_   rF   rG   rH   r7   rI   r	  )r5   r
  rl   rK   r  s        r$   test_write_missing_stringsz$TestStata.test_write_missing_strings  s    sedV_ug>URDM((Aq6@G
 __ 	9$d#%)]]4%8"	9 	4>>wGR		9 	9s    #B11B:	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                  _        |
j                         }|
j                  j                  t        j                        |_        t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  f}t        |j                   |      D ]  \  }}||   j                  |      ||<    t#        j$                         5 }|
j'                  |||       | j)                  |      }d d d        j+                  d
      }t#        j,                  ||       y # 1 sw Y   1xY w)N)r   r   TrO   )r   r   d   )r   r      )r   r   i  )r   r   i  )r   r   i)r   r   l    )r  rJ  rK  rL  s4s5s6r,   )r  r:   )r   r[   bool_ra   rb   rc   r   r,   r-   rg   rh   r_   r]   r^   rf   ziprC   rF   rG   rH   r7   r	  rI   )r5   r  r:   r  rJ  rK  rL  r  r  r  r
  rl   expected_typesr!   trK   r  s                    r$   test_bool_uintzTestStata.test_bool_uint  s    L1Krxx0Krxx0'ryy9%RYY7'ryy9%RYY7Rr2RrR
 &==?!..rxx8GGGGHHHHHHHHJJ
 ((.9 	0DAq"1+,,Q/HQK	0 __ 	9$diI%)]]4%8"	9 "8!A!A'!J
4h?	9 	9s   "&H88Ic                 X   t         |dddd            5 }|j                         }d d d        t         |dddd            5 }|j                         }d d d        d}d}j                         D ]!  \  }}|v sJ |||   k(  sJ ||v sJ ||v r!J  y # 1 sw Y   oxY w# 1 sw Y   NxY w)Nr'   r(   r)   zstata7_115.dtazstata7_117.dta)var1var2var3)label1label2label3)r   r   items)	r5   r.   r  sr_115sr_117keyslabelskvs	            r$   test_variable_labelszTestStata.test_variable_labels  s    $9IJK 	+s((*F	+$9IJK 	+s((*F	+'/LLN 	DAq;;q	>!>99;;			+ 	+	+ 	+s   BB B B)c           	      "   d}i }|D ](  }t        d|z  d|z  d|z  g      |dt        |      z   <   * t        |      }t        j                         5 }|j                  |d       t        |      5 }|j                          t        |j                  |j                  |j                        D ]8  \  }}}	t        |dd        t        |dd	       k(  sJ t        |dd        |	k(  r8J  	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
N)r   r     r   r    r!   sFr%  r   )r   r+  r   rF   rG   rH   r   _ensure_openr  _varlist_fmtlist_typlistr}  )
r5   str_lensr  str_lenr
  rK   srri  fmttyps
             r$   test_minimal_size_colzTestStata.test_minimal_size_col  s     	G$*wgsW}=%AcCL !	 Q<__ 	4$d6T" 4b!*-bkk2;;*T 4&Hc3x|,C"I>>>x|,33344	4 	44 4	4 	4s+   D0A3C9$C9(D9D	>DDc                 T   d}i }|D ](  }t        d|z  d|z  d|z  g      |dt        |      z   <   * t        |      }d}t        j                  t
        |      5  t        j                         5 }|j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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\.rr  )	r   r+  r   rt  ru  rv  rF   rG   rH   )r5   r  r  r  r
  ry  rK   s          r$   test_excessively_long_stringz&TestStata.test_excessively_long_string  s      	G$*wgsW}=%AcCL !	 Q<9 	 ]]:S1 	(" (d!!$'(	( 	(( (	( 	(s$   B/BBB	BB'c                    d}t        dggdg      }t        j                         5 }|j                  |       t	        |      5 }|j
                  }d d d        d d d        t        d      D cg c]  }dt        d|z         z    }}|j                  dd       |D ]?  }|   d	   }	t        d
      D ]'  }t        |	d	z   |z         }
|
j                  ||   k(  r'J  A 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 t        t        j                  dd      d         }
|
j                  dk(  sJ y # 1 sw Y   \xY w# 1 sw Y   axY wc c}w )N)r    hlr   r_  rB      .a   r   r      z<fs      s     z.zz<ds         s        )r   rF   rG   rH   r   VALID_RANGEry   chrinsertr   r  structunpack)r5   typesr}   rK   r  valid_rangeir  r  offsetvals              r$   test_missing_value_generatorz&TestStata.test_missing_value_generator  s   w
3__ 	.$KKT" .c!oo.	. 7<Bi@3R!V,@@q#& 	8A ^A&F2Y 8'
Q7zz_Q%77778	8  d4G H KLzzS   d4G H KLzzT!!!  MM$ CDQG
 zzS   MM$ CDQG
 zzT!!!1. .	. 	. As)   F8F+F8.G+F5	0F88G)
stata8_113
stata8_115
stata8_117c           
         g d}t        d      }t        |j                  j                               }g }t	        d      D ]=  }t	        d      D cg c]  }t        |||dz  z             }	}|j                  |	       ? t        ||      }
t         |ddd| d	      d
      }t        j                  ||
       y c c}w )N)int8_int16_int32_float32_float64_e   r  rp   rB   r'   r(   r)   r   Tconvert_missing)
r   sortedMISSING_VALUESr  ry   appendr   r   rF   rI   )r5   r6   r.   rC   smvr  r(   r  jrowrl   r   s               r$   test_missing_value_conversionz'TestStata.test_missing_value_conversion8  s    G$c((--/0r 	ABG(KQ$T!q2v,%78KCKKK	 T73T67tfDM:D
 	fh/ Ls   B=c                    g d}g d}g d}g d}g d}g d}g }t        ||||||      D ]  \  }	}
}}}}g }t        d      D ]e  }|dk(  r |j                  t        |	|
||||             (|dk(  r|j                  t        |	d	d	             J|j                  t        |	|
|             g |j                  |        |j                  t        j
                  gdz         g d
}t        ddd      |d   d<   t        ddd	      |d   d<   t        ddd	      |d   d<   t        ddd	      |d   d<   t        ddd      |d   d<   t        ddd	      x|d   d<   |d   d<   t        dd	d	      x|d   d<   |d   d<   t        ddd	      x|d   d<   x|d   d<   |d   d<   t        dd	d	      x|d   d<   |d   d<   t        ||t              }t         |dddd            }t         |dddd            }t        j                  ||d       t        j                  ||d       |D ci c]  }||dd  
 }}t        j                         5 }d |j                  _        |j                  ||!       | j                  |      }d d d        t        j                  j!                  d       |j!                  |j                  j#                  t$        j&                              d       y c c}w # 1 sw Y   lxY w)"N)i  rj  '  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_tcrS  date_twdate_tmdate_tqdate_thdate_tyr  r      r   r   r   r   rp   r     r  i  )rC   rP   r'   r(   r)   zstata9_115.dtazstata9_117.dtaTr   r  r,   r*   )r  ry   r  r   r{   r   r   r  r   rF   rI   rG   r,   r-   rH   r7   r	  rh   r[   r_   )r5   r.   yrmoddhrmmssrl   r   monthdayhourminutesecondr	  r  rC   r   r   r!   date_conversionrK   r  s                           r$   test_big_dateszTestStata.test_big_datesH  s   0 "   69"b"b"b6Q 		!2D%dFFC1X ;6JJxeS$OP!VJJxa34JJxeS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AP!Q(1+a.*24A*>>A!QXwfEvw@P QR
vw@P QR

h
dS
h
dS.561af966__ 	9$")HNNd/B%)]]4%8"	9
 	",,W5x~~44RXX>?&*	
 7	9 	9s   %K$6K))K2c                 ,   | j                   |dddd            }|d   j                  t        j                        |d<   |d   j                  t        j                        |d<   |d   j                  t        j
                        |d<   |d   j                  t        j                        |d<   |d	   j                  t        j                        |d	<   |d
   j                  t        j                  d      |d
<   t         |dddd      d      }t        j                  ||       t         |dddd      dd      }| j                   |dddd            }|d
   j                  t        j                  d      |d
<   t        j                  ||       y )Nr'   r(   r)   r[  r\  r]  r^  r_  r`  rS  ra  rb  stata6_117.dtaTr*   F)r+   preserve_dtypes)r   rh   r[   r]   r^   r_   re   rf   rd  r   re  r   rF   rI   )r5   r.   rl   no_conversion
conversions        r$   test_dtype_conversionzTestStata.test_dtype_conversion  s   ==$!NO$W-44RWW=#F+22288<$W-44RXX>%h/66rzzB&y188D&y177M 8 
 #T67,<=T
 	h6T67,<=!

 ==$!NO&y177M 8 
 	h
3r#   c           	         | j                   |dddd            }|d   j                  t        j                        |d<   |d   j                  t        j                        |d<   |d   j                  t        j
                        |d<   |d   j                  t        j                        |d<   |d	   j                  t        j                        |d	<   |d
   j                  t        j                  d      |d
<   g d}||   }t         |dddd      d|      }t        j                  ||       g d}||   }t         |dddd      d|      }t        j                  ||       d}t        j                  t         |      5  ddg}t         |dddd      d|       d d d        d}t        j                  t         |      5  g d}t         |dddd      d|       d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)Nr'   r(   r)   r[  r\  r]  r^  r_  r`  rS  ra  rb  )r\  r]  r^  r'  T)r+   rC   )r]  r^  r\  z"columns contains duplicate entriesrr  zEThe following columns were not found in the Stata data set: not_found)r\  r]  r^  	not_found)r   rh   r[   r]   r^   r_   re   rf   rd  r   re  r   rF   rI   rt  ru  rv  )r5   r.   rl   rC   dropped	reorderedry  s          r$   test_drop_columnzTestStata.test_drop_column  s    ==$!NO$W-44RWW=#F+22288<$W-44RXX>%h/66rzzB&y188D&y177M 8 
 -G$T67,<=
 	h0 -G$T67,<=
	
 	h	22]]:S1 	(Gvw0@A"	 V]]:S1 	=Gvw0@A"	 		 		 	s   G*G6*G36G?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      }|j	                         }t        j                  |D cg c]  }||   j                  d       c}d      }|j                  j                  d      j                  t        j                        |_        |d   j                  t              |d<   |d   j                  t              |d<   |D ]z  }||   j	                         }|j                  d      j                  }|j                         }|dk(  r|j                  |d      }|j                   j#                  d d       |||<   | t%        j&                         5 }|j)                  ||        | j+                  |      }d d d        j-                  d      }	t%        j.                  |	|       y c c}w # 1 sw Y   6xY w)!N)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   	unlabeledrB   r   r   axisr,   r   r2  Tr   r   r  )r   r   r[   r   rg   r{   concatrh   r,   	set_namesr_   rd  r+  r   
as_orderedr   r   r   rF   rG   rH   r7   r	  rI   )
r5   r:   r
  rl   r   r   r   rK   r  ress
             r$   test_categorical_writingz"TestStata.test_categorical_writing  s'   
 ))67@72666152665!4&!RVVWa8'1bffgq9266615ubffeR8
, ==? 999AB#Xc]!!*-B
 "11':AA"((K+34J+K+Q+QRU+V'( ( 5 ; ;C @ 
	 CC=%%'D++j)11C.."Ck!((t(<NN!!$!5HSM
	  __ 	9$dG4%)]]4%8"	9 %..w7
c8,/ C$	9 	9s   I1%IIc                    t        j                  ddz  gddz  gddz  gddz  ggdg      }t        j                  |D cg c]  }||   j	                  d       c}d	
      }t        j                         5 }d}t        j                  t        |      5  |j                  |       d d d        d d d        t        j                  dgdgdgdgd	ggdg      }t        j                  |D cg c]  }||   j	                  d       c}d	
      }t        j                  t              5  |j                         d d d        y c c}w # 1 sw Y   xY w# 1 sw Y   xY wc c}w # 1 sw Y   y xY w)Nr   i'  r    r!   dToo_longrB   r   r   r3  zbStata value labels for a single variable must have a combined length less than 32,000 characters\.rr  )r   r   r{   r5  rh   rF   rG   rt  ru  rv  rH   r   r   )r5   r
  r   rK   ry  s        r$   $test_categorical_warnings_and_errorsz.TestStata.test_categorical_warnings_and_errors
  sn    ))Ek]S5[MC%K=3;-HL

 999AB#Xc]!!*-B
 __ 	($C  z5 (!!$'(	( ))USEC53%!-
|
 999AB#Xc]!!*-B
 ''(>? 	$d#	$ 	$# C( (	( 	( C	$ 	$s<    E8EE
(E-E"*E'
E	EE'E0c                 V   t        d      D cg c]  }dt        |      z   g }}|j                  t        j                  g       t        j                  |dg      }t        j                  |D cg c]  }||   j                  d       c}d      }d|j                  _        t        j                         5 }|j                  ||	       | j                  |      }d d d        j!                  d      }|j#                         }	|	D ]C  }|	|   j$                  }
|
j'                         j(                  }|
j+                  |d
      }
|
|	|<   E |	j                  j                  t        j,                        |	_
        t        j.                  ||	       y c c}w c c}w # 1 sw Y   xY w)Nx   r   many_labelsrB   r   r   r3  r,   r  Tr   )ry   r+  r  r[   r   r   r   r{   r5  rh   r,   r-   rF   rG   rH   r7   r	  rg   r   remove_unused_categoriesr   r   r_   rI   )r5   r:   r  valuesr
  r   rK   r  r8  rl   r   new_catss               r$   *test_categorical_with_stata_missing_valuesz4TestStata.test_categorical_with_stata_missing_values(  sk   */*5Q3Q<.55rvvh))&=/J999AB#Xc]!!*-B
 &__ 	9$dG4%)]]4%8"	9 %..w7==? 	 C3-''C335@@H$$Xt$<CHSM		 
 "..rxx8
c8,) 6 C	9 	9s   F1F:%FF(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 ]i  \  }}}}|r4|j                  |t        j
                  j                  ||d      f       >|j                  |t        |t         j                        f       k t        j                  t        |            } |ddd| d      }t        |      }	t        j                  ||	       |D ]  }t        ||   j                   t"              s!t        j$                  ||   j&                  j(                  |	|   j&                  j(                         t        j*                  ||   j&                  j,                  |	|   j&                  j,                          y )NTr   r   r    r!   r;  erp   reverser  noorder)r   r   r   r   r   r  r   float_missing)r   r;  rI  )r   r   r   r  r  Fnolabel)r   r  r   r   g      @int32_mixed)r;  r   rI  r    r   r   rO   r'   r(   r)   r   )r[   r  r\   r  r{   Categorical
from_codesr   re   r   	from_dictdictr   rF   rI   rz   rP   r   ri   r   codesassert_index_equalr   )
r5   r6   r.   rl   colsis_catr   r  rS  r   s
             r$   test_categorical_orderz TestStata.test_categorical_order@  s   
 971F971dd9KL97/9RS:8"))Aq/J?ORXX>O5PQI8"))A,G="9299Q<H
 *2 	E&FC"..33E643PQ S&rzz"BCD	E &&tDz2 fg$t}=D!
h/  	C(3---/?@&&x}'8'8'>'>s@U@UV%%SM%%00&+//2L2L	r#   stata11_115stata11_117c           	      >   t         |ddd| d            }|j                  dd      }t        j                  t	        |            |_        g d}g d	}t        j                  j                  ||d
      }t        |d      }t        j                  ||d          y )Nr'   r(   r)   r   srhfirst)na_position)
r  r  r   r   r   r   r   r   r   r   )PoorFairGoodz	Very good	ExcellentT)rS  r   r   r-   )r   sort_valuesr{   r|   r  r,   rO  rP  r   rF   ri   )r5   r6   r.   r   rS  r   r   rl   s           r$   test_categorical_sortingz"TestStata.test_categorical_sortingd  s    HT67tfDMJK ##Ew#? }}S[10G
nn''J ( 
 #E*
x7r#   c                     |ddd| d      }t        |      }t        |d      }|D ]V  }t        ||   j                  t              s!||   j                  j
                  sJ ||   j                  j
                  sVJ  y )Nr'   r(   r)   r   F)order_categoricals)r   rz   rP   r   r   r   )r5   r6   r.   r   parsed_unorderedr   s         r$   test_categorical_orderingz#TestStata.test_categorical_orderingu  s    fg$t}=D!%duE 	9CfSk//1AB#;??****',008888		9r#   zignore::UserWarning)r   
stata2_117r   r   rQ  rY  
stata7_117r  
stata9_117rF  rY  	chunksizer   r   convert_categoricalsFTr+   c                     |ddd| d      }t        |||      }t        |d||      5 }d}	t        d	      D ]i  }
	 |j                  |      }|j                  |	|	|z   d d f   j                         }| j                  |      }t        j                  ||d
d       |	|z  }	k d d d        y # t        $ r Y  w xY w# 1 sw Y   y xY w)Nr'   r(   r)   r   rm  r+   T)iteratorrm  r+   r   rp   Fr   r   	r   ry   readStopIterationilocrg   _convert_categoricalrF   rI   r5   r6   rl  rm  r+   r.   fnamer   itrposr  chunk
from_frames                r$   test_read_chunks_117zTestStata.test_read_chunks_117  s    . vw4&>!5'

 !5'	
 	!
 C1X 
!HHY/E $[[sY)>)ABGGI
!66zB
%%5TX y 
!	! 	! % 	! 	!/   B?B/AB?/	B<8B?;B<<B??Cr|  returnc                 T   | D ]  }| |   }t        |j                  t              s#|j                  j	                         }|j
                  j                  t        k(  rDt        j                  j                  |j
                  j                        }|j                  |      }|| |<    | S )zX
        Emulate the categorical casting behavior we expect from roundtripping.
        )rz   rP   r   r   rA  r   r  r{   r  _with_inferr   )r|  r   serr   r   s        r$   rv  zTestStata._convert_categorical  s    
  	&CS/C#))%56kk::<>>''61!#!5!5cnn6L6L!MJ,,Z8C"%
3	& r#   c                     |dddd      }t        |      }t        |d      5 }|j                  d      }t        j                  |j                  ddd d f   |       d d d        t        |d	      5 }t        |      }t        j                  |j                  ddd d f   |d          d d d        t        |d      5 }|j                  d      }t        j                  |j                  ddd d f   |       d d d        t        |d	      5 }|j                         }t        j                  |j                  ddd d f   |       d d d        t        |d
	      5 }t        j                  |      }d d d        t        j                  |       y # 1 sw Y   8xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   QxY w)Nr'   r(   r)   stata3_117.dtaTrp  rp   r   rl  r   )	r   rs  rF   rI   ru  r!  	get_chunkr{   r5  )r5   r.   rx  r   ry  r{  from_chunkss          r$   test_iteratorzTestStata.test_iterator  s   vw0@AE"- 	>HHQKE!!&++ac1f"5u=	> + 	AsIE!!&++ac1f"5uQx@	A - 	>MM!$E!!&++ac1f"5u=	> + 	>sMMOE!!&++ac1f"5u=	>
 + 	)s))C.K	)
fk2'	> 	>	A 	A	> 	>	> 	>
	) 	)s;   ;F48F";F.:F: GF"F+.F7:GG)

stata2_115r   r   rP  rX  
stata7_115r  
stata9_115rE  rX  c                     |ddd| d      }t        |||      }t        |d||      5 }d}	t        d	      D ]i  }
	 |j                  |      }|j                  |	|	|z   d d f   j                         }| j                  |      }t        j                  ||d
d       |	|z  }	k d d d        y # t        $ r Y  w xY w# 1 sw Y   y xY w)Nr'   r(   r)   r   ro  T)rp  r+   rm  r   rp   Frq  rr  rw  s                r$   test_read_chunks_115zTestStata.test_read_chunks_115  s    , vw4&> !5'
 '!5	
 	!
 C1X 
!HHY/E $[[sY)>)ABGGI
!66zB
%%5TX y 
!	! 	! % 	! 	!r~  c                 @    |dddd      }g d}d}t        ||      }t        |d	      5 }d
}t        d      D ]N  }|j                  ||      }	|	 n7|j                  |||z   d d f   }
t	        j
                  |
|	d       ||z  }P d d d        y # 1 sw Y   y xY w)Nr'   r(   r)   r  )r   cpim1r   rB   Tr  r   rp   Fr   )r   ry   rs  ru  rF   rI   )r5   r.   rx  rC   rl  r   ry  rz  r  r{  r|  s              r$   test_read_chunks_columnsz"TestStata.test_read_chunks_columns  s    vw0@A*	E73- 	!C1X !G<=#[[sY)>)AB
%%j%UKy !	! 	! 	!s   ABBc                    d|j                   _        dddd}t        j                         5 }|j	                  |||       t        |      5 }|j                         }d d d        ddddd}|k(  sJ 	 d d d        d	|d<   t        j                         5 }|j	                  |||       t        |      5 }|j                         }d d d        |k(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   2xY w# 1 sw Y   y xY w)
Nr,   	City RankCity ExponentCityr   r   r:   r   )r,   r   r    r!   z	The Index)r,   r-   rF   rG   rH   r   r   )r5   r:   r%   r   rK   r  read_labelsexpected_labelss           r$   test_write_variable_labelsz$TestStata.test_write_variable_labels  s*    ") +/O__ 
	2$  PW XT" 3b 0023  $	O /111
	2 $/ __ 	2$  PW XT" 3b 0023/111		2 	23 3
	2 
	23 3	2 	2sG    C+CC+ D5C7DC(	$C++C47D 	<DDc                    d|j                   _        dddd}t        j                         5 }d}t	        j
                  t        |      5  |j                  |||       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nr,   Zvery longvery longvery longvery longvery longvery longvery longvery longvery longvery longr  r  r   .Variable labels must be 80 characters or fewerrr  r  r,   r-   rF   rG   rt  ru  rv  rH   )r5   r:   r%   r   rK   ry  s         r$   test_invalid_variable_labelsz&TestStata.test_invalid_variable_labels6  s    !( 0VT__ 	$BCz5 $$/7 % 	 	 	 	s#   A<
A0A<0A9	5A<<Br<   r=   c                    d|j                   _        dddd}d|d<   t        j                         5 }t	        j
                  t        d	      5  |j                  |||
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr,   r  r  r  r   u   invalid character Œr   z,Variable labels must contain only charactersrr  r  r  )r5   r:   r%   r   rK   s        r$   $test_invalid_variable_label_encodingz.TestStata.test_invalid_variable_label_encodingA  s    !( 0VT5__ 	$"P  $$/7 % 	 	 	 	s#   A?A3"A?3A<	8A??Bc                    g d}dddj                  |      d}d}t        j                  t        |      5  t	        j
                         5 }|j                  ||       d d d        d d d        ddd	d}d
}t        j                  t        |      5  t	        j
                         5 }|j                  ||       d d d        d d d        y # 1 sw Y   nxY w# 1 sw Y   rxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)N)u   Ρ   Αu   Νu   Δr  u   Σr  r  r   r   zKVariable labels must contain only characters that can be encoded in Latin-1rr  )r   zqA very, very, very long variable label that is too long for Stata which means that it has more than 80 charactersr  )joinrt  ru  rv  rF   rG   rH   )r5   r%   rB  variable_labels_utf8ry  rK   variable_labels_longs          r$    test_write_variable_label_errorsz*TestStata.test_write_variable_label_errorsN  s   M   
! 	 ]]:S1 	Q" Qd$$T;O$PQ	Q
  2 
 ?]]:S1 	Q" Qd$$T;O$PQ	Q 	QQ Q	Q 	QQ Q	Q 	QsG   CC CC1(C%<C1C	CC"%C.	*C11C:c                    t        j                  ddddddd      t        j                  ddddddd      t        j                  dd	d
d	d
d	d      g}t        g dg d|d      }t        j                         5 }|j                  |d       t        |d      }t        j                  ||       |j                  |dddi       t        |d      }t        j                  ||       |j                  j                         j                  d      }|j                  |d|di       t        |d      }t        j                  ||       d d d        y # 1 sw Y   y xY w)N  r   r   .    rm  R    r   r     r   r  r   applebananacherrynumsstrsdatesFr%  Tr*   r  r  )rE   r+   )dtr   r   rF   rG   rH   r   rI   rC   tolistr,   )r5   r  r
  rK   rereaddirect	dates_idxs          r$   test_default_date_conversionz&TestStata.test_default_date_conversionl  sJ    KKb"b"b%8KKb"b"b%8KKaAq!T2

 '5
 __ 	2$d6D9F!!(F3dgt_UD9F!!&&1 ((//177@IdiQUEVWD9F!!&&1	2 	2 	2s   8CEEc                     t        dddgi      }d}t        j                  t        |      5  t	        j
                         5 }|j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   y      ?       @y       @      @z"Data type complex128 not supportedrr  )r   rt  ru  NotImplementedErrorrF   rG   rH   )r5   r
  ry  rK   s       r$   test_unsupported_typezTestStata.test_unsupported_type  ss    cFF#3452]].c: 	(" (d!!$'(	( 	(( (	( 	(s#   A1A%A1%A.	*A11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  t        j                         5 }|j                  |ddi       d d d        d d d        t        j                  ddd      }t        g dg d|d      }t        j                  t
        d      5  t        j                         5 }|j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr  r   r   r  r  rm  r  r  r   r   r  r  r  r  zFormat %tC not implementedrr  r  tCr*   z1-1-1990r   zAsia/Hong_Kong)periodstzzData type datetime64)r  r   r   rt  ru  r  rF   rG   rH   r{   
date_range)r5   r  r
  ry  rK   s        r$   test_unsupported_datetypez#TestStata.test_unsupported_datetype  s^   KKb"b"b%8KKb"b"b%8KKaAq!T2

 '5
 +]].c: 	G" Gd!!$wo!FG	G j!8HI'5
 ]].6LM 	(" (d!!$'(	( 	(G G	G 	G( (	( 	(sH   ED:,EEE)E:E	?EEE	EE'c           	          d}t        j                  t        |      5  t         |dddd      d       d d d        y # 1 sw Y   y xY w)	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
rr  r'   r(   r)   zstata15.dtaTrm  )rt  ru  rv  r   )r5   r.   ry  s      r$   test_repeated_column_labelsz%TestStata.test_repeated_column_labels  sG    	 ]]:S1 	vw>%)	 	 	s	   >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
                  ||       y )Nr'   r(   r)   zstata7_111.dtar   r   r   r   r   rp   r   )
r   r    r!   r;  rI  r   gr  r  r  )r   r   wr   )r   r   r[   r   rF   rI   )r5   r.   r}   r
  s       r$   test_stata_111zTestStata.test_stata_111  s     vw8HIJAq!Q2661a8Aq"&&!Q1a8Aq!Q1a8F	
 01
h+r#   c                    t        dt        j                  t        j                        j                  dgdt        j                  t        j                        j                  t        j                  t        j                        j
                  gd      }d}t        j                  t        |      5  t        j                         5 }|j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   g      ColumnOkColumnTooBigzZColumn ColumnTooBig has a maximum value \(.+\) outside the range supported by Stata \(.+\)rr  )r   r[   finfodoubleepsmaxrt  ru  rv  rF   rG   rH   )r5   r}   ry  rK   s       r$   test_out_of_range_doublez"TestStata.test_out_of_range_double  s     "((299"5"9"9;OP!$bhhryy&9&=&=rxx		?R?V?V W
) 	 ]]:S1 	"" "dD!"	" 	"" "	" 	"s$   3C7C+C7+C4	0C77D 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 ]'  }||   j                  t        j                        ||<   ) t        j                         5 }|j                  |       t        |      }d d d        |d   j                  t        j                        |d<   |j                         }|j                  j                  t        j                        |_        t        j                   j#                  d      |       y # 1 sw Y   xY w)Nr   r  r  r,   r  )r   r[   r  re   r  r  r,   r-   rh   rF   rG   rH   r   rf   rg   r_   rI   r	  )r5   r
  r   rK   r  rl   s         r$   test_out_of_range_floatz!TestStata.test_out_of_range_float  sV    HHRZZ(,,HHRZZ(,,t3 HHRZZ(,,HHRZZ(,,!
 & 	=C$SM00<HSM	= __ 	&$d#%F	& $,N#;#B#B2::#N ==?!..rxx8
f..w7B	& 	&s   GGinfvalc                     t        ddgd|gd      }d}t        j                  t        |      5  t	        j
                         5 }|j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r  )
WithoutInfWithInfz[Column WithInf contains infinity or -infinitywhich is outside the range supported by Stata.rr  )r   rt  ru  rv  rF   rG   rH   )r5   r  r}   ry  rK   s        r$   test_infzTestStata.test_inf  s|     sCjc6]KL= 	 ]]:S1 	"" "dD!"	" 	"" "	" 	"s#   A4A(A4(A1	-A44A=c                    t        dt        j                  d      j                  d      z  t	        j
                  t        d      t              t	        j
                  t        d      D cg c]  }d| 	 c}t                    }d	|j                  _
        d
 }t        j                  |j                  |      }t        j                  ||       y c c}w )Nr  r?     r   ABCDrO   r  i-rC   r,   r,   c                 6    t        |       j                  d      S Nr,   r   r	  r~  s    r$   r  z-TestStata.test_path_pathlib.<locals>.<lambda>      :a=227; r#   )r   r[   r  r  r{   r  r!  r  ry   r,   r-   rF   round_trip_pathlibrH   rI   r5   r  r}   ro  r.  s        r$   test_path_pathlibzTestStata.test_path_pathlib
  s    "))C.((11HHT&\8((eBi8bH8G

  ;&&r{{F;
b&) 9   +Cc                    t        dt        j                  d      j                  d      z  t	        j
                  t        d      t              t	        j
                  t        d      D cg c]  }d| 	 c}t                    }d	|j                  _
        d
 }t        j                  |j                  |      }t        j                  ||       y c c}w )Nr  r?  r  r  rO   r  r  r  r,   c                 6    t        |       j                  d      S r  r  r~  s    r$   r  z6TestStata.test_pickle_path_localpath.<locals>.<lambda>  r  r#   )r   r[   r  r  r{   r  r!  r  ry   r,   r-   rF   round_trip_localpathrH   rI   r  s        r$   test_pickle_path_localpathz$TestStata.test_pickle_path_localpath  s    "))C.((11HHT&\8((eBi8bH8G

  ;((f=
b&) 9r  rE   c                 N   dg di}t        |      }|d   j                  d      |d<   t        j                         5 }|j	                  ||       t        |d      5 }|j                         }d d d        d d d        dddd	d
dik(  sJ y # 1 sw Y    xY w# 1 sw Y   $xY w)NA)BECr  r  r(   r   r%  Tr  r  r  r  )r   r   r   r   )r   rh   rF   rG   rH   r   r  )r5   rE   r;  r}   rK   dta_iterr  s          r$   test_value_labels_iteratorz$TestStata.test_value_labels_iterator   s     +,AS'..,3__ 	7$KK+K6D40 7H'4467	7
 %EFFFF7 7	7 	7s#   !BB0BB	BB$c                    t        dt        j                  d      j                  d      z  t	        j
                  t        d      t              t	        j
                  t        d      D cg c]  }d| 	 c}t                    }d	|j                  _
        t        j                         5 }|j                  |       t        |d	
      }d d d        t        j                  |       y c c}w # 1 sw Y   %xY w)Nr  r?  r  r  rO   r  r  r  r,   	index_col)r   r[   r  r  r{   r  r!  r  ry   r,   r-   rF   rG   rH   r   rI   )r5   r  r}   rK   r  s        r$   test_set_indexzTestStata.test_set_index-  s    "))C.((11HHT&\8((eBi8bH8G

  __ 	9$KK8F	9 	b&) 9	9 	9s   +C,.C11C:column)msr   weekr  qtrhalfr  c                     t         |dddd            }|j                  d|f   }|j                  d|dz   f   }||k(  sJ y )Nr'   r(   r)   zstata13_dates.dtar   _fmt)r   r&  )r5   r  r.   r}   unformattedr9  s         r$   (test_date_parsing_ignores_format_detailsz2TestStata.test_date_parsing_ignores_format_details:  sQ     vw8KLMffQY'FF1fvo-.	i'''r#   c                    t        dddddddt        j                  d      ddddz  dgd	d
dddddt        j                  d      ddddggg d      }t        |d   t              |d<   t        |d   t        j
                        |d<   t        |d   t        j                        |d<   |d   j                  t        j                        |d<   t        |d   t        j                        |d<   d|j                  _        |j                  j                  t        j                        |_
        |j                         }t        j                         5 }|j                  |ddidgd       | j!                  |      }t        j"                  |j%                  d      |d       t        j"                  ||       d d d        y # 1 sw Y   y xY w)Nr  r  r   r  r  r     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai  zstring-1zobject-1z
2003-12-26r      bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr   )r  r  r]   r^   r_   re   rf   r   rJ  s2045srtlforced_strlr  rO   r]   r^   r_   re   r,   r   r  r
  r=   )r+   convert_strlr:   Frw   )r   r[   r  r   r  r]   r^   rh   r_   re   r,   r-   rg   rF   rG   rH   r7   rI   r	  )r5   r
  rg   rK   r  s        r$   test_writer_117zTestStata.test_writer_117N  s    MM,/$J MM,/<?-
\ $HX$6fE!(6"2"''B"8G#4BHHE$W-44RXX>$Xi%8

K%!..rxx8}}__ 	2$)40+_	   &*]]4%8"!!&009!&
 !!(D1	2 	2 	2s   A'GGc                    t        g dg dgg d      }d|j                  _        t        j                  t
              5  t        j                         5 }|j                  |ddgd	       | j                  |      }|j                  d      }|j                  |_
        t        j                  ||d
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar  r  )  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr  r  )2long1long1long1long1long1long1long1long1long1long1longr   rB   r,   r  r   r=   )r  r:   Frw   )r   r,   r-   rF   r   r
   rG   rH   r7   r	  rC   rI   )r5   r
  rK   r  s       r$   test_convert_strl_name_swapz%TestStata.test_convert_strl_name_swap  s    ')DE-
 &''(9: 	P" Pd!!$fa[#!Nt,))'2!)!1!1%%fhOP	P 	PP P	P 	Ps%    CA"C7CC	CCc                    t        j                  ddddddd      t        j                  ddddddd      t        j                  dd	d
d	d
d	d      g}t        g dg d|d      }t        j                         5 }d}t        j                  t        |      5  |j                  |ddi       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r   r   r  r  rm  r  r  r   r   r  r  r  r  z0convert_dates key must be a column or an integerrr  
wrong_namer  r*   )	r  r   r   rF   rG   rt  ru  rv  rH   )r5   r  r
  rK   ry  s        r$   test_invalid_date_conversionz&TestStata.test_invalid_date_conversion  s     KKb"b"b%8KKb"b"b%8KKaAq!T2

 '5
 __ 	L$DCz5 L!!$|T6J!KL	L 	LL L	L 	Ls$   8C	B=,C	=C	C		Cc                    t        j                         }t        dt        j                  d      j                  d      z  t        j                  t        d      t              t        j                  t        d      D cg c]  }d| 	 c}t                    }d	|j                  _        t        j                         5 }|j                  ||
       |j!                  d       t#        |d      5 }|j%                  |j'                                d d d        t)        |d	      }d d d        t        j*                  |       y c c}w # 1 sw Y   :xY w# 1 sw Y   1xY w)Nr  r?  r  r  rO   r  r  r  r,   r  r   wbr  )r'   BytesIOr   r[   r  r  r{   r  r!  r  ry   r,   r-   rF   rG   rH   seekopenwriters  r   rI   )r5   r:   bior  r}   rK   dtar  s           r$   test_nonfile_writingzTestStata.test_nonfile_writing  s    jjl"))C.((11HHT&\8((eBi8bH8G

  __ 	9$KKWK-HHQKdD! &S		#((*%&8F	9 	b&) 9& &	9 	9s*   ?E1E3 EEE	EE!c                    t        dt        j                  d      j                  d      z  t	        j
                  t        d      t              t	        j
                  t        d      D cg c]  }d| 	 c}t                    }d	|j                  _
        t        j                         5 }t        j                  |d
      5 }|j                  |d       d d d        t        j                  |d      5 }t!        |d	      }d d d        d d d        t        j"                  |       y c c}w # 1 sw Y   YxY w# 1 sw Y   9xY w# 1 sw Y   =xY w)Nr  r?  r  r  rO   r  r  r  r,   r  r<   r  rbr  )r   r[   r  r  r{   r  r!  r  ry   r,   r-   rF   rG   gzipGzipFilerH   r   rI   )r5   r  r}   rK   gzr  s         r$   test_gzip_writingzTestStata.test_gzip_writing  s   "))C.((11HHT&\8((eBi8bH8G

  __ 	;$tT* -bB,-tT* ;b#B':;	;
 	b&) 9- -; ;	; 	;sB   +D,.E	D1E	7D=E	1D:	6E	=E	E		Ec                     | j                   |dddd            }g d}g dg dg dg d	g d
g dg dg}t        ||      }t        j                  ||       y )Nr'   r(   r)   zstata16_118.dta)utf8latin1ascii	utf8_strl
ascii_strl)   ραηδαςu   PÄNDÄSpr+  r,  )   ƤĀńĐąŜ   Ör   r-  r   )   ᴘᴀᴎᴅᴀS   Ünr/  r1  )      r2  r;  r2  r;  ) r   r   r3  r   )r   r   r  r   r  )r   r   r3  r   r3  rB   )r7   r   rF   rI   )r5   r.   
unicode_dfrC   rB  rl   s         r$   test_unicode_dta_118zTestStata.test_unicode_dta_118  s[    ]]8D&'CT#UV
HB<D4$""
 VW5
j(3r#   c                    dddd ddg}t        |      }|j                  j                  d      |_        t        j                         5 }|j                  |dd       t        |      }|j                  d	      }t        j                  ||       d |d
<   |j                  |dd
gd       t        |      }|j                  d	      }t        j                  ||       d d d        y # 1 sw Y   y xY w)N  stringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringr   )mixednumberr   r_   Fr=   rD   r   r8  )rE   r  r:   )	r   r9  rh   rF   rG   rH   r   fillnarI   )r5   outputrK   r  rl   s        r$   test_mixed_string_strlz TestStata.test_mixed_string_strl  s    *a8DTU:VW6",,W5__ 	4$OODeSOA%F}}R(H!!&(3 #F7OOO%wi    %F}}R(H!!&(3	4 	4 	4s   
BC''C0c                    dddd ddg}t        |      }d |d<   t        j                         5 }t        j                  t
        d      5  |j                  ||       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nnoner   )r>  r9  r   z Column `none` cannot be exportedrr  r  )r   rF   rG   rt  ru  rv  rH   )r5   r:   r;  rK   s       r$   test_all_none_exceptionz!TestStata.test_all_none_exception  s    !Q/$!1LM6"v__ 	7$z1ST 7g67	7 	77 7	7 	7s#   A<A0A<0A9	5A<<Bc                    d}t        |gdg      }t        j                         5 }d}d}t        j                  t
        | d|       5  |j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nu9   Here is one __�__ Another one __·__ Another one __½__invalidrB   z\'latin-1' codec can't encode character '\\ufffd' in position 14: ordinal not in range\(256\)zP'ascii' codec can't decode byte 0xef in position 14: ordinal not in range\(128\)|rr  )r   rF   rG   rt  ru  UnicodeEncodeErrorrH   )r5   r:   contentr}   rK   msg1msg2s          r$   test_invalid_file_not_writtenz'TestStata.test_invalid_file_not_written  s    My9+6__ 
	"$? 
/  1D64&9IJ "D!"
	" 
	"" "
	" 
	"s#   %A:A.A:.A7	3A::Bc                 J   t        dgdz  dgdz  gddg      }t        j                         5 }|j                  |ddg       t	        |d	      5 }|j                         }d}|j                  d
      |v sJ |j                  d      |v sJ |j                  d      d   dd }|j                  d      dd  D ]@  }|j                  d      d   }||j                  d      dz      }	t        |      |	dz
  k(  r@J  	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Npandasr   u   þâÑÐÅ§var_strvar_strlrB   r=   )r:   r  r   zlatin-1zutf-8s   strlsr   r  s   GSO       )
r   rF   rG   rH   r  rs  encodesplitfindr  )
r5   r;  rK   r  rD  rl   gsosgsor  sizes
             r$   test_strl_latin1zTestStata.test_strl_latin1  s>   Z!^n-12Y
<S
 __ 	0$OOD#ZLOIdD! 	0V ++-)y1W<<<w/7:::}}X.q1!B7::f-ab1 0C))G,R0Csxx0145Ds8tax///0	0	0 	0	0 	0	0 	0s*   "DB'D8D<DD	DD"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        t        d
ggdz  dg      }t        j                  |       y # 1 sw Y   3xY w)Na  
One or more strings in the dta file could not be decoded using utf-8, and
so the fallback encoding of latin-1 is being used.  This can happen when a file
has been incorrectly encoded by Stata or some other software. You should verify
the string values returned are correct.r'   r(   r)   zstata1_encoding_118.dtaonce)filter_levelr   r   u   Düsseldorf   r*  rB   )	rF   r   UnicodeWarningr   r  messagerc  r   rI   )r5   r.   ry  rK   r  r-  rl   s          r$   test_encoding_latin1_118z"TestStata.test_encoding_latin1_118+  s    + fg/HI''VL 	/PQ &Gq6Q;;Q4<<$$Q'3...		/ }o.4{mL
gx0	/ 	/s   =BB"c                     t        j                   |dddd      d      5 }t        |      5 }|j                          |j                  dk(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr'   r(   r)   zstata1_119.dta.gzr   i  )r!  r  r   r  _nvar)r5   r.   r#  ro  s       r$   test_stata_119zTestStata.test_stata_119?  sz    
 YYT67,?@$
 	-R -F##%||u,,,-	- 	-- -	- 	-s"   A,"A A, A)	%A,,A5)r>   r?   Nc                 b   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   j                  t        j
                        |d<   t        j                         5 }t        |||dg|d||      }|j                          t        |      }	|d   j                  d      |d<   |d   j                  |d         j                  d      j                  j                         |d<   t        j                  ||	       t!        |      5 }
|
j"                  |k(  sJ |
j%                         |k(  sJ 	 d d d        |j'                  ||d       t        |      }t        j                  ||       d d d        y # 1 sw Y   GxY w# 1 sw Y   y xY w)N)r      β   ĉTr   )r   r   u   ᴬu   ᴀ relatively long ŝtring)r  r   u   ᴮr   )r   r   u   ᴰN)   År`  ra  strlsrB   	   ᴐᴬᵀr  u	   ᵈᵉᵊu   ᴎტჄႲႳႴႶႺzLong Stringsr   )rb  r`  ra  rc  rd  u   ᴅaᵀa-labelr`  labelu   æøåu   ŋot valid latin-1r   r   r   rc  F)r  r  r   rE   r:   r  r   )r:   rE   )r{   rO  r   rh   r[   r_   rF   rG   r   
write_filer   r:  replacer   r7  rI   r   r  r   rH   )r5   r:   r   r(   r   r  r  rK   writerr/  ro  reread_to_statas               r$   test_utf8_writerzTestStata.test_utf8_writerK  s   nn.=>#%
 0
  [,#
 &
'h;OPQ$Z&&rxx0T
__ 	9$$%%Y /!)	F '-N M004DM T
""<#56==jIMMXXZ J !!$7T" Cf((J666--/?BBBC MM$UMC(.O!!$85	9 	9(C C)	9 	9s%   B)F%+'F=F%F"	F%%F.c                    t        t        j                  dt        j                              }t	        j
                         5 }t        j                  t        d      5  t        ||d       d d d        d d d        t	        j
                         5 }t        j                  t        d      5  t        ||d       d d d        d d d        y # 1 sw Y   axY w# 1 sw Y   exY w# 1 sw Y   *xY w# 1 sw Y   y xY w)	N)r   i  rO   z"version must be either 118 or 119.rr  r=   r  zYou must use version 119r>   )
r   r[   zerosr]   rF   rG   rt  ru  rv  r   )r5   r}   rK   s      r$   test_writer_118_exceptionsz$TestStata.test_writer_118_exceptions}  s    rxx
"'':;__ 	7$z1UV 7b#67	7 __ 	7$z1KL 7b#67	7 	77 7	7 	77 7	7 	7sH   CC.CC2.C&=C2C	CC#&C/	+C22C;dtype_backendnumpy_nullablepyarrow)marksc                    t        g dg dg dg dt        j                  ddd      d	t        j                  g d
d            }|j	                  |      }|j                  dd       t        j                         5 }|j                  |       | j                  |      }d d d        t        ddt        j                  gg dddt        j                  gg dt        j                  ddd      d	t        j                  g d
dt        j                              }t        j                  j                  d      |       y # 1 sw Y   xY w)N)r   r   Nr   )TFN)g      ?g      @g      @z
2020-12-31r   D)r  freqrH  r   r   r   r,   rb  r,   )ro  ztest_stata.dtar>   r  r   r   r   r   )r-   rP   )r   r{   r  r  convert_dtypesrH   rF   rG   r7   r[   r   r_   rI   r	  )r5   ro  r}   rK   r  rl   s         r$   test_read_write_ea_dtypesz#TestStata.test_read_write_ea_dtypes  s   
 !$($]]<E ((973	
 ];
$c2__ 	9$KK%)]]4%8"	9 BFF^$1bff%$]]<E ((97"((C	
 	4>>wGR	9 	9s   #EEN)e__name__
__module____qualname__r7   r   rt  markparametrizerM   rn   r   r   r   r   r   r   r  r  r  r  r"  r(  r0  r:  rH  rM  rU  rf  rp  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r%  r+  r0  filterwarningsr9  r=  rD  rW  rd  rh  r}  staticmethodr   rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r[   infr  r  r  r  r  r  r  r  r  r  r$  r5  r<  r?  rG  rT  r[  slowr^  rk  rn  paramrT  
skip_if_nory  r"   r#   r$   r2   r2   9   s!   40 [[Y(BC7 D7 [[Y(BC I D ID [[Y(BC
H D
H [[VlL%AB0 C0"<T| [[H
0
0 [[H)0)0XG&FPS  [[Y(BC D(
+ [[Y(BC; D;S6 [[Y(BC#S D#SJS$ [[Y(BC[[HS DS [[H00  [[Y(BC7 D7 [[Y(BC, D,@& [[Y(BC@ D@"<SS(S//S8S [[Y(BC[[[3*5 @ 6 D @D4"($"> [[V%OP0 Q09
v4</b [[Y(BC[[F2- D2-h$< [[Y(BC- D-. [[Vm]%CD! E!F [[Vm]%CD8 E8  [[Vm]%CD	9 E	9 [[ 56[[	
  [[[1a&1[[3eT]C[[_udm<! = D 2! 7(!:  y  34 [[ 56[[	
 [[[1a&1[[3eT]C[[_udm<! = D 2 7&!@!  [[Y(BC2 D2. [[Y(BC D [[Yc
3
 4
Q<2:((>$, " C8 [[X'89	" :	"	*	* [[]T5M:
G ;
G* [[E(("E2NPL( [[Y(BC* D*"*4"4* [[Y(BC7 D7 [[Y(BC" D"0&1( [[	- 	- [[Y(89/9 :/9b7 [[	<6<<	y9QRSS	Sr#   r2   r:   )i   l   o   q   r<   c                      |ddd      }t         j                  j                  |d      }t         j                  j                  |d|  d      }t        |      }t        |      }t	        j
                  ||d       y )	Nr'   r(   r)   stata-compat-118.dtazstata-compat-r   Fr   )rw  rK   r  r   rF   rI   )r:   r.   	data_baserefoldrl   old_dtas          r$   test_backward_compatr    sf    vw/I
'',,y"8
9C
'',,yM'$"?
@C#HoG'8?r#   c                     | dddd      }t        |      5 }|j                         j                  rJ t        |j                  t
        j                        rJ 	 d d d        t        |d      5 }t        |      5 }|j                         j                  rJ |j                  |u sJ 	 d d d        d d d        t        |d      5 }t        j                  |j                               5 }t        |      5 }|j                         j                  rJ |j                  |u sJ 	 d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   >xY w# 1 sw Y   BxY w# 1 sw Y   y xY w)Nr'   r(   r)   r  r   )r   rs  emptyrz   _path_or_bufr'   r  r  )r.   monkeypatch	file_pathro  fpr  s         r$   test_direct_readr    si   vw0FGI 
Y	 ?6;;=&&&&f112::>>>>? 
i	 -"_ 	-{{}****&&",,,	-- 
i	 2"ZZ	" 	2cS! 2V!;;=....**c1112	22 2? ?	- 	-- -2 2	2 	22 2sl   AD</E;-E)E$E8)E,5-E #E,+E8<EE	EE E)%E,,E5	1E88Fc                 0    | dddd      }t        j                  t        d      5  t        |      }|j	                          d d d        t        j                  t
        d      5  j                          d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)Nr'   r(   r)   r  zwithout using a context managerrr  zis not part of the public API)rF   r   ResourceWarningr   rs  FutureWarningclose)r.   r  r  s      r$   0test_statareader_warns_when_used_without_contextr    s    vw0FGI		#	#/
  #
	 
	#	#-
  	
	   s   B &B B	Br;   use_dictTFinferc                    d}| r|r| }n||    }|d| z  }| }|rd}|rd| i}t        t        j                  j                  d      j	                  d      t        d            }d	|j                  _        t        j                  |      5 }	|j                  |	||
       | dk(  rDt        j                  |	d      5 }
t        j                  |
j                               }d d d        n| dk(  rRt!        j"                  |	d      5 }
t        j                  |
j                  |
j$                  d               }d d d        ne| dk(  rbt'        j                  |	      5 }t        j                  |j)                  |j+                         d         j                               }d d d        n| dk(  rCt-        j                  |	d      5 }
t        j                  |
j                               }d d d        n| dk(  rTt/        j0                  d      }|j                  |	d      5 }
t        j                  |
j                               }d d d        n]| dk(  rTt/        j0                  d      }|j                  |	d      5 }
t        j                  |
j                               }d d d        n| |	}t3        d	      }d d d        |j5                         }|j                  j7                  t        j8                        |_        t        j:                  |       y # 1 sw Y   sxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nzdta_inferred_compression.dtar  r  methodr   r  r  rB   r,   )r:   compressionr!  r   r  rr   tarbz2zstd	zstandardxzlzmar  )r   r[   r  r  r   r!  r,   r-   rF   rG   rH   r!  r  r'   r  rs  zipfileZipFilefilelisttarfileextractfilegetnamesr  rt  importorskipr   rg   rh   r_   rI   )r  r:   r  r  compression_to_extension	file_namefile_extcompression_argr}   rK   compr  r  r  r  r  rl   s                    r$   test_compressionr    s    /I"H/<Hq
^#	!O!#[1	
		a 0094:
B BHHM		# 3t
D'G& 4& -$ZZ		,- -E!s+ =tZZ		$--*: ;<= =E!d# KsZZq0A B G G IJK KE!$% -ZZ		,- -F"&&{3D4& -$ZZ		,- -D &&v.D4& -$ZZ		,- - BB'2134 wwyH^^**2884HN&(+3- -= =K K- -- -- -)3 3s   0M;$L%M2L6$MAL'$M$L3&5M$L??5M4$MML	ML$	 M'L0	,M3L<	8M?M	MM	MM r  r  r  )Nr  r  c                 @   d| }d}t        t        j                  j                  d      j	                  d      t        d            }d|j                  _        t        j                  |      5 }| |d}|j                  ||	       | d
k(  s|d
k(  rt        j                  |d      5 }t        |j                        dk(  sJ |j                  d   j                  |k(  sJ t!        j"                  |j%                  |j                  d               }d d d        n|}t'        d      }	d d d        |j)                         }
|
j                  j+                  t        j,                        |
_        t        j.                  	|
       y # 1 sw Y   sxY w# 1 sw Y   jxY w)Ntest.ztest.dtar   r  r  rB   r,   )r  archive_namer  r  r  r   r   r  )r   r[   r  r  r   r!  r,   r-   rF   rG   rH   r  r  r  r  filenamer'   r  rs  r   rg   rh   r_   rI   )r  r  r  r  r}   rK   r  zpr  r  rl   s              r$   test_compression_dictr    s`    z"IL	
		a 0094:
B BHHM		# 
3t!'F
Dk2U?h%/s+ 9r2;;'1,,,{{1~..,>>>ZZA 789 9
 BB'2
3 wwyH^^**2884HN&(+9 9	
3 
3s%   09F)A*FFF	FFc                 j   t        dt        g dd      i      }d|j                  _        |j	                         }|j                  j                  t        j                        |_        t        j                         5 }|j                  ||        t        |dd	      5 }t        |      D ]\  \  }}|j                  d      }d|v sJ t        j                  |j                  |j                  j                   d|z  d|d
z   z          ^ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Ncats)r   r    r   r    r!   r   rO   r,   r  r   F)rl  rf  r   )r   r   r,   r-   rg   rh   r[   r_   rF   rG   rH   r   	enumerater	  ri   r  ru  )r:   r}   rl   rK   ro  r  blocks          r$   test_chunked_categoricalr  (  s   	FF#<JOP	QBBHHMwwyH^^**2884HN		 d
D'*uE 	%f- 50&&&JJ 2 21q51A; G	 	 	 s%   >"D) A+DD)D&	"D))D2c           	      
    | dddd      }g d}t        |d      5 }t        j                  t              5  t	        |      D ]  \  }}t        |j                        |d|z  d|dz   z   k(  sJ |dk  rt        j                  d	d
g      }nt        j                  dgd      }t        j                  |j                  j                  j                  |        	 d d d        d d d        t        j                  t              5  t        |d      5 }|j                         }d d d        d d d        t        |      }t        j                  |       y # 1 sw Y   {xY w# 1 sw Y   xY w# 1 sw Y   KxY w# 1 sw Y   OxY w)Nr'   r(   r)   stata-dta-partially-labeled.dta)r   r    r   r    r   r   r  r   r   r    r   rf   rO   rp   )r   rF   r   r	   r  r!  r  r{   r  rT  r   r   __next__r   rI   )	r.   dta_filerB  ro  r  r  idxlarge_chunkr  s	            r$    test_chunked_categorical_partialr  ;  sa   fg/PQH&F	X	+ Fv''(DE 	F%f- F5EJJ'6!a%!q1u++FFFFq5((C:.C((C5	:C%%ejjnn&?&?EF	FF 
	#	#$@	A ,Q/ 	,6 //+K	,, !F&+.	F 	FF F	, 	,, ,sG   E!B#EE!E9E-#E9E	E!!E*-E6	2E99Frl  )r  r   r  c                      | dddd      }t        j                  t        d      5  t        ||      5  	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr'   r(   r)   r  zchunksize must be a positiverr  r  )rt  ru  rv  r   )r.   rl  r  s      r$   test_iterator_errorsr  N  s^    fg/PQH	z)G	H Y7 		 	 	 s!   AAAA	AAc            
         ddgdgdz  z   } t        t        d      D ci c]  }d| t        j                  | d       c}      }t	        j
                         5 }|j                  |d	
       t        j                  g dd      }t        |d      5 }t        |      D ]x  \  }}t        d      D ]9  }t	        j                  |j                  j                  |   j                  |       ; t	        j                  ||j                  |dz  |dz   dz          z 	 d d d        d d d        y c c}w # 1 sw Y   xY w# 1 sw Y   y xY w)Nc_labelb_labela_labelr  r   r   Tr   Fr%  )r  r  r  r  rO   r  r  r   )r   ry   r{   rO  rF   rG   rH   r  r   r  rT  rj   ru  r   rI   )	rB  r  r}   rK   rl   ro  r  r{  r  s	            r$   test_iterator_value_labelsr  V  s:   #ykC&77F	USTXVc!Ir~~fdCCV	WB		 Od
De,88=XN, 	O%f- O5q UA))%,,*;*;A*>*I*I8TU%%eRWWQWA}-MNO	OO O W	O 	OO Os*   "D.:D?BD3D?3D<	8D??Ec            	         t        t        d t        d      D              t        d t        d      D              ggddg      } t        j                         5 }t        j
                  t        d	      5  | j                  |d
       d d d        t        |      }t        t        j                  t        j                  gddg      }t        j                  |j                  |       |j                  d   | j                  d   k(  sJ |j                  d   t        | j                  d         k(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc              3   &   K   | ]	  }d |z    ywr   Nr"   .0r  s     r$   	<genexpr>z&test_precision_loss.<locals>.<genexpr>f  s     &qad&   <   c              3   &   K   | ]	  }d |z    ywr  r"   r  s     r$   r  z&test_precision_loss.<locals>.<genexpr>f  s     +DQAqD+Dr  4   biglittlerB   z&Column converted from int64 to float64rr  Fr%  rw  )r   r  )r   r  )r   sumry   rF   rG   r   r   rH   r   r   r[   rf   ri   rj   r&  float)r}   rK   r  expected_dts       r$   test_precision_lossr  d  s#   	
&E"I&
&+D%)+D(D	EF!
B 
	 	?d''!)Q
 	1 KK%K0	1 D!bjj"**5eX=NO
v}}k:zz+&"&&*====zz(#uRVVH-='>>>>	? 	?	1 	1	? 	?s%   E
5D>	B+E
>E	E

Ec                    t        g dg dgddgg d      }d|j                  _        t        j                         5 }|j                  ||        t        || d	      }t        j                  ||       t        j                  ||       5 }t        j                  |j                               }d d d        t        d
      }t        j                  ||       d d d        y # 1 sw Y   5xY w# 1 sw Y   y xY w)Ng~Ϛ?g9DܜJ?g>D)?g.4i(@g33333@g̤Ar  r  XYZr  r,   r  r  r  r  )r   r,   r-   rF   rG   rH   r   rI   decompress_filer'   r  rs  )r  r}   rK   r  fhcontentss         r$   test_compression_roundtripr  u  s    		')GHCj
B
 BHHM		 	*d
Dk2DkWM
b&) k2 	-bzz"''),H	-H8
b&)	* 	*	- 	-	* 	*s$   AC0$C$0+C0$C-	)C00C9to_infer
read_inferc                 H   | }||   }d| }t        g dg dgddgg d      }d|j                  _        |rd	n|}|rd	n|}	t        j                  |      5 }
|j                  |
|
       t        |
|	d      }t        j                  ||       d d d        y # 1 sw Y   y xY w)Nr  r  r  r  r  r  r  r,   r  r  r  )r   r,   r-   rF   rG   rH   r   rI   )compression_onlyr  r  r  r  extr  r}   to_compressionread_compressionrK   r.  s               r$   test_stata_compressionr    s    
 #K
";
/Cse}H		')GHCj
B
 BHHM (WkN",w+		" *d
Dn5D.>'R
fb)* * *s   8BB!c            	         t        g dddt        j                  dt        j                  gg dt        j                  g d      d      } t        j                         5 }dd	d
ddd	dd}i |dddddi}t        || |      }|j                          t        |      5 }|j                         }||k(  sJ 	 d d d        d}t        j                  t        |      5  ddddi}t        || |       d d d        d}t        j                  t        |      5  ddddddi}t        || |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)N)r   r   r   r   r   r   r  g      "@)r   r   r   r   r   )r  r  r  r  r  )fully_labelledpartially_labelledr  r  r   r   r   rf  )r   r  )r  r  r  r  r  r  rv  r  zCCan't create value labels for notY, it wasn't found in the dataset.rr  notYr  r  )r   r   zUCan't create value labels for Z, value labels can only be applied to numeric columns.r   r  r   )r   r[   r   r{   rO  rF   rG   r   rg  r   r  rt  ru  r  rv  )r(   rK   r  rl   ri  ro  reader_value_labelsry  s           r$   !test_non_categorical_value_labelsr    s   -#&RVVS"&&"A! 9:		
D 
	 ?d"'Eg>(-E":
 ClBCSSS)ABT4lC 	3&"("5"5"7&(222	3 T]]83/ 	?"X$>?Ld>	?
6 	 ]]:S1 	?SSSS!ABLd>	?/? ?	3 	3
	? 	?	? 	?/? ?sU   AE'!E:%E'E5%E'E2E'E	E'E	E'E$	 E''E0c                     t        g dg dg dg dg dd      } ddddddd	d
dddiddid}ddddddd	d
dddiddid}t        j                         5 }t        j                  t              5  | j                  ||       d d d        t        |      5 }|j                         }||k(  sJ 	 d d d        d d d        y # 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N)r   r   r   r   rp   r   )r   r   r   r   r   r   )r   rp   rp   r   r   r   r<  )z	invalid~!	6_invalid&invalid_name_longer_than_32_characters	aggregater   r   r  r  r  r   r   )r   r   rp   r   r   r   )	invalid__
_6_invalid invalid_name_longer_than_32_char
_aggregate_1__2_r  )r   rF   rG   r   r
   rH   r   r  )r(   r  rl   rK   ro  r  s         r$   0test_non_categorical_value_label_name_conversionr    s   ++6H+&	
D "h/!h/6=&2I[GL "h/"x007F,C&kg,H 
	 3d''(9: 	;MM$\M:	;  	3&"("5"5"7&(222	3	3 3	; 	;	3 	3	3 3s<   C4CCC4CC	
CC	CC&c                     dddddi} t        dg di      }t        j                         5 }|j                  ||        t	        |d      5 }|j                         }d d d        | k(  sJ d}d	d
j                  dg      z   }d| d| d
}t        j                  t        |      5  t        |d       d d d        d d d        y # 1 sw Y   jxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nrepeated_labelsTenzMore than ten)r   r   (   )r   r   r   r   r  r  r  Fr  zQ--------------------------------------------------------------------------------

z
Value labels for column a    are not unique. These cannot be converted to
pandas categoricals.

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

The repeated labels are:
rr  T)r   rF   rG   rH   r   r  r  rt  ru  rv  r   )r  r(   rK   ro  r  r   repeatsry  s           r$   ;test_non_categorical_value_label_convert_categoricals_errorr    s    	?PL 7	
D 
	 8dd6E: 	8f"("5"5"7	8"l222!DII.?$@@  		 

 ]]:S1 	8t$7	8+8 8	8 	8$	8 	8+8 8s<   !CCA
C(C6CC	CC	CC(rP   c                 8   t        t        g d      t        dt        j                  t        j                  g| j                        t        g d      d      }|j
                  j                  j                  j                  }|j                  dd      }|dk(  rd	}n|d
k(  rd}t        j                  |   }t        |      }t        d||gt        d      }t        g dd      }t        j                         5 }|j                  |d|       t        |d      }	t        j                   |j"                  |	j"                         t        j                   |	j
                  |       t        j                   |	j$                  |       d d d        y # 1 sw Y   y xY w)Nr  r   rO   )r   r    Nr   ur   r`   r_   boolr]   r    r  )r   r    r   r!   rb  FrD   Tr  )r   r   r{   NAr-   r    rP   numpy_dtyperh  r   BASE_MISSING_VALUESr  rF   rG   rH   r   ri   r   r!   )
rP   r:   r}   
dtype_namevaluer  
expected_b
expected_crK   r  s
             r$   test_nullable_supportr  	  sA     
(BEE255)<()	

B '',,J##C,JW
	v	
11*=E
E
"CCV#>JS1J		 5d
DeW=D$7
rttVXX.
vxx4
vxx45 5 5s   ;BFFc                     t        t        d      g dd      j                  d      } t        j                         5 }| j                  |dd       t        |      }d	|v sJ t        t        j                  d
      t        j                  d      d      }t        j                  |j                  |       t        |dg      }d	|vsJ t        j                  |j                  |j                  dg          d d d        y # 1 sw Y   y xY w)Nr   r  rv   r  r   Fr=   rD   r    r_   rf   r   rB   )r   ry   r  rF   rG   rH   r   r   r[   rP   ri   rj   r&  )r}   rK   df2rj   df3s        r$   test_empty_framer  >	  s     
eAh_=	>	C	CA	FB		 >d
DeS9czzbhhw/bhhy6IJK
szz62u-#~~
szz6::se+<=> > >s   B<DD)Er  r   r  r!  r'   rw  r  r  r  numpyr[   rt  pandas.util._test_decoratorsutil_test_decoratorsrT  rI  r{   r   pandas._testing_testingrF   pandas.core.framer   r   pandas.io.parsersr   pandas.io.statar	   r
   r   r   r   r   r   r   r   fixturer%   r0   r2   r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  BooleanDtype	Int8Dtype
Int16Dtype
Int32Dtype
Int64Dtype
UInt8DtypeUInt16DtypeUInt32DtypeUInt64Dtyper  r  r"   r#   r$   <module>r.     s   
    	 	      ) )  # 
 '
 
 
    nS nSb; $=>@ ?@2. $>?dE]34-0., 1 4 @.,b E7#34%9:, ; 5,0 $>? @$/& &67 8O?"*( dE]3e}5* 6 4*0#?L"3J#8L $>?









5 @56>r#   