U
    `»{jI  ã                   @   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dddgddgg¡dd„ ƒZej dddg¡dd„ ƒZ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/d0d1d2d3d4d5gd6œd/ed7d8ƒed7d9ƒed7d:ƒed;d<ƒed=d>ƒed=d?ƒgd6œg¡d@dA„ ƒƒZeej d.ddd$gidd0d1d2d3d4d5gd6œded7d8ƒed7d9ƒed7d:ƒed;d<ƒed=d>ƒed=d?ƒgd6œg¡dBdC„ ƒƒZ eej d.ddd$gidd0d1d2d3d4d5gd6œded7d8ƒed7d9ƒed7d:ƒed;d<ƒed=d>ƒed=d?ƒgd6œg¡dDdE„ ƒƒZ!edFdG„ ƒZ"edHdI„ ƒZ#edJdK„ ƒZ$edLdM„ ƒZ%eej dNdOdPg¡dQdR„ ƒƒZ&eej d.i d dig¡dSdT„ ƒƒZ'ej dUi dd$dd/dgfdVdWidXdYdZd[d\gfd]d!d"d^d_d`gid!d"d^d_d`gfg¡dadb„ ƒZ(ej dd7d;gdcg¡ddde„ ƒZ)edfdg„ ƒZ*eej dhdieddjdkdlgge +dmdndodpg¡dq�fdreddjdkdlgge +dmdndsdpg¡dq�fdteddjdkdldlgge +dmdndsdpdug¡dq�fg¡dvdw„ ƒƒZ,eej d ddgg¡ej dxddydzgdzdygdzd{gg¡d|d}„ ƒƒƒZ-ed~d„ ƒZ.ed€d�„ ƒZ/ed‚dƒ„ ƒZ0ed„d…„ ƒZ1ed†d‡„ ƒZ2edˆd‰„ ƒZ3edŠd‹„ ƒZ4d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Ú
MultiIndexZpyarrow_skipc              	   C   s>   | }d}t jt|d�� tdƒ}|j|dgd� W 5 Q R X d S )Nzbut only \d+ lines in file©Úmatchz,,é
   ©Úheader)ÚpytestÚraisesÚ
ValueErrorr   Úread_csv)Úall_parsersÚparserÚmsgÚs© r   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/io/parser/test_header.pyÚtest_read_with_bad_header   s
    r   c              	   C   s8   | }d}t jtdd�� |jt|ƒdd� W 5 Q R X 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   s8   | }d}t jtdd�� |jt|ƒ|d� W 5 Q R X 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   s<   | }d}d}t jt|d�� |jt|ƒ|d� W 5 Q R X 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   s€   | }d}t jtdd�� |jt|ƒdd d�}W 5 Q R X tdddd	d
gdddddgdddddggdddddgd�}t  ||¡ d S )Nr   F©Zcheck_stacklevelÚField)Úprefixr   é   r   é   r   é   é   é   é   é	   r
   é   é   é   é   é   ZField0ZField1ZField2ZField3ZField4©Úcolumns)ÚtmÚassert_produces_warningÚFutureWarningr   r   r   Úassert_frame_equal©r   r   r   ÚresultÚexpectedr   r   r   Útest_no_header_prefixO   s    &þr<   c                 C   sf   | }d}dddg}|j t|ƒ|d�}tdddgd	d
dgdddggdddgdddgd�}t ||¡ d S )Nzfoo,1,2,3
bar,4,5,6
baz,7,8,9
ÚAÚBÚC©Únamesr'   r   r(   r   r)   r*   r+   r,   r-   ÚfooÚbarÚbaz©Úindexr4   ©r   r   r   r5   r8   )r   r   r   rA   r:   r;   r   r   r   Útest_header_with_index_col^   s    
ýrH   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   r5   r8   )r   r   r   Zdata2r:   r;   r   r   r   Útest_header_not_first_linep   s    rL   c                 C   sJ   | }t jddddd�}d}|jt|ƒddddgddgd	�}t  ||¡ d S )
Nr)   r(   r   r   )Zr_idx_nlevelsZ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'   rI   )r5   ZmakeCustomDataframer   r   r8   ©r   r   r;   r   r:   r   r   r   Útest_header_multi_index„   s
     rO   z
