
    .i                    ~   d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlmZ d dlmc mZ d dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( ejR                  d        Z*ejR                  d	        Z+ G d
 d      Z,ejZ                  j]                  dg d      d        Z/ejZ                  j]                  dddg      d        Z0ejZ                  j]                  ddg      d        Z1ejZ                  j]                  dg d      d        Z2ejZ                  j]                  dddg      d        Z3d Z4ejZ                  j]                  dg d      ejZ                  j]                  dddg      ejZ                  j]                  dddg      d                      Z5ejZ                  j]                  dddg      ejZ                  j]                  d g d!      d"               Z6ejZ                  j]                  dg d      d#        Z7d$ Z8ejZ                  j]                  d%d&      d'        Z9d( Z:d) Z;d* Z<ejZ                  j]                  d+ddg      ejZ                  j]                  d,ddg      d-               Z=d. Z>d/ Z?d0 Z@ejZ                  j]                  dg d      ejZ                  j]                  d1ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  g	      d2               ZJd3 ZKejZ                  j]                  dg d      d4        ZLejZ                  j]                  dg d5      d6        ZMejZ                  j]                  dg d5      d7        ZNy)8    N)datetime)Pandas4Warning)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        X/var/www/app/trading-bot/venv/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%   r1   r1   4   s3    vw0@AIIT:J#Jr$   c            
       @   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g d      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g d      d        Zej                  j                  dg d      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/d0d1g      d2               Z)d3 Z*d4 Z+d5 Z,d6 Z-ej                  j                  dg d7      d8        Z.ej                  j                  dg d9      d:        Z/ej                  j                  dd;d<g      d=        Z0d> Z1d? Z2d@ Z3ej                  j                  dg d      ej                  ji                  dA      dB               Z5dC Z6ej                  j                  dg d      dD        Z7ej                  j                  ddEdFg      dG        Z8ej                  j                  ddHdIg      dJ        Z9ej                  j                  ddEdFg      dK        Z:ej                  ji                  dL      ej                  j                  dg dM      ej                  j                  dNdOdPg      ej                  j                  dQdRdSg      ej                  j                  dTdRdSg      dU                                    Z;e<dVe=dWe=fdX       Z>dY Z?ej                  ji                  dL      ej                  j                  dg dZ      ej                  j                  dNdOdPg      ej                  j                  dQdRdSg      ej                  j                  dTdRdSg      d[                                    Z@d\ ZAej                  j                  dg d      d]        ZBej                  j                  dg d      d^        ZCej                  j                  dd_d`g      da        ZDdb ZEdc ZFdd ZGde ZHdf ZIdg ZJdh ZKdi ZLej                  j                  djeMj                  eMj                   g      dk        ZOdl ZPej                  j                  dmdSdRg      dn        ZQdo ZRej                  j                  dpg dq      dr        ZSej                  j                  d/dsdtg      du        ZTdv ZUdw ZVej                  j                  dg d      dx        ZWdy ZXej                  j                  dg dz      d{        ZYd| ZZej                  j                  dg d      d}        Z[ej                  j                  dg d      d~        Z\d Z]d Z^ej                  j                  d        Z`ej                  j                  dg d      ej                  j                  d/dsdtg      d               Zad Zbej                  j                  dd ej                  d edj                  d            g      d        Zfej                  j                  dg d      d        Zgej                  j                  dg d9      d        Zhej                  j                  dd;d<g      d        Ziy)	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   r5   s     r%   r	   zTestStata.read_csvA   s    $//r$   versionr   u   v   w   Nc                     t        dg      }|}|j                  |d|       t        |      }t        j                  ||       y )NunitcolumnsFwrite_indexr;   r   to_statar   tmassert_frame_equal)r6   r;   	temp_fileempty_dspath	empty_ds2s         r%   test_read_empty_dtazTestStata.test_read_empty_dtaD   sB    fX.$E7Ct$	
h	2r$   c                 8   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|       t        |      }|}|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"                  ||       t!        j$                  |j&                  |j&                         y )Nr   dtype)
i8i16i32i64u8u16u32u64f32f64FrE   rW   rX   rY   rZ   rV   )r   nparrayint8int16int32int64uint8uint16uint32uint64float32float64rH   r   astyperI   rJ   assert_series_equaldtypes)r6   r;   rK   empty_df_typedrM   empty_rereadexpecteds          r%   test_read_empty_dta_with_dtypesz)TestStata.test_read_empty_dta_with_dtypesM   s   
 #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
 %I!$'!!$..rww7"5/00:"5/00:"5/00:"5/00:
h5
x0C0CDr$   c                 B   t        t        d      g dd      }|}|j                  |d|       t        |      }t	        |j
                  t        j                        sJ |}|d   j                  t        j                        |d<   t        j                  ||d       y )	N   )b1b2b3b4b5r    r!   FrE   r    Tcheck_index_type)r   rangerH   r   
isinstancer-   pd
RangeIndexri   r]   ra   rI   rJ   )r6   r;   rK   dfrM   read_dfrn   s          r%   test_read_index_col_nonez"TestStata.test_read_index_col_noneq   s    U1X,JKL
DeW=T"'--777 ,,RXX6
gx$Gr$   )f   g   h   i   l   n   o   q   r=   s   r>   r?   r@   c                     |d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<   |d	k  r|j                  d
ddddd      }t        j                  ||       y )Nr(   r)   r*   stata1_.dta
float_missdouble_miss	byte_missint_miss	long_missrC   r   r   f_missd_missb_missi_missl_miss)	r8   r   r]   nanri   rg   renamerI   rJ   )r6   r;   r/   r7   parsedrn   s         r%   test_read_dta1zTestStata.test_read_dta1~   s     fg	/FGt$ ffbffbffbffbff56W
 "*,!7!>!>rzz!J c>"*#+!) (!) ' H 	fh/r$   c                    t        j                  t        dddddd      dt        dd	d      t        dd	d
      t        dd	d	      t        ddd	      t        dd	d	      t        dd	d	      ft        dddddd      dt        ddd      t        ddd      t        dd	d	      t        ddd	      t        dd	d	      t        dd	d	      ft        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  fgg d      }|d   j                  d      |d<   |d   j                  d      |d<   |d   j                  d      |d<   |d   j                  d      |d<   |d    j                  d      |d <   |d!   j                  d      |d!<   |d"   j                  d      |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                  |       t        j                  |       t        j                  	|       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   dx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_daterC   r   M8[ms]r   M8[s]r   r   r   r   r   r(   r)   r*   zstata2_114.dtazstata2_115.dtazstata2_117.dtaz Leaving in Stata Internal Formatmatch)r   from_recordsr   r|   NaTri   rI   assert_produces_warningUserWarningr8   rJ   )
