
    d!F                     R	   d Z ddlmZ ddlmZ ddlZddlZddlm	Z	 ddl
mZmZmZ ddlmZ ej                            d          Zed             Zd	 Zej                            d
g dddgg          d             Zej                            d
ddg          d             Zed             Zd Zed             Zej                            ddddgidfddgddgddfddgddgddfg          d             Z edd d!g          Zeej                            d"d
ddgid#g d$d%d# ed&d'           ed&d(           ed&d)           ed*d+           ed,d-           ed,d.          gd%g          d/                         Zeej                            d"d
ddgid0g d$d%d0 ed&d'           ed&d(           ed&d)           ed*d+           ed,d-           ed,d.          gd%g          d1                         Zeej                            d"d
ddgid0g d$d%d0 ed&d'           ed&d(           ed&d)           ed*d+           ed,d-           ed,d.          gd%g          d2                         Z ed3             Z!ed4             Z"ed5             Z#ed6             Z$eej                            d7d8d9g          d:                         Z%eej                            d"i ddig          d;                         Z&ej                            d<i g d=fd>g d?ig d?fg          d@             Z'ej                            d
d&d*gdAg          dB             Z(edC             Z)eej                            dDdE eg dFg ej*        g dG          H          fdI eg dFg ej*        g dJ          H          fdK eg dLg ej*        g dM          H          fg          dN                         Z+eej                            dddgg          ej                            dOddPdQgdQdPgdQdRgg          dS                                     Z,edT             Z-edU             Z.edV             Z/edW             Z0edX             Z1edY             Z2edZ             Z3dS )[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
MultiIndexpyarrow_skipc                     | }d}t          j        t          |          5  t          d          }|                    |dg           d d d            d S # 1 swxY w Y   d S )Nzbut only \d+ lines in filematchz,,
   header)pytestraises
ValueErrorr   read_csv)all_parsersparsermsgss       ^/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/io/parser/test_header.pytest_read_with_bad_headerr      s    F
'C	z	-	-	- ( (TNN2$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (   (AAAc                     | }d}t          j        t          d          5  |                    t	          |          d           d d d            d S # 1 swxY w Y   d S )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!   #   s    FD 
1
 
 
 3 3
 	r2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3   %AAAr   )r         c                     | }d}t          j        t          d          5  |                    t	          |          |           d d d            d S # 1 swxY w Y   d S )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'   2   s     FD 
T
 
 
 7 7 	v6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7r"   TFc                     | }d}d}t          j        t          |          5  |                    t	          |          |           d d d            d S # 1 swxY w Y   d S )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*   @   s     FD 0C	y	,	,	, 7 7v6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7   %AAAc                     | }d}g d}|                     t          |          |          }t          g dg dg dgg dg d          }t          j        ||           d S )	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    r2   resultexpecteds         r   test_header_with_index_colrF   O   s    FD OOE__Xd^^5_99F	IIIyyy)###  H
 &(+++++    c                     | }d}d}|                     t          |          dd          }|                     t          |          dd          }t          j        ||           d S )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   rB   rC   )r   r   r    data2rD   rE   s         r   test_header_not_first_linerM   a   sj    FDE __Xd^^A_CCFxqAFFH&(+++++rG   c                     | }t          j        dddd          }d}|                    t          |          g ddd	g
          }t          j        ||           d S )Nr6   r5   r#   r$   )r_idx_nlevelsc_idx_nlevels  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   r4   r#   r5   r   r4   rI   )rB   makeCustomDataframer   r   rC   r   r   rE   r    rD   s        r   test_header_multi_indexrU   u   sh    F%a!1MMMHD __Xd^^LLLQPQF_SSF&(+++++rG   z
