
    MhzV                     v	   S r SSKJr  SSKrSSKrSSKJr  SSKJ	r	J
r
Jr  SSKJr  \R                  R!                  S5      r\R                  R%                  S5      r\R                  R%                  S5      rS	 rS
 r\R                  R/                  SSS/SS/SS/S/S/S/S//5      \R                  R/                  SSS/5      S 5       5       rS r\R                  R/                  SSS//5      S 5       rS rS r\R                  R/                  SS/\	" \R:                  /S/S/S.\
" S/SS9S94SS /\	" \R:                  /S/S!.\R<                  " S"/SS#/S$9S94SS#/\	" \R:                  /S/S!.\R<                  " S"/SS#/S$9S94/5      S% 5       r\R                  R/                  S&0 \	" SS'\R:                  S(S)\R:                  S*// S+QS,S-S.\R:                  S/\R:                  S0/S1.5      4/ / S2.S3S4.\	" / S5Q/ S+Q/ S6QS1.5      4S/S3S4.\	" \R:                  S'S7S(S)S8S*// S+Q/ S6QS1.5      4S/ / S2.0\	" SS'\R:                  S(S)\R:                  S*// S+QS,S-S.\R:                  S/\R:                  S0/S1.5      4/5      S9 5       r S: r!S; r"S< r#\R                  R/                  S=S>S?/5      S@ 5       r$\\R                  R/                  SASBSSC/\R:                  \R:                  /SDSE//4S3SFSC/S8SG/SHSE//4/5      SI 5       5       r%\SJ 5       r&\R                  R/                  SKS\R:                  SL/SL\R:                  //4S SSM.SNSL/\R:                  \R:                  //4/5      SO 5       r'SP r(SQ r)\R                  R/                  SR\*" SS5      ST-   \*" SU5      -   SSS/0\	" \*" SS5      \*" SU5      /5      4\*" SS5      SV-   SW-   0 \	" \*" SS5      S/S7S //5      4\*" SS5      SX-   SSS/0\	" \R:                  S/5      4/5      SY 5       r+SZ r,\R                  R/                  S[S3S7S\/4SB\R:                  S]/4/5      S^ 5       r-S_ r.\\R                  R/                  S`SBS3/5      Sa 5       5       r/\\R                  R/                  SbScSdSeSfSgSh/4SgSSh04/5      Si 5       5       r0\Sj 5       r1Sk r2\Sl 5       r3Sm r4Sn r5g)ozg
Tests that NA values are properly handled during
parsing for all of the parsers defined in parsers.py
    )StringION)STR_NA_VALUES)	DataFrameIndex
MultiIndexz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningpyarrow_xfailpyarrow_skipc                 .   U nSnUR                  [        U5      5      n[        / SQS[        R                  S/[        R                  SS/// SQS9nUR
                  S	:X  a  S UR                  S
'   S UR                  S'   [        R                  " X45        g )NzA,B,C
a,b,c
d,,f
,g,h
abcdfghABCcolumnspyarrow)   r   )   r   )	read_csvr   r   npnanengineloctmassert_frame_equalall_parsersparserdataresultexpecteds        W/var/www/html/env/lib/python3.13/site-packages/pandas/tests/io/parser/test_na_values.pytest_string_nasr*      s    FD
 __Xd^,F	3,rvvsC.@AH }}	!#V#V&+    c                 N   U nSn[        SS/[        R                  S/[        R                  [        R                  //SS/S9nUR                  S:X  a"  S UR                  S	S
