
    hP              
          d Z ddlmZ ddlmZmZ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mZ ddlmZmZ ddlmc mZ ddlmZmZ ddlmZ ej8                  j;                  dg d	g d
      d        Zd Zd Z ej8                  j;                  ddddddifdddddgdfdddddifdejB                   ddddiifgdddejB                   dg      d         Z"ejF                  ej8                  jH                  ej8                  j;                  d! ejJ                  d"d#d$%            d&                      Z&d' Z'd( Z(d) Z)d* Z*d+ Z+ej8                  jH                  ej8                  j;                  d, e,d-      D  cg c]
  } d.d/| z  z   c}       d0               Z-ej8                  jH                  ej8                  j;                  d1dd2g      d3               Z.d4 Z/d5 Z0d6 Z1d7 Z2d8 Z3d9 Z4d: Z5d; Z6ej8                  j;                  d<d=d>g      d?        Z7d@ Z8dA Z9dB Z:dC Z;ej8                  j;                  dDg dE      ej8                  j;                  dFdGdHg      dI               Z<dJ Z=yc c} w )Kz
Tests that apply specifically to the CParser. Unless specifically stated
as a CParser-specific issue, the goal is to eventually move as many of
these tests out of this module as soon as the Python parser can accept
further arguments when parsing.
    )Decimal)BytesIOStringIOTextIOWrapperN)np_version_gte1p24)ParserErrorParserWarning)	DataFrameconcat	malformed)z111 1 1z111 1 111z111 1 1111)zwords pointerzstream pointerzlines pointer)idsc                     d}| }t        j                  t        |      5  |j                  t	        |             d d d        y # 1 sw Y   y xY w)Nz7Buffer overflow caught - possible malformed input file.match)pytestraisesr   read_csvr   )c_parser_onlyr   msgparsers       ND:\jyotish\venv\Lib\site-packages\pandas/tests/io/parser/test_c_parser_only.pytest_buffer_overflowr   "   s:     DCF	{#	.+, 
/	.	.s   AAc                    d}| }d}t        j                  t        |d      5  |j                  t	        |      dd      }d d d        t        g dg d	g d
gg d      }t        j                  |       y # 1 sw Y   8xY w)Nza b c~1 2 3~4 5 6~7 8 9z;The 'delim_whitespace' keyword in pd.read_csv is deprecatedFr   check_stacklevel~T)lineterminatordelim_whitespace                        	   abccolumns)tmassert_produces_warningFutureWarningr   r   r
   assert_frame_equal)r   datar   depr_msgdfexpecteds         r   'test_delim_whitespace_custom_terminatorr9   1   sv    $DFLH		#	#X
 __Xd^CRV_W
 )Y	:OTH"h'
 
s   A88Bc           
      x   | }d}|j                  t        |      dd       }t        ddgddgdd	gg      }t        j                  ||       |j                  t        |      dd d
dg      }t        ddgddgdd	ggd
dg      }t        j                  ||       |j                  t        |      dd d
dgd
t
        j                  i      }t        ddgddgd	d	ggd
dg      }|d
   j                  t
        j                        |d
<   t        j                  ||       d}t        rt        nd }t        j                  t        d      5  t        j                  |d      5  |j                  t        |      dd d
dgd
t
        j                  i       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz
1.0 1
2.0 2
3.0 3
\s+)sepheader      ?r           @r!   g      @r"   r,   r-   )r<   r=   namesr/   )r<   r=   r@   dtypez
1.0 1
nan 2
3.0 3
zcannot safely convertr   F)r   )r   r   r
   r1   r4   npint32astyper   RuntimeWarningr   r   