r6   r/   rn   path1path2path3msgr1   
parsed_115
parsed_117s
             r%   test_read_dta2zTestStata.test_read_dta2   s   )) T2r2r26!T1b)T1a(T1a(T1a(T1a(T1a(	 T2r2q"5T2q)T1b)T1a(T1a(T1a(Q1%	 P+.	1"
H "*,!7!>!>x!H#F+227;"*="9"@"@"I#+N#;#B#B7#K %-.>%?%F%Fw%O!"'/0B'C'J'J7'S#$"*="9"@"@"Ivw0@Avw0@Avw0@A0''3? 	.u-J	.''3? 	.u-J	.''3? 	.u-J	. 	j(3
j(3
j(3%	. 	.	. 	.	. 	.s$   $K+K7L+K47L Lr7   )
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)	r8   r	   ri   r]   rg   r`   r_   rI   rJ   r6   r7   r/   r   rn   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$   )r   r   r   r=   r   r>   c                     |d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*   stata4_r   onetenr   r   r   twoniner   r   r   threeeightr   r   r   foursevenr   r   r   fivesixrq   r   r   r   r   r   r   r   r   r   	   r   r   )fully_labeledfully_labeled2incompletely_labeledlabeled_with_missingsfloat_labelledrC   r   r   categoryTorderedinplacer8   r   r   r]   r   copyasarraynotnari   _valuesset_categories
categoriesr   rI   rJ   
r6   r;   r/   r7   r   rn   colorigr   cats
             r%   test_read_dta4zTestStata.test_read_dta4   se   fg	/FG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$   )r   r   r   r   r   c                     |d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   r   r   r   r   r   r   r   rq   r   r   r   r   r   r   r   r   r   r   r   r   )fulllabfulllab2incmplabmisslabfloatlabrC   r   r   r   Tr   r   r   r   s
             r%   test_readold_dta4zTestStata.test_readold_dta4  sf    fg	/FGt$))34=42666226651&!RVVW5'1bffg626662ubffe4
.  	 CC=%%'DHY$7

$EFJj !
++j)11C$$Z$>CNN!!$!5HSM	  	fh/r$   )stata12_117stata12_be_117stata12_118stata12_be_118stata12_119stata12_be_119c           	          | j                   |ddd| d            }t        j                  g dg dg dgg d	      }t        j                  ||d
       y )Nr(   r)   r*   r   )r   abc	abcdefghi)r   cbaqwertywertyqwerty)]    strl)xyzrC   Fcheck_dtype)r8   r   r   rI   rJ   r   s        r%   test_read_dta_strlzTestStata.test_read_dta_strlN  sZ     xfg$t}MN))'/ 
 $
 	fhEBr$   )stata14_118stata14_be_118stata14_119stata14_be_119c           
         | 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*   r   BytesO)CatBogotau   Bogotár   r   u   option b Ünicoder   DogBostonu   Uzunköprü)PlaneRomeu   Tromsør           option ar  )PotatoTokyou	   Elâzığ      @r   r   )r  r  r  r   gT?r  gUUUUUU?)ThingsCitiesUnicode_Cities_StrlIntsFloatsr  LongsrC   r#  u'   Here are some strls with Ünicode charsz	long datazHere are some thingsz	byte datazint datazHere are some citiesz
float data)r!  r$  r  r  r"  r   r#  u   This is a  Ünicode data label)r8   ri   r   r   r]   r   rg   rD   rI   assert_almost_equalr   variable_labelsassert_dict_equal
data_label)	r6   r7   r/   
parsed_118rn   r   rdrvlvl_expecteds	            r%   test_read_dta118_119zTestStata.test_read_dta118_119g  sY    ]]8D&'dV4=#QR
(188=
7))N-PE??
$ &h/66rzzB%% 	CC"":c?HSMB	C $D6GH 	FC$$&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                  _        |}|j                  |d        | j                  |      }|}|j                  j                  t        j                        |_        t        j                  |j                  d      |       y )Nr   rC   r-   r+   )r   r]   r   r-   r.   rH   r8   ri   ra   rI   rJ   	set_index)r6   rK   originalrM   written_and_read_againrn   s         r%   test_read_write_dta5zTestStata.test_read_write_dta5  s    ffbffbffbffbff56W
 &$d3!%t!4!..rxx8
4>>wGRr$   c                    | j                   |dddd            }d|j                  _        |j                  j                  t        j
                        |_        |d   j                  t        j
                        |d<   |d   j                  t        j
                        |d<   |}|j                  |d        | j                  |      }t        j                  |j                  d      |d	
       y )Nr(   r)   r*   r   r-   r   r   r+   Frx   )r	   r-   r.   ri   r]   ra   rH   r8   rI   rJ   r/  )r6   r/   rK   r0  rM   r1  s         r%   test_write_dta6zTestStata.test_write_dta6  s    ==$!NO%!..rxx8#F+22288<&y188B$d3!%t!4
",,W5"	
r$   c           	      f   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
<   |}|j                  |ddi|       | j                  |      }|j                         }|d   j                  d      |d<   |r|d   j                  d      |d<   t        j                  |j                  d	      |       y )Nstringobjectr   皙?
2003-12-25)r6  r7  integerfloatingr   r)   rD   rQ   r-   r:  r   tcr,   r;   r   str)r   r]   
datetime64r   r7  r-   r.   ri   ra   rH   r8   r   rI   rJ   r/  )r6   r;   rK   using_infer_stringr0  rM   r1  rn   s           r%   test_read_write_dta10zTestStata.test_read_write_dta10  s   Xq#r}}\/JKLK
 $HX$6fE%!..rxx8&y188B$z4.@'R!%t!4==?'
3::8D!)(!3!:!:5!AHX
",,W5	
r$   c                     |}t        t        j                  j                  d      j	                  d      t        d            }|j                  |       y )Nr   r   r   ABrC   )r   r]   randomdefault_rngstandard_normallistrH   )r6   rK   rM   r~   s       r%   test_stata_doc_examplesz!TestStata.test_stata_doc_examples  sB    II!!!$44W=tDz
 	Dr$   c                 @   t        t        j                  j                  d      j	                  d      t        d            }t        j                  |j                  dddf<   |j                         }|}|j                  |d       t        j                  ||       y )	Nr   )rq   r   abcdrC   r    r"   FrF   )r   r]   rF  rG  rH  rI  r   locr   rH   rI   rJ   )r6   rK   r~   df_copyrM   s        r%   test_write_preserves_originalz'TestStata.test_write_preserves_original  s}     II!!!$44V<d6l
  VVq#c'z'')
De,
b'*r$   c                 0   t         |dddd            }t         |dddd            }|j                  d   }|j                  d   }||k(  sJ t        |t              sJ |}|j	                  |d|       t        |      }	t        j                  ||	       y )Nr(   r)   r*   zstata1_encoding.dtar   FrE   )r   	kreis1849r{   r?  rH   rI   rJ   )
r6   r;   r/   rK   rawencodedresultrn   rM   reread_encodeds
             r%   test_encodingzTestStata.test_encoding  s     $9NOPXdFG=RST""1%==#!!!&#&&&5'B#D)
g~6r$   c                    t        dgg d      }t        dgg d      }d|j                  _        |j                  t        j
                        }|}d}t        j                  t        |      5  |j                  |d        d d d        | j                  |      }|}|j                  j                  t        j
                        |_        t        j                  |j                  d      |       y # 1 sw Y   pxY w)	Nr   )goodu   bäd8number%astringwithmorethan32characters______rC   )rY  b_d_8number astringwithmorethan32characters_r-   ;Not all pandas column names were valid Stata variable namesr   r+   r   r-   r.   ri   r]   ra   rI   r   r   rH   r8   rJ   r/  )r6   rK   r0  	formattedrM   r   r1  rn   s           r%   test_read_write_dta11zTestStata.test_read_write_dta11  s    N
 NS
	  '	$$RXX.	K''(9E 	8d$7	8 "&t!4!..rxx8
4>>wGR	8 	8s   0C33C<c                     t        dgg d      }t        dgg d      }d|j                  _        |j                  t        j
                        }|}d}t        j                  t        |      5  |j                  |d |       d d d        | j                  |      }|}|j                  j                  t        j
                        |_        t        j                  |j                  d      |       y # 1 sw Y   pxY w)	Nr   r   r   r   rq   r   )!astringwithmorethan32characters_1!astringwithmorethan32characters_2+-shortdeleterC   )r^   _0astringwithmorethan32character__1__short_deleter-   r_  r   r>  r`  )	r6   r;   rK   r0  ra  rM   r   r1  rn   s	            r%   test_read_write_dta12zTestStata.test_read_write_dta12  s     

  

	  '	$$RXX.	K''(9E 	Id$H	I "&t!4!..rxx8
4>>wGR	I 	Is   0C44C=c                 &   t        dt        j                        }t        dt        j                        }t        dt        j                        }t        |||d      }d|j                  _        |}|d   j                  t        j                        |d<   |}|j                  |       | j                  |      }|}	|	j                  j                  t        j                        |	_        t        j                  |j                  d      |	       y )Ni   rQ   i   l        )r`   ra   rb   r-   rb   )r   r]   r`   ra   rb   r   r-   r.   ri   rh   rH   r8   rI   rJ   r/  )
r6   rK   s1s2s3r0  ra  rM   r1  rn   s
             r%   test_read_write_dta13zTestStata.test_read_write_dta137  s    D)E*E*rBDE%	&w/66rzzB	'$!%t!4!..rxx8
4>>wGRr$   )
stata5_113
stata5_114
stata5_115
stata5_117c                 L    |ddd| d      }| j                  |      }d|j                  _        t        j                  ||       |}|j                  |ddi|       | j                  |      }|j                         }	t        j                  |j                  d      |	       y )	Nr(   r)   r*   r   r-   date_tdtdr>  )r8   r-   r.   rI   rJ   rH   r   r/  )
r6   r7   r1   r;   r/   rK   r   rM   r1  rn   s
             r%   test_read_write_reread_dta14z&TestStata.test_read_write_reread_dta14I  s     fg$t}=t$#
