
    A>i=Q                        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   UR                  [	        S5      S/S9  S S S 5        g ! , (       d  f       g = f)Nzbut only \d+ lines in filematchz,,
   headerpytestraises
ValueErrorread_csvr   )all_parsersparsermsgs      a/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/io/parser/test_header.pytest_read_with_bad_headerr      s<    F
'C	z	-t4 
.	-	-s   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   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&   5   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)   C   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   r1   resultexpecteds         r   test_header_with_index_colrE   R   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   rA   rB   )r   r   r   data2rC   rD   s         r   test_header_not_first_linerL   d   sU    FDE __Xd^A_CFxqAFH&+rF   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   r3   r"   r4   r   r3   rH   c                     SU  SU 3$ )NRr/    )rcs     r   <lambda>)test_header_multi_index.<locals>.<lambda>   s    !AaSkrF   r5   r4   R_l0_gR_l1_gR0R1r0   C_l0_gC_l1_gC_l2_gC_l3_g)C0C1C2C3)r?   r>   )r   r   ranger   from_arraysr   rA   rB   )r   r   r   rC   
data_gen_frS   rT   ir>   r?   rD   s              r   test_header_multi_indexrg   x   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,msgrI   r:   r;   z]index_col must only contain integers of column positions when specifying a multi-index headerr3   )rI   r1   z9cannot specify names when specifying a multi-index header)rI   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)NrN   r   r   rO   r   )r   kwargsr   r   r   s        r   test_header_multi_index_invalidrk      sD    ,D F	z	-F|FvF 
.	-	-s   !A
A
_TestTuplefirstsecondrj   r4   )aq)rp   rS   )rp   s)bt)rT   u)rT   v)skiprowsr1   rp   rq   rS   rr   rs   rt   rT   ru   rv   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r3   r"   r4   r#   r5   r6   r7   r8   r9   r         onetworo   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,12rI   r   r   r   from_tuplesr   r   rA   rB   r   rj   r   rD   r   rC   s         r   &test_header_multi_index_common_format1r      sg    < F	23en&&T
HD __Xd^CqCFCF&+rF   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 )
Nry   rz   r}   r~   ro   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,12rI   r   r   r   s         r   &test_header_multi_index_common_format2r      sg    < F	23en&&T
HD
 __Xd^CqCFCF&+rF   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 )Nry   rz   r}   r~   ro   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,12rI   )r   r   r   reset_indexr   r   rA   rB   r   s         r   &test_header_multi_index_common_format3r   )  s|    < F	23en&&T
H ###.HD
 __Xd^FtFvFF&+rF   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"   r4   r#   r5   r6   r8   r9   r   r{   r|   int64dtyper3   r7   rp   rs   rT   rS   rr   rt   ru   rv   r   r   r3   r"   r"   r   r3   r"   r4   r#   rp   rq   levelscodesr1   r=   r   r   rH   )	r   nparrayr   r   r   r   rA   rB   r   r   rD   r   rC   s        r   0test_header_multi_index_common_format_malformed1r   Y  s    F
