
    Mh%R                        S r SSKJ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
 5       rS r\R"                  R3                  S/ SQSS//5      S 5       r\R"                  R3                  SSS/5      S 5       r\S 5       rS r\S 5       r\R"                  R3                  SSSS/0S4SS/SS/S.S4SS/SS/S.S4/5      S  5       r\" S!S"S#/5      r \\R"                  R3                  S$SSS/0S%/ S&QS'.S%\ " S(S)5      \ " S(S*5      \ " S(S+5      \ " S,S-5      \ " S.S/5      \ " S.S05      /S'./5      S1 5       5       r!\\R"                  R3                  S$SSS/0S2/ S&QS'.S2\ " S(S)5      \ " S(S*5      \ " S(S+5      \ " S,S-5      \ " S.S/5      \ " S.S05      /S'./5      S3 5       5       r"\\R"                  R3                  S$SSS/0S2/ S&QS'.S2\ " S(S)5      \ " S(S*5      \ " S(S+5      \ " S,S-5      \ " S.S/5      \ " S.S05      /S'./5      S4 5       5       r#\S5 5       r$\S6 5       r%\S7 5       r&\S8 5       r'\R"                  R3                  S9S:S;/5      S< 5       r(\\R"                  R3                  S$0 SS0/5      S= 5       5       r)\R"                  R3                  S>0 / S?Q4S@/ SAQ0/ SAQ4/5      SB 5       r*\R"                  R3                  SS(S,/SC/5      SD 5       r+\SE 5       r,\\R"                  R3                  SFSG\" / SHQ/\RZ                  " / SIQ5      SJ94SK\" / SHQ/\RZ                  " / SLQ5      SJ94SM\" / SNQ/\RZ                  " / SOQ5      SJ94/5      SP 5       5       r.\\R"                  R3                  SSS//5      \R"                  R3                  SQSSRSS/SSSR/SSST//5      SU 5       5       5       r/\SV 5       r0\SW 5       r1\SX 5       r2\SY 5       r3\SZ 5       r4S[ r5\S\ 5       r6\S] 5       r7\S^ 5       r8S_ r9g)`zx
Tests that the file header is properly handled or inferred
during parsing for all of the parsers defined in parsers.py
    )
namedtuple)StringION)ParserError)	DataFrameIndex
MultiIndexz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningpyarrow_xfailpyarrow_skipc                     U nSn[         R                  " [        US9   [        S5      nUR	                  US/S9  S S S 5        g ! , (       d  f       g = f)Nzbut only \d+ lines in filematchz,,
   header)pytestraises
ValueErrorr   read_csv)all_parsersparsermsgss       T/var/www/html/env/lib/python3.13/site-packages/pandas/tests/io/parser/test_header.pytest_read_with_bad_headerr      sA    F
'C	z	-TN2$' 
.	-	-   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)N$1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
zUPassing negative integer to header is invalid. For no header, use header=None insteadr   r   r   r   r   r   r   r   r   datas      r   test_negative_headerr"   '   sJ    FD 
1

 	r2
 
 
   A
