
x\c           @   se  d  d l  m 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 j Z d  d l m Z m Z m Z d  d l m Z d  d l Z d  d l m Z m Z d  d l j j Z d  d l m Z d  d l m Z m  Z  m! Z! m" Z" m# Z# e j$ d	    Z% e j$ d
    Z& d e' f d     YZ( d S(   i(   t   OrderedDictN(   t   datetime(   t   PY3t   ResourceWarningt   iterkeys(   t   is_categorical_dtype(   t	   DataFramet   Series(   t   read_csv(   t   InvalidColumnNamet   PossiblePrecisionLosst   StataMissingValuet   StataReadert
   read_statac         C   s   |  d d  S(   Nt   iot   data(    (   t   datapath(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   dirpath   s    c         C   s7   t  j j |  d  } t | d t } d | j _ | S(   Ns   stata5_114.dtat   convert_datest   index(   t   ost   patht   joinR   t   TrueR   t   name(   R   t	   dta14_114t
   parsed_114(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyR   $   s    t	   TestStatac           B   s  e  Z e j d  e  d    Z d   Z d   Z e j j	 d d d g  d    Z
 d   Z e j j	 d	 d
 d g  d    Z d   Z e j j	 d	 d d d d g  d    Z e j j	 d	 d d d d g  d    Z d   Z d   Z d   Z d   Z e j j	 d d d g  d    Z d   Z d   Z e j j	 d d d g  d    Z d    Z e j j	 d d d g  d!    Z d"   Z e j j	 d d d g  e j j	 d	 d# d$ d% d& g  d'     Z e j j	 d	 d( d) d* d+ g  d,    Z e j j	 d d d g  d-    Z e j j	 d d d g  d.    Z d/   Z e j j	 d d d g  d0    Z  d1   Z! d2   Z" d3   Z# d4   Z$ d5   Z% d6   Z& d7   Z' d8   Z( e j j	 d d d g  e j j	 d9 d: d; g  d<     Z) d=   Z* d>   Z+ d?   Z, d@   Z- e j j	 d	 dA dB dC g  dD    Z. dE   Z/ dF   Z0 dG   Z1 e j j	 d d d g  e j j2 dH  dI     Z3 dJ   Z4 e j j	 d d d g  dK    Z5 e j j	 d	 dL dM g  dN    Z6 e j j	 d	 dO dP g  dQ    Z7 e j j	 d	 dL dM g  dR    Z8 e j j	 d	 d dS d d d& d+ dT dC dU dM dP g  e j j	 dV dW dX g  e j j	 dY e9 e g  e j j	 dZ e9 e g  d[       Z: d\   Z; e j j	 d	 d] d d d% d* d^ dB d_ dL dO g
  e j j	 dV dW dX g  e j j	 dY e9 e g  e j j	 dZ e9 e g  d`       Z< da   Z= e j j	 d d d g  db    Z> e j j	 d d d g  dc    Z? dd   Z@ de   ZA df   ZB dg   ZC dh   ZD di   ZE dj   ZF dk   ZG dl   ZH dm   ZI e j j	 dn e e9 g  do    ZJ dp   ZK e j j	 dq dr ds dt du dv dw dx g  dy    ZL dz   ZM d{   ZN d|   ZO e j j	 d d d g  d}    ZP d~   ZQ d   ZR d   ZS e j j	 d d d g  d    ZT e j j	 d d d g  d    ZU d   ZV RS(   t   autousec         C   s  | d d  |  _  t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _	 t j j |  j  d	  |  _
 t j j |  j  d
  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _ t j j |  j  d  |  _  t j j |  j  d   |  _! t j j |  j  d!  |  _" t j j |  j  d"  |  _# t j j |  j  d#  |  _$ t j j |  j  d$  |  _% t j j |  j  d%  |  _& t j j |  j  d&  |  _' t j j |  j  d'  |  _( t j j |  j  d(  |  _) t j j |  j  d)  |  _* t j j |  j  d*  |  _+ t j j |  j  d+  |  _, t j j |  j  d,  |  _- t j j |  j  d-  |  _. d  S(.   NR   R   s   stata1_114.dtas   stata1_117.dtas   stata2_113.dtas   stata2_114.dtas   stata2_115.dtas   stata2_117.dtas   stata3_113.dtas   stata3_114.dtas   stata3_115.dtas   stata3_117.dtas
   stata3.csvs   stata4_113.dtas   stata4_114.dtas   stata4_115.dtas   stata4_117.dtas   stata1_encoding.dtas
   stata5.csvs   stata5_113.dtas   stata5_114.dtas   stata5_115.dtas   stata5_117.dtas
   stata6.csvs   stata6_113.dtas   stata6_114.dtas   stata6_115.dtas   stata6_117.dtas   stata7_115.dtas   stata7_117.dtas   stata8_113.dtas   stata8_115.dtas   stata8_117.dtas   stata9_115.dtas   stata9_117.dtas   stata10_115.dtas   stata10_117.dtas   stata11_115.dtas   stata11_117.dtas   stata12_117.dtas   stata14_118.dtas   stata15.dtas   stata7_111.dtas   stata16_118.dtas   stata13_dates.dta(/   R   R   R   R   t   dta1_114t   dta1_117t   dta2_113t   dta2_114t   dta2_115t   dta2_117t   dta3_113t   dta3_114t   dta3_115t   dta3_117t   csv3t   dta4_113t   dta4_114t   dta4_115t   dta4_117t   dta_encodingt   csv14t	   dta14_113R   t	   dta14_115t	   dta14_117t   csv15t	   dta15_113t	   dta15_114t	   dta15_115t	   dta15_117t	   dta16_115t	   dta16_117t	   dta17_113t	   dta17_115t	   dta17_117t	   dta18_115t	   dta18_117t	   dta19_115t	   dta19_117t	   dta20_115t	   dta20_117t	   dta21_117t	   dta22_118t   dta23t	   dta24_111t	   dta25_118t   stata_dates(   t   selfR   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   setup_method.   sX    c         C   s   t  | d t S(   NR   (   R   R   (   RG   t   file(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   read_dtal   s    c         C   s   t  | d t S(   Nt   parse_dates(   R   R   (   RG   RI   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyR   p   s    t   versionir   iu   c      
   C   s`   t  d d g  } t j   < } | j | d t d | t |  } t j | |  Wd  QXd  S(   Nt   columnst   unitt   write_indexRL   (   R   t   tmt   ensure_cleant   to_statat   FalseR   t   assert_frame_equal(   RG   RL   t   empty_dsR   t	   empty_ds2(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_empty_dtas   s
    c      	   C   sr   t  |  j  ) } t j t   | j   } Wd  QXWd  QXt  |  j   } | j   } Wd  QXt j | |  d  S(   N(   R   R   RP   t   assert_produces_warningt   UserWarningR   t   readRT   (   RG   t   rdrt   parsed_114_datat   parsed_114_read(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_data_method|   s    RI   R   R   c         C   s   t  |  |  } |  j |  } t t j t j t j t j t j f g d d d d d d g } | d j t j  | d <t j | |  d  S(   NRM   t
   float_misst   double_misst	   byte_misst   int_misst	   long_miss(	   t   getattrRJ   R   t   npt   nant   astypet   float32RP   RT   (   RG   RI   t   parsedt   expected(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_dta1   s    *	c         C   sK  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 d d d d d d d d d  g } | d  j d!  | d  <t j d" t   } t j	 d#  |  j
 |  j  } |  j
 |  j  } |  j
 |  j  } g  | D] } | j t k r| ^ q} t |  d k st  Wd  QXt j | | d$ t t j | | d$ t t j | | d$ t d  S(%   Ni  i   i   i   i   i   I~X  i  i   i   i  i   i  i   i   i   iZli  i
   i   i  i   i  RM   t
   datetime_ct   datetime_big_ct   datet   weekly_datet   monthly_datet   quarterly_datet   half_yearly_datet   yearly_datet   Ot   recordt   alwayst   check_datetimelike_compat(   R   t   from_recordsR   t   pdt   NaTRg   t   warningst   catch_warningsR   t   simplefilterRJ   R    R!   R"   t   categoryRY   t   lent   AssertionErrorRP   RT   (   RG   Rj   t   wR   t
   parsed_115t
   parsed_117t   x(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_dta2   sT    	(R#   R$   R%   R&   c         C   s   t  |  |  } |  j |  } |  j |  j  } | j t j  } | d j t j  | d <| d j t j  | d <t	 j
 | |  d  S(   Nt   yeart   quarter(   Rd   RJ   R   R'   Rg   Re   Rh   t   int16t   int8RP   RT   (   RG   RI   Ri   Rj   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_dta3   s    R(   R)   R*   R+   c         C   sW  t  |  |  } |  j |  } t j d d d d d g d d d d d g d d d d d g d d d	 d 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 d d d t j d g g
 d d d d d d g } t j g  | D] } | | j d  ^ qd d } t	 j
 | | d t d  S(   Nt   onet   tent   twot   ninet   threet   eightt   fourt   seveni   t   fivet   sixi   i   i   i   i	   RM   t   fully_labeledt   fully_labeled2t   incompletely_labeledt   labeled_with_missingst   float_labelledR~   t   axisi   t   check_categorical(   Rd   RJ   R   Rx   Re   Rf   Ry   t   concatRg   RP   RT   RS   (   RG   RI   Ri   Rj   t   col(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_dta4   s$    		,c         C   sn   |  j  |  j  } t j d d d g d d d g d d d	 g g d
 d d d g } t j | | d t d  S(   Ni   t   abct	   abcdefghii   t   cbat   qwertywertyqwertyi]   t    t   strlRM   R   t   yt   zt   check_dtype(   RJ   RA   R   Rx   RP   RT   RS   (   RG   R   Rj   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_dta12  s    c         C   s  |  j  |  j  } | d j d  | d <t j d d d d d d d g d	 d
 d t j t j t j t j g d d d d d d d g d d d d d d d g d d d d d d d d g g d d d d d d  d d! g } | d  j t j  | d  <x) | j D] } t	 j
 | | | |  q Wt |  j  o } | j   } i d" d# 6d$ d% 6d& d' 6d( d) 6d* d+ 6d, d- 6d. d/ 6} t	 j | |  | j d0 k st  Wd  QXd  S(1   Nt   BytesRt   t   Catt   Bogotau   Bogotái   g      ?u   option b Ünicodet   Dogt   Bostonu   Uzunköprüt   Planet   Romeu   Tromsøi    g        s   option at   Potatot   Tokyou	   Elâzığig      @i   R   gT?g      @RM   t   Thingst   Citiest   Unicode_Cities_Strlt   Intst   Floatst   Longsu'   Here are some strls with Ünicode charsu   Unicode_Cities_Strlu	   long datau   Longsu   Here are some thingsu   Thingsu	   byte datau   Bytesu   int datau   Intsu   Here are some citiesu   Citiesu
   float datau   Floatsu   This is a  Ünicode data label(   RJ   RB   Rg   R   Rx   Re   Rf   Rh   RM   RP   t   assert_almost_equalR   t   variable_labelst   assert_dict_equalt
   data_labelR   (   RG   t
   parsed_118Rj   R   R[   t   vlt   vl_expected(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_dta18  s2    $"	
c         C   s   t  t j t j t j t j t j f g d d d d d d g } d | j _ t j   ? } | j | d   |  j	 |  } t j
 | j d  |  Wd  QXd  S(   NRM   R_   R`   Ra   Rb   Rc   R   (   R   Re   Rf   R   R   RP   RQ   RR   t   NoneRJ   RT   t	   set_index(   RG   t   originalR   t   written_and_read_again(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_write_dta52  s    *	c      	   C   s   |  j  |  j  } d | j _ | j j t j  | _ | d j t j  | d <| d j t j  | d <t j   E } | j	 | d   |  j |  } t j | j d  | d t Wd  QXd  S(   NR   R   R   t   check_index_type(   R   R'   R   R   Rg   Re   t   int32RP   RQ   RR   R   RJ   RT   R   RS   (   RG   R   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_write_dta6>  s    c      	   C   s   t  d d d d d t j d  g g d d d d d	 d
 g  } t | d d t | d <d | j _ | j j t j  | _ | d j t j  | d <t	 j
   R } | j | i d d
 6d | |  j |  } t	 j | j d  | d t Wd  QXd  S(   NR   t   stringt   objecti   g?s
   2003-12-25RM   t   integert   floatingR   t   dtypeR   t   tcRL   R   (   R   Re   t
   datetime64R   R   R   R   Rg   R   RP   RQ   RR   RJ   RT   R   RS   (   RG   RL   R   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_write_dta10K  s    	c      	   C   sM   t  j   ; } t t j j d d  d t d  } | j |  Wd  QXd  S(   Ni
   i   RM   t   AB(   RP   RQ   R   Re   t   randomt   randnt   listRR   (   RG   R   t   df(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_stata_doc_examples]  s    'c         C   s   t  j j d  t j t  j j d d  d t d  } t  j | j d d d  f <| j	   } t
 j    } | j | d	 t Wd  QXt
 j | |  d  S(
   Ni  i   i   RM   t   abcdi   t   at   cRO   (   Re   R   t   seedRy   R   R   R   Rf   t   loct   copyRP   RQ   RR   RS   RT   (   RG   R   t   df_copyR   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_write_preserves_originalb  s    *c         C   s   t  |  j  } t j t   t  |  j d d } Wd  QX| j d } | j d } | | k sf t  t | t j	  s~ t  t j
   X } t j t  $ | j | d t d | d d Wd  QXt  |  } t j | |  Wd  QXd  S(   Nt   encodings   latin-1i    RO   RL   (   R   R,   RP   RX   t   FutureWarningt	   kreis1849R   t
   isinstancet   compatt   string_typesRQ   RR   RS   RT   (   RG   RL   t   rawt   encodedt   resultRj   R   t   reread_encoded(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_encodingl  s    c         C   s   t  d g d d t j d  d d	 g } t  d g d d d
 d d g } d | j _ | j t j  } t j	   ^ } t j
 t j j j   | j | d   Wd  QX|  j |  } t j | j d  |  Wd  QXd  S(   Ni   i   i   i   RM   t   goods   b\u00E4dt   8numbert%   astringwithmorethan32characters______t   b_dt   _8numbert    astringwithmorethan32characters_R   (   i   i   i   i   (   i   i   i   i   (   R   R   t   uR   R   Rg   Re   R   RP   RQ   RX   Ry   R   t   stataR	   RR   R   RJ   RT   R   (   RG   R   t	   formattedR   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_write_dta11  s    	c         C   s  t  d g d d d	 d
 d d d g } t  d g d d d d d d d g } d | j _ | j t j  } t j    } t j	 d t
  E } t j d t  | j | d  d | t |  d k s t  Wd  QX|  j |  } t j | j d  |  Wd  QXd  S(   Ni   i   i   i   i   i   RM   t!   astringwithmorethan32characters_1t!   astringwithmorethan32characters_2t   +t   -t   shortt   deleteR   t    _0astringwithmorethan32charactert   _t   _1_t   _shortt   _deleteR   Ru   Rv   RL   (   i   i   i   i   i   i   (   i   i   i   i   i   i   (   R   R   R   Rg   Re   R   RP   RQ   R{   R|   R   R}   R	   RR   R   R   R   RJ   RT   R   (   RG   RL   R   R   R   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_write_dta12  s0    c         C   s   t  d
 d t j } t  d d t j } t  d d t j } t i | d 6| d 6| d 6 } d	 | j _ | } | d j t j	  | d <t
 j   < } | j |  |  j |  } t
 j | j d	  |  Wd  QXd  S(   Ni   i	   R   i   i!   R   R   t   int64R   i   i   I       (   R   Re   R   R   R   R   R   R   Rg   t   float64RP   RQ   RR   RJ   RT   R   (   RG   t   s1t   s2t   s3R   R   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_write_dta13  s    !R.   R   R/   R0   c   
   	   C   s'  t  |  |  } |  j |  } d | j _ |  j |  j  } d d d d d g } x. | D]& } | | j d t d t  | | <qX W| d j t	 j
  | d <t j | d	 d
 d | d	 <t j | |  t j   L } | j | i d d	 6d | |  j |  }	 t j |	 j d  |  Wd  QXd  S(   NR   t   byte_t   int_t   long_t   float_t   double_R   t   numerict   date_tdt   errorst   coercet   tdRL   (   Rd   RJ   R   R   R   R-   t   _convertR   Rg   Re   Rh   Ry   t   to_datetimeRP   RT   RQ   RR   R   (
   RG   RI   R   RL   Ri   Rj   t   colsR   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_write_reread_dta14  s     $R2   R3   R4   R5   c         C   s   |  j  |  j  } | d j t j  | d <| d j t j  | d <| d j t j  | d <| d j t j  | d <| d j t j  | d <| d j	 t
 j d d	 | d <t |  |  } |  j |  } t j | |  d  S(
   NR  R  R  R  R	  R  t   argss   %Y-%m-%d(   s   %Y-%m-%d(   R   R1   Rg   Re   R   R   R   Rh   R   t   applyR   t   strptimeRd   RJ   RP   RT   (   RG   RI   Rj   Ri   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_write_reread_dta15  s    
c         C   s   t  d g d d g } t d d d d d  } d	 } t j   e } | j | d
 | d | d | t |  1 } | j d k s t  | j | k s t  Wd  QXWd  QXd  S(   Ni   RM   t   variablei  i   i   i   i   s   This is a data file.t
   time_stampR   RL   s   29 Feb 2000 14:21(   i   (	   R   R   RP   RQ   RR   R   R  R   R   (   RG   RL   R   R  R   R   t   reader(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_timestamp_and_label  s    c         C   sr   t  d	 g d d g } d } t j   B } d } t j t d |  | j | d | d | Wd  QXWd  QXd  S(
   Ni   RM   R  s   01 Jan 2000, 00:00:00s"   time_stamp should be datetime typet   matchR  RL   (   i   (   R   RP   RQ   t   pytestt   raisest
   ValueErrorRR   (   RG   RL   R   R  R   t   msg(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_invalid_timestamp  s    c      
   C   s   t  t j t j d  d   } d | j _ t j    } t j t	   | j
 |  Wd  QX|  j |  } | j d  } t | j  } d   } t | |  | _ t j | |  Wd  QXd  S(   Ng      9@i   R   c         S   s   t  |  d  S(   Ni   (   t   int(   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   <lambda>  s    (   i   i   (   R   Re   t   reshapet   arangeR   R   RP   RQ   RX   R	   RR   RJ   R   R   RM   t   mapRT   (   RG   R   R   R   RM   t   convert_col_name(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_numeric_column_names  s    !	c         C   s   t  t j d  d t j } t  t j d  d t j } t j | d  d  d  <t j | d d  d  <t i | d 6| d 6 } d | j _ t	 j
   H } | j | d | |  j |  } | j d  } t	 j | |  Wd  QXd  S(	   Ng      @R   i   i   R  R  R   RL   (   R   Re   R$  Rh   R   Rf   R   R   R   RP   RQ   RR   RJ   R   RT   (   RG   RL   R  R  R   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_nan_to_missing_value  s    c      
   C   s   d d g } t  t j t j d  d
  d | } d | j _ t j   S } | j | d t	 |  j
 |  } t j t d	 | j j  | d Wd  QXWd  QXd  S(   NR   R   g      $@i   i   RM   t   index_not_writtenRO   R  (   i   i   (   R   Re   R#  R$  R   R   RP   RQ   RR   RS   RJ   R  R  t   KeyError(   RG   RM   R   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_no_index  s    	c         C   s   t  d d g  } t  d d g d t j } t i | d 6| d 6 } d | j _ t j   < } | j |  |  j	 |  } t j
 | j d  |  Wd  QXd  S(	   NR   s   A longer stringg      ?g       @R   R  R  R   (   R   Re   R   R   R   R   RP   RQ   RR   RJ   RT   R   (   RG   R  R  R   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_string_no_dates*  s    c   	   
   C   sg  t  d d g d t j } t  d d g d t j } t  d d g d t j } t  d d g d t j } t i | d 6| d	 6| d
 6| d 6 } d | j _ t j	    } t j
 t   | j |  Wd  QX|  j |  } | j   } t  | d	 d t j | d	 <t  | d
 d t j | d
 <t  | d d t j | d <t j | j d  |  Wd  QXd  S(   Ni   ic   R   i   i   i   i?   t   s0R  R  R  R   i   i  l            l    (   R   Re   R   R   R   R   R   R   RP   RQ   RX   R
   RR   RJ   R   R   R   RT   R   (	   RG   R-  R  R  R  R   R   R   t   modified(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_large_value_conversion5  s     (c         C   s   t  t d d d d d d  g  } d | j _ t j   t } t j t   | j | i d d	 6 Wd  QX|  j	 |  } | j
   } d
 g | _ t j | j d  |  Wd  QXd  S(   Ni  i   i   i   i   i   R   R   i    t   _0(   R   R   R   R   RP   RQ   RX   R	   RR   RJ   R   RM   RT   R   (   RG   R   R   R   R.  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_dates_invalid_columnH  s    $c         C   s  t  j j |  j d  } t j |  } d d d d g d d d d g d d d d g g } t j |  } d d d	 d
 g | _ | d j t	 j
  | d <| d j t	 j  | d <| d	 j t	 j  | d	 <| d
 j t	 j  | d
 <t j | j d  |  d  S(   Ns   S4_EDUC1.dtai   i   ii   i   t   clustnumt   pri_schlt   psch_numt   psch_dis(   R   R   R   R   Ry   R   R   RM   Rg   Re   R   R   Rh   RP   RT   t   head(   RG   t   dpathR   t   df0(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_105U  s    3c         C   sJ   t  j j |  j d  } t |  } | j   i  k s< t  | j   d  S(   Ns   S4_EDUC1.dta(   R   R   R   R   R   t   value_labelsR   t   close(   RG   R7  R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_value_labels_old_formatc  s    c   	   
   C   s^  d d d d d d d g } d   | D } t  d	 d
 d d d d  g t |  } t | g d | } 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 d | } d | j _ t j   ? } | j | |  |  j |  } t j	 | j
 d  |  Wd  QXd  S(   NR   R  t   twRP   t   tqt   tht   tyc         S   s   i  |  ] } | |  q S(    (    (   t   .0R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pys
   <dictcomp>o  s   	 i  i   i   i   i   RM   R   i   i   i
   i   (   R   R   R   R   R   RP   RQ   RR   RJ   RT   R   (	   RG   RM   t   conversionsR   R   t   expected_valuesRj   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_date_export_formatsm  s&    (c         C   s   t  d g d  g g d d g } t  d g d g g d d g } d | j _ t j   < } | j |  |  j |  } t j | j	 d  |  Wd  QXd  S(   Nt   1RM   t   fooR   R   (
   R   R   R   R   RP   RQ   RR   RJ   RT   R   (   RG   R   Rj   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_write_missing_strings  s    !!t	   byteordert   >t   <c      
   C   s  t  d d t g d t j } t  d d d g d t j } t  d d d g d t j } t  d d d g d t j } t  d d d g d t j } t  d d d g d t j } t  d d d g d t j }	 t i | d 6| d 6| d 6| d 6| d 6| d 6|	 d 6 }
 d |
 j _	 |
 j
   } t j t j t j t j t j t j t j f } x7 t | j |  D]# \ } } | | j |  | | <qjWt j   N } |
 j | d | d | |  j |  } | j d  } t j | |  Wd  QXd  S(   Ni    i   R   id   i   i   i   i   i   i    R-  R  R  R  t   s4t   s5t   s6R   RH  RL   i   i  i   i  I       iI       I    (   R   R   Re   t   boolt   uint8t   uint16t   uint32R   R   R   R   R   R   R   R   t   zipRM   Rg   RP   RQ   RR   RJ   R   RT   (   RG   RH  RL   R-  R  R  R  RK  RL  RM  R   Rj   t   expected_typesR   t   tR   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_bool_uint  s(    "c         C   s   t  |  j   } | j   } Wd  QXt  |  j   } | j   } Wd  QXd } d } xi t j |  D]X \ } } | | k s t  | | | k s t  | | k s t  | | k sd t  qd Wd  S(	   Nt   var1t   var2t   var3t   label1t   label2t   label3(   RV  RW  RX  (   RY  RZ  R[  (   R   R6   R   R7   R   t	   iteritemsR   (   RG   R[   t   sr_115t   sr_117t   keyst   labelst   kt   v(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_variable_labels  s    c         C   s  d
 } i  } x= | D]5 } t  d | d | d | g  | d t |  <q Wt |  } t j    } | j | d t t |   } | j } | j	 } | j
 }	 xh t | |	 |  D]T \ }
 } } t |
 d  t | d d	 ! k s t  t |
 d  | k s t  q WWd  QXWd  QXd  S(   Ni   id   i   R   t   bR   t   sRO   i(   i   id   i   (   R   t   strR   RP   RQ   RR   RS   R   t   typlistt   varlistt   fmtlistRR  R!  R   (   RG   t   str_lensRe  t   str_lenR   R   t   srRg  t	   variablest   formatsR  t   fmtt   typ(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_minimal_size_col  s    
)			")c      
   C   s   d
 } i  } x= | D]5 } t  d | d | d | g  | d t |  <q Wt |  } d } t j t d	 | ' t j    } | j |  Wd  QXWd  QXd  S(   Ni   i   i  R   Rd  R   Re  s   Fixed 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  (   i   i   i  (	   R   Rf  R   R  R  R  RP   RQ   RR   (   RG   Rj  Re  Rk  R   R  R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_excessively_long_string  s    
)c      	   C   s  d } t  d g g d d g } t j   2 } | j |  t |   } | j } Wd  QXWd  QXg  t d  D] } d t d	 |  ^ qn } | j d
 d  xc | D][ } | | d }	 xD t d
 d  D]3 } t	 |	 d |  }
 |
 j
 | | k s t  q Wq Wt	 t j d d  d
  }
 |
 j
 d k s5t  t	 t j d d  d
  }
 |
 j
 d k sft  t	 t j d d  d
  }
 |
 j
 d k st  t	 t j d d  d
  }
 |
 j
 d k st  d  S(   NRd  t   ht   lg        RM   R  i   t   .ia   i    i   i   s   <fs      s     s   .zs   <ds         s        (   Rd  Rs  Rt  (   R   RP   RQ   RR   R   t   VALID_RANGEt   ranget   chrt   insertR   R   R   t   structt   unpack(   RG   t   typesR   R   R[   t   valid_ranget   iRC  RT  t   offsett   val(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_missing_value_generator  s.    -!		R8   R9   R:   c         C   s   d d d d d g } t  d  } g  t | j  D] } | ^ q1 } | j   g  } xR t d  D]D } g  t d  D] } t  | | | d  ^ qs }	 | j |	  q` Wt | d	 | }
 t t |  |  d
 t	 } t
 j | |
  d  S(   Nt   int8_t   int16_t   int32_t   float32_t   float64_ie   i   i   RM   t   convert_missing(   R   R   t   MISSING_VALUESt   sortRw  t   appendR   R   Rd   R   RP   RT   (   RG   RI   RM   t   smvt   keyR_  R   R~  t   jt   rowRj   Ri   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_missing_value_conversion  s    "
1c         C   s  d d d d d d g } d d d d d	 d
 g } d d d d d d g } d d d d d d g } d d d d d d g } d d d d d d g } g  } x t  t |   D] } g  }	 x t  d  D] }
 |
 d k r|	 j t | | | | | | | | | | | |   q |
 d k r=|	 j t | | d d   q |	 j t | | | | | |   q W| j |	  q W| j t j g d  d d d d d d d g } 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  | d	 d <| d	 d	 <t d d d  | d	 d <| d	 d <t d d d  | d d <| d d <| d d	 <t d d d  | d d <| d d <t | d  | d! t j } t	 |  j
  } t	 |  j  } t j | | d" t t j | | d" t d#   | D } t j   Q } d$ | j _ | j | |  |  j |  } t j | j d$  | d" t Wd  QXd  S(%   Ni  i  i'  id   i  i  i   i   i   i	   i   i   i   i    i;   i   i   t   date_tcR  t   date_twt   date_tmt   date_tqt   date_tht   date_tyi   i   i   i
   i   i   i  RM   R   Rw   c         S   s   i  |  ] } | d  |  q S(   i(    (   RA  R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pys
   <dictcomp>-  s   	 R   (   Rw  R   R  R   Ry   Rz   R   Re   R   R   R;   R<   RP   RT   R   RQ   R   R   RR   RJ   R   (   RG   t   yrt   mot   ddt   hrt   mmt   ssRj   R~  R  R  RM   R   R   t   date_conversionR   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_big_dates  sX    7 )&&2&c         C   s:  |  j  |  j  } | d j t j  | d <| d j t j  | d <| d j t j  | d <| d j t j  | d <| d j t j  | d <| d j	 t
 j d d | d <t |  j d	 t } t j | |  t |  j d	 t d
 t } |  j  |  j  } | d j	 t
 j d d | d <t j | |  d  S(   NR  R  R  R  R	  R  R  s   %Y-%m-%dR   t   preserve_dtypes(   s   %Y-%m-%d(   s   %Y-%m-%d(   R   R1   Rg   Re   R   R   R   Rh   R   R  R   R  R   R5   R   RP   RT   RS   (   RG   Rj   t   no_conversiont
   conversion(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_dtype_conversion7  s$    		c         C   s  |  j  |  j  } | d j t j  | d <| d j t j  | d <| d j t j  | d <| d j t j  | d <| d j t j  | d <| d j	 t
 j d d | d <d d d g } | | } t |  j d	 t d
 | } t j | |  d d d g } | | } t |  j d	 t d
 | } t j | |  d } t j t d | * d d g } t |  j d	 t d
 | Wd  QXd } t j t d | 0 d d d d g } t |  j d	 t d
 | Wd  QXd  S(   NR  R  R  R  R	  R  R  s   %Y-%m-%dR   RM   s"   columns contains duplicate entriesR  sE   The following columns were not found in the Stata data set: not_foundt	   not_found(   s   %Y-%m-%d(   R   R1   Rg   Re   R   R   R   Rh   R   R  R   R  R   R5   R   RP   RT   R  R  R  (   RG   Rj   RM   t   droppedt	   reorderedR  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_drop_columnP  s4    
	
	s;   ignore:\nStata value:pandas.io.stata.ValueLabelTypeMismatchc         C   s  t  j d d d d d d g d d d d d d g d d d d d d	 g d
 d d d
 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 d d d t j d d g g
 d d d d d d d g } | j   } t j g  | D] } | | j d  ^ q$d d } | d j t	  | d <| d j t	  | d <t j g  | D] } | | j d  ^ qd d } d | j
 _ t j   N } | j | d | |  j |  } | j d  } t j | | d  t Wd  QXd  S(!   NR   R   i   R   R   i   R   R   i   R   R   i   R   R   i   i   i   i   i	   i
   RM   R   R   R   R   R   t	   unlabeledR~   R   R   RL   R   (   R   Rx   Re   Rf   R   Ry   R   Rg   R  Rf  R   R   RP   RQ   RR   RJ   R   RT   RS   (   RG   RL   R   Rj   R   R   R   t   res(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_categorical_writings  s6    		,	,c      
   C   sZ  t  j j d d g d d g d d g d d g g d d g } t  j g  | D] } | | j d  ^ qP d	 d
 } t j   6 } d } t j t	 d |  | j
 |  Wd  QXWd  QXt  j j d g d g d g d g d
 g g d d g } t  j g  | D] } | | j d  ^ qd	 d
 } t j t  j j j   | j
 |  Wd  QXd  S(   NR   i'  Rd  R   t   dRM   t   Too_longR~   R   i   sb   Stata value labels for a single variable must have a combined length less than 32,000 characters\.R  (   Ry   R   Rx   R   Rg   RP   RQ   R  R  R  RR   RX   R   R   t   ValueLabelTypeMismatch(   RG   R   R   R   R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt$   test_categorical_warnings_and_errors  s.    	


	,		,c   	   	   C   s   g  t  d  D] } d t |  g ^ q } | j t j g  t j j | d d g } t j g  | D] } | | j	 d  ^ qg d d } d | j
 _ t j   N } | j | d	 | |  j |  } | j d  } t j | | d
 t Wd  QXd  S(   Nix   R   RM   t   many_labelsR~   R   i   R   RL   R   (   Rw  Rf  R  Re   Rf   Ry   R   Rx   R   Rg   R   R   RP   RQ   RR   RJ   R   RT   RS   (	   RG   RL   R~  t   valuesR   R   R   R   R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt*   test_categorical_with_stata_missing_values  s    ,	,R=   R>   c   	      C   sh  t  d d d d d d g t j d  f t  d d d d d d g t j d  d  d  d	  f t  d
 d d d d d g t j d d d d d g  f t  d d d d d d g t j d d  f t  d d d d g t j d d d d	 d	 g  f t d d d d d d g t j d  f t  d d d d d d g t j d  f g } g  } xj | D]b \ } } } } | r| j | t j j | |  f  qL| j | t j	 | d t j
 f  qLWt j t |   } t |  |  } t |  } t j | | d t xi | D]a } t | |  rt j | | j j | | j j  t j | | j j | | j j  qqWd  S(   Nt   orderedR   Rd  R   R  t   ei   t   reverseit   noorderi   i   i   i    i   R   t   float_missingt   nolabelg      ?g       @g      @g      @g      @t   int32_mixedR   R   (   R   Re   R$  t   arrayRS   R  Ry   t   Categoricalt
   from_codesR   Rh   R   t	   from_dictR    Rd   R   RP   RT   R   t   assert_series_equalt   catt   codest   assert_index_equalt
   categories(	   RG   RI   Rj   R  t   is_catR   R`  R  Ri   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_categorical_order  s8    '%$$*!%)R?   R@   c      
   C   s   t  t |  |   } | j d d d } t j | j d  | _ d d d d d d d d d d	 g
 } d
 d d d d g } t j j	 d | d |  } t j
 | d d } t j | | d d t d  S(   Nt   srht   na_positiont   firsti    ii   i   i   i   t   Poort   Fairt   Goods	   Very goodt	   ExcellentR  R  R   R   (   R   Rd   t   sort_valuesRe   R$  t   shapeR   Ry   R  R  R   RP   R  RS   (   RG   RI   Ri   R  R  R  Rj   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_categorical_sorting  s    $c         C   s   t  |  |  } t |  } t | d t } xQ | D]I } t | |  sP q4 n  | | j j sf t  | | j j s4 t  q4 Wd  S(   Nt   order_categoricals(   Rd   R   RS   R   R  R  R   (   RG   RI   Ri   t   parsed_unorderedR   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_categorical_ordering   s    		R"   R7   R<   t	   chunksizei   i   t   convert_categoricalsR   c         C   s7  t  |  |  } t j d t  , } t j d  t | d | d | } Wd  QXt | d t d | d | } d }	 x t d  D] }
 t j d t  < } t j d  y | j |  } Wn t k
 r Pn XWd  QX| j	 |	 |	 |  d  d   f } t
 j | | d t d	 t d
 t |	 | 7}	 q W| j   d  S(   NRu   Rv   R  R   t   iteratori    i   R   Rw   R   (   Rd   R{   R|   R   R}   R   Rw  RZ   t   StopIterationt   ilocRP   RT   RS   R;  (   RG   RI   R  R  R   t   fnameR   Ri   t   itrt   posR  t   chunkt
   from_frame(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_chunks_117  s4    	#c         C   s  |  j  } t |  } t | d t ? } | j d  } t j | j d d  d  d   f |  Wd  QXt | d d @ } t |  } t j | j d d  d  d   f | d  Wd  QXt | d t ? } | j d  } t j | j d d  d  d   f |  Wd  QXt | d d < } | j   } t j | j d d  d  d   f |  Wd  QXt | d d  } t	 j
 |  } Wd  QXt j | |  d  S(   NR  i   i    R  i   (   R&   R   R   RZ   RP   RT   R  R   t	   get_chunkRy   R   (   RG   R  Ri   R  R  t   from_chunks(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_iterator9  s"    	/3//R!   R6   R;   c         C   s7  t  |  |  } t j d t  , } t j d  t | d | d | } Wd  QXt | d t d | d | } d }	 x t d  D] }
 t j d t  < } t j d  y | j |  } Wn t k
 r Pn XWd  QX| j	 |	 |	 |  d  d   f } t
 j | | d t d	 t d
 t |	 | 7}	 q W| j   d  S(   NRu   Rv   R  R   R  i    i   R   Rw   R   (   Rd   R{   R|   R   R}   R   Rw  RZ   R  R  RP   RT   RS   R;  (   RG   RI   R  R  R   R  R   Ri   R  R  R  R  R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_chunks_115T  s4    	#c   
   
   C   s   |  j  } d d d g } d } t | d | } t | d t  } d } x| t d  D]n } | j | d | } | d  k r Pn  | j | | |  d  d   f }	 t j |	 | d	 t	 | | 7} qX WWd  QXd  S(
   NR   t   cpit   m1i   RM   R  i    i   R   (
   R&   R   R   Rw  RZ   R   R  RP   RT   RS   (
   RG   R  RM   R  Ri   R  R  R  R  R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_read_chunks_columns  s    	#c         C   sa  t  j i d d d d g d 6d d d d	 g d
 6d d d d g d 6 } d | j _ i d d 6d d
 6d d 6} t j   u } | j | d | d | t |   } | j   } Wd  QXi d d 6d d 6d d
 6d d 6} | | k s t	  Wd  QXd | d <t j   S } | j | d | d | t |   } | j   } Wd  QX| | k sWt	  Wd  QXd  S(   Ni   i   i   i   R   g      ?g      @g      ;@g     @T@Rd  t   Atlantat
   Birminghamt
   Cincinnatit   DetroitR   R   s	   City Ranks   City Exponentt   CityR   RL   R   s	   The Index(
   Ry   R   R   R   RP   RQ   RR   R   R   R   (   RG   RL   R   R   R   Rl  t   read_labelst   expected_labels(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_write_variable_labels  s2    


c         C   s!  t  j i d d d d g d 6d d d d	 g d
 6d d d d g d 6 } d | j _ i d d d 6d d
 6d d 6} t j   B } d } t j t d |  | j	 | d | d | Wd  QXWd  QXd | d <t j   B } d } t j t d |  | j	 | d | d | Wd  QXWd  QXd  S(   Ni   i   i   i   R   g      ?g      @g      ;@g     @T@Rd  R  R  R  R  R   R   s	   very longi
   s   City ExponentR  s.   Variable labels must be 80 characters or fewerR  R   RL   u   invalid character ŒsK   Variable labels must contain only characters that can be encoded in Latin-1(
   Ry   R   R   R   RP   RQ   R  R  R  RR   (   RG   RL   R   R   R   R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_invalid_variable_labels  s*    

c         C   s7  t  j i d d d d g d 6d d d d	 g d
 6d d d d g d 6 } d d d d d d g } i d d 6d d
 6d j |  d 6} d } t j t d | - t j    } | j | d | Wd  QXWd  QXi d d 6d d
 6d d 6} d } t j t d | - t j    } | j | d | Wd  QXWd  QXd  S(   Ni   i   i   i   R   g      ?g      @g      ;@g     @T@Rd  R  R  R  R  R   u   Ρu   Αu   Νu   Δu   Σs	   City Ranks   City Exponentu    sK   Variable labels must contain only characters that can be encoded in Latin-1R  R   sq   A very, very, very long variable label that is too long for Stata which means that it has more than 80 characterss.   Variable labels must be 80 characters or fewer(	   Ry   R   R   R  R  R  RP   RQ   RR   (   RG   R   R  t   variable_labels_utf8R  R   t   variable_labels_long(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt    test_write_variable_label_errors  s*    


c         C   s  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 j i d d d g d 6d d d g d 6| d 6 } t j    } | j | d t t | d t	 } t j
 | |  | j | d t d i d d 6t | d t	 } t j
 | |  | j j   j d  } | j | d t d i d | 6t | d t	 } t j
 | |  Wd  QXd  S(   Ni  i   i   i.  i  i   iR  i  i   i   i  g      ?g       @g      @t   numst   applet   bananat   cherryt   strst   datesRO   R   R   (   t   dtR   Ry   R   RP   RQ   RR   RS   R   R   RT   RM   t   tolistR   (   RG   R  R   R   t   rereadt   directt	   dates_idx(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_default_date_conversion  s*    $c      
   C   sd   t  j i d d	 g d 6 } d } t j t d | ' t j    } | j |  Wd  QXWd  QXd  S(
   Ni   y               @i   y              @R   s"   Data type complex128 not supportedR  y      ?       @y       @      @(   Ry   R   R  R  t   NotImplementedErrorRP   RQ   RR   (   RG   R   R  R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_unsupported_type  s
    c         C   st  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 j i d d d g d 6d d d g d 6| d 6 } d } t j t d | 4 t j   ! } | j	 | d i d d 6Wd  QXWd  QXt j
 d d d d d } t j i d d d g d 6d d d g d 6| d 6 } t j t  ' t j    } | j	 |  Wd  QXWd  QXd  S(   Ni  i   i   i.  i  i   iR  i  i   i   i  g      ?g       @g      @R  R  R  R  R  R  s   Format %tC not implementedR  R   t   tCs   1-1-1990t   periodsi   t   tzs   Asia/Hong_Kong(   R  R   Ry   R   R  R  R  RP   RQ   RR   t
   date_range(   RG   R  R   R  R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_unsupported_datetype
  s"    $&c         C   s9   d } t  j t d |  t |  j d t Wd  QXd  S(   NsU   Value labels for column ethnicsn are not unique\. The repeated labels are:\n\n-+wolofR  R  (   R  R  R  R   RC   R   (   RG   R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_repeated_column_labels  s    c         C   s   t  |  j  } t j i d d d d d d d t j d d g
 d 6d d d d t j d d d d d g
 d	 6d t j d d d d d d d d g
 d
 6d d d d d d d d d d g
 d 6 } | d d	 d
 d g } t j | |  d  S(   Ni   i    R   i   i   i   i   i   R   R   R   Rd  R   R  R  R   t   gRs  R~  R  R   (   R   RD   Ry   R   Re   t   NaNRP   RT   (   RG   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_stata_111&  s    1((c         C   s   t  i d t j t j  j d g d 6d t j t j  j t j t j  j g d 6 } d } t j t d | ' t	 j
    } | j |  Wd  QXWd  QXt j | j d	 <d } t j t d | ' t	 j
    } | j |  Wd  QXWd  QXd  S(
   Ng        g      t   ColumnOkt   ColumnTooBigsZ   Column ColumnTooBig has a maximum value \(.+\) outside the range supported by Stata \(.+\)R  i   sa   Column ColumnTooBig has a maximum value of infinity which is outside the range supported by Stata(   i   R  (   R   Re   t   finfot   doublet   epst   maxR  R  R  RP   RQ   RR   t   infR   (   RG   R   R  R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_out_of_range_double3  s    	
c         C   s\  t  i d t j t j  j t j t j  j d g d 6d t j t j  j t j t j  j g d 6 } d | j _ x( | D]  } | | j t j  | | <q Wt	 j
   S } | j |  t |  } | d j t j  | d <t	 j | | j d   Wd  QXt j | j d	 <d } t j t d | ' t	 j
    } | j |  Wd  QXWd  QXd  S(
   Ng        g      $@R  R  R   i   sa   Column ColumnTooBig has a maximum value of infinity which is outside the range supported by StataR  (   i   R  (   R   Re   R  Rh   R  R	  R   R   Rg   RP   RQ   RR   R   R   RT   R   R
  R   R  R  R  (   RG   R   R   R   R  R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_out_of_range_floatH  s*    	
	c         C   sJ   t  j   } d | j _ d   } t  j | j |  } t  j | |  d  S(   NR   c         S   s   t  |   j d  S(   NR   (   R   R   (   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyR"  e  s    (   RP   t   makeDataFrameR   R   t   round_trip_pathlibRR   RT   (   RG   R   R  R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_path_pathlibb  s
    	c         C   sJ   t  j   } d | j _ d   } t  j | j |  } t  j | |  d  S(   NR   c         S   s   t  |   j d  S(   NR   (   R   R   (   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyR"  l  s    (   RP   R  R   R   t   round_trip_localpathRR   RT   (   RG   R   R  R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_pickle_path_localpathi  s
    	RO   c      	   C   s   i d d d d d g d 6} t  j d |  } | d j d  | d <t j   D } | j | d | t  j | d t  } | j   } Wd  QXWd  QX| i i d d	 6d d
 6d d 6d d 6d 6k s t	  d  S(   Nt   Bt   Et   Ct   AR   R~   RO   R  i    i   i   i   (
   Ry   R   Rg   RP   RQ   RR   R   R   R:  R   (   RG   RO   R  R   R   t   dta_iterR:  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_value_labels_iteratorp  s    c         C   sc   t  j   } d | j _ t  j   ) } | j |  t j | d d } Wd  QXt  j | |  d  S(   NR   t	   index_col(	   RP   R  R   R   RQ   RR   Ry   R   RT   (   RG   R   R   R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_set_index~  s    t   columnt   mst   dayt   weekt   montht   qtrt   halfR  c         C   sO   t  |  j  } | j d | f } | j d | d f } | | k sK t  d  S(   Ni    t   _fmt(   R   RF   R   R   (   RG   R  R   t   unformattedR   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt(   test_date_parsing_ignores_format_details  s    c         C   s  t  d d d d d d d d t j d  d d d d d	 d g d
 d d d d d d t j d  d d d d d g g d d d d d d d d d d d d d g  } t | d d t | d <t | d d t j | d <t | d d t j | d <| d j t j  | d <t | d d t j	 | d <d | j
 _ | j
 j t j  | _
 | j   } t j   n } | j | d i d d 6d d g d d  |  j |  } t j | j d  | d! t t j | |  Wd  QXd  S("   NR   R   R   i   g?s
   2003-12-25R   i  i  s   string-1s   object-1s
   2003-12-26Rd  R   RM   R   R   R   Rh   R   R   R  t   s2045t   srtlt   forced_strlR   R   R   R   t   convert_strlRL   iu   R   (   R   Re   R   R   R   R   R   Rg   R   Rh   R   R   R   RP   RQ   RR   RJ   RT   R   RS   (   RG   R   R   R   R   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_writer_117  s6    		c         C   s   t  d d d d g d d d d g g d	 d
 d d d g } d | j _ t j t j j j  y t j	   f } | j
 | d d d g d d |  j |  } | j d  } | j | _ t j | | d t Wd  QXWd  QXd  S(   NR   i  R  R  Rd  i  R  R  RM   t   long1i
   t   longi   R   R'  RL   iu   R   (   R   R   R   RP   RX   Ry   R   R   R	   RQ   RR   RJ   R   RM   RT   RS   (   RG   R   R   R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_convert_strl_name_swap  s    c         C   s   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 j i d d d g d 6d d d g d 6| d 6 } t j   C } d } t j t d |  | j	 | d i d d 6Wd  QXWd  QXd  S(   Ni  i   i   i.  i  i   iR  i  i   i   i  g      ?g       @g      @R  R  R  R  R  R  s0   convert_dates key must be a column or an integerR  R   R   t
   wrong_name(
   R  R   Ry   R   RP   RQ   R  R  R  RR   (   RG   R  R   R   R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_invalid_date_conversion  s    $c      
   C   s   t  j   } t j   } d | j _ t j   g } | j | d | | j d  t	 | d   } | j
 | j    Wd  QXt j | d d } Wd  QXt j | |  d  S(   NR   RL   i    t   wbR  (   R   t   BytesIORP   R  R   R   RQ   RR   t   seekt   opent   writeRZ   Ry   R   RT   (   RG   RL   t   bioR   R   t   dtaR  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_nonfile_writing  s    c         C   s   t  j   } d | j _ t  j   e } t j | d   } | j | d d Wd  QXt j | d   } t j	 | d d } Wd  QXWd  QXt  j
 | |  d  S(   NR   R.  RL   ir   t   rbR  (   RP   R  R   R   RQ   t   gzipt   GzipFileRR   Ry   R   RT   (   RG   R   R   t   gzR  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_gzip_writing  s    !c         C   s   |  j  |  j  } d d d d d g } d d d d d g d	 d
 d d	 d g d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g g } t j | d | } t j | |  d  S(   Nt   utf8t   latin1t   asciit	   utf8_strlt
   ascii_strlu   ραηδαςu   PÄNDÄSt   pu   ƤĀńĐąŜu   ÖR   u   ᴘᴀᴎᴅᴀSu   Üt   ns         R  t    R   Re  RM   (   RJ   RE   Ry   R   RP   RT   (   RG   t
   unicode_dfRM   R  Rj   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_unicode_dta_118  s    c         C   s  i d d d 6d d 6i d  d 6d d 6g } t j |  } | j j d  | _ t j    } | j | d t d	 d
 t	 |  } | j
 d  } t j | |  d  | j d  d   d f <| j | d t d d g d	 d
 t	 |  } | j
 d  } t j | |  Wd  QXd  S(   NR   i  t   mixedi    t   numberi   R   RO   RL   iu   R   R'  (   R   Ry   R   RF  Rg   RP   RQ   RR   RS   R   t   fillnaRT   R   (   RG   t   outputR   R  Rj   (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_mixed_string_strl  s"    
c         C   s   i d d 6d d 6i d  d 6d d 6g } t j |  } d  | j d  d   d f <t j   < } d } t j t d |  | j	 | d | Wd  QXWd  QXd  S(   Nt   nonei    RF  i   s&  Column `none` cannot be exported\.\n\nOnly string-like object arrays containing all strings or a mix of strings and None can be exported\. Object arrays containing only null values are prohibited\. Other object typescannot be exported and must first be converted to one of the supported types\.R  RL   (
   R   Ry   R   R   RP   RQ   R  R  R  RR   (   RG   RL   RH  R   R  (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_all_none_exception  s    

c         C   s   d } t  | g d d g } t r* t n t } t j   ^ } d } d } t j | d d j | |  ( t j	 t
   | j |  Wd  QXWd  QXWd  QXd  S(   Ns9   Here is one __�__ Another one __·__ Another one __½__RM   t   invalids\   'latin-1' codec can't encode character '\\ufffd' in position 14: ordinal not in range\(256\)sP   'ascii' codec can't decode byte 0xef in position 14: ordinal not in range\(128\)R  s   {}|{}(   R   R   t   UnicodeEncodeErrort   UnicodeDecodeErrorRP   RQ   R  R  t   formatRX   R   RR   (   RG   RL   t   contentR   t   expected_excR   t   msg1t   msg2(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_invalid_file_not_written,  s    c   
      C   sT  t  d g d d g d g d d d g } t j   } | j | d d d	 d g t | d
   } | j   } d } | j d  | k s t  | j d  | k s t  | j d  d d d !} xv | j d  d D]a } | j d  d } | | j	 d  d }	 t
 s$t |	  }	 n  t |  |	 d k s t  q WWd  QXWd  QXd  S(   Nu   pandasi   u   þâÑÐÅ§RM   t   var_strt   var_strlRL   iu   R'  R6  s   latin-1s   utf-8t   strlsi   it   GSOs    s   (   R   RP   RQ   RR   R1  RZ   t   encodeR   t   splitt   findR   t   ordR   (
   RG   RH  R   R  RP  Rj   t   gsost   gsoR  t   size(    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   test_strl_latin1;  s     (W   t   __name__t
   __module__R  t   fixtureR   RH   RJ   R   t   markt   parametrizeRW   R^   Rk   R   R   R   R   R   R   R   R   R   R   R   R   R   R  R  R  R  R   R'  R(  R+  R,  R/  R1  R9  R<  RD  RG  RU  Rc  Rq  Rr  R  R  R  R  R  t   filterwarningsR  R  R  R  R  R  RS   R  R  R  R  R  R  R  R  R  R  R   R  R  R  R  R  R  R  R#  R(  R+  R-  R5  R:  RD  RI  RK  RT  R`  (    (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyR   ,   s   >		$		
		A	!	!				$		
$	$		$	!$$
	$						
		
'						5		#	%	 $	&								$!								$#	$$														*			$			$$()   t   collectionsR    R   R  R7  R   R   Rz  R{   t   numpyRe   R  t   pandas.compatR   R   R   R   t   pandas.core.dtypes.commonR   t   pandasRy   t   pandas.core.frameR   R   t   pandas.util.testingt   utilt   testingRP   t   pandas.io.parsersR   t   pandas.io.stataR	   R
   R   R   R   Rc  R   R   R   R   (    (    (    s9   lib/python2.7/site-packages/pandas/tests/io/test_stata.pyt   <module>   s(   (