ValueErrorr2   )r   r   r5   resultr8   warnings         r   test_dtype_and_names_errorrI   ?   s    FD __Xd^_EF3(S!HsAh78H&(+__Xd^SRUJ_WF3(S!HsAh7#sLH&(+ __F4Sz#rxx  F 1a&1a&1a&1C:FHSM((2HSM&(+D !3nG	z)@	A''%HOOCjBHHo   I 
B	AHH 
B	As$   	F0!2F$F0$F-	)F00F9zmatch,kwargsz]the dtype datetime64 is not supported for parsing, pass this column using parse_dates insteadrA   
datetime64float64)ABrM   )rA   parse_datesz2the dtype timedelta64 is not supported for parsingtimedelta64z
the dtype zU8 is not supported for parsingrL   U8zdt64-0zdt64-1td64c                    | }t        t        j                  j                  d      j                  d      t	        d      g d      }t        j                  d      5 }|j                  |       t        j                  t        |      5   |j                  |fdd	i| d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nr!   )r%   r!   AB)1A1B1C1D1E)r0   indexz__unsupported_dtype__.csvr   	index_colr   )r
   rB   randomdefault_rnglistr1   ensure_cleanto_csvr   r   	TypeErrorr   )r   r   kwargsr   r7   paths         r   test_unsupported_dtyperc   k   s    < F	
		a ''/T
,
B 
4	5
		$]]9E2FOOD8A88 3 
6	5 32 
6	5s$   -B=
B1 B=1B:	6B==Cnumr>   r?      )rd   c                 P   | }g }g }dt         dt        dt        fd}d|d}t        |j                  t        |      d      d	   d
         }t        |j                  t        |      d      d	   d
         }t        |j                  t        |      d      d	   d
         }	t        |dd        }
|j	                   |||
             |j	                   |||
             |	t        |dd        k(  sJ t        |      t        |      k  sJ t        |      t        |      k  sJ y )Nval
actual_valreturnc                 4    t        t        | d      |z
        S )Nz.100)absr   )rg   rh   s     r   errorz&test_precise_conversion.<locals>.error   s    7c$Z)J677    za
z.25legacyfloat_precisionr,   r   high
round_tripr!   )floatr   r   r   appendsummax)r   rd   r   normal_errorsprecise_errorsrl   text
normal_valprecise_valroundtrip_valrh   s              r   test_precise_conversionr}      s;   
 FMN85 8g 8' 8 S	?DA#FqIJ OPSTUVWXKEcJ1MM ab"Jz:67%Z89 E$qr(O+++~#m"4444~#m"4444rm   c           
      "   | }d}|j                  t        |      ddd dt        it        t        d      }|j                  t        |      ddd dt        it        t        d      }|rP|j
                  dt        t        gk(  j                         sJ |j
                  dt        gk(  j                         sJ y |j
                  t        t        t        gk(  j                         sJ |j
                  t        t        gk(  j                         sJ y )	Nz1,2,3
4,5,6
7,8,9
10,11,12)r   r    r!   r+   r,   )r-   r.   )usecolsr@   r=   
convertersrA   )r   r!   string)r   r   strintrs   dtypesallobject)r   using_infer_stringr   r5   rG   result2s         r   test_usecols_dtypesr      s    FD __:e$  F oo:e$  G (C!77<<>>>8U"3388:::&#u!55::<<<65/166888rm   c                     | }d}|j                  t        |      t              }|j                  t        k(  j	                         sJ |j                  t        |      t        d      }|d   d   dk(  sJ y )Nz-A,B,C
Yes,No,Yes
No,Yes,Yes
Yes,,Yes
No,No,No)rA   F)rA   	na_filterrM   r!    )r   r   r   r   r   )r   r   r5   rG   s       r   test_disable_bool_parsingr      sq     FD __Xd^6_:FMMV#((***__Xd^6U_KF#;q>Rrm   c                     | }d}|j                  t        |      d      }|j                  t        |j                  dd                  }t        j                  ||       y )Nza,b,c~1,2,3~4,5,6r   )r   
r   r   replacer1   r4   r   r   r5   rG   r8   s        r   test_custom_lineterminatorr      sP    FD__Xd^C_@FxS$(?@AH&(+rm   c                    | }d}d}|j                  t        |      d g d      }|j                  t        |      d g d      }t        j                  ||       d}|j                  t        |      d t	        d            }|j                  t        |      d t	        d            j                  t	        d            }t        j                  ||       y )	Nz#1,2,3
1,2,3,4
1,2,3,4,5
1,2
1,2,3,4z*1,2,3,,
1,2,3,4,
1,2,3,4,5
1,2,,,
1,2,3,4,)r,   r-   r.   de)r=   r@   z	1,2
3,4,52   r"   r/   )r   r   r1   r4   rangereindex)r   r   r5   	nice_datarG   r8   s         r   test_parse_ragged_csvr      s    FDI
 __t+D  F D0I  H &(+ D__Xd^Db	_JFx~d%(KSSb	 T H &(+rm   c                 |   | }d}|j                  t        |      d       }|j                  t        |j                  dd            d       }t        j                  ||       |j                  t        |            }|j                  t        |j                  dd                  }t        j                  ||       y )Nz a,b,c"a,b","e,d","f,f"r=   r   r   r   s        r   test_tokenize_CR_with_quotingr     s    F&D__Xd^D_9FxT4(@A$OH&(+__Xd^,FxT4(@ABH&(+rm   countr&   r"   r!   c                     | }t        d|z        5 }t        t        |dz         D cg c]  }d| 	 c}      }|j                  |      }d d d        t	        j
                         y c c}w # 1 sw Y   %xY w)N,r    z	Unnamed: r/   )r   r
   r   r   r1   r4   )r   r   r   sir8   r7   s          r   test_grow_boundary_at_capr   &  su     F	#+	!uUQY?O%P?O!	!o?O%PQ__Q 
 "h' &Q 
	s   A0A+
A0+A00A9encodingutf-8c                    | }d}d\  }}dj                  |g|z        dz   }t        d |j                  d      D              }t        t	        |      D cg c]  }| c}t
        d d       }	|j                  t        |      d t
        ||      5 }