kwargs,msgrJ   rB   rC   zLindex_col must only contain row numbers when specifying a multi-index headerr'   )rJ   rA   z9cannot specify names when specifying a multi-index header)rJ   Zusecolsz;cannot specify usecols when specifying a multi-index headerc              	   C   sH   d}| }t jt|d��( |jt|ƒfdddddgi|—Ž W 5 Q R X d S )NrM   r   r   r   r'   r   r(   r   )r   Úkwargsr   r   r   r   r   r   Útest_header_multi_index_invalidš   s    rQ   Ú
_TestTupleÚfirstÚsecondrP   r(   ©ÚaÚq©rV   Úr©rV   r   ©ÚbÚt©ÚcÚu©r_   Úv)ZskiprowsrA   rV   rW   rY   r   r\   r]   r_   r`   rb   c                 C   sr   | }t ddddddgddd	d
ddggddgt ddddddg¡d�}d}|jt|ƒfddi|—Ž}t ||¡ d S )Nr'   r   r(   r   r)   r*   r+   r,   r-   r
   r.   r/   ÚoneÚtworU   rX   rZ   r[   r^   ra   rE   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   r5   r8   ©r   rP   r   r;   r   r:   r   r   r   Ú&test_header_multi_index_common_format1Æ   s    ÿýrh   c                 C   sr   | }t ddddddgddd	d
ddggddgt ddddddg¡d�}d}|jt|ƒfddi|—Ž}t ||¡ d S )Nr'   r   r(   r   r)   r*   r+   r,   r-   r
   r.   r/   rc   rd   rU   rX   rZ   r[   r^   ra   rE   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   re   rg   r   r   r   Ú&test_header_multi_index_common_format2ö   s    ÿýri   c                 C   s~   | }t ddddddgddd	d
ddggddgt ddddddg¡d�}|jdd�}d}|jt|ƒfdd i|—Ž}t ||¡ d S )Nr'   r   r(   r   r)   r*   r+   r,   r-   r
   r.   r/   rc   rd   rU   rX   rZ   r[   r^   ra   rE   T)Zdropú2a,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   rf   Zreset_indexr   r   r5   r8   rg   r   r   r   Ú&test_header_multi_index_common_format3%  s    ÿýrk   c                 C   s¢   | }t tjdddddgdddd	d
ggdd�tddgƒtdddgdddddggdddddgdddddggddgd�d�}d}|jt|ƒddgdd�}t ||¡ d S )Nr   r(   r   r)   r*   r,   r-   r
   r.   r/   Úint64©Zdtyper'   r+   rV   r\   r_   rY   r   r]   r`   rb   r   rW   ©ÚlevelsÚcodesrA   rE   rj   rI   ©	r   ÚnpÚarrayr   r   r   r   r5   r8   rN   r   r   r   Ú0test_header_multi_index_common_format_malformed1U  s    $
ýý	rt   c                 C   s¢   | }t tjdddddgdddd	d
ggdd�tddgƒtdddgdddddggdddddgdddddggd dgd�d�}d}|jt|ƒddgdd�}t ||¡ d S )Nr   r(   r   r)   r*   r,   r-   r
   r.   r/   rl   rm   r'   r+   rV   r\   r_   rY   r   r]   r`   rb   r   rW   rn   rE   ú1,a,a,b,c,c
q,r,s,t,u,v
1,2,3,4,5,6
7,8,9,10,11,12rI   rq   rN   r   r   r   Ú0test_header_multi_index_common_format_malformed2j  s    $
ýý
rv   c              
   C   s´   | }t tjddddgddddggd	d
�tddgddggddgddggd�tdddgddddggddddgddddggd dgd�d�}d}|jt|ƒddgddgd�}t ||¡ d S )Nr(   r   r)   r*   r-   r
   r.   r/   rl   rm   r'   r+   r   r,   r   )ro   rp   rV   r\   r_   r   r]   r`   rb   rW   rn   rE   ru   rI   )r   rr   rs   r   r   r   r5   r8   rN   r   r   r   Ú0test_header_multi_index_common_format_malformed3€  s     "ýý	rw   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   )rV   r=   )r\   r>   r3   za,b