Ar   )r         c                     U nSn[         R                  " [        SS9   UR                  [	        U5      US9  S S S 5        g ! , (       d  f       g = f)Nz<1,2,3,4,5
        6,7,8,9,10
        11,12,13,14,15
        z8cannot specify multi-index header with negative integersr   r   r   )r   r   r   r!   s       r    test_negative_multi_index_headerr(   6   sJ     FD 
T
 	v6
 
 
r#   TFc                     U nSnSn[         R                  " [        US9   UR                  [	        U5      US9  S S S 5        g ! , (       d  f       g = f)NzMyColumn
a
b
a
bz#Passing a bool to header is invalidr   r   )r   r   	TypeErrorr   r   )r   r   r   r!   r   s        r   test_bool_header_argr+   D   sE     FD 0C	y	,v6 
-	,	,   A
Ac                     U nSn/ SQnUR                  [        U5      US9n[        / SQ/ SQ/ SQ// SQ/ SQS9n[        R                  " XE5        g )	Nzfoo,1,2,3
bar,4,5,6
baz,7,8,9
ABCnames   r$      )r%         )      	   )foobarbazindexcolumnsr   r   r   tmassert_frame_equal)r   r   r!   r3   resultexpecteds         r   test_header_with_index_colrG   S   sU    FD E__Xd^5_9F	Iy)#H
 &+    c                     U nSnSnUR                  [        U5      SSS9nUR                  [        U5      SSS9n[        R                  " XE5        g )Nzggot,to,ignore,this,line
got,to,ignore,this,line
index,A,B,C,D
foo,2,3,4,5
bar,7,8,9,10
baz,12,13,14,15
z7index,A,B,C,D
foo,2,3,4,5
bar,7,8,9,10
baz,12,13,14,15
r$   r   r   	index_colr   r   rC   rD   )r   r   r!   data2rE   rF   s         r   test_header_not_first_linerN   e   sU    FDE __Xd^A_CFxqAFH&+rH   c                    U nSnUR                  [        U5      / SQSS/S9nS n[        S5       VVs/ s H$  n[        S5       Vs/ s H
  od" XV5      PM     snPM&     nnn[        R                  " [        S5       Vs/ s H  nS	U 3PM
     sn[        S5       Vs/ s H  nS
U 3PM
     sn/SS/S9n[        R                  " [        S5       Vs/ s H  nSU 3PM
     sn[        S5       Vs/ s H  nSU 3PM
     sn[        S5       Vs/ s H  nSU 3PM
     sn[        S5       Vs/ s H  nSU 3PM
     sn// SQS9n	[        X)US9n
[        R                  " X:5        g s  snf s  snnf s  snf s  snf s  snf s  snf s  snf s  snf )N  C0,,C_l0_g0,C_l0_g1,C_l0_g2

C1,,C_l1_g0,C_l1_g1,C_l1_g2
C2,,C_l2_g0,C_l2_g1,C_l2_g2
C3,,C_l3_g0,C_l3_g1,C_l3_g2
R0,R1,,,
R_l0_g0,R_l1_g0,R0C0,R0C1,R0C2
R_l0_g1,R_l1_g1,R1C0,R1C1,R1C2
R_l0_g2,R_l1_g2,R2C0,R2C1,R2C2
R_l0_g3,R_l1_g3,R3C0,R3C1,R3C2
R_l0_g4,R_l1_g4,R4C0,R4C1,R4C2
r   r5   r$   r6   r   r5   rJ   c                     SU  SU 3$ )NRr1    )rcs     r   <lambda>)test_header_multi_index.<locals>.<lambda>   s    !AaSkrH   r7   r6   R_l0_gR_l1_gR0R1r2   C_l0_gC_l1_gC_l2_gC_l3_g)C0C1C2C3)rA   r@   )r   r   ranger   from_arraysr   rC   rD   )r   r   r!   rE   
data_gen_frU   rV   ir@   rA   rF   s              r   test_header_multi_indexri   y   sw   FD __Xd^LQPQF_SF)J:?(C(QuQx0x!Zx0(DC"" %a	)1F1#,	)%(+K(QfQCL(+KLTlE $$#(8,8avaS\8,#(8,8avaS\8,#(8,8avaS\8,#(8,8avaS\8,		
 'G e<H&+ 1C	)+K
 -,,,s;   E*E%E*?E0E5
E:0E?
F,F	%E*z
kwargs,msgrK   r<   r=   zLindex_col must only contain row numbers when specifying a multi-index headerr5   )rK   r3   z9cannot specify names when specifying a multi-index header)rK   usecolsz;cannot specify usecols when specifying a multi-index headerc                     SnU n[         R                  " [        US9   UR                  " [	        U5      4S/ SQ0UD6  S S S 5        g ! , (       d  f       g = f)NrP   r   r   rQ   r   )r   kwargsr   r!   r   s        r   test_header_multi_index_invalidrm      sD    ,D F	z	-F|FvF 
.	-	-s   !A
A
_TestTuplefirstsecondrl   r6   )aq)rr   rU   )rr   r   )bt)rV   u)rV   v)skiprowsr3   rr   rs   rU   r   rt   ru   rV   rv   rw   c                     U n[        / SQ/ SQ/SS/[        R                  " / SQ5      S9nSnUR                  " [	        U5      4SS	0UD6n[
        R                  " XS5        g )
Nr5   r$   r6   r%   r7   r8   r9   r:   r;   r         onetworq   r?   zC,a,a,a,b,c,c
,q,r,s,t,u,v
,,,,,,
one,1,2,3,4,5,6
two,7,8,9,10,11,12rK   r   r   r   from_tuplesr   r   rC   rD   r   rl   r   rF   r!   rE   s         r   &test_header_multi_index_common_format1r      sg    < F	23en&&T
HD __Xd^CqCFCF&+rH   r$   c                     U n[        / SQ/ SQ/SS/[        R                  " / SQ5      S9nSnUR                  " [	        U5      4SS	0UD6n[
        R                  " XS5        g )
Nrz   r{   r~   r   rq   r?   z<,a,a,a,b,c,c
,q,r,s,t,u,v
one,1,2,3,4,5,6
two,7,8,9,10,11,12rK   r   r   r   s         r   &test_header_multi_index_common_format2r      sg    < F	23en&&T
HD
 __Xd^CqCFCF&+rH   c                     U n[        / SQ/ SQ/SS/[        R                  " / SQ5      S9nUR                  SS9nS	nUR                  " [        U5      4S
S 0UD6n[        R                  " XS5        g )Nrz   r{   r~   r   rq   r?   T)drop2a,a,a,b,c,c
q,r,s,t,u,v
1,2,3,4,5,6
7,8,9,10,11,12rK   )r   r   r   reset_indexr   r   rC   rD   r   s         r   &test_header_multi_index_common_format3r   *  s|    < F	23en&&T
H ###.HD
 __Xd^FtFvFF&+rH   c           
          U n[        [        R                  " / SQ/ SQ/SS9[        SS/5      [	        / SQ/ SQ// S	Q/ S
Q/SS/S9S9nSnUR                  [        U5      SS/SS9n[        R                  " X$5        g )Nr$   r6   r%   r7   r8   r:   r;   r   r|   r}   int64dtyper5   r9   rr   rt   rV   rU   r   ru   rv   rw   r   r   r5   r$   r$   r   r5   r$   r6   r%   rr   rs   levelscodesr3   r?   r   r   rJ   	r   nparrayr   r   r   r   rC   rD   r   r   rF   r!   rE   s        r   0test_header_multi_index_common_format_malformed1r   Z  s    F
/#56gFQFm#%>?"O4*
HD
 __Xd^QFa_HF(+rH   c           
          U n[        [        R                  " / SQ/ SQ/SS9[        SS/5      [	        / SQ/ SQ// S	Q/ S
Q/S S/S9S9nSnUR                  [        U5      SS/SS9n[        R                  " X$5        g )Nr   r   r   r   r5   r9   r   r   r   r   rs   r   r?   1,a,a,b,c,c
q,r,s,t,u,v
1,2,3,4,5,6
7,8,9,10,11,12r   rJ   r   r   s        r   0test_header_multi_index_common_format_malformed2r   o  s    F
/#56gFQFm#%>?"O4+
HD
 __Xd^QFa_HF(+rH   c           
         U n[        [        R                  " / SQ/ SQ/SS9[        SS/SS//S	S/S	S//S
9[        / SQ/ SQ// SQ/ SQ/S S/S9S9nSnUR	                  [        U5      S	S/S	S/S9n[        R                  " X$5        g )N)r6   r%   r7   r8   )r;   r   r|   r}   r   r   r5   r9   r$   r:   r   )r   r   r   )r   ru   rv   rw   )r   r5   r$   r$   rQ   rs   r   r?   r   rJ   )r   r   r   r   r   r   rC   rD   r   s        r   0test_header_multi_index_common_format_malformed3r     s    F
,0@!Q!Q 0!Q!Q8HI#%9:.+
HD
 __Xd^QFq!f_MF(+rH   c                     U nS S /SS/SS//n[         R                  " SS/5      n[        X#S9nSnUR                  [	        U5      S	S/S
9n[
        R                  " XE5        g )Nr5   r$   r6   r%   )rr   r/   )rt   r0   rA   za,b
A,B
,
1,2
3,4r   r   )r   r   r   r   r   rC   rD   )r   r   r!   rA   rF   rE   s         r   "test_header_multi_index_blank_liner     sm     F4L1a&1a&)D$$j*%=>G/H"D__Xd^QF_;F(+rH   zdata,header)1,2,3
4,5,6N)zfoo,bar,baz
1,2,3
4,5,6r   c                 $   U nUR                   S:X  a1  Ub.  [        R                  R                  SS9nUR	                  U5        UR                  [        S5      / SQS9nUR                  [        U5      / SQUS9n[        R                  " Xv5        g )NpyarrowzDataFrame.columns are different)reasonr   r   r2   r3   r   )	enginer   markxfailapplymarkerr   r   rC   rD   )r   r!   r   requestr   r   rF   rE   s           r   !test_header_names_backward_compatr     s}    
 F}}	!f&8{{  (I JD!x7OH__Xd^?6_RF&+rH   c                     U n[        / SQS9nUR                  " [        S5      40 UD6n[        R                  " XC5        g )Nr   r   za,b,cr   r   r   rC   rD   )r   rl   r   rF   rE   s        r   test_read_only_header_no_rowsr     s9     F1H__Xg.9&9F&+rH   zkwargs,namesr   r3   )r<   r=   r>   quuxpandac                     U nSn[        / SQ/ SQ/ SQ/US9nUR                  " [        U5      4SS 0UD6n[        R                  " Xe5        g )Nr   )r5   r$   r6   r%   r7   )r8   r9   r:   r;   r   )r|   r}            r   r   r   )r   rl   r3   r   r!   rF   rE   s          r   test_no_headerr     sV     FD 	*,@A5H __Xd^CDCFCF&+rH   string_headerc                     SnSnU n[         R                  " [        US9   UR                  [	        U5      US9  S S S 5        g ! , (       d  f       g = f)Nz*header must be integer or list of integersz1,2
3,4r   r   r   )r   r   r   r!   r   s        r   test_non_int_headerr     sA     7CDF	z	-v6 
.	-	-r,   c                     SnU n[        SS/SS/SS/S.5      nUR                  [        U5      S/S9n[        R                  " XC5        g )Nza,b,c
0,1,2
1,2,3r   r5   r$   r6   r   r   r   )r   r!   r   rF   rE   s        r   test_singleton_headerr     sQ     %DF1vQF!Q@AH__Xd^QC_8F&+rH   zdata,expectedz#A,A,A,B
one,one,one,two
0,40,34,0.1)r   (   "   皙?)r/   r~   r/   zone.1)r/   zone.2r0   r   r   z%A,A,A,B
one,one,one.1,two
0,40,34,0.1)r   r   r/   zone.1.1r   z/A,A,A,B,B
one,one,one.1,two,two
0,40,34,0.1,0.1)r   r   r   r   r   )r   r   r   r   )r0   ztwo.1c                 j    U nUR                  [        U5      SS/S9n[        R                  " XB5        g )Nr   r5   r   rL   )r   r!   rF   r   rE   s        r   test_mangles_multi_indexr     s2    R F__Xd^QF_;F&+rH   rA    Unnamed
NotUnnamedc                    U nSS/nUc   SR                  U=(       d    SS/5      S-   nO#SR                  S/U=(       d    SS/-   5      S-   nUR                  [        U5      XAS9n/ nUc  / SQn[        U5       H+  u  pU	(       d  S	Uc  UOUS-    S
3n	UR	                  U	5        M-     [
        R                  " [        USS/5      5      n[        SS/SS//US9n
[        R                  " Xj5        g )Nr   r5   ,r   z
0,1
2,3
4,5
z
,0,1
0,2,3
1,4,5
rJ   )r   r   r   z	Unnamed: _level_001r$   r6   r%   r7   r   )joinr   r   	enumerateappendr   r   zipr   rC   rD   )r   rK   rA   r   r   r!   rE   exp_columnsrh   colrF   s              r   test_multi_index_unnamedr     s     FVFxx+B8,/BBxx 3B8458PP__Xd^F_PFKG$9#4a!a%@IC3	 % $$SsCj%ABG1a&1a&)7;H&+rH   c                     U nSnUR                  [        U5      S/ SQS9n[        SS/SS/S	S
/S.5      n[        R                  " X45        g )Nza, b
1,2,3
5,6,4
r   r.   )r   r3   r5   r7   r$   r8   r6   r%   rB   r   r   r!   rE   rF   s        r   6test_names_longer_than_header_but_equal_with_data_rowsr   E  sU     FD __Xd^A__MF1vQF!Q@AH&+rH   c                 >   U nSnSn[         R                  " / SQ5      n[        / SQ/ SQ/US9nUR                  [	        U5      SS/S	9n[
        R                  " XeR                  S S 5        UR                  [	        U5      SS/S	9n[
        R                  " Xu5        g )
NzFMale, Male, Male, Female, Female
R, R, L, R, R
.86, .67, .88, .78, .81z^Male, Male, Male, Female, Female
R, R, L, R, R
.86, .67, .88, .78, .81
.86, .67, .88, .78, .82))MalerS   ) Male R)r   z L) Femaler   )r   z R.1)Q?q=
ףp?)\(?(\?gQ?)r   r   r   r   g=
ףp=?r   r   r5   r   )r   r   r   r   r   rC   rD   iloc)r   r   s1s2mirF   df1df2s           r    test_read_csv_multiindex_columnsr   R  s     F	SB	"  
			

B 	')GHRTH //(2,1v/
6C#}}Ra01
//(2,1v/
6C#(rH   c                     U nSn[         R                  " [        SS9   UR                  [	        U5      SS/S9  S S S 5        g ! , (       d  f       g = f)Nz1row11,row12,row13
row21,row22, row23
row31,row32
z1Header rows must have an equal number of columns.r   r   r$   r   r   r   r   r   r   )r   r   cases      r   'test_read_csv_multi_header_length_checkr   r  sN     FD
 
N
 	1v6
 
 
s   A
Ac                     U nSnUR                  [        U5      SS/S S9n[        / SQS[        R                  [        R                  /S./ SQS	9n[
        R                  " X45        g )
Nzx,1,5
y,2
z,3
rr   rt   r   r4   r7   rr   rt   )xyz)r@   )r   r   r   r   nanrC   rD   r   s        r   #test_header_none_and_implicit_indexr     s]     FD__Xd^C:d_KFq"&&"&&12/H &+rH   c                     U nSn[         R                  " [        SS9   UR                  [	        U5      SS/S S9  S S S 5        g ! , (       d  f       g = f)Nx,1
y,2,5
z,3
z"Expected 2 fields in line 2, saw 3r   rr   rt   r   r   r    s      r   1test_header_none_and_implicit_index_in_second_rowr     sD     FD	{*N	OsCjF 
P	O	Or   c                     U nSnUR                  [        U5      SS/S SS9n[        SS/SS	/S
.5      n[        R                  " X45        g )Nr   rr   rt   skip)r3   r   on_bad_linesr   r   r5   r6   r   rB   r   s        r   &test_header_none_and_on_bad_lines_skipr     sW    FD__sCjF  F SzA78H&+rH   c                     U nSnSn[         R                  " [        US9   UR                  [	        U5      / SQS9  S S S 5        g ! , (       d  f       g = f)Nza,b
1,2
z;Passed header=\[0,1,2\], len of 3, but only 2 lines in filer   )r   r5   r$   r   r   )r   r   r!   r   s       r   test_header_missing_rowsr     sF     FD IC	z	-y9 
.	-	-s   A
Ac                     U nSnUR                  [        U5      SS9n[        S/SSS.5      n[        R                  " X45        g )Nz1aa    bb(1,1)   cc(1,1)
                0  2  3.5z\s+)sepr   r$   g      @)aazbb(1,1)zcc(1,1)rB   r   s        r    test_header_multiple_whitespacesr    sI     FD __Xd^_8FcBCH&+rH   c                     U nSnSn[         R                  " [        USS9   UR                  [	        U5      SS9nS S S 5        [        SSS	/05      n[         R                  " WU5        g ! , (       d  f       N5= f)
Nza,b
1,2
3,4
    z;The 'delim_whitespace' keyword in pd.read_csv is deprecatedF)r   check_stacklevelT)delim_whitespaceza,bz1,2z3,4)rC   assert_produces_warningFutureWarningr   r   r   rD   )r   r   r!   depr_msgrE   rF   s         r   test_header_delim_whitespacer    sz     FD
 MH		#	#X
 $$G
 %%01H&(+
 
s   A**
A8c           	          U nSnUR                  [        U5      S SS/SSSS9n[        SS/S	S
//SS9n[        R                  " X45        g )Nz
a,i,x
b,j,y
r   r5   zstring[pyarrow]r   )r   rj   r   dtype_backendr   rr   rh   rt   jr   rB   )pyarrow_parser_onlyr   r!   rE   rF   s        r   test_usecols_no_header_pyarrowr    sg     FD __A  F 3*sCj19JKH&+rH   ):__doc__collectionsr   ior   numpyr   r   pandas.errorsr   pandasr   r   r   pandas._testing_testingrC   r   filterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowr   r"   parametrizer(   r+   rG   rN   ri   rm   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  rT   rH   r   <module>r     s]  
 #    % 
 [[''C
 ''8{{&&~6 ( (3 ZB7#<=
7 >
7 D%=17 27 , ,",( ", ",J  5%.)'	
 a&E5>:H	

 a&eU^<J	
*G+*G( w&9:
 	Aq6
	
 3$3$3$3$3$3$
	
8,9 :,& 	Aq6
	
 3$3$3$3$3$3$
	
8,9 :,$ 	Aq6
	
 3$3$3$3$3$3$
	
8,9 :,& , ,( , ,* , ,( , , *,LM,, Be(<#=>, ? , 	_<=2	
	
,	
, S#J#@A7 B7 , ,  4!""..P	
 6!""..R	
 @&'"..	
'"%L,M% N, taSk2I9b/i=VX, 3 
,D 	, 	, ) )> 7 7 , , G G, : : , , , ,",rH   