t        |
dd	
      }d d d        t        j                  |	       y c c}w # 1 sw Y   %xY w)Na  9999-9,99:99,,,,ZZ,ZZ,,,ZZZ-ZZZZ,.Z-ZZZZ,-9.99,,,9.99,ZZZZZ,,-99,9,ZZZ-ZZZZ,ZZ-ZZZZ,,9.99,ZZZ-ZZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,999,ZZZ-ZZZZ,,ZZ-ZZZZ,,,,,ZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZ,,,9,9,9,9,99,99,999,999,ZZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZ,9,ZZ-ZZZZ,9.99,ZZ-ZZZZ,ZZ-ZZZZ,,,,ZZZZ,,,ZZ,ZZ,,,,,,,,,,,,,9,,,999.99,999.99,,,ZZZZZ,,,Z9,,,,,,,ZZZ,ZZZ,,,,,,,,,,,ZZZZZ,ZZZZZ,ZZZ-ZZZZZZ,ZZZ-ZZZZZZ,ZZ-ZZZZ,ZZ-ZZZZ,ZZ-ZZZZ,ZZ-ZZZZ,,,999999,999999,ZZZ,ZZZ,,,ZZZ,ZZZ,999.99,999.99,,,,ZZZ-ZZZ,ZZZ-ZZZ,-9.99,-9.99,9,9,,99,,9.99,9.99,9,9,9.99,9.99,,,,9.99,9.99,,99,,99,9.99,9.99,,,ZZZ,ZZZ,,999.99,,999.99,ZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,,,ZZZZZ,ZZZZZ,ZZZ,ZZZ,9,9,,,,,,ZZZ-ZZZZ,ZZZ999Z,,,999.99,,999.99,ZZZ-ZZZZ,,,9.999,9.999,9.999,9.999,-9.999,-9.999,-9.999,-9.999,9.999,9.999,9.999,9.999,9.999,9.999,9.999,9.999,99999,ZZZ-ZZZZ,,9.99,ZZZ,,,,,,,,ZZZ,,,,,9,,,,9,,,,,,,,,,ZZZ-ZZZZ,ZZZ-ZZZZ,,ZZZZZ,ZZZZZ,ZZZZZ,ZZZZZ,,,9.99,,ZZ-ZZZZ,ZZ-ZZZZ,ZZ,999,,,,ZZ-ZZZZ,ZZZ,ZZZ,ZZZ-ZZZZ,ZZZ-ZZZZ,,,99.99,99.99,,,9.99,9.99,9.99,9.99,ZZZ-ZZZZ,,,ZZZ-ZZZZZ,,,,,-9.99,-9.99,-9.99,-9.99,,,,,,,,,ZZZ-ZZZZ,,9,9.99,9.99,99ZZ,,-9.99,-9.99,ZZZ-ZZZZ,,,,,,,ZZZ-ZZZZ,9.99,9.99,9999,,,,,,,,,,-9.9,Z/Z-ZZZZ,999.99,9.99,,999.99,ZZ-ZZZZ,ZZ-ZZZZ,9.99,9.99,9.99,9.99,9.99,9.99,,ZZZ-ZZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZZ,ZZZ-ZZZZZ,ZZZ,ZZZ,ZZZ,ZZZ,9.99,,,-9.99,ZZ-ZZZZ,-999.99,,-9999,,999.99,,,,999.99,99.99,,,ZZ-ZZZZZZZZ,ZZ-ZZZZ-ZZZZZZZ,,,,ZZ-ZZ-ZZZZZZZZ,ZZZZZZZZ,ZZZ-ZZZZ,9999,999.99,ZZZ-ZZZZ,-9.99,-9.99,ZZZ-ZZZZ,99:99:99,,99,99,,9.99,,-99.99,,,,,,9.99,ZZZ-ZZZZ,-9.99,-9.99,9.99,9.99,,ZZZ,,,,,,,ZZZ,ZZZ,,,,,)   i  r   c              3   D   K   | ]  }|r|nt         j                    y w)N)rB   nan).0val_s     r   	<genexpr>z*test_parse_trim_buffers.<locals>.<genexpr>{  s     H5GT"&&(5Gs    r   )rA   r0   rY   )r=   rA   	chunksizer   r   T)axisignore_index)jointuplesplitr
   r   r   r   r   r   r1   r4   )r   r   r   record_r   n_linescsv_datarow_r8   chunks_rG   s               r   test_parse_trim_buffersr   :  s      F
	* H +Iwyy'W,-4H HW]]35GH