kwargs,msgrJ   r;   r<   zLindex_col must only contain row numbers when specifying a multi-index headerr4   )rJ   r2   z9cannot specify names when specifying a multi-index header)rJ   usecolsz;cannot specify usecols when specifying a multi-index headerc                     d}| }t          j        t          |          5   |j        t	          |          fdg di| d d d            d S # 1 swxY w Y   d S )NrQ   r   r   rR   r   )r   kwargsr   r    r   s        r   test_header_multi_index_invalidrY      s    ,D F	z	-	-	- G GFF|||FvFFFG G G G G G G G G G G G G G G G G Gs    AAA
_TestTuplefirstsecondrX   r5   )aq)r^   r)r^   r   )bt)cu)rc   v)skiprowsr2   r^   r_   r`   r   ra   rb   rc   rd   re   c                     | }t          g dg dgddgt          j        g d                    }d} |j        t	          |          fdd	i|}t          j        ||           d S )
Nr4   r#   r5   r$   r6   r7   r8   r9   r:   r         onetwor]   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,12rJ   r   r   r   from_tuplesr   r   rB   rC   r   rX   r   rE   r    rD   s         r   &test_header_multi_index_common_format1rq      s    < F			2223en&TTT
 
  HD V_Xd^^CCqCFCCF&(+++++rG   r#   c                     | }t          g dg dgddgt          j        g d                    }d} |j        t	          |          fdd	i|}t          j        ||           d S )
Nrh   ri   rl   rm   r]   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,12rJ   r   rn   rp   s         r   &test_header_multi_index_common_format2rs      s    < F			2223en&TTT
 
  HD
 V_Xd^^CCqCFCCF&(+++++rG   c                     | }t          g dg dgddgt          j        g d                    }|                    d          }d	} |j        t          |          fd
d i|}t          j        ||           d S )Nrh   ri   rl   rm   r]   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,12rJ   )r   r   ro   reset_indexr   r   rB   rC   rp   s         r   &test_header_multi_index_common_format3rx     s    < F			2223en&TTT
 
  H ###..HD
 V_Xd^^FFtFvFFF&(+++++rG   c           
      8   | }t          t          j        g dg dgd          t          ddg          t	          g dg dgg d	g d
gddg                    }d}|                    t          |          ddgd          }t          j        ||           d S )Nr#   r5   r$   r6   r7   r9   r:   r   rj   rk   int64dtyper4   r8   r^   ra   rc   r`   r   rb   rd   re   r   r   r4   r#   r#   r   r4   r#   r5   r$   r^   r_   levelscodesr2   r>   rv   r   rI   	r   nparrayr   r   r   r   rB   rC   rT   s        r   0test_header_multi_index_common_format_malformed1r   F  s    F
///#5#5#56gFFFQFmm#OO%>%>%>?"??OOO4*
 
 
  HD
 __Xd^^QFa_HHF(F+++++rG   c           
      8   | }t          t          j        g dg dgd          t          ddg          t	          g dg dgg d	g d
gd dg                    }d}|                    t          |          ddgd          }t          j        ||           d S )Nrz   r{   r|   r}   r4   r8   r   r   r   r   r_   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   rI   r   rT   s        r   0test_header_multi_index_common_format_malformed2r   [  s    F
///#5#5#56gFFFQFmm#OO%>%>%>?"??OOO4+
 
 
  HD
 __Xd^^QFa_HHF(F+++++rG   c           
      T   | }t          t          j        g dg dgd          t          ddgddggd	dgd	dgg
          t          g dg dgg dg dgd dg                    }d}|                    t          |          d	dgd	dg          }t          j        ||           d S )N)r5   r$   r6   r7   )r:   r   rj   rk   r|   r}   r4   r8   r#   r9   r   )r   r   r   )r   rb   rd   re   )r   r4   r#   r#   rR   r_   r   r>   r   rI   )r   r   r   r   r   r   rB   rC   rT   s        r   0test_header_multi_index_common_format_malformed3r   q  s    F
,,,0@@@!Q!Q 0!Q!Q8HIII#OO%9%9%9:<<.+
 
 
  HD
 __Xd^^QFq!f_MMF(F+++++rG   c                     | }d d gddgddgg}t          j        ddg          }t          ||          }d}|                    t	          |          d	dg
          }t          j        ||           d S )Nr4   r#   r5   r$   )r^   r.   )ra   r/   r@   za,b
A,B
,
1,2
3,4r   r   )r   ro   r   r   r   rB   rC   )r   r   r    r@   rE   rD   s         r   "test_header_multi_index_blank_liner     s     F4L1a&1a&)D$j*%=>>Gw///H"D__Xd^^QF_;;F(F+++++rG   zdata,header)1,2,3
4,5,6N)zfoo,bar,baz
1,2,3
4,5,6r   c                     | }|                     t          d          g d          }|                     t          |          g d|          }t          j        ||           d S )Nr   r   r1   r2   r   rK   )r   r    r   r   rE   rD   s         r   !test_header_names_backward_compatr     sd     Fx77OOH__Xd^^???6_RRF&(+++++rG   c                     | }t          g d          } |j        t          d          fi |}t          j        ||           d S )Nr   r   za,b,cr   r   r   rB   rC   )r   rX   r   rE   rD   s        r   test_read_only_header_no_rowsr     sW     F111HV_Xg..99&99F&(+++++rG   zkwargs,namesr   r2   )r;   r<   r=   quuxpandac                     | }d}t          g dg dg dg|          } |j        t          |          fdd i|}t          j        ||           d S )Nr   )r4   r#   r5   r$   r6   )r7   r8   r9   r:   r   )rj   rk            r   r   r   )r   rX   r2   r   r    rE   rD   s          r   test_no_headerr     s     FD 	***,@,@,@A5  H V_Xd^^CCDCFCCF&(+++++rG   string_headerc                     d}d}| }t          j        t          |          5  |                    t	          |          |           d d d            d S # 1 swxY w Y   d S )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     s     7CDF	z	-	-	- 7 7v6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7r+   c                     d}| }t          ddgddgddgd          }|                    t          |          dg          }t          j        ||           d S )Nza,b,c
0,1,2
1,2,3r   r4   r#   r5   r   r   r   )r   r    r   rE   rD   s        r   test_singleton_headerr     sg     %DF1vQF!Q@@AAH__Xd^^QC_88F&(+++++rG   zdata,expectedz#A,A,A,B
one,one,one,two
0,40,34,0.1)r   (   "   皙?)r.   rl   r.   zone.1)r.   zone.2r/   rm   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                     | }|                     t          |          ddg          }t          j        ||           d S )Nr   r4   r   rK   )r   r    rE   r   rD   s        r   test_mangles_multi_indexr     sB    R F__Xd^^QF_;;F&(+++++rG   r@    Unnamed
NotUnnamedc                    | }ddg}|d                     |pddg          dz   }n d                     dg|pddgz             dz   }|                    t          |          ||          }g }|g d}t          |          D ])\  }}	|	sd	||n|dz    d
}	|                    |	           *t          j        t          |ddg                    }t          ddgddgg|          }
t          j
        ||
           d S )Nr   r4   ,r   z
