o
    d!F                     @   s@  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d	 Zd
d Zejdg dddggdd Zejdddgdd Zedd Zdd Zed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%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.d0ed.d1ed2d3ed4d5ed4d6gd-gd7d8 Zeejd*ddd gid9g d,d-d9ed.d/ed.d0ed.d1ed2d3ed4d5ed4d6gd-gd:d; Zeejd*ddd gid9g d,d-d9ed.d/ed.d0ed.d1ed2d3ed4d5ed4d6gd-gd<d= Z ed>d? Z!ed@dA Z"edBdC Z#edDdE Z$eejdFdGdHgdIdJ Z%eejd*i ddigdKdL Z&ejdMi g dNfdOg dPig dPfgdQdR Z'ejdd.d2gdSgdTdU Z(edVdW Z)eejdXdYeg dZge*g d[d\fd]eg dZge*g d^d\fd_eg d`ge*g dad\fgdbdc Z+eejdddggejddddedfgdfdegdfdgggdhdi Z,edjdk Z-edldm Z.edndo Z/edpdq Z0edrds Z1edtdu Z2edvdw Z3dS )xzx
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                 C   sT   | }d}t jt|d td}|j|dgd W d    d S 1 s#w   Y  d S )Nzbut only \d+ lines in filematchz,,
   header)pytestraises
ValueErrorr   read_csv)all_parsersparsermsgs r   g/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/io/parser/test_header.pytest_read_with_bad_header   s   "r   c                 C   sN   | }d}t jtdd |jt|dd W d    d S 1 s 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   datar   r   r   test_negative_header#   s   "r   r   )r         c                 C   sN   | }d}t jtdd |jt||d W d    d S 1 s 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   r   r   r    test_negative_multi_index_header2   s   "r"   TFc                 C   sR   | }d}d}t jt|d |jt||d W d    d S 1 s"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   r   r   r   test_bool_header_arg@   s   "r$   c                 C   sZ   | }d}g d}|j t||d}tg dg dg dgg dg dd}t|| 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   r*   resultexpectedr   r   r   test_header_with_index_colO   s   r>   c                 C   sD   | }d}d}|j t|ddd}|j t|ddd}t|| 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   r:   r;   )r   r   r   data2r<   r=   r   r   r   test_header_not_first_linea   s   rC   c                 C   sF   | }t jddddd}d}|jt|g ddd	gd
}t || d S )Nr.   r-   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   r,   r   r-   r   r,   r?   )r:   makeCustomDataframer   r   r;   r   r   r=   r   r<   r   r   r   test_header_multi_indexu   s
   rJ   z
kwargs,msgr@   r3   r4   zLindex_col must only contain row numbers when specifying a multi-index headerr,   )r@   r*   z9cannot specify names when specifying a multi-index header)r@   usecolsz;cannot specify usecols when specifying a multi-index headerc                 C   sZ   d}| }t jt|d |jt|fdg di| W d    d S 1 s&w   Y  d S )NrF   r	   r   rG   r   )r   kwargsr   r   r   r   r   r   test_header_multi_index_invalid   s
    "rM   
_TestTuplefirstsecondrL   r-   )aq)rR   r)rR   r   )bt)cu)rW   v)skiprowsr*   rR   rS   rT   r   rU   rV   rW   rX   rY   c                 C   Z   | }t g dg dgddgtg dd}d}|jt|fdd	i|}t|| d S )
Nr,   r   r-   r    r.   r/   r0   r1   r2   r         onetworQ   r6   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,12r@   r   r   r   from_tuplesr   r   r:   r;   r   rL   r   r=   r   r<   r   r   r   &test_header_multi_index_common_format1   s   re   r   c                 C   r[   )
Nr\   r]   r`   ra   rQ   r6   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,12r@   r   rb   rd   r   r   r   &test_header_multi_index_common_format2   s   rf   c                 C   sf   | }t g dg dgddgtg dd}|jdd}d	}|jt|fd
d i|}t|| d S )Nr\   r]   r`   ra   rQ   r6   T)drop2a,a,a,b,c,c
q,r,s,t,u,v
1,2,3,4,5,6
7,8,9,10,11,12r@   )r   r   rc   reset_indexr   r   r:   r;   rd   r   r   r   &test_header_multi_index_common_format3  s   rj   c                 C   s   | }t tjg dg dgddtddgtg dg dgg d	g d
gddgdd}d}|jt|ddgdd}t|| d S )Nr   r-   r    r.   r/   r1   r2   r   r^   r_   int64dtyper,   r0   rR   rU   rW   rT   r   rV   rX   rY   r   r   r,   r   r   r   r,   r   r-   r    rR   rS   levelscodesr*   r6   rh   r   r?   	r   nparrayr   r   r   r   r:   r;   rI   r   r   r   0test_header_multi_index_common_format_malformed1F  s   
	rz   c                 C   s   | }t tjg dg dgddtddgtg dg dgg d	g d