HCGn%nn%VTH
 
 
 
 
ad;
 &(+ 	&
 
s   	B>CCc                     | }g d}d}t        g ddt        j                  dgg dg|      }|j                  t	        |      |      }t        j                  ||       y )	Nr+   z1,2,3
4, ,6
7,8,9)r    r?   r"   r$   r&   r'   r/   )r@   )r
   rB   r   r   r   r1   r4   )r   r   r@   r5   r8   rG   s         r   test_internal_null_byter     sV     FE#D+2661~yA5QH__Xd^5_9F&(+rm   c           	      6   | }dj                  t        d      D cg c]  }dt        |      z    c}      dz   }dj                  t        d      D cg c]  }d c}      dz   }dj                  t        d      D cg c]  }dt        |      z    c}      dz   }dj                  t        d      D cg c]  }d c}      dz   }||dz  z   |z   |d	z  z   }|j                  t	        |      dd
      }	|	j
                  dk(  sJ y c c}w c c}w c c}w c c}w )N	
   COL_HEADER_r   somedatasomedatasomedata1   somedatasomedatasomedata2i  r!   i  )r<   nrowsit'  )r   r   r   r   r   size)
r   r   r   header_narrowr   data_narrowheader_wide	data_wide
test_inputr7   s
             r   test_read_nrows_larger     s   FIIuRyIy!}s1v5yIJTQM))%)L)Q8)LMPTTK))U2YGY]SV3YGH4OK		b	J	16	JKdRIt!33kAIPQMQJ	*-4t	DB77i JLGJs   D	D=D4	Dc                     | }|j                  t        d      d d      }t        j                  |t	        ddgi             y )Nr,   rr   )r=   rp   r   )r   r   r1   r4   r
   )r   r   r7   s      r   )test_float_precision_round_trip_with_textr     s:    F	#t\	RB"iSE