0,1
2,3
4,5
z
,0,1
0,2,3
1,4,5
rI   )r   r   r   z	Unnamed: _level_001r#   r5   r$   r6   r   )joinr   r   	enumerateappendr   ro   zipr   rB   rC   )r   rJ   r@   r   r   r    rD   exp_columnsicolrE   s              r   test_multi_index_unnamedr     s?    FVFxx+B8,,/BBxx 3B84558PP__Xd^^Fi_PPFK,,G$$    3 	JI9#4aa!a%IIIC3$SsCj%A%ABBG1a&1a&)7;;;H&(+++++rG   c                     | }d}|                     t          |          dg d          }t          ddgddgd	d
gd          }t          j        ||           d S )Nza, b
1,2,3
5,6,4
r   r-   )r   r2   r4   r6   r#   r7   r5   r$   rA   r   r   r    rD   rE   s        r   6test_names_longer_than_header_but_equal_with_data_rowsr   -  so     FD __Xd^^A____MMF1vQF!Q@@AAH&(+++++rG   c                 r   | }d}d}t          j        g d          }t          g dg dg|          }|                    t	          |          ddg	          }t          j        ||j        d d                    |                    t	          |          ddg	          }t          j        ||           d S )
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))MaleR) Male R)r   z L) Femaler   )r   z R.1)Q?q=
ףp?)\(?(\?gQ?)r   r   r   r   g=
ףp=?r   r   r4   r   )r   ro   r   r   r   rB   rC   iloc)r   r   s1s2mirE   df1df2s           r    test_read_csv_multiindex_columnsr   :  s     F	SB	"  
		
 	
 	

 
B 	'	'	')G)G)GHRT  H //(2,,1v/
6
6C#x}RaR0111
//(2,,1v/
6
6C#x(((((rG   c                     | }d}t          j        t          d          5  |                    t	          |          ddg           d d d            d S # 1 swxY w Y   d S )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   Z  s     FD
 
N
 
 
 7 7 	1v6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   'AAAc                     | }d}|                     t          |          ddgd           }t          g ddt          j        t          j        gdg d	          }t          j        ||           d S )
Nzx,1,5
y,2
z,3
r^   ra   r   r3   r6   r^   ra   )xyz)r?   )r   r   r   r   nanrB   rC   r   s        r   #test_header_none_and_implicit_indexr   j  s~     FD__Xd^^C:d_KKFiiq"&"&122///  H &(+++++rG   c                     | }d}t          j        t          d          5  |                    t	          |          ddgd            d d d            d S # 1 swxY w Y   d S )Nx,1
y,2,5
z,3
z"Expected 2 fields in line 2, saw 3r   r^   ra   r   r   r   s      r   1test_header_none_and_implicit_index_in_second_rowr   v  s     FD	{*N	O	O	O G GsCjFFFG G G G G G G G G G G G G G G G G Gr   c                     | }d}|                     t          |          ddgd d          }t          ddgdd	gd
          }t          j        ||           d S )Nr   r^   ra   skip)r2   r   on_bad_linesr   r   r4   r5   r   rA   r   s        r   &test_header_none_and_on_bad_lines_skipr     sq     FD__sCjF   F SzA7788H&(+++++rG   c                     | }d}d}t          j        t          |          5  |                    t	          |          g d           d d d            d S # 1 swxY w Y   d S )Nza,b
1,2
z;Passed header=\[0,1,2\], len of 3, but only 2 lines in filer   )r   r4   r#   r   r   )r   r   r    r   s       r   test_header_missing_rowsr     s     FD IC	z	-	-	- : :yyy999: : : : : : : : : : : : : : : : : :s   'AAA)4__doc__collectionsr   ior   numpyr   r   pandas.errorsr   pandasr   r   r   pandas._testing_testingrB   markusefixturesskip_pyarrowr   r!   parametrizer'   r*   rF   rM   rU   rY   rZ   rq   rs   rx   r   r   r   r   r   r   r   r   r   ro   r   r   r   r   r   r   r   r   r    rG   r   <module>r      s   
 # " " " " "            % % % % % %         
       {&&~66 ( ( (3 3 3 ZZZB7#<==
7 
7 >=
7 D%=117 7 217 , , ,", , ,( , , ,*  5%.)'	
 a&E5>::H	

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