j&1DD0A7S!%t!4??$
4>>wGRr$   )
stata6_113
stata6_114
stata6_115
stata6_117c                    | 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                  d      j                  j                  dd      }|j                  d      |d
<    |ddd| d      }| j                  |      }t        j                  ||       y )Nr(   r)   r*   
stata6.csvbyte_int_long_float_double_r{  z	Period[D]sS)howr   r   )r	   ri   r]   r_   r`   ra   rg   rh   r   asfreqviewr8   rI   rJ   )r6   r7   r/   rn   arrr   s         r%   test_read_write_reread_dta15z&TestStata.test_read_write_reread_dta15]  s'    ==$!NO$W-44RWW=#F+22288<$W-44RXX>%h/66rzzB&y188D y!((5==DDScDR!hhw/fg$t}=t$
h/r$   c                     t        dgdg      }t        ddddd      }d	}|}|j                  ||||
       t        |      5 }|j                  dk(  sJ |j
                  |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   variablerC     r            zThis is a data file.)
time_stampr(  r;   z29 Feb 2000 14:21)r   r   rH   r   r  r(  )r6   r;   rK   r0  r  r(  rM   readers           r%   test_timestamp_and_labelz"TestStata.test_timestamp_and_labelq  s    dVj\:dAr2r2
+
ZJ 	 	
  	3&$$(;;;;$$
222	3 	3 	3s   #A00A9c                     t        dgdg      }d}|}d}t        j                  t        |      5  |j	                  |||       d d d        t
        j                  j                  |      rJ y # 1 sw Y   +xY w)Nr  r  rC   z01 Jan 2000, 00:00:00z"time_stamp should be datetime typer   )r  r;   )r   pytestraises
ValueErrorrH   osrM   isfile)r6   r;   rK   r0  r  rM   r   s          r%   test_invalid_timestampz TestStata.test_invalid_timestamp  sv    dVj\:,
2]]:S1 	Ldz7K	L77>>$''''	L 	Ls   A00A9c                    t        t        j                  t        j                  d      d            }d|j                  _        |}d}t        j                  t        |      5  |j                  |       d d d        | j                  |      }|j                  d      }t        |j                        }d }t        ||      |_        |}t        j                  ||       y # 1 sw Y   mxY w)Ng      9@)rq   rq   r-   r_  r   c                     t        | d         S )Nr   )intr  s    r%   <lambda>z5TestStata.test_numeric_column_names.<locals>.<lambda>  s    S1Y r$   )r   r]   reshapearanger-   r.   rI   r   r   rH   r8   r/  rI  rD   maprJ   )	r6   rK   r0  rM   r   r1  rD   convert_col_namern   s	            r%   test_numeric_column_namesz#TestStata.test_numeric_column_names  s    RZZ		$@A%K''(9E 	$d#	$ "&t!4!7!A!A'!J-556.),-=w)G&
h(>?	$ 	$s   #C!!C*c                    t        t        j                  d      t        j                        }t        t        j                  d      t        j                        }t        j
                  |d d d<   t        j
                  |dd d<   t        ||d      }d|j                  _        |}|j                  ||       | j                  |      }|j                  d      }|}t        j                  ||       y )Nr  rQ   r   r   rr  rs  r-   r;   )r   r]   r  rg   rh   r   r   r-   r.   rH   r8   r/  rI   rJ   )	r6   r;   rK   rr  rs  r0  rM   r1  rn   s	            r%   test_nan_to_missing_valuez#TestStata.test_nan_to_missing_value  s    BIIcN"**5BIIcN"**5&&3Q36614a4Bb12%$0!%t!4!7!A!A'!J
4h?r$   c                 t   ddg}t        t        j                  t        j                  d      d      |      }d|j                  _        |}|j                  |d       | j                  |      }t        j                  t        |j                  j
                  	      5  |d    d d d        y # 1 sw Y   y xY w)
Nr  r        $@)rq   r   rC   index_not_writtenFrM  r   )r   r]   r  r  r-   r.   rH   r8   r  r  KeyError)r6   rK   rD   r0  rM   r1  s         r%   test_no_indexzTestStata.test_no_index  s    *RZZ		$@'R1$E2!%t!4]]88>>+>+>? 	8"#67	8 	8 	8s   B..B7c                 ,   t        ddg      }t        ddgt        j                        }t        ||d      }d|j                  _        |}|j                  |       | j                  |      }|}t        j                  |j                  d      |       y )Nr    zA longer stringr          @rQ   r  r-   )r   r]   rh   r   r-   r.   rH   r8   rI   rJ   r/  )r6   rK   rr  rs  r0  rM   r1  rn   s           r%   test_string_no_dateszTestStata.test_string_no_dates  s    S+,-S#Jbjj1Bb12%$!%t!4
4>>wGRr$   c                    t        ddgt        j                        }t        ddgt        j                        }t        ddgt        j                        }t        ddgt        j                        }t        ||||d      }d|j                  _        |}t        j                  t        d	
      5  |j                  |       d d d        | j                  |      }|}	t        |	d   t        j                        |	d<   t        |	d   t        j                        |	d<   t        |	d   t        j                        |	d<   t        j                  |j!                  d      |	       y # 1 sw Y   xY w)Nr   c   rQ      i  l    )s0rr  rs  rt  r-   zfrom int64 tor   rr  rs  rt  )r   r]   r_   r`   rb   r   r-   r.   rI   r   r   rH   r8   ra   rh   rJ   r/  )
r6   rK   r  rr  rs  rt  r0  rM   r1  modifieds
             r%   test_large_value_conversionz%TestStata.test_large_value_conversion  s$   QG277+QHBGG,Q	N"((3Q	N"((3Bb"EF%''(=_U 	$d#	$ "&t!4bhh?bhh?bjjA
4>>wGR	$ 	$s   3E))E2c           
         t        t        dddddd      g      }d|j                  _        |}d}t	        j
                  t        |	      5  |j                  |d
di       d d d        | j                  |      }|j                         }dg|_
        |j                  j                  t        j                        |_        |d   j                  d      |d<   t	        j                  |j                  d      |       y # 1 sw Y   xY w)Nr   r   r   r   r   r   r-   r_  r   r   r=  r+   _0r   )r   r   r-   r.   rI   r   r   rH   r8   r   rD   ri   r]   ra   rJ   r/  )r6   rK   r0  rM   r   r1  rn   s          r%   test_dates_invalid_columnz#TestStata.test_dates_invalid_column  s    htRRR@AB%K''(9E 	=d1d)<	= "&t!4==? 6!..rxx8!$..x8
4>>wGR	= 	=s   C==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   rD   ri   r]   r`   r_   rg   rI   rJ   head)r6   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)r6   r/   r  r  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      |d      }|d   j                  d      |d<   |}	|j                  |	|       | j                  |	      }
t        j                  |
j                  d      |       y c c}w )N)r=  r|  twrI   tqthtyr   r   r   r   r   rC   r-   r   r   r   r   r   rR   r.   r   )r-   rD   rR   r=  r   r+   )r   lenr   r-   r.   r|   Indexr]   ra   ri   rH   r8   rI   rJ   r/  )r6   rK   rD   r"   conversionsr)   r0  expected_valuesrn   rM   r1  s              r%   test_date_export_formatsz"TestStata.test_date_export_formats  sI   <%,-q!t--r2r2r23c'lBdVW5%T2r2r2.T2r"T2r"T2q!T2q!T1a T1a 
 ((A3bhhW=	
 "$..x8$k:!%t!4
4>>wGR5 .s   
Ec                 
   t        dgd ggdg      }t        dgdggt        j                  dd      dg      }|}|j                  |       | j	                  |      }t        j                  |j                  d      |       y )	N1foorC   r  r   r-   r.   r-   rD   )r   r|   r}   rH   r8   rI   rJ   r/  )r6   rK   r0  rn   rM   r1  s         r%   test_write_missing_stringsz$TestStata.test_write_missing_strings  s    sedV_ug>URDM--0G
 $!%t!4
4>>wGRr$   	byteorder><c           
         t        g dt        j                        }t        g dt        j                        }t        g dt        j                        }t        g dt        j                        }t        g dt        j                        }t        g dt        j
                        }	t        g dt        j
                        }
t        ||||||	|
d	      }d
|j                  _        |}|j                  |||       | j                  |      }|j                  d
      }|}t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  f}t!        |j"                  |      D ]  \  }}||   j%                  |      ||<    t'        j(                  ||       y )N)r   r   TrQ   )r   r   d   )r   r      )r   r   i  )r   r   i  )r   r   i)r   r   l    )r  rr  rs  rt  s4s5s6r-   )r  r;   )r   r]   bool_rc   rd   re   r   r-   r.   rH   r8   r/  r_   r`   ra   rh   ziprD   ri   rI   rJ   )r6   r  r;   rK   r  rr  rs  rt  r  r  r  r0  rM   r1  rn   expected_typesr"   ts                     r%   test_bool_uintzTestStata.test_bool_uint*  sf    L1Krxx0Krxx0'ryy9%RYY7'ryy9%RYY7Rr2RrR
 &$)WE!%t!4!7!A!A'!JGGGGHHHHHHHHJJ
 ((.9 	0DAq"1+,,Q/HQK	0 	4h?r$   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)	r6   r/   r*  sr_115sr_117keyslabelskvs	            r%   test_variable_labelszTestStata.test_variable_labelsO  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        |      }|}|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        y # 1 sw Y   y xY w)
N)r   r     r    r!   r"   r  FrM  r   )r   r?  r   rH   r   _ensure_openr  _varlist_fmtlist_typlistr  )r6   rK   str_lensr  str_lenr0  rM   srr  fmttyps              r%   test_minimal_size_colzTestStata.test_minimal_size_col\  s      	G$*wgsW}=%AcCL !	 Q<$E2 	0"OO&)"++r{{BKK&P 0"#s8AB<(CAb	N:::8AB<(C///0	0 	0 	0s   A3CCC'c                    d}i }|D ](  }t        d|z  d|z  d|z  g      |dt        |      z   <   * t        |      }d}t        j                  t
        |      5  |}|j                  |       d d d        y # 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\.r   )r   r?  r   r  r  r  rH   )r6   rK   r  r  r  r0  r   rM   s           r%   test_excessively_long_stringz&TestStata.test_excessively_long_stringm  s      	G$*wgsW}=%AcCL !	 Q<9 	 ]]:S1 	$Dd#	$ 	$ 	$s   A77B c                 D   d}t        dggdg      }|}|j                  |       t        |      5 }|j                  }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   TxY wc c}w )N)r!   hlr  r  rC      .a   r   r      z<fs      s     z.zz<ds         s        )r   rH   r   VALID_RANGErz   chrinsertr   r6  structunpack)r6   rK   typesr~   rM   r*  valid_rangeir  r  offsetvals               r%   test_missing_value_generatorz&TestStata.test_missing_value_generator  s   w
3
D 	*#//K	*6;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	* 	*@s   FFF)r   r   r>   c           
         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
      d      }t        j                  ||
       y c c}w )Nint8_int16_int32_float32_float64_e   r  rq   rC   r(   r)   r*   stata8_r   Tconvert_missing