34rm   c                 &   | }d}d|z  d d dz   }d}||dz  z   d d }|j                  t        |      d dg      }|j                  d      }t        |D cg c]  }|j                  d	      d    c}      }	t	        j
                  ||	       y c c}w )
Ni'  zX,r   zXXXXXX XXXXXX,111111111111111
r&   r   )r=   r   r   )r   r   r   r
   r1   r4   )
r   r   r   	large_row
normal_rowr   rG   rowsr   r8   s
             r    test_large_difference_in_columnsr     s    FEs#d*I2Jj1n,cr2J__Xj1$_LFD!Dt<t#))C.+t<=H&(+ =s   Bc                     | }d}|j                  t        |            }t        dddgi      }t        j                  ||       y )Nza
1
"b"ar,   1bar   r   r
   r1   r4   r   s        r   test_data_after_quoter     sA    FD__Xd^,F#T{+,H&(+rm   c           	      F   | }d}t        j                  t        dd      5  |j                  t	        |      dd ddd	      }d d d        t        d
dgddgddgdt        j                  gdt        j                  gg      }t        j                  |       y # 1 sw Y   VxY w)Nz1 2
2 2 3
3 2 3 # 3 fields
4 2 3# 3 fields
5 2 # 2 fields
6 2# 2 fields
7 # 1 field, NaN
8# 1 field, NaN
9 2 3 # skipped line
# commentzSkipping lineFr   #r;   r   warn)commentr=   	delimiterskiprowson_bad_linesr    r!   r%   r&   r(   r)   )	r1   r2   r	   r   r   r
   rB   r   r4   )r   r   r   r7   r8   s        r   !test_comment_whitespace_delimitedr     s    F
J 
	#	#_u
 __Z   

 1a&1a&1a&1bff+266{KLH"h'
 
s   !BB c                      G d dt               }| }d}t        ddgi      }|j                   ||            }t        j                  ||       y )Nc                       e Zd Zd ZeZy),test_file_like_no_next.<locals>.NoNextBufferc                     t        d      )NzNo next method)AttributeError)selfs    r   __next__z5test_file_like_no_next.<locals>.NoNextBuffer.__next__  s     !122rm   N)__name__
__module____qualname__r   next rm   r   NoNextBufferr     s    	3 rm   r   za
1r,   r    )r   r
   r   r1   r4   )r   r   r   r5   r8   rG   s         r   test_file_like_no_nextr     sM    
x  FD#s$H__\$/0F&(+rm   c                     t        d      }t        |dd      }d}t        j                  t        |      5  | j                  |d       d d d        y # 1 sw Y   y xY w)	N   asciisurrogateescape)r   errorsz$'utf-8' codec can't encode characterr   zUTF-8r   )r   r   r   r   UnicodeErrorr   )r   tr   s      r    test_buffer_rd_bytes_bad_unicoder     sM    Aa'2CDA
0C	|3	/q73 
0	/	/s   AA
tar_suffixz.tarz.tar.gzc                 0   | }t         j                  j                  |d|z         }t        j                  |d      5 }|j                  d      }|j                  |      }t        ddgi      }t        j                  ||       d d d        y # 1 sw Y   y xY w)Ntar_csvrztar_data.csvr,   r    )
osrb   r   tarfileopenextractfiler   r
   r1   r4   )	r   csv_dir_pathr   r   tar_pathtar	data_fileoutr8   s	            r   test_read_tarfiler    sz     Fww||L)j*@AH	h	$OON3	ooi(cA3Z(
c8, 
%	$	$s   ABBc                     | }ddz  dz   }d}|j                  t        ||z         d       }t        ddz  ddg      }t        j                  ||       y )Nr,   i z
az
 ar   z ar   )r   r   chunk1chunk2rG   r8   s         r   !test_chunk_whitespace_on_boundaryr
    s^    
 FN#e+FF__Xfvo6t_DF#0#t<=H&(+rm   c                    | }t        |d      5 }t        j                  |j                         dt        j                        5 }|j	                  |       |j
                  r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   )access)r   mmapfilenoACCESS_READr   closed)r   csv1r   fms        r   test_file_handles_mmapr  ,  sj     F	dW	%YYqxxz1T-=-=>!OOAxx<x ? 