A,B
,
1,2
3,4r   r   )r   rf   r   r   r   r5   r8   )r   r   r   r4   r;   r:   r   r   r   Ú"test_header_multi_index_blank_line•  s    rx   zdata,header)ú1,2,3
4,5,6N)zfoo,bar,baz
1,2,3
4,5,6r   c                 C   sF   | }|j tdƒdddgd�}|j t|ƒdddg|d�}t ||¡ d S )Nry   rV   r\   r_   r@   ©rA   r   rK   )r   r   r   r   r;   r:   r   r   r   Ú!test_header_names_backward_compat¡  s    r{   c                 C   s6   | }t dddgd�}|jtdƒf|Ž}t ||¡ d S )NrV   r\   r_   r3   za,b,c©r   r   r   r5   r8   )r   rP   r   r;   r:   r   r   r   Útest_read_only_header_no_rows®  s    r}   zkwargs,namesr&   ÚXZX0ZX1ZX2ZX3ZX4rA   rD   ZquuxZpandac              	   C   s¤   | }d}t dddddgddd	d
dgdddddgg|d�}d| ¡ krztjtdd��  |jt|ƒfdd i|—Ž}W 5 Q R X n|jt|ƒfdd i|—Ž}t ||¡ d S )Nr   r'   r   r(   r   r)   r*   r+   r,   r-   r
   r.   r/   r0   r1   r2   r3   r&   Fr$   r   )r   Úkeysr5   r6   r7   r   r   r8   )r   rP   rA   r   r   r;   r:   r   r   r   Útest_no_header¹  s    & ÿ&r€   Zstring_headerc              	   C   s<   d}d}| }t jt|d�� |jt|ƒ|d� W 5 Q R X 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(   )rV   r\   r_   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é(   é"   gš™™™™™¹?)r=   rc   )r=   zone.1)r=   zone.2)r>   rd   r3   z%A,A,A,B
one,one,one.1,two
0,40,34,0.1)r=   zone.1.1z/A,A,A,B,B
one,one,one.1,two,two
0,40,34,0.1,0.1)r>   ztwo.1c                 C   s*   | }|j t|ƒddgd�}t ||¡ d S )Nr   r'   r   rK   )r   r   r;   r   r:   r   r   r   Útest_mangles_multi_indexë  s    )r…   r4   Ú ZUnnamedZ
NotUnnamedc                 C   sê   | }ddg}|d kr,d  |p"ddg¡d }nd  dg|p>ddg ¡d }|jt|ƒ||d�}g }|d krrdddg}t|ƒD ]2\}}	|	s¢d|d kr”|n|d › d	�}	| |	¡ qzt 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
rI   z	Unnamed: Z_level_0Ú0Ú1r   r(   r   r)   r3   )Újoinr   r   Ú	enumerateÚappendr   rf   Úzipr   r5   r8   )r   rJ   r4   r   r   r   r:   Zexp_columnsÚiÚcolr;   r   r   r   Útest_multi_index_unnamed  s     
r�   c                 C   sN   | }d}|j t|ƒddddg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   rA   r'   r)   r   r*   r(   r   )r=   r>   r?   rG   r9   r   r   r   Ú6test_names_longer_than_header_but_equal_with_data_rowsA  s
    r‘   c                 C   s–   | }d}d}t  dddddg¡}tdd	d
ddgdd	d
ddg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)ZMaleÚR)ú Maleú R)r“   z L)ú Femaler”   )r•   z R.1g…ëQ¸…ë?gq=
×£på?g)\�Âõ(ì?gö(\�Âõè?gìQ¸…ëé?g=
×£p=ê?r3   r   r'   r   )r   rf   r   r   r   r5   r8   Ziloc)r   r   Ús1Ús2Úmir;   Zdf1Zdf2r   r   r   Ú test_read_csv_multiindex_columnsN  s(    ÿûÿ	 ÿr™   c              	   C   s<   | }d}t jtdd�� |jt|ƒddgd� W 5 Q R X 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_checkn  s     ÿrœ   c                 C   sX   | }d}|j t|ƒddgd d�}tdddgdtjtjgd	œd
ddgd�}t ||¡ d S )Nzx,1,5
y,2
z,3
rV   r\   rz   r'   r   r(   r)   ©rV   r\   ÚxÚyÚz)rF   )r   r   r   rr   Únanr5   r8   r9   r   r   r   Ú#test_header_none_and_implicit_index~  s     ÿr¢   c              	   C   s>   | }d}t jtdd�� |jt|ƒddgd d� W 5 Q R X d S )Núx,1
y,2,5
z,3
z"Expected 2 fields in line 2, saw 3r   rV   r\   rz   rš   r   r   r   r   Ú1test_header_none_and_implicit_index_in_second_rowŠ  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£   rV   r\   Úskip)rA   r   Zon_bad_linesrž   r    r'   r(   r�   rG   r9   r   r   r   Ú&test_header_none_and_on_bad_lines_skip“  s       ÿr¦   c              	   C   sB   | }d}d}t jt|d�� |jt|ƒdddgd� W 5 Q R X 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§   )5Ú__doc__Úcollectionsr   Úior   Únumpyrr   r   Zpandas.errorsr   Zpandasr   r   r   Zpandas._testingZ_testingr5   ÚmarkZusefixturesZskip_pyarrowr   r   Zparametrizer!   r#   r<   rH   rL   rO   rQ   rR   rh   ri   rk   rt   rv   rw   rx   r{   r}   r€   r�   r‚   rf   r…   r�   r‘   r™   rœ   r¢   r¤   r¦   r§   r   r   r   r   Ú<module>   sŒ  
	




ý	þþóþ

úþúþóþ
úþúþóþ
úþúþóþ



 ÿ		þýþ





ÿþþ

ÿþþ
ûÿþþíþ& ÿ"