/#56gFQFm#%>?"O4*
HD
 __Xd^QFa_HF(+rF   c           
          U n[        [        R                  " / SQ/ SQ/SS9[        S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   r3      r6   r   r   r   r   rq   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   rH   )	r   r   r   rc   r   r   r   rA   rB   r   s        r   0test_header_multi_index_common_format_malformed2r   n  s    F
/#56gFAr1o#%>?"O4+
HD
 __Xd^QFa_HF(+rF   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)r4   r#   r5   r6   )r9   r   r{   r|   r   r   r3   r7   r"   r8   r   )r   r   r   )rr   rt   ru   rv   )r   r3   r"   r"   rO   rq   r   r=   r   rH   )r   r   r   r   r   r   rA   rB   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(+rF   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 )Nr3   r"   r4   r#   )rp   r-   )rs   r.   r?   za,b
A,B
,
1,2
3,4r   r   )r   r   r   r   r   rA   rB   )r   r   r   r?   rD   rC   s         r   "test_header_multi_index_blank_liner     sm     F4L1a&1a&)D$$j*%=>G/H"D__Xd^QF_;F(+rF   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   r0   r1   r   )	enginer   markxfailapplymarkerr   r   rA   rB   )r   r   r   requestr   r   rD   rC   s           r   !test_header_names_backward_compatr     s}    
 F}}	!f&8{{  (I JD!x7OH__Xd^?6_RF&+rF   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   rA   rB   )r   rj   r   rD   rC   s        r   test_read_only_header_no_rowsr     s9     F1H__Xg.9&9F&+rF   zkwargs,namesr   r1   )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   )r3   r"   r4   r#   r5   )r6   r7   r8   r9   r   )r{   r|   r         r   r   r   )r   rj   r1   r   r   rD   rC   s          r   test_no_headerr     sV     FD 	*,@A5H __Xd^CDCFCF&+rF   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   r3   r"   r4   r   r   r   )r   r   r   rD   rC   s        r   test_singleton_headerr     sQ     %DF1vQF!Q@AH__Xd^QC_8F&+rF   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r.   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   )r.   ztwo.1c                 j    U nUR                  [        U5      SS/S9n[        R                  " XB5        g )Nr   r3   r   rJ   )r   r   rD   r   rC   s        r   test_mangles_multi_indexr     s2    R F__Xd^QF_;F&+rF   r?    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   r3   ,r   z
0,1
2,3
4,5
z
,0,1
0,2,3
1,4,5
rH   )r   r   r   z	Unnamed: _level_001r"   r4   r#   r5   r   )joinr   r   	enumerateappendr   r   zipr   rA   rB   )r   rI   r?   r   r   r   rC   exp_columnsrf   colrD   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&+rF   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   r1   r3   r5   r"   r6   r4   r#   r@   r   r   r   rC   rD   s        r   6test_names_longer_than_header_but_equal_with_data_rowsr   D  sU     FD __Xd^A__MF1vQF!Q@AH&+rF   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))MalerQ   ) Male R)r   z L) Femaler   )r   z R.1)Q?q=
ףp?)\(?(\?gQ?)r   r   r   r   g=
ףp=?r   r   r3   r   )r   r   r   r   r   rA   rB   iloc)r   r   s1s2mirD   df1df2s           r    test_read_csv_multiindex_columnsr   Q  s     F	SB	"  
			

B 	')GHRTH //(2,1v/
6C#}}Ra01
//(2,1v/
6C#(rF   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   q  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
rp   rs   r   r2   r5   rp   rs   )xyz)r>   )r   r   r   r   nanrA   rB   r   s        r   #test_header_none_and_implicit_indexr     s]     FD__Xd^C:d_KFq"&&"&&12/H &+rF   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   rp   rs   r   r   r   s      r   1test_header_none_and_implicit_index_in_second_rowr     sD     FD	{*N	OsCjF 
P	O	Os   A
A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   rp   rs   skip)r1   r   on_bad_linesr   r   r3   r4   r   r@   r   s        r   &test_header_none_and_on_bad_lines_skipr     sW    FD__sCjF  F SzA78H&+rF   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   r3   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.5\s+sepr   r"   g      @)aazbb(1,1)zcc(1,1)r@   r   s        r    test_header_multiple_whitespacesr    sI     FD __Xd^_8FcBCH&+rF   c                     U nSnUR                  [        U5      SS9n[        SSS/05      n[        R                  " X45        g )Nza,b
1,2
3,4
    r   r   za,bz1,2z3,4r@   r   s        r   test_header_delim_whitespacer    sI     FD __Xd^_8F%%01H&+rF   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   r3   zstring[pyarrow]r   )r   rh   r   dtype_backendr   rp   rf   rs   jr   r@   )pyarrow_parser_onlyr   r   rC   rD   s        r   test_usecols_no_header_pyarrowr    sg     FD __A  F 3*sCj19JKH&+rF   ):__doc__collectionsr   ior   numpyr   r   pandas.errorsr   pandasr   r   r   pandas._testing_testingrA   r   filterwarnings
pytestmarkusefixturesxfail_pyarrowskip_pyarrowr   r    parametrizer&   r)   rE   rL   rg   rk   rl   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  rR   rF   r   <module>r     s]  
 #    % 
 [[''C
 ''8{{&&~6 5 5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, : : , , 	, 	,,rF   