r   sortedMISSING_VALUESr  rz   appendr   r   rI   rJ   )r6   r;   r/   rD   smvr  r)   r  jrowrn   r   s               r%   test_missing_value_conversionz'TestStata.test_missing_value_conversion  s    G$c((--/0r 	ABG(KQ$T!q2v,%78KCKKK	 T73T67ggYd,CD 
 	fh/ Ls   B>)r   r   r   r   r   c           
      `   g d}t        d      }t        |j                  j                               }g }t	        d      D cg c]  }t        ||dz            }}|j                  |       t        ||      }	t         |dddd	| d
      d      }
t        j                  |
|	       y c c}w )Nr  r%  rq   r  rC   r(   r)   r*   r&  r   Tr'  r)  r6   r;   r/   rD   r-  r  r)   r.  r/  rn   r   s              r%   $test_missing_value_conversion_compatz.TestStata.test_missing_value_conversion_compat  s    G$c((--/08=aA1 a"f.AACT73T67ggYd,CD 
 	fh/ Bs   B+r   r   c           
      N   g d}t        d      }t        |j                  j                               }g }dD cg c]  }t        ||dz            }}|j	                  |       t        ||      }	t         |dddd	| d
      d      }
t        j                  |
|	       y c c}w )Nr  r%  )r   r   r   r   r   r  rC   r(   r)   r*   r&  r   Tr'  )	r   r*  r+  r  r,  r   r   rI   rJ   r2  s              r%   +test_missing_value_conversion_compat_nobytez5TestStata.test_missing_value_conversion_compat_nobyte  s    G$c((--/08GH1 a"f.HHCT73T67ggYd,CD 
 	fh/ I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              }	|	d   j                  d      |	d<   |	d   j                  d      |	d<   |	d   j                  d      |	d<   |	d   j                  d      |	d<   |	d   j                  d      |	d<   |	d   j                  d      |	d<   |	d    j                  d      |	d <   t         |d!d"d#d$            }t         |d!d"d#d%            }t        j                  |	|       t        j                  |	|       |D ci c]  }||d&d  
 }}|}d'|	j                  _        d(}|	j                  t              }t        j                  t        |)      5  |j!                  ||*       d d d        | j#                  |      }t        j                  |j%                  d'      |	j%                  |	j                  j                  t&        j(                                     y c c}w # 1 sw Y   {xY w)+N)i  r  '  r      )r   r   r   r   r   r   )r   r   r   r      r   )r   r   r   r   r   r   )r   r   ;   r   r   r   r   r   r   r   )date_tcr{  date_twdate_tmdate_tqdate_thdate_tyr7  r      r   r   r   r   rq   r8     r9  i  )rD   rR   r<  r   r{  r   r>  r=  r?  r@  rA  r(   r)   r*   zstata9_115.dtazstata9_117.dtar  r-   z^Converting object-dtype columns of datetimes to datetime64 when writing to stata is deprecatedr   r+   )r  rz   r,  r   r|   r   r   r7  ri   r   rI   rJ   r-   r.   r   r   rH   r8   r/  r]   ra   )r6   r/   rK   yrmoddhrmmssrn   r   monthdayhourminutesecondr/  r.  rD   r   r   r"   date_conversionrM   r   
exp_objectr1  s                              r%   test_big_dateszTestStata.test_big_dates  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&y188B&y188A&y188A&y188A&y188A&y188A&y188Avw@P QR
vw@P QR

h
3
h
3.561af966%2 	 __V,
''cB 	EOD	E!%t!4
",,W5x~~44RXX>?	
 7	E 	Es   NN$$N-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                  d      |d
<   t         |dddd      d      }t        j                  ||       t         |dddd      dd      }| j                   |dddd            }|d
   |d
<   t        j                  ||       y )Nr(   r)   r*   r  r  r  r  r  r  r{  r   stata6_117.dtaTr+   F)r,   preserve_dtypes)r	   ri   r]   r_   r`   ra   rg   rh   r   rI   rJ   )r6   r/   rn   no_conversion
conversion	expected2s         r%   test_dtype_conversionzTestStata.test_dtype_conversion  sQ   ==$!NO$W-44RWW=#F+22288<$W-44RXX>%h/66rzzB&y188D&y188A"T67,<=T
 	h6T67,<=!

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

&
 	 S''(>cJ 	)i(	) 	) 	)s   A**A3c                    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                  _        |}|j                  ||	       | j                  |      }|j                  d      }	|}
|
D ]C  }|
|   j                  }|j!                         j"                  }|j%                  |d
      }||