gd dgdd}d}|jt|ddgdd}t|| d S )Nrk   rl   rm   rn   r,   r0   rp   rq   rr   rs   rS   rt   r6   1,a,a,b,c,c
q,r,s,t,u,v
1,2,3,4,5,6
7,8,9,10,11,12r   r?   rw   rI   r   r   r   0test_header_multi_index_common_format_malformed2[  s   

r|   c                 C   s   | }t tjg dg dgddtddgddggd	dgd	dggd
tg dg dgg dg dgd dgdd}d}|jt|d	dgd	dgd}t|| d S )N)r-   r    r.   r/   )r2   r   r^   r_   rm   rn   r,   r0   r   r1   r   )ru   rv   rp   )r   rV   rX   rY   )r   r,   r   r   rG   rS   rt   r6   r{   r?   )r   rx   ry   r   r   r   r:   r;   rI   r   r   r   0test_header_multi_index_common_format_malformed3q  s   "	r}   c                 C   s^   | }d d gddgddgg}t ddg}t||d}d}|jt|d	dgd
}t|| d S )Nr,   r   r-   r    )rR   r&   )rU   r'   r8   za,b
A,B
,
1,2
3,4r   r   )r   rc   r   r   r   r:   r;   )r   r   r   r8   r=   r<   r   r   r   "test_header_multi_index_blank_line  s   r   zdata,header)1,2,3
4,5,6N)zfoo,bar,baz
1,2,3
4,5,6r   c                 C   sB   | }|j tdg dd}|j t|g d|d}t|| d S )Nr   rp   r)   r*   r   rA   )r   r   r   r   r=   r<   r   r   r   !test_header_names_backward_compat  s   r   c                 C   s8   | }t g dd}|jtdfi |}t|| d S )Nrp   r~   za,b,cr   r   r   r:   r;   )r   rL   r   r=   r<   r   r   r   test_read_only_header_no_rows  s   r   zkwargs,namesrs   r*   )r3   r4   r5   quuxpandac                 C   sP   | }d}t g dg dg dg|d}|jt|fdd i|}t|| d S )Nr   )r,   r   r-   r    r.   )r/   r0   r1   r2   r   )r^   r_            r~   r   r   )r   rL   r*   r   r   r=   r<   r   r   r   test_no_header  s   r   string_headerc                 C   sR   d}d}| }t jt|d |jt||d W d    d S 1 s"w   Y  d S )Nz*header must be integer or list of integersz1,2
3,4r	   r   r   )r   r   r   r   r   r   r   r   test_non_int_header  s   "r   c                 C   sH   d}| }t ddgddgddgd}|jt|dgd}t|| d S )Nza,b,c
0,1,2
1,2,3r   r,   r   r-   rp   r   r   )r   r   r   r=   r<   r   r   r   test_singleton_header  s
   r   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'   ra   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                 C   s*   | }|j t|ddgd}t|| d S )Nr   r,   r   rA   )r   r   r=   r   r<   r   r   r   test_mangles_multi_index  s   )r   r8    Unnamed
NotUnnamedc                 C   s   | }ddg}|d u rd |pddgd }nd dg|pddg d }|jt|||d}g }|d u r8g d}t|D ]\}}	|	sPd	|d u rI|n|d  d
}	||	 q<tt|ddg}tddgddgg|d}
t	
||
 d S )Nr   r,   ,r   z
0,1
2,3
4,5
z
,0,1
0,2,3
1,4,5
r?   )r   r   r   z	Unnamed: _level_001r   r-   r    r.   r~   )joinr   r   	enumerateappendr   rc   zipr   r:   r;   )r   r@   r8   r   r   r   r<   exp_columnsicolr=   r   r   r   test_multi_index_unnamed  s    r   c                 C   sL   | }d}|j t|dg dd}tddgddgd	d
gd}t|| d S )Nza, b
1,2,3
5,6,4
r   r%   )r   r*   r,   r.   r   r/   r-   r    r9   r   r   r   r<   r=   r   r   r   6test_names_longer_than_header_but_equal_with_data_rows-  s
   r   c                 C   s   | }d}d}t g d}tg dg dg|d}|jt|ddgd	}t||jd d  |jt|ddgd	}t|| 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   r,   r   )r   rc   r   r   r   r:   r;   iloc)r   r   s1s2mir=   df1df2r   r   r    test_read_csv_multiindex_columns:  s   	r   c                 C   sR   | }d}t jtdd |jt|ddgd W d    d S 1 s"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   caser   r   r   'test_read_csv_multi_header_length_checkZ  s   "r   c                 C   sT   | }d}|j t|ddgd d}tg ddtjtjgdg dd	}t|| d S )
Nzx,1,5
y,2
z,3
rR   rU   r   r+   r.   rR   rU   )xyz)r7   )r   r   r   rx   nanr:   r;   r   r   r   r   #test_header_none_and_implicit_indexj  s   r   c                 C   sT   | }d}t jtdd |jt|ddgd d W d    d S 1 s#w   Y  d S )Nx,1
y,2,5
z,3
z"Expected 2 fields in line 2, saw 3r	   rR   rU   r   r   r   r   r   r   1test_header_none_and_implicit_index_in_second_rowv  s
   "r   c                 C   sH   | }d}|j t|ddgd dd}tddgdd	gd
}t|| d S )Nr   rR   rU   skip)r*   r   on_bad_linesr   r   r,   r-   r   r9   r   r   r   r   &test_header_none_and_on_bad_lines_skip  s   r   c                 C   sV   | }d}d}t jt|d |jt|g dd W d    d S 1 s$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   r,   r   r   r   )r   r   r   r   r   r   r   test_header_missing_rows  s   "r   )4__doc__collectionsr   ior   numpyrx   r   pandas.errorsr   pandasr   r   r   pandas._testing_testingr:   markusefixturesskip_pyarrowr   r   parametrizer"   r$   r>   rC   rJ   rM   rN   re   rf   rj   rz   r|   r}   r   r   r   r   r   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sX   
	




	







		









&"