&	%>> 
&	%s#   5B A7&B7B 	<BBc                 x   | }t        g dg dg      }t        j                         5 }t        |dd      5 }|j	                  d       d d d        t        |d      5 }|j                  |d       }t        j                  ||       d d d        d d d        y # 1 sw Y   PxY w# 1 sw Y   xY w# 1 sw Y   y xY w)	Nr   r#   wr   r   z1,2,3
4,5,6rbr   )r
   r1   r^   r   writer   r4   )r   r   r8   rb   r  rG   s         r   test_file_binary_moder  8  s    F)Y/0H		d$g.!GGN# / $__Qt_4F!!&(3 	 
	.. 	 
	s:   B0B	B0*B$B0B!	B0$B-	)B00B9c                 6   | }t        j                         5 }t        |ddd      5 }|j                  d       d d d        |j	                  |ddd      }d d d        t        g d	
      }t        j                  |       y # 1 sw Y   KxY w# 1 sw Y   :xY w)Nr  r   r   )newliner   zblah

col_1,col_2,col_3

r!   r.   )r   r   engine)col_1col_2col_3r/   )r1   r^   r   r  r   r
   r4   )r   r   rb   r  rG   r8   s         r   test_unix_style_breaksr   F  s    F		d$TG<GG34 =GCP 
 !<=H&(+	 =< 
	s!   BBBB	BBrp   )Nrn   rq   rr   zdata,thousands,decimal)zA|B|C
1|2,334.01|5
10|13|10.
r   .)zA|B|C
1|2.334,01|5
10|13|10,
r!  r   c                     | }t        ddgddgddgd      }|j                  t        |      d|||	      }t        j                  ||       y )
Nr    r   gQ<@   r%   g      $@)rL   rM   C|)r<   	thousandsdecimalrp   )r
   r   r   r1   r4   )r   r5   r&  r'  rp   r   r8   rG   s           r   test_1000_sep_with_decimalr(  Q  s^    2 F2wgr]!TKLH__'  F &(+rm   c                    | }d}|j                  t        |            }|j                  t        |      d      }t        j                  ||       |j                  t        |      d      }|j                  d   |j                  d   k(  rJ d}t        j                  t        |      5  |j                  t        |      d       d d d        y # 1 sw Y   y xY w)	Nzfoo
243.164
rq   ro   rn   )r   r   z)Unrecognized float_precision option: junkr   junk)r   r   r1   r4   ilocr   r   rF   )r   r   r   r7   df2df3r   s          r   test_float_precision_optionsr.  w  s    FA	!	%B
//(1+v/
>C"c"
//(1+x/
@Cwwt}...
5C	z	-V< 
.	-	-s   +CC)>__doc__r'  r   ior   r   r   r  r   r   numpyrB   r   pandas.compat.numpyr   pandas.errorsr   r	   pandas.util._test_decoratorsutil_test_decoratorstdpandasr
   r   pandas._testing_testingr1   markparametrizer   r9   rI   ENDIANrc   skip_if_32bitslowlinspacer}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r   r(  r.  )ns   0r   <module>rB     s    
  	    2 * )  N<  
-
-()X 
= Ly9:	
= )y93%P	
 AM	:;	

 #BCsDk"	
)2 
8V		{"%567  :9;:9 C" =>5 ?  5>9B ",,D, U1X">X1q!t8X">?( @ ($ dG_5O, 6 O,d,( 5, ,(8,(4 	':;- <-",	 4, *,RS	
	
*,+ T,, =a
 #?s   ?I-