|<   E t'        j(                  |	|
       y c c}w c c}w )Nx   r    many_labelsrC   r   r   )axisr-   r  Tr   )rz   r?  r,  r]   r   r   r   r|   concatri   r-   r.   rH   r8   r/  r   remove_unused_categoriesr   r   rI   rJ   )r6   r;   rK   r  valuesr0  r   rM   r1  re  rn   r   new_catss                r%   *test_categorical_with_stata_missing_valuesz4TestStata.test_categorical_with_stata_missing_values  s-   */*5Q3Q<.55rvvh))&=/J999AB#Xc]!!*-B
 &$0!%t!4$..w7 	 C3-''C335@@H$$Xt$<CHSM		 
 	c8,' 6 Cs   D>1E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"   rh  erq   reverser  noorder)r   r   r   r   r   r;  r   float_missing)r    rh  rx  )r   r   r   r  r  Fnolabel)r   r  r   r  g      @int32_mixed)rh  r   rx  r!   r    r   rQ   r(   r)   r*   r   )r]   r  r^   r,  r|   Categorical
from_codesr   rg   r   	from_dictdictr   rI   rJ   r{   rR   r   rj   r   codesassert_index_equalr   )
r6   r7   r/   rn   colsis_catr   r  r  r   s
             r%   test_categorical_orderz TestStata.test_categorical_order  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)r  r   r   r  )r   sort_valuesr|   r}   r  r-   r~  r  r   rI   rj   )r6   r7   r/   r   r  r   r   rn   s           r%   test_categorical_sortingz"TestStata.test_categorical_sorting  s    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   r{   rR   r   r   r   )r6   r7   r/   r   parsed_unorderedr   s         r%   test_categorical_orderingz#TestStata.test_categorical_ordering  s    fg$t}=D!%duE 	9CfSk//1AB#;??****',008888		9r$   zignore::UserWarning)
stata1_117
stata2_117r   
stata4_117ry  r  
stata7_117
stata8_117
stata9_117ru  r  	chunksizer   r   convert_categoricalsFTr,   c                     |ddd| d      }t        |||      }t        |d||      5 }d}	t        d	      D ]h  }
	 |j                  |      }|j                  |	|	|z   d d f   j                         }| j                  |      }t        j                  ||d
       |	|z  }	j d d d        y # t        $ r Y  w xY w# 1 sw Y   y xY w)Nr(   r)   r*   r   r  r,   T)iteratorr  r,   r   rq   Fr	  	r   rz   readStopIterationilocr   _convert_categoricalrI   rJ   r6   r7   r  r  r,   r/   fnamer   itr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
%% %
 y !	! 	! % 	! 	!/   B>B.AB>.	B;7B>:B;;B>>Cr  returnc                     | D ]  }| |   }t        |j                  t              s$|j                  j	                         }|j
                  j                  t        k(  rGt        j                  j                  |j
                  j                  d      }|j                  |      }na|j
                  j                  dk(  rHt        |j
                        dk(  r0|j
                  j                  t              }|j                  |      }|| |<   
 | S )zX
        Emulate the categorical casting behavior we expect from roundtripping.
        F)r   r6  r   )r{   rR   r   r   rp  r   r7  r|   r  _with_inferr   r  ri   )r  r   serr   r   s        r%   r  zTestStata._convert_categorical+  s    
  	&CS/C#))%56kk::<>>''61!#!5!5..U "6 "J ,,Z8C^^))X5#cnn:MQR:R!$!6!6v!>J,,Z8C"%
3	& r$   c                 .    |dddd      }t        |      }|j                  ddd d f   }t        |d      5 }|j                  d      }t        j                  ||       d d d        t        |d	      5 }t        |      }t        j                  ||       d d d        t        |d      5 }|j                  d      }t        j                  ||       d d d        t        |d	      5 }|j                         }t        j                  ||       d d d        t        |d
	      5 }t        j                  |      }d d d        t        j                  |       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   oxY w# 1 sw Y   PxY w)Nr(   r)   r*   zstata12_117.dtar   rq   Tr  r  r   )	r   r  r  rI   rJ   next	get_chunkr|   ro  )r6   r/   r  r   rn   r  r  from_chunkss           r%   test_iteratorzTestStata.test_iterator@  sl   vw0ABE";;qsAv&- 	3HHQKE!!(E2	3 + 	3sIE!!(E2	3 - 	3MM!$E!!(E2	3 + 	3sMMOE!!(E2	3
 + 	)s))C.K	)
fk2'	3 	3	3 	3	3 	3	3 	3
	) 	)s;   (E6"E'-(E3*'E?&FE$'E03E<?FF)

stata2_115r   
stata4_115rx  r  
stata7_115
stata8_115
stata9_115rt  r  c                     |ddd| d      }t        |||      }t        |d||      5 }d}	t        d	      D ]h  }
	 |j                  |      }|j                  |	|	|z   d d f   j                         }| j                  |      }t        j                  ||d
       |	|z  }	j d d d        y # t        $ r Y  w xY w# 1 sw Y   y xY w)Nr(   r)   r*   r   r  T)r  r,   r  r   rq   Fr	  r  r  s                r%   test_read_chunks_115zTestStata.test_read_chunks_115[  s    , vw4&> !5'
 '!5	
 	!
 C1X !HHY/E $[[sY)>)ABGGI
!66zB
%% %
 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*   zstata3_117.dta)r   cpim1r   rC   Tr  r   rq   Fr	  )r   rz   r  r  rI   rJ   )r6   r/   r  rD   r  r   r  r  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}|}|j                  |||       t        |      5 }|j	                         }d d d        ddddd}|k(  sJ d	|d<   |}|j                  |||       t        |      5 }|j	                         }d d d        ||k(  sJ y # 1 sw Y   ^xY w# 1 sw Y   xY w)
Nr-   	City RankCity ExponentCityr   r&  r;   r  )r-   r    r!   r"   z	The Index)r-   r.   rH   r   r&  )	r6   r;   r&   rK   r&  rM   r  read_labelsexpected_labelss	            r%   test_write_variable_labelsz$TestStata.test_write_variable_labels  s     ") +/OT?GT 	/",,.K	/  	
 o---#. T?GT 	/",,.K	/o---	/ 	/	/ 	/s   B'B3'B03B<c                     d|j                   _        dddd}|}d}t        j                  t        |      5  |j                  |||       d d d        y # 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 fewerr   r  r-   r.   r  r  r  rH   )r6   r;   r&   rK   r&  rM   r   s          r%   test_invalid_variable_labelsz&TestStata.test_invalid_variable_labels  sc    !( 0VT>]]:S1 	Y  PW X	Y 	Y 	Ys   AAr=   r>   c                     d|j                   _        dddd}d|d<   |}t        j                  t        d	      5  |j                  |||
       d d d        y # 1 sw Y   y xY w)Nr-   r  r  r  r   u   invalid character Œr    z,Variable labels must contain only charactersr   r  r  )r6   r;   r&   rK   r&  rM   s         r%   $test_invalid_variable_label_encodingz.TestStata.test_invalid_variable_label_encoding  sn    !( 0VT5]]L
 	Y   PW X	Y 	Y 	Ys   AA!c                 ^   g d}dddj                  |      d}d}t        j                  t        |      5  |}|j	                  ||       d d d        ddd	d}d
}t        j                  t        |      5  |}|j	                  ||       d d d        y # 1 sw Y   Kx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-1r   )r&  zqA very, very, very long variable label that is too long for Stata which means that it has more than 80 charactersr  )joinr  r  r  rH   )r6   r&   rK   rq  variable_labels_utf8r   rM   variable_labels_longs           r%    test_write_variable_label_errorsz*TestStata.test_write_variable_label_errors  s    M   
! 	 ]]:S1 	MD  7K L	M
  2 
 ?]]:S1 	MD  7K L	M 	M	M 	M	M 	Ms   B8B#B #B,c                    t        j                  ddddddd      t        j                  ddddddd      t        j                  dd	d
d	d
d	d      g}t        g dg d|d      }|d d  }|d   j                  d      |d<   |}|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                  ||       y )N  r   r   .    r  R    r   r     r   r  r   applebananacherrynumsstrsdatesr  r   FrM  Tr+   r=  )rF   r,   )dtr   r   ri   rH   r   rI   rJ   rD   tolistr-   )	r6   rK   r  r0  rn   rM   rereaddirect	dates_idxs	            r%   test_default_date_conversionz&TestStata.test_default_date_conversion  sP    KKb"b"b%8KKb"b"b%8KKaAq!T2

 '5
 A;$W-44X>$E2D5
h/$E'4QD5
ff-$$++-33G<	$E)TARSD5
ff-r$   c                     t        dddgi      }d}t        j                  t        |      5  |}|j	                  |       d d d        y # 1 sw Y   y xY w)Nr    y      ?       @y       @      @z"Data type complex128 not supportedr   )r   r  r  NotImplementedErrorrH   )r6   rK   r0  r   rM   s        r%   test_unsupported_typezTestStata.test_unsupported_type  sR    cFF#3452]].c: 	$Dd#	$ 	$ 	$s   A

Ac                 8   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  |}|j                  |ddi       d d d        t        j                  ddd      }t        g dg d|d      }t        j                  t
        d      5  |}|j                  |       d d d        y # 1 sw Y   lxY w# 1 sw Y   y xY w)Nr  r   r   r  r  r  r  r  r   r   r  r  r  r  zFormat %tC not implementedr   r  tCr+   z1-1-1990r   zAsia/Hong_Kong)periodstzzData type datetime64)	r  r   r   r  r  r  rH   r|   
date_range)r6   rK   r  r0  r   rM   s         r%   test_unsupported_datetypez#TestStata.test_unsupported_datetype  s"   KKb"b"b%8KKb"b"b%8KKaAq!T2

 '5
 +]].c: 	CDd7D/B	C j!8HI'5
 ]].6LM 	$Dd#	$ 	$	C 	C	$ 	$s   D'DDD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
r   r(   r)   r*   zstata15.dtaTr  )r  r  r  r   )r6   r/   r   s      r%   test_repeated_column_labelsz%TestStata.test_repeated_column_labels2  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   rq   r   )
r    r!   r"   rh  rx  r  gr  r  r.  )r  r  wr  )r   r   r]   r   rI   rJ   )r6   r/   r~   r0  s       r%   test_stata_111zTestStata.test_stata_111D  s     vw8HI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  |}|j                  |       d d d        y # 1 sw Y   y xY w)Nr  g      ColumnOkColumnTooBigzZColumn ColumnTooBig has a maximum value \(.+\) outside the range supported by Stata \(.+\)r   )
r   r]   finfodoubleepsmaxr  r  r  rH   )r6   rK   r~   r   rM   s        r%   test_out_of_range_doublez"TestStata.test_out_of_range_doubleT  s     "((299"5"9"9;OP!$bhhryy&9&=&=rxx		?R?V?V W
) 	 ]]:S1 	DKK	 	 	s   3CCc                    t        dt        j                  t        j                        j                  t        j                  t        j                        j
                  dz  gdt        j                  t        j                        j                  t        j                  t        j                        j
                  gd      }d|j                  _        |D ]'  }||   j                  t        j                        ||<   ) |}|j                  |       t        |      }|d   j                  t        j                        |d<   |}t        j                  |j                  d      |       y )Nr  r  r  r-   r  )r   r]   r  rg   r  r  r-   r.   ri   rH   r   rh   rI   rJ   r/  )r6   rK   r0  r   rM   r  rn   s          r%   test_out_of_range_floatz!TestStata.test_out_of_range_floatd  s    HHRZZ(,,HHRZZ(,,t3 HHRZZ(,,HHRZZ(,,!
 & 	=C$SM00<HSM	= $D!#+N#;#B#B2::#N 
f..w7Br$   infvalc                     t        ddgd|gd      }d}t        j                  t        |      5  |}|j	                  |       d d d        y # 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.r   r   r  r  r  rH   )r6   r  rK   r~   r   rM   s         r%   test_infzTestStata.test_inf  s[     sCjc6]KL= 	 ]]:S1 	DKK	 	 	s   AAc                    t        dt        j                  d      j                  d      z  t	        j
                  t        d            t	        j
                  t        d      D cg c]  }d| 	 c}            }d|j                  _	        d	 }t        j                  |j                  ||      }t        j                  ||       y c c}w )
Nr8  rl     r   ABCDr  i-rD   r-   r-   c                 6    t        |       j                  d      S )Nr-   )r   r/  r  s    r%   r  z-TestStata.test_path_pathlib.<locals>.<lambda>  s    :a=227; r$   )r   r]   r  r  r|   r  rI  rz   r-   r.   rI   round_trip_pathlibrH   rJ   )r6   rK   r  r~   r  rU  s         r%   test_path_pathlibzTestStata.test_path_pathlib  s    "))C.((11HHT&\*((eBi8bH89

  ;&&r{{FIF
b&) 9s   %C	rF   c                     dg di}t        |      }|d   j                  d      |d<   |}|j                  ||       t        |d      5 }|j	                         }d d d        dddd	d
dik(  sJ y # 1 sw Y   xY w)NA)BECr  r  r)   r   rM  Tr  r  r  r  )r   r   r   r   )r   ri   rH   r   r  )r6   rF   rK   rh  r~   rM   dta_iterr  s           r%   test_value_labels_iteratorz$TestStata.test_value_labels_iterator  s     +,AS'..,3
Dk2t, 	3#002L	3%EFFFF	3 	3s   A44A=c                    t        dt        j                  d      j                  d      z  t	        j
                  t        d            t	        j
                  t        d      D cg c]  }d| 	 c}            }d|j                  _	        |}|j                  |       t        |d	      }t        j                  ||       y c c}w )
Nr8  rl  r  r  r  r  r  r-   	index_col)r   r]   r  r  r|   r  rI  rz   r-   r.   rH   r   rI   rJ   )r6   rK   r  r~   rM   r  s         r%   test_set_indexzTestStata.test_set_index  s    "))C.((11HHT&\*((eBi8bH89

  
DDG4
b&) 9s   %Ccolumn)msrK  weekrJ  qtrhalfrD  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   rN  )r6   r&  r/   r~   unformattedra  s         r%   (test_date_parsing_ignores_format_detailsz2TestStata.test_date_parsing_ignores_format_details  sQ     vw8KLMffQY'FF1fvo-.	i'''r$   littlebigc                 `   t        dddddddt        j                  d      ddddz  dgd	d
dddddt        j                  d      ddddggg d      }t        |d   t              |d<   t        |d   t        j
                        |d<   t        |d   t        j                        |d<   |d   j                  t        j                        |d<   t        |d   t        j                        |d<   d|j                  _        |j                         }|}|j                  |ddi|dgd       | j                  |      }|d d  }|d   j                  d      |d<   |r|d   j                  d      |d<   t        j                   |j#                  d      |       t        j                   ||       y )Nr6  r7  r   r8  r9  r      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai  zstring-1zobject-1z
2003-12-26r!     bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr  )r6  r7  r_   r`   ra   rg   rh   r   rr  s2045srtlforced_strlr<  rQ   r_   r`   ra   rg   r-   r   r=  r6  r>   )r,   r  convert_strlr;   r   r?  )r   r]   r@  r   r7  r_   r`   ri   ra   rg   r-   r.   r   rH   r8   rI   rJ   r/  )	r6   r  rK   rA  r0  r   rM   r1  rn   s	            r%   test_writer_117zTestStata.test_writer_117  s    MM,/$J MM,/<?-
\ $HX$6fE!(6"2"''B"8G#4BHHE$W-44RXX>$Xi%8

K%}}%t,' 	 	
 "&t!4A;'
3::8D!)(!3!:!:5!AHX
",,W5	
 	h-r$   c                 z   t        g dg dgg d      }d|j                  _        d}t        j                  t
        |      5  |}|j                  |dd	gd
       | j                  |      }|j                  d      }|j                  |_	        t        j                  ||d       d d d        y # 1 sw Y   y xY w)N)  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar  r  )  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr  r  )2long1long1long1long1long1long1long1long1long1long1longr   rC   r-   r_  r   r=  r   r>   )r7  r;   Frx   )r   r-   r.   rI   r   r   rH   r8   r/  rD   rJ   )r6   rK   r0  r   rM   r  s         r%   test_convert_strl_name_swapz%TestStata.test_convert_strl_name_swap  s    ')DE-
 &K''(9E 	LDd&!cJ]]4(F%%g.F%--FN!!&(UK	L 	L 	Ls   A$B11B:c                 \   t        j                  ddddddd      t        j                  ddddddd      t        j                  dd	d
d	d
d	d      g}t        g dg d|d      }|}d}t        j                  t
        |      5  |j                  |ddi       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  z0convert_dates key must be a column or an integerr   
wrong_namer=  r+   )r  r   r   r  r  r  rH   )r6   rK   r  r0  rM   r   s         r%   test_invalid_date_conversionz&TestStata.test_invalid_date_conversion"  s     KKb"b"b%8KKb"b"b%8KKaAq!T2

 '5
 @]]:S1 	Hd<2FG	H 	H 	Hs   B""B+c                 b   t        j                         }t        dt        j                  d      j                  d      z  t        j                  t        d            t        j                  t        d      D cg c]  }d| 	 c}            }d|j                  _        |}|j                  ||	       |j                  d
       t        |d      5 }|j                  |j!                                d d d        t#        |d      }t%        j&                  ||       y c c}w # 1 sw Y   2xY w)Nr8  rl  r  r  r  r  r  r-   r  r   wbr#  )r(   BytesIOr   r]   r  r  r|   r  rI  rz   r-   r.   rH   seekopenwriter  r   rI   rJ   )	r6   r;   rK   bior  r~   rM   dtar  s	            r%   test_nonfile_writingzTestStata.test_nonfile_writing6  s     jjl"))C.((11HHT&\*((eBi8bH89

  
C)$ 	"IIchhj!	"DG4
b&) 9	" 	"s   9D  D%%D.c                 D   t        dt        j                  d      j                  d      z  t	        j
                  t        d            t	        j
                  t        d      D cg c]  }d| 	 c}            }d|j                  _	        |}t        j                  |d	      5 }|j                  |d
       d d d        t        j                  |d      5 }t        |d      }d d d        t        j                  |       y c c}w # 1 sw Y   QxY w# 1 sw Y   1xY w)Nr8  rl  r  r  r  r  r  r-   rC  r=   r  rbr#  )r   r]   r  r  r|   r  rI  rz   r-   r.   gzipGzipFilerH   r   rI   rJ   )r6   rK   r  r~   rM   gzr  s          r%   test_gzip_writingzTestStata.test_gzip_writingH  s    "))C.((11HHT&\*((eBi8bH89

  ]]4& 	)"KKCK(	)]]4& 	7"g6F	7
b&) 9	) 	)	7 	7s   %D&D
D
DD)stata16_118stata16_be_118stata16_119stata16_be_119c           	          | 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*   r   )utf8latin1ascii	utf8_strl
ascii_strl)   ραηδαςu   PÄNDÄSpr[  r\  )   ƤĀńĐąŜ   Ör    r]  r    )   ᴘᴀᴎᴅᴀS   Ünr_  ra  )      rb  rh  rb  rh  ) r  r    rc  r    )r  r  r  r  r  )r  r  rc  r  rc  rC   )r8   r   rI   rJ   )r6   r7   r/   
unicode_dfrD   rq  rn   s          r%   test_unicode_dta_118_119z"TestStata.test_unicode_dta_118_119X  sb     ]]8D&'dV4=#QR
HB<D4$""
 VW5
j(3r$   c                    dddd ddg}t        |      }|j                  j                  d      |_        |}|j                  |dd       t	        |      }|j                  d	      }t        j                  ||       d |d
<   |j                  |dd
gd       t	        |      }|j                  d	      }|r|d
   j                  d      |d
<   t        j                  ||       y )N  stringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringstringr   )mixednumberr   ra   Fr>   rE   r  rh  )rF   r7  r;   r?  )r   ri  ri   rH   r   fillnarI   rJ   )r6   rK   rA  outputrM   r  rn   s          r%   test_mixed_string_strlz TestStata.test_mixed_string_strlr  s    *a8DTU:VW6",,W5%=D!==$
fh/ w%wiQTUD!==$ ( 1 8 8 ?HW
fh/r$   c                     dddd ddg}t        |      }d |d<   t        j                  t        d      5  |j	                  ||       d d d        y # 1 sw Y   y xY w)Nnoner   )rn  ri  r   z Column `none` cannot be exportedr   r  r  )r6   r;   rK   rk  s       r%   test_all_none_exceptionz!TestStata.test_all_none_exception  s]    !Q/$!1LM6"v]]:-OP 	8OOIwO7	8 	8 	8s   AAc                     d}t        |gdg      }d}d}t        j                  t        | d|       5  |j	                  |       d d d        y # 1 sw Y   y xY w)Nu9   Here is one __�__ Another one __·__ Another one __½__invalidrC   z\'latin-1' codec can't encode character '\\ufffd' in position 14: ordinal not in range\(256\)zP'ascii' codec can't decode byte 0xef in position 14: ordinal not in range\(128\)|r   )r   r  r  UnicodeEncodeErrorrH   )r6   r;   rK   contentr~   msg1msg2s          r%   test_invalid_file_not_writtenz'TestStata.test_invalid_file_not_written  sh    My9+6; 	
+ 	 ]]-vQtf5EF 	#KK	"	# 	# 	#s   AAc                    t        dgdz  dgdz  gddg      }|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        y # 1 sw Y   y xY w)Npandasr   u   þâÑÐÅ§var_strvar_strlrC   r>   )r;   r7  rL  zlatin-1zutf-8s   strlsr   r  s   GSO       )r   rH   rF  r  encodesplitfindr  )
r6   rK   rk  r  rt  rn   gsosgsor  sizes
             r%   test_strl_latin1zTestStata.test_strl_latin1  s   Z!^n-12Y
<S
 		3j\J)T" 		,fkkmG%H??9-888??7+w666==*1-a3Dzz&)!"- ,ii(,388G,q013x4!8+++,		, 		, 		,s   B'C0#C00C9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   rR  rC   )	rI   r   UnicodeWarningr   r  messagerZ  r   rJ   )r6   r/   r   rM   r  rT  rn   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.gzrL  i  )rM  rF  r   r  _nvar)r6   r/   rO  r  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                    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        |||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                  ||       y # 1 sw Y   ?xY w)N)r       β   ĉTr   )r   r   u   ᴬu   ᴀ relatively long ŝtring)r  r   u   ᴮr  )r   r   u   ᴰN)   År  r  strlsrC   	   ᴐᴬᵀr  u	   ᵈᵉᵊu   ᴎტჄႲႳႴႶႺzLong Stringsr  )r  r  r  r  r  u   ᴅaᵀa-labelr  labelu   æøåu   ŋot valid latin-1r   r   r   r  F)r(  r7  r&  rF   r  r;   r  r   )r;   rF   )r|   r~  r   ri   r]   ra   r   
write_filer   rj  replacer   rd  rI   rJ   r   r(  r&  rH   )r6   r;   r  rK   r   r)   r&  r(  r  writerrV  r  reread_to_statas                r%   test_utf8_writerzTestStata.test_utf8_writer  s    nn.=>#%
 0
  [,#
 &
'h;OPQ$Z&&rxx0T
 !!+%

 	#I.W,,R0W J|D1299*EIITTV 	T
 	dN3# 	?v$$
222))+>>>	? 	ieD$Y/
dO4	? 	?s   'E==Fc                 X   t        t        j                  dt        j                              }t	        j
                  t        d      5  t        ||d       d d d        t	        j
                  t        d      5  t        ||d       d d d        y # 1 sw Y   <xY w# 1 sw Y   y xY w)	N)r   i  rQ   z"version must be either 118 or 119.r   r>   r  zYou must use version 119r?   )r   r]   zerosr_   r  r  r  r   )r6   rK   r~   s      r%   test_writer_118_exceptionsz$TestStata.test_writer_118_exceptions  s    rxx
"'':;]]:-QR 	8Ir37	8]]:-GH 	8Ir37	8 	8	8 	8	8 	8s   
B<B B B)dtype_backendnumpy_nullablepyarrow)marksc                    |dk(  rdnd}t        t        j                  g d|      g dg dg dt        j                  d	d
d      dt        j                  g dd            }|j                  |      }|dz  }|j                  |d       |j                  |       | j                  |      }t        ddt        j                  gg dddt        j                  gg dt        j                  d	d
dd      dt        j                  t        d
      d            }t        j                  |j                  d      |       y )Nr  Int64zint64[pyarrow])r   r   NrQ   r   )TFN)g      ?g      @g      @z
2020-12-31r   D)r  freqrw  r   r   r   r-   r  r-   )r  ztest_stata.dtar?   r  r   r   r   r   r'  )r  r  rB   )r   r|   r^   r  r  convert_dtypesrH   r8   r]   r   r}   rz   rI   rJ   r/  )	r6   r  rK   tmp_pathrR   r~   
stata_pathr1  rn   s	            r%   test_read_write_ea_dtypesz#TestStata.test_read_write_ea_dtypes
  s   
 ),<<BRXXl%8$($]]<E ((973	
 ]; 00

J,
I!%y!9BFF^$1bff%$]]<4P --aw7

 	4>>wGRr$   )r   r=   r   r>   r?   r@   c           
      \   t        t        j                  ddgt        j                        t        j                  ddgt        j                        t        j                  ddgt        j
                        d      }t         |d	d
dd| d            }t        j                  ||       y )Nir  rQ   ii  i  ibyter  r=  r(   r)   r*   stata_int_validranges_r   	r   r]   r^   r_   r`   ra   r   rI   rJ   r6   r;   r/   rn   r   s        r%   test_read_data_int_validrangesz(TestStata.test_read_data_int_validranges/      $BGG<xxrxx@+z!:"((K
 T67.DWIT,RS
 	fh/r$   c           
      \   t        t        j                  ddgt        j                        t        j                  ddgt        j                        t        j                  ddgt        j
                        d      }t         |d	d
dd| d            }t        j                  ||       y Ni~   rQ   i i  i   ir  r(   r)   r*   r  r   r  r  s        r%   %test_read_data_int_validranges_compatz/TestStata.test_read_data_int_validranges_compat>  r  r$   c           
      \   t        t        j                  ddgt        j                        t        j                  ddgt        j                        t        j                  ddgt        j                        d      }t         |d	d
dd| d            }t        j                  ||       y r  )r   r]   r^   r`   ra   r   rI   rJ   r  s        r%   ,test_read_data_int_validranges_compat_nobytez6TestStata.test_read_data_int_validranges_compat_nobyteN  s    $BHH=xxrxx@+z!:"((K
 T67.DWIT,RS
 	fh/r$   N)j__name__
__module____qualname__r8   r	   r  markparametrizerO   ro   r   r   r   r   r   r   r  r-  r2  r4  rB  rJ  rP  rW  rb  rp  ru  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  r3  r5  rQ  rX  r`  filterwarningsrf  rj  rs  r  r  r  r  staticmethodr   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r]   infr  r  r!  r%  r.  r8  r>  rA  rJ  rP  re  rl  ro  rw  r  r  slowr  r  r  paramr|  
skip_if_nor  r  r  r  r#   r$   r%   r3   r3   <   s	   40 [[Y(BC3 D3 [[Y(BC!E D!EF [[Y(BC
H D
H [[T00:D4L [[H
0
0 [[Y(FG)0 H)0V [[Y(AB+0 C+0\ [[	

C
C [[	
&F&FPS
  [[Y(BC
 D
2
+ [[Y(BC7 D7S8 [[Y(BC$S D$SLS$ [[Y(BC[[HS DS  [[H00" [[Y(BC3 D3 [[Y(BC( D(@& [[Y(BC@ D@ 8
SS&S //S<S [[Y(BC[[[3*5!@ 6 D!@F0"$$"> [[Y80 90  [[Y(AB0 C0  [[Yc
30 40F
P54-^ [[Y(BC[[F.- D.-`) [[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  (36 [[ 56[[	
 [[[1a&1[[3eT]C[[_udm< ! = D 2 7& !D!  [[Y(BC. D.. [[Y(BCY DY [[Yc
3Y 4YM<.B$$>$,  C6 [[X'89	 :		* [[]T5M:
G ;
G* [[E((" [[[8U*;<K. =K.ZL H( [[Y(BC* D*"*  [[	
44"0* [[Y(BC8 D8 [[Y(BC# D#,$1( [[	- 	- [[Y(89[[[8U*;</5 = :/5b8 [[	<6<<	y9QRSS	SB [[Y(FG0 H0 [[Y(AB0 C0 [[Yc
30 40r$   r3   r;   )r   r   r   r   r   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.dtastata-compat-r   Fr	  r  rM   r  r   rI   rJ   r;   r/   	data_baserefoldrn   old_dtas          r%   test_backward_compatr  ^  sf    vw/I
'',,y"8
9C
'',,yM'$"?
@C#HoG'8?r$   r   r   c                     |ddd      }t         j                  j                  |d      }t         j                  j                  |d|  d      }t        |d      }t        |d      }t	        j
                  ||d	       y )
Nr(   r)   r*   r  r  r   Fr+   r	  r  r  s          r%   %test_backward_compat_nodateconversionr  h  sn     vw/I
'',,y"8
9C
'',,yM'$"?
@C#U3HE2G'8?r$   r   c                      |dddd      } |dddd|  d      }t        |d      }|j                  d	g
      }t        |d      }t        j                  ||d       y )Nr(   r)   r*   r  r  r   Fr+   s10rC   r	  )r   droprI   rJ   )r;   r/   r  r  rn   r  s         r%   test_backward_compat_nostringr  t  sj     4*@
AC
4M'$*G
HC#U3H}}eW}-HE2G'8?r$   )r   r   r   r   r   r=   r?   c                      |dddd|  d      } |dddd|  d      }t        |      }t        |      }t        j                  ||       y )Nr(   r)   r*   r  r   stata-compat-be-r   rI   rJ   r;   r/   r  r0  rn   big_dtas         r%   test_bigendianr    sW    
4M'$*G
HC
4,<WIT*J
KC#HoG'8,r$   c                      |dddd|  d      } |dddd|  d      }t        |d      }t        |d      }t        j                  ||       y )	Nr(   r)   r*   r  r   r  Fr+   r  r  s         r%   test_bigendian_nodateconversionr    s_     4M'$*G
HC
4,<WIT*J
KC#U3HE2G'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  rL  )r   r  emptyr{   _path_or_bufr(   rD  rF  )r/   monkeypatch	file_pathr  fprH  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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                  _        ||z  }
|
j                          |	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-        j.                  d      }|j                  |
d      5 }t        j                  |j                               }d d d        n]| dk(  rTt-        j.                  d      }|j                  |
d      5 }t        j                  |j                               }d d d        n| |
}t1        d	      }|	}t3        j4                  ||       y # 1 sw Y   /xY w# 1 sw Y   ;xY w# 1 sw Y   GxY w# 1 sw Y   SxY w# 1 sw Y   _xY w# 1 sw Y   kxY w)Nzdta_inferred_compression.dtar  r  methodr   rD  rE  rC   r-   )r;   compressionrM  rL  r  rr   tarbz2zstd	zstandardxzlzmar#  )r   r]   rF  rG  rH  rI  r-   r.   touchrH   rM  rF  r(   rD  r  zipfileZipFilefilelisttarfileextractfilegetnamesr  r  importorskipr   rI   rJ   )r  r;   r  r  compression_to_extensionr  	file_namefile_extcompression_argr~   rM   compr  r  r  r  r  rn   s                     r%   test_compressionr    s    /I"H/<Hq
^#	!O!#[1	
		a 0094:
B BHHMiDJJLKKg?KCfYYtT" 	)dDIIK(B	) 	)		__T3' 	94DIIdmmA&678B	9 	9		\\$ 	G3COOCLLN1,=>CCEFB	G 	G		XXdD! 	)TDIIK(B	) 	)		"";/YYtT" 	)dDIIK(B	) 	)		""6*YYtT" 	)dDIIK(B	) 	)		g.FH&(+1	) 	)	9 	9	G 	G	) 	)	) 	)	) 	)sI   :$K
2KAK"$K.$K:3$L
KK"K+.K7:LLr  r  r  )NrI  r  c                    d| }d}t        t        j                  j                  d      j	                  d      t        d            }d|j                  _        | |d}||z  }|j                          |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      }
|}t'        j(                  |
|       y # 1 sw Y   /xY w)Ntest.ztest.dtar   rD  rE  rC   r-   )r  archive_namer  r  r  r   r   r#  )r   r]   rF  rG  rH  rI  r-   r.   r  rH   r  r  r  r  filenamer(   rD  r  r   rI   rJ   )r  r  r  r  r  r~   r  rM   zpr  r  rn   s               r%   test_compression_dictr    s.    z"IL	
		a 0094:
B BHHM#\BKiDJJLKK+K.(e+__T3' 	52r{{#q(((;;q>**l:::BGGBKKN34B	5 	5
 g.FH&(+	5 	5s   (A*EEc           
         t        dt        g dd      i      }d|j                  _        |j	                         }|j                  ||        t        |dd	      5 }t        |      D ]j  \  }}|j                  d      }d|v sJ t        j                  |j                  |j                  j                  d|z  d|d
z   z   t        |      d
kD         l 	 d d d        y # 1 sw Y   y xY w)Ncats)r    r!   r    r!   r"   r   rQ   r-   r  r   F)r  r  r   rx   )r   r   r-   r.   r   rH   r   	enumerater/  rI   rj   r  r  r  )r;   rK   r~   rn   r  r  blocks          r%   test_chunked_categoricalr
    s    	FF#<JOP	QBBHHMwwyHKK	7K+	Y!	F &!&) 	HAuOOG,EU?"?""

""1q51A;7!$Ua	  s   A9C  C)c           	          | dddd      }g d}d}t        |d      5 }t        j                  t        |	      5  t	        |      D ]  \  }}t        |j                        |d|z  d|d
z   z   k(  sJ |dk  rt        j                  ddg      }nt        j                  dgd      }t        j                  |j                  j                  j                  |        	 d d d        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   z.series with value labels are not fully labeledr   r  r   r   r    r!   r   rh   rQ   rq   )r   rI   r   r
   r  rI  r  r|   r  r  r   r   __next__r   rJ   )
r/   dta_filerq  r   r  r  r	  idxlarge_chunkr  s
             r%    test_chunked_categorical_partialr  	  sj   fg/PQH&F
:C	X	+ Fv''(DCP 	F%f- F5EJJ'6!a%!q1u++FFFFq5((C:.C((C5	:C%%ejjnn&?&?EF	FF 
	#	#$@	L ,Q/ 	,6 //+K	,, !F&+.	F 	FF F	, 	,, ,sG   E'B#EE'
E?E3)E?E$	 E''E03E<	8E??Fr  )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 positiver   r  )r  r  r  r   )r/   r  r  s      r%   test_iterator_errorsr  $	  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}      }|j	                  | d	
       t        j
                  g 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        y c c}w # 1 sw Y   y xY w)Nc_labelb_labela_labelr
  r   r   Tr   FrM  )r  r  r  r  r  r   )r   rz   r|   r~  rH   r  r   r  rI   r  rk   r  r   rJ   )	rK   rq  r  r~   rn   r  r.  r  r  s	            r%   test_iterator_value_labelsr  ,	  s   #ykC&77F	USTXVc!Ir~~fdCCV	WBKK	uK-xx9:H	I	- K!&) 	KHAu1X Q%%ell&7&7&:&E&ExPQ!!%SAES=)IJ	KK K WK Ks   "D>BDDc           	      X   t        t        d t        d      D              t        d t        d      D              ggddg      }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 y # 1 sw Y   xY w)Nc              3   &   K   | ]	  }d |z    ywr   Nr#   .0r  s     r%   	<genexpr>z&test_precision_loss.<locals>.<genexpr>;	  s     &qad&   <   c              3   &   K   | ]	  }d |z    ywr  r#   r  s     r%   r  z&test_precision_loss.<locals>.<genexpr>;	  s     +DQAqD+Dr  4   r0  r/  rC   z&Column converted from int64 to float64r   FrM  r  )r   r/  )r   r0  )r   sumrz   rI   r   r   rH   r   r   r]   rh   rj   rk   rN  float)rK   r~   r  expected_dts       r%   test_precision_lossr&  9	  s    	
&E"I&
&+D%)+D(D	EF!
B 
	#	#%M
 2 	I512 	"F"**bjj1%9JKK6==+6::k"bff[&9999::h5)9#::::2 2s    D  D)c                    t        g dg dgddgg d      }d|j                  _        |j                  ||        t	        || d	      }t        j                  ||       t        j                  ||       5 }t        j                  |j                               }d d d        t	        d
      }t        j                  ||       y # 1 sw 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.   rH   r   rI   rJ   decompress_filer(   rD  r  )r  rK   r~   r  fhcontentss         r%   test_compression_roundtripr2  I	  s    		')GHCj
B
 BHHMKK	{K3	{gNF"f% 
		I{	3 )r::bggi()G4F"f%) )s   7$CCto_infer
read_inferc                    | }||   }d| }t        g dg dgddgg d      }d|j                  _        |rd	n|}	|rd	n|}
||z  }|j                          |j	                  ||	
       t        ||
d      }t        j                  ||       y )Nr   r(  r)  r  r  r*  r  r-   r  r  r.  )r   r-   r.   r  rH   r   rI   rJ   )compression_onlyr4  r3  r  r  r  extr  r~   to_compressionread_compressionrM   rU  s                r%   test_stata_compressionr:  \	  s    
 #K
";
/Cse}H		')GHCj
B
 BHHM (WkN",w+hDJJLKK.K1*:gNF&"%r$   c           	         t        g dddt        j                  dt        j                  gg dt        j                  g d      d      }| }dd	d
ddd	dd}i |dddddi}t        |||      }|j                          t        |      5 }|j                         }||k(  sJ 	 d d d        d}ddddi}t        j                  t        |      5  t        |||       d d d        d}ddddddi}t        j                  t        |      5  t        |||       d d d        y # 1 sw Y   xY w# 1 sw Y   Sx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   r  )r   r  )r<  r=  r-  r.  r  r  r  r  zCCan't create value labels for notY, it wasn't found in the dataset.notYr  r  )r   r   r   zUCan't create value labels for Z, value labels can only be applied to numeric columns.r    r  r   )r   r]   r   r|   r~  r   r  r   r  r  r  r  r  )	rK   r)   rM   r  rn   r  r  reader_value_labelsr   s	            r%   !test_non_categorical_value_labelsrA  w	  sc   -#&RVVS"&&"A! 9:		
D D#':$)6L ?,>%=>Ht,?F
	T	 /f$113"h.../ PCX67L	xs	+ ;D$\:;	2  SSSS9:L	z	- ;D$\:; ;/ /; ;; ;s$   D(D4E (D14D= E	c                    t        g dg dg dg dg dd      }ddddddd	d
dddiddid}ddddddd	d
dddiddid}d}t        j                  t        |      5  |j	                  | |       d d d        t        |       5 }|j                         }||k(  sJ 	 d d d        y # 1 sw Y   6xY w# 1 sw Y   y xY w)N)r   r   r   r   rq   r   )r   r   r   r   r   r   )r   rq   rq   r   r   r   rd  )z	invalid~!	6_invalid&invalid_name_longer_than_32_characters	aggregater   r   r  r  rF  r   r   )r   r   rq   r   r   r   )	invalid__
_6_invalid invalid_name_longer_than_32_char
_aggregate_1__2_r_  r   r>  )r   rI   r   r   rH   r   r  )rK   r)   r  rn   r   r  r@  s          r%   0test_non_categorical_value_label_name_conversionrL  	  s    ++6H+&	
D "h/!h/6=&2I[GL "h/"x007F,C&kg,H HC		#	#$5S	A <il;< 
Y	 /6$113"h.../ /< </ /s   #B,
B8,B58Cc                    dddddi}t        dg di      }|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        y # 1 sw Y   bxY w# 1 sw Y   y xY w)Nrepeated_labelsTenzMore than ten)r   r   (   )r   r   r   r   rP  rP  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:
r   T)	r   rH   r   r  r  r  r  r  r   )rK   r  r)   r  r@  r   repeatsr   s           r%   ;test_non_categorical_value_label_convert_categoricals_errorrS  	  s     	?PL 7	
D 	MM),M7	YU	; 4v$1134,...
C		?*; <<G  		 

C 
z	- 99489 9%4 4$9 9s   B*B6*B36B?rR   c                    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      }|j                  |d|       t        |d      }	t        j                  |j                   |	j                          t        j                  |	j
                  |       t        j                  |	j"                  |       y )Nr  r   rQ   )r    r!   Nr   ur  rb   ra   boolr_   r!   r  )r    r!   r  r"   r  FrE   Tr'  )r   r   r|   NAr.   r!   rR   numpy_dtyper  r   BASE_MISSING_VALUESr7  rH   r   rI   rj   r    r"   )
rR   r;   rK   r~   
dtype_namevaluer-  
expected_b
expected_cr  s
             r%   test_nullable_supportr^  	  s      
(BEE255)<()	

B '',,J##C,JW
	v	
11*=E
E
"CCV#>JS1JKK	ugK>	48F244*688Z0688Z0r$   c                    t        t        d      g dd      j                  d      }| }|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          y )Nr   r  rw   r  r   Fr>   rE   r!   ra   rh   r    rC   )r   rz   r  rH   r   r   r]   rR   rI   rj   rk   rN  )rK   r~   rM   df2rk   df3s         r%   test_empty_framerb  
  s     
eAh_=	>	C	CA	FBDKK%K5
T
C#::"((7+"((92EFGF3::v.
TC5
)Cc>>3::vzz3%'89r$   c                 D   d}t        t        j                  |      dg      }t        j                  t
        j                  gdz   D cg c]  }dj                  |       }}dt        |      D ci c]  }|||   
 c}i}|j                  | ||       y c c}w c c}w )Ni  r   rC   r   r  )r  r;   )
r   r]   r  	itertoolsproductr6  ascii_lettersr  rz   rH   )rK   r;   ra  r~   r  lblsr  r  s           r%   test_many_strlrh  "
  s    A	299Q<%	1B ) 1 1V5I5I4JQ4N PQ1BGGAJQDQa91AtAwJ9:LKK	gKF R9s   
B2B)r>   r?   r@   Nc                 t    t        dddd ddt        j                  ddg      }|j                  | |       y )Nrg  r   )str1ri  r   r  )r   r|   rW  rH   )rK   r;   r~   s      r%   test_strl_missingsrk  +
  sA     
#q1Q'UUa(	

B KK	7K+r$   c                     t        ddgi      }|j                  | d|       t        |       }t        j                  ||       y )NdoubleByteColu  §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§r   rE   rG   )rK   r;   r~   df_inputs       r%   test_ascii_errorro  9
  sA     
Ok]3	4BKK	q'K:)$H"h'r$   )Or  r   r  rM  r(   rd  r  r6  r  r  r  numpyr]   r  pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsr|  ry  r|   r   pandas._testing_testingrI   pandas.core.framer   r   pandas.io.parsersr	   pandas.io.statar
   r   r   r   r   r   r   r   r   fixturer&   r1   r3   r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r&  r2  r:  rA  rL  rS  BooleanDtype	Int8Dtype
Int16Dtype
Int32Dtype
Int64Dtype
UInt8DtypeUInt16DtypeUInt32DtypeUInt64Dtyper^  rb  rh  rk  ro  r#   r$   r%   <module>r     s   
    	  	       ( ) )  # 
 '
 
 
    _ 0 _ 0DA $BC@ D@ S#J/@ 0@ SE*	@ +	@ $GH- I- S#J/- 0-2. $>?dE]34-00, 1 4 @0,f E7#34%9:, ; 5,0 $>? @$/( &67 8
K; && dE]3e}5& 6 4&2#;L"/J"9J $>?









1 @14:$ $>?G @G $9:
, ;
, $9:( ;(r$   