/S4'   S UR                  S'   UR                  [        U5      5      n[        R                  " XC5        g )NzA,B
foo,bar
NA,baz
NaN,nan
foobarbazr   r   r   r   r   r   r   r   )	r   r   r   r   r    r   r   r!   r"   )r$   r%   r&   r(   r'   s        r)   test_detect_string_nar1   -   s    FD
 
"&&%266266*:;c3ZH }}	!$(aVS[!#V__Xd^,F&+r+   	na_valuesz-999.0z-999ig     8r&   zA,B
-999,1.2
2,-999
3,4.5
z"A,B
-999,1.200
2,-999.000
3,4.500
c                 <   U n[        [        R                  S/S[        R                  /SS//SS/S9nUR                  S:X  aU  [	        S	 U 5       5      (       d>  S
n[
        R                  " [        US9   UR                  [        U5      US9  S S S 5        g UR                  S:X  a4  SU;   a.  [
        R                  R                  SS9nUR                  U5        UR                  [        U5      US9n[        R                  " X5        g ! , (       d  f       g = f)Ng333333?       @g      @g      @r   r   r   r   c              3   B   #    U  H  n[        U[        5      v   M     g 7f)N)
isinstancestr).0xs     r)   	<genexpr>,test_non_string_na_values.<locals>.<genexpr>_   s     -T)QjC.@.@)s   9The 'pyarrow' engine requires all na_values to be stringsmatchr2   z-999.000z4pyarrow engined does not recognize equivalent floatsreason)r   r   r   r   allpytestraises	TypeErrorr   r   markxfailapplymarkerr!   r"   )	r$   r&   r2   requestr%   r(   msgrF   r'   s	            r)   test_non_string_na_valuesrK   >   s    < F2663-#rvvc
CcSVZXH}}	!#-T)-T*T*TI]]9C0OOHTNiO@ 1	)	#
d(: {{  I ! 
 	D!__Xd^y_AF&+ 10s   6D
Dc                 v  ^	 1 SknU[         :X  d   eU n[        U5      m	U	4S jn[        SR                  [	        U5       VVs/ s H  u  pEU" XE5      PM     snn5      5      n[        [        R                  [        T	5      [        T	5      S9nUR                  US S9n[        R                  " X5        g s  snnf )N>    NANaNr   NULLNonenull#NAN/An/a#N/A-NaN-nan<NA>1.#IND-1.#IND1.#QNAN#N/A N/A-1.#QNANc                    > U S:X  a  SnOU S:  a  SR                  S/U -  5      nW U 3nU TS-
  :  a!  SR                  S/TU -
  S-
  -  5      nU U 3nU$ )Nr   rM   ,r   )join)ivbufjoinednvs       r)   r   !test_default_na_values.<locals>.f   sr    6CU''3%!)$CaSkrAv:WWcUb1fqj12FE&"C
r+   
)r   index)header)r   lenr   ra   	enumerater   r   r   ranger   r!   r"   )
r$   
_NA_VALUESr%   r   rb   rc   r&   r(   r'   rf   s
            @r)   test_default_na_valuesro   q   s    J* &&&F	ZB DII9Z3HI3H41qw3HIJKDr%)DH__T$_/F&+	 Js   B5r/   c                    U nSn[        S[        R                  S/[        R                  S[        R                  /SS[        R                  /// SQS9nUR                  S	:X  a@  S
n[        R
                  " [        US9   UR                  [        U5      US/S9  S S S 5        g UR                  [        U5      US/S9n[        R                  " Xd5        g ! , (       d  f       g = f)Nz3A,B,C
ignore,this,row
1,NA,3
-1.#IND,5,baz
7,8,NaN
      ?            r   r   r   z@skiprows argument must be an integer when using engine='pyarrow'r=   r   )r2   skiprowsr   r   r   r   rC   rD   
ValueErrorr   r   r!   r"   )r$   r2   r%   r&   r(   rJ   r'   s          r)   test_custom_na_valuesry      s    FD 
rvvq	BFFArvv.Arvv?H }}	!P]]:S1OOHTNi1#ON 2__Xd^yA3_OF&+ 21s    C
C%c                    SnU nUR                  [        U5      5      n[        [        R                  " S[        R
                  S/[        S9[        R                  " SS[        R
                  /[        S9/ SQS.5      nUR                  S:X  a  S UR                  S'   S UR                  S	'   [        R                  " X45        g )
Nz1A,B,C
True,False,True
NA,True,False
False,NA,TrueTFdtype)TFTr   r   )r   r   r0   )r   r   r   r   arrayr   objectr   r    r!   r"   r$   r&   r%   r'   r(   s        r)   test_bool_na_valuesr      s    D F__Xd^,F4/v>5$/v>$	
H }}	!#V#V&+r+   c                    SnU nUR                   S:X  aC  Sn[        R                  " [        US9   UR	                  [        U5      S/S/S.S9  S S S 5        g UR	                  [        U5      S/S/S.S9n[        [        R                  S[        R                  S/[        R                  S[        R                  S/[        R                  S[        R                  S/S	.5      n[        R                  " XE5        g ! , (       d  f       g = f)
Nz3A,B,C
foo,bar,NA
bar,foo,foo
foo,bar,NA
bar,foo,foor   z;pyarrow engine doesn't support passing a dict for na_valuesr=   r-   r.   )r   r   r?   r   r   rC   rD   rx   r   r   r   r   r   r!   r"   r$   r&   r%   rJ   dfr(   s         r)   test_na_value_dictr      s    D
 F}}	!K]]:S1OOHTNUG5'6ROS 2	$%w3O	PB&&%/&&%/&&%/	
H "' 21s   C<<
D
zindex_col,expectedr   rs   )r   r   r   r   nameri   r   )r   r   )r   r   r   )namesc                 |    SnU nUR                  [        U5      [        5       US9n[        R                  " XR5        g )Nza,b,c,d
0,NA,1,5
)r2   	index_col)r   r   setr!   r"   )r$   r   r(   r&   r%   r'   s         r)   test_na_value_dict_multi_indexr      s8    0D F__Xd^su	_RF&+r+   zkwargs,expectedr   r   er   r   r   rr      rs      rt   onetwothreefivesevenr   )r   r   Fr2   keep_default_nar   r   rM   r   r   r   r   )r   r   r   r   r   rM   r   rM   r   c                    SnU nUR                   S:X  a  SU;   aY  [        US   [        5      (       aA  Sn[        R                  " [
        US9   UR                  " [        U5      40 UD6  S S S 5        g [        R                  R                  5       nUR                  U5        UR                  " [        U5      40 UD6n[        R                  " X5        g ! , (       d  f       g = f)NzAA,B,C
a,1,one
b,2,two
,3,three
d,4,nan
e,5,five
nan,6,
g,7,seven
r   r2   ?The pyarrow engine doesn't support passing a dict for na_valuesr=   )r   r6   dictrC   rD   rx   r   r   rF   rG   rH   r!   r"   )	r$   kwargsr(   rI   r&   r%   rJ   rF   r'   s	            r)   test_na_values_keep_defaultr     s    \	D F}}	!& Z{0CT%J%JSCz59&9 6{{  "D!__Xd^6v6F&+ 65s   C
C$c                     SnU nUR                  [        U5      SS9n[        / SQ/ SQ/ SQS.5      n[        R                  " X45        g )NzAA,B,C
a,1,None
b,2,two
,3,None
d,4,nan
e,5,five
nan,6,
g,7,seven
F)r   r   r   )rQ   r   rQ   r   r   rM   r   r   r   r   r   r!   r"   r   s        r)   !test_no_na_values_no_keep_defaultr   K  sN    	D F__Xd^U_CF5&D	
H &+r+   c                 t   SnU nUR                   S:X  aB  Sn[        R                  " [        US9   UR	                  [        U5      SS/0SS9  S S S 5        g UR	                  [        U5      SS/0SS9n[        S	/[        R                  /S
.5      n[        R                  " XE5        g ! , (       d  f       g = f)Nza,b
,2r   r   r=   r   2Fr   rM   r   r   r   )r$   r&   r%   rJ   r'   r(   s         r)   &test_no_keep_default_na_dict_na_valuesr   e  s    DF}}	!O]]:S1OO3,   2 	__3,  F t266(34H&+ 21 	s   B))
B7c                 p   SnU nUR                   S:X  aA  Sn[        R                  " [        US9   UR	                  [        U5      SS0SS9  S S S 5        g UR	                  [        U5      SS0SS9n[        S	/[        R                  /S
.5      n[        R                  " XE5        g ! , (       d  f       g = f)Nza,b
1,2r   r   r=   r   r   Fr   r   r   r   r   s         r)   -test_no_keep_default_na_dict_na_scalar_valuesr   y  s     DF}}	!O]]:S1OOHTNsAhPUOV 2	$C8U	SBs"&&23H"' 21s   B''
B5col_zero_na_valuesi 113125c                    SnU n[        [        R                  S/[        R                  S/S[        R                  /SS/SS/S	S
/[        R                  S/S.5      nUR                  S:X  aE  Sn[        R
                  " [        US9   UR                  [        U5      S SS
SSUS.S9  S S S 5        g UR                  [        U5      S SS
SSUS.S9n[        R                  " Xd5        g ! , (       d  f       g = f)Nz_113125,"blah","/blaha",kjsdkj,412.166,225.874,214.008
729639,"qwer","",asdfkj,466.681,,252.373
g    ND&Aqwerz/blahakjsdkjasdfkjg-y@g7A`*}@z225.874rM   g-o@)r   r   r   rr   r   rs   r   r   r   r=   Fz214.008blah)r   r   r   r   )rj   r   r2   rw   )r$   r   r&   r%   r(   rJ   r'   s          r)   1test_no_keep_default_na_dict_na_values_diff_reprsr     s   D F!"&&!(#!2 	

H }}	!O]]:S1OO % Y6>PQ	   2 	__Y66HI	  F &+ 21 	s   	!C**
C8zna_filter,row_dataTr   rr   r   1r   3c                     SnU nUR                  [        U5      S/US9n[        USS/S9n[        R                  " XV5        g )NzA,B
1,A
nan,B
3,C
r   )r2   	na_filterr   r   r   )r$   r   row_datar&   r%   r'   r(   s          r)   !test_na_values_na_filter_overrider     sH    D F__Xd^u	_RFC:6H&+r+   c                 P   U nSnUR                  [        U5      5      n[        SSSSS[        R                  [        R                  [        R                  /SSSS	S
[        R                  [        R                  [        R                  /// SQS9n[
        R                  " X45        g )NzlDate,Currency,Symbol,Type,Units,UnitPrice,Cost,Tax
2012-03-14,USD,AAPL,BUY,1000
2012-05-12,USD,SBUX,SELL,500z
2012-03-14USDAAPLBUYi  z
2012-05-12SBUXSELLi  )DateCurrencySymbolTypeUnits	UnitPriceCostTaxr   )r   r   r   r   r   r!   r"   r#   s        r)   test_na_trailing_columnsr     s    F D
 __Xd^,F5&%rvvrvvrvvN5&&#rvvrvvrvvN	
	
H  &+r+   zna_values,row_datar4   r   rq   c                 h   U nSS/nSnUR                   S:X  ar  [        U[        5      (       a]  [        U[        5      (       a	  [        nSnO[        nSn[
        R                  " XgS9   UR                  [        U5      XAS9  S S S 5        g UR                   S:X  a>  Sn[
        R                  " [        US9   UR                  [        U5      XAS9  S S S 5        g UR                  [        U5      XAS9n[        X$S	9n	[        R                  " X5        g ! , (       d  f       g = f! , (       d  f       g = f)
Nr   r   1,2
2,1r   r   r<   r=   r   r2   r   )r   r6   r   rx   rE   rC   rD   r   r   r   r!   r"   )
r$   r2   r   r%   r   r&   errrJ   r'   r(   s
             r)   test_na_values_scalarr     s     F#JED}}	!jD&A&Ai&&CSCCMC]]3*OOHTN%OM +	)	#I]]9C0OOHTN%OM 1__Xd^5_NF1H&+ +* 10s   (D6D#
D #
D1c                    U nSSS.nUR                  5       nSS/nSn[        SS/[        R                  [        R                  //US	9nUR                  S
:X  a>  Sn[
        R                  " [        US9   UR                  [        U5      XBS9  S S S 5        g UR                  [        U5      XBS9n[        R                  " X5        [        R                  " X#5        g ! , (       d  f       g = f)Nr   r   r   r   r   r   rq   r4   r   r   r   r=   r   )copyr   r   r   r   rC   rD   rx   r   r   r!   r"   assert_dict_equal)	r$   r%   r2   na_values_copyr   r&   r(   rJ   r'   s	            r)   test_na_values_dict_aliasingr     s    Fa I^^%N#JED3*rvvrvv&67GH}}	!O]]:S1OOHTN%OM 2__Xd^5_NF&+3 21s   5C
C,c                 j   SnU nSS0nUR                   S:X  a>  Sn[        R                  " [        US9   UR	                  [        U5      US9  S S S 5        g UR	                  [        U5      US9n[        S[        R                  S	/05      n[        R                  " XV5        g ! , (       d  f       g = f)
Nza
foo
1r   r-   r   r   r=   r?   r   r   r   )r$   r&   r%   r2   rJ   r'   r(   s          r)   test_na_values_dict_col_indexr     s    DFE
I}}	!O]]:S1OOHTNiO@ 2__Xd^y_AF#{+,H&+ 21s   B$$
B2zdata,kwargs,expectedl            rh   l           z,1z
,2z
1c                    U nUR                   S:X  aI  SU;   aC  Sn[        R                  " [        US9   UR                  " [        U5      4SS 0UD6  S S S 5        g UR                   S:X  a.  [        R                  R                  SS9nUR                  U5        UR                  " [        U5      4SS 0UD6n[        R                  " X5        g ! , (       d  f       g = f)Nr   r2   r<   r=   rj   z!Returns float64 instead of objectr@   )r   rC   rD   rE   r   r   rF   rG   rH   r!   r"   )	r$   r&   r   r(   rI   r%   rJ   rF   r'   s	            r)   test_na_values_uint64r   .  s     F}}	!kV&;I]]9C0OOHTNB4B6B 1	)	#{{  (K LD!__Xd^CDCFCF&+ 10s   C
Cc                     SnU n[        SS/0[        S/SS9S9nUR                  [        U5      SS	S
9n[        R
                  " XC5        g )Nza,1
b,2r   r   r   r   r   r   r   F)r   r   )r   r   r   r   r!   r"   )r$   r&   r%   r(   r'   s        r)   *test_empty_na_values_no_default_with_indexr   K  sM    DF#s5#S+ABH__Xd^q%_PF&+r+   zna_filter,index_data5g      @c                 &   U nSnUR                   S:X  a3  USL a.  [        R                  R                  SS9nUR	                  U5        [        SS/SS	/S
.[        USS9S9nUR                  [        U5      S/US9n[        R                  " X5        g )Na,b,c
1,,3
4,5,6r   Fzmismatched index resultr@   r   r   rr   r   )r   r   r   r   r   )r   r   )r   rC   rF   rG   rH   r   r   r   r   r!   r"   )	r$   r   
index_datarI   r%   r&   rF   r(   r'   s	            r)   test_no_na_filter_on_indexr   U  s     FD}}	!i5&8{{  (A BD!1vQF35RU;VWH__Xd^si_PF&+r+   c                     U nSnUR                  [        U5      S/SS/S9n[        S[        R                  /S[        R                  /S.[        S	S
/SS9S9n[        R                  " X45        g )Nzidx,col1,col2
1,3,4
2,inf,-infr   infz-inf)r   r2   rr   r   )col1col2r   r   idxr   r   )r   r   r   r   r   r   r!   r"   )r$   r%   r&   outr(   s        r)   !test_inf_na_values_with_int_indexr   h  sk    F-D //(4.QCE6?/
SCRVVq"&&k2%AU:SH #(r+   r   c                     U nSnU(       a  [         R                  OSn[        SS/US/SS/S.5      nUR                  [	        U5      U[
        S	9n[        R                  " Xe5        g )
Nr   rM   r   4r   r   6r   )r   r|   )r   r   r   r   r   r7   r!   r"   )r$   r   r%   r&   emptyr(   r'   s          r)   +test_na_values_with_dtype_str_and_na_filterr   u  s`     FD  BFFRESzC:NOH__Xd^y_LF&+r+   zdata, na_values)zfalse,1
,1
trueN)zfalse,1
null,1
trueN)zfalse,1
nan,1
trueN)false,1
foo,1
truer-   r   r-   c           	          U nSR                  SS/5      n[        R                  " [        US9   UR	                  [        U5      S SS/SS0US9  S S S 5        g ! , (       d  f       g = f)	N|z(Bool column has NA values in column [0a]zRcannot safely convert passed user dtype of bool for object dtyped data in column 0r=   r   r   bool)rj   r   r|   r2   )ra   rC   rD   rx   r   r   )r$   r&   r2   r%   rJ   s        r)   !test_cast_NA_to_bool_raises_errorr     sl     F
((66	
C 
z	-TN*- 	 	
 
.	-	-s   !A
A'c           	          U nSnUR                  [        U5      S / SQ[        [        [        S.S9R                  5       n[	        SS/SS/SS	/S.S
S/S9n[
        R                  " X45        g )NzDFile: small.csv,,
10010010233,0123,654
foo,,bar
01001000155,4530,898)r   r   col3)rj   r   r|   100100102330100100015501234530654898r   rr   r   )r   r   r7   dropnar   r!   r"   r#   s        r)   test_str_nan_droppedr     s     FD
 __&C5	  
 fh  "M2V$EN	

 !fH &+r+   c           	         U nSnUR                   S:X  aS  Sn[        R                  " [        US9   UR	                  [        U5      [        [        S5      5      SS0S9  S S S 5        g UR	                  [        U5      [        [        S5      5      SS0S9n[        S	/S/[        R                  /S
.5      n[        R                  " XE5        g ! , (       d  f       g = f)NzA,B,B
X,Y,Z
1,2,infr   r   r=   r   r   Zr   )rj   r2   r   ))r   X)r   Yr   )r   rC   rD   rx   r   r   listrm   r   r   r   r!   r"   )r$   r%   r&   rJ   r'   r(   s         r)   test_nan_multi_indexr     s    F"D}}	!O]]:S1OOtE!H~*eAT   2 	__tE!H~*e9L  F 	
H &+% 21 	s   /C
Cc                     U nSn[         R                  " [        SS9   UR                  [	        U5      SS9  S S S 5        g ! , (       d  f       g = f)N0
NaN
True
False
z	NA valuesr=   r   r{   rC   rD   rx   r   r   r$   r%   r&   s      r)   test_bool_and_nan_to_boolr     s@     FD
 
z	5f5 
6	5	5   A
Ac                     U nSn[         R                  " [        SS9   UR                  [	        U5      SS9  S S S 5        g ! , (       d  f       g = f)Nr   zconvert|NoneTyper=   intr{   r   r   s      r)   test_bool_and_nan_to_intr    s?    FD
 
z);	<e4 
=	<	<r  c                     U nSnUR                  [        U5      SS9n[        R                  " S[        R
                  SS/05      n[        R                  " X45        g )Nr   floatr{   0rq   g        )r   r   r   	from_dictr   r   r!   r"   r#   s        r)   test_bool_and_nan_to_floatr	    sT    FD
 __Xd^7_;F""C"&&#s);#<=H&+r+   )6__doc__ior   numpyr   rC   pandas._libs.parsersr   pandasr   r   r   pandas._testing_testingr!   rF   filterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowr*   r1   parametrizerK   ro   ry   r   r   r   from_tuplesr   r   r   r   r   r   r   r   r   r   r   r7   r   r   r   r   r   r   r   r   r   r  r	   r+   r)   <module>r     s8      . 
 [[''C
 ''8{{&&~6,$," 	6	v		
			 
	
	,6,0-,` uug&67, 8,*,((2  CRVVHA3aS9sQTAUV	

 FvvhaS) ,,fXc3ZH	
 #JvvhaS) ,,fXc3ZH	
.,/.,  sBFFCbffcB.Q		
 !#,G=.L		
 %E:&&#r3UC@.L		
 ,-sBFFCbffcB.Q		
?),Z,[,Z,2,4,(($ -/AB$, C$,N 	C266266*QH56	#seS\C:67, , , ,6 	
bffc]S"&&M*+q	S#J(89:,,64,,"  JI.5'"s5z3y>23	

 
Ud	V	#RSZOb!W3M)NO	Ue	kE73Y{5KL,,", eb#Y/$1FG,, 
) tUm4, 5 , #'&'	%)	#u.


 
, , ,8,8 	6 	6	5
,r+   