a
    é´«j%R  ã                   @   sp  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j d¡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 d0d1ƒe d0d2ƒe d0d3ƒe d4d5ƒe d6d7ƒe d6d8ƒgd/œg¡d9d:„ ƒƒZ!eej d,ddd"gid;g d.¢d/œd;e d0d1ƒe d0d2ƒe d0d3ƒe d4d5ƒe d6d7ƒe d6d8ƒgd/œg¡d<d=„ ƒƒZ"eej d,ddd"gid;g d.¢d/œd;e d0d1ƒe d0d2ƒe d0d3ƒe d4d5ƒe d6d7ƒe d6d8ƒgd/œg¡d>d?„ ƒƒZ#ed@dA„ ƒZ$edBdC„ ƒZ%edDdE„ ƒZ&edFdG„ ƒZ'ej dHdIdJg¡dKdL„ ƒZ(eej d,i ddig¡dMdN„ ƒƒZ)ej dOi g dP¢fdQg dR¢ig dR¢fg¡dSdT„ ƒZ*ej dd0d4gdUg¡dVdW„ ƒZ+edXdY„ ƒZ,eej dZd[eg d\¢ge -g d]¢¡d^�fd_eg d\¢ge -g d`¢¡d^�fdaeg db¢ge -g dc¢¡d^�fg¡ddde„ ƒƒZ.eej dddgg¡ej dfddgdhgdhdggdhdigg¡djdk„ ƒƒƒZ/edldm„ ƒZ0edndo„ ƒZ1edpdq„ ƒZ2edrds„ ƒZ3edtdu„ ƒZ4dvdw„ Z5edxdy„ ƒZ6edzd{„ ƒZ7ed|d}„ ƒZ8d~d„ Z9d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=ignore:Passing a BlockManager to DataFrame:DeprecationWarningZpyarrow_xfailZpyarrow_skipc                 C   sR   | }d}t jt|d��( tdƒ}|j|dgd� W d   ƒ n1 sD0    Y  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/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/io/parser/test_header.pyÚtest_read_with_bad_header   s
    r   c                 C   sL   | }d}t jtdd��" |jt|ƒdd� W d   ƒ n1 s>0    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   sL   | }d}t jtdd��" |jt|ƒ|d� W d   ƒ n1 s>0    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_header6   s    ÿr!   TFc                 C   sP   | }d}d}t jt|d��" |jt|ƒ|d� W d   ƒ n1 sB0    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_argD   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_colS   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   r9   r:   )r   r   r   Zdata2r;   r<   r   r   r   Útest_header_not_first_linee   s    rA   c                    sä   | }d}|j t|ƒg d¢ddgd�}dd„ ‰ ‡ fdd	„td
ƒD ƒ}tjdd	„ td
ƒD ƒdd	„ td
ƒD ƒgddgd�}tjdd	„ tdƒD ƒdd	„ tdƒD ƒdd	„ tdƒD ƒdd	„ tdƒD ƒgg d¢d�}t|||d�}t ||¡ d S )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   r+   r   r,   r   r+   r>   c                 S   s   d| › d|› �S )NÚRr'   r   )ÚrÚcr   r   r   Ú<lambda>‹   ó    z)test_header_multi_index.<locals>.<lambda>c                    s$   g | ]‰ ‡‡ fd d„t dƒD ƒ‘qS )c                    s   g | ]}ˆ ˆ|ƒ‘qS r   r   )Ú.0rF   )Ú
data_gen_frE   r   r   Ú
<listcomp>�   rH   z6test_header_multi_index.<locals>.<listcomp>.<listcomp>r,   )Úrange)rI   ©rJ   )rE   r   rK   �   rH   z+test_header_multi_index.<locals>.<listcomp>r-   c                 S   s   g | ]}d |› �‘qS )ZR_l0_gr   ©rI   Úir   r   r   rK   �   rH   c                 S   s   g | ]}d |› �‘qS )ZR_l1_gr   rN   r   r   r   rK   �   rH   ZR0ZR1r(   c                 S   s   g | ]}d |› �‘qS )ZC_l0_gr   rN   r   r   r   rK   ”   rH   r,   c                 S   s   g | ]}d |› �‘qS )ZC_l1_gr   rN   r   r   r   rK   •   rH   c                 S   s   g | ]}d |› �‘qS )ZC_l2_gr   rN   r   r   r   rK   –   rH   c                 S   s   g | ]}d |› �‘qS )ZC_l3_gr   rN   r   r   r   rK   —   rH   )ZC0ZC1ZC2ZC3)r7   r6   )r   r   rL   r   Zfrom_arraysr   r9   r:   )r   r   r   r;   r6   r7   r<   r   rM   r   Útest_header_multi_indexy   s&    "þüù	rP   z
kwargs,msgr?   r2   r3   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   sX   d}| }t jt|d��. |jt|ƒfdg d¢i|¤Ž W d   ƒ n1 sJ0    Y  d S )NrB   r   r   rC   r   )r   Úkwargsr   r   r   r   r   r   Útest_header_multi_index_invalidŸ   s    rS   Ú
_TestTupleÚfirstÚsecondrR   r,   ©)ÚaÚq)rX   rE   )rX   r   )ÚbÚt)rF   Úu)rF   Úv)Zskiprowsr)   rX   rY   rE   r   rZ   r[   rF   r\   r]   c                 C   sZ   | }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.   ©r/   r0   r1   r
   é   é   ÚoneÚtworW   r5   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   r9   r:   ©r   rR   r   r<   r   r;   r   r   r   Ú&test_header_multi_index_common_format1Ë   s    ÿýrg   r   c                 C   sZ   | }t g d¢g d¢gddgt g d¢¡d�}d}|jt|ƒfdd	i|¤Ž}t ||¡ d S )
Nr^   r_   rb   rc   rW   r5   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   rd   rf   r   r   r   Ú&test_header_multi_index_common_format2û   s    ÿýrh   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_   rb   rc   rW   r5   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,12r?   )r   r   re   Zreset_indexr   r   r9   r:   rf   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.   ©r0   r1   r
   r`   ra   Úint64©Údtyper+   r/   ©rX   rZ   rF   ©rE   r   r[   r\   r]   ©r   r   r+   r   r   ©r   r+   r   r,   r   rX   rY   ©ÚlevelsÚcodesr)   r5   ri   r   r>   ©	r   ÚnpÚarrayr   r   r   r   r9   r:   ©r   r   r<   r   r;   r   r   r   Ú0test_header_multi_index_common_format_malformed1Z  s    
ýý	r{   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+   r/   rp   rq   rr   rs   rY   rt   r5   ú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   rz   r   r   r   Ú0test_header_multi_index_common_format_malformed2o  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.   )r1   r
   r`   ra   rm   rn   r+   r/   r   r0   r   )ru   rv   rp   )r   r[   r\   r]   )r   r+   r   r   rC   rY   rt   r5   r|   r>   )r   rx   ry   r   r   r   r9   r:   rz   r   r   r   Ú0test_header_multi_index_common_format_malformed3…  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   )rX   r%   )rZ   r&   ©r7   za,b
A,B
,
1,2
3,4r   r   )r   re   r   r   r   r9   r:   )r   r   r   r7   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   sl   | }|j dkr.|d ur.tjjdd�}| |¡ |jtdƒg d¢d�}|jt|ƒg d¢|d�}t ||¡ d S )NÚpyarrowzDataFrame.columns are different)Úreasonr�   rp   r(   ©r)   r   )	Úenginer   ÚmarkZxfailZapplymarkerr   r   r9   r:   )r   r   r   Úrequestr   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   r9   r:   )r   rR   r   r<   r;   r   r   r   Útest_read_only_header_no_rows·  s    rŠ   zkwargs,namesrs   r)   )r2   r3   r4   ZquuxZ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.   r/   r0   r1   r
   )r`   ra   é   é   é   r   r   r‰   )r   rR   r)   r   r   r<   r;   r   r   r   Útest_no_headerÂ  s    ÿrŽ   Zstring_headerc                 C   sP   d}d}| }t jt|d��" |jt|ƒ|d� W d   ƒ n1 sB0    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%   rb   ©r%   zone.1)r%   zone.2©r&   rc   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   r@   )r   r   r<   r   r;   r   r   r   Útest_mangles_multi_indexï  s    )r˜   r7   Ú ZUnnamedZ
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 rpg d¢}t|ƒD ]2\}}	|	s d	|d u r’|n|d › d
�}	| |	¡ qxt 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: Z_level_0Ú0Ú1r   r,   r   r-   r   )Újoinr   r   Ú	enumerateÚappendr   re   Úzipr   r9   r:   )r   r?   r7   r   r   r   r;   Zexp_columnsrO   Ú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   r8   ©r   r   r   r;   r<   r   r   r   Ú6test_names_longer_than_header_but_equal_with_data_rowsE  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))ZMalerD   )ú Maleú R)r¥   z L)ú Femaler¦   )r§   z R.1)ç…ëQ¸…ë?çq=
×£på?ç)\�Âõ(ì?çö(\�Âõè?gìQ¸…ëé?)r¨   r©   rª   r«   g=
×£p=ê?r   r   r+   r   )r   re   r   r   r   r9   r:   Ziloc)r   r   Ús1Ús2Úmir<   Zdf1Zdf2r   r   r   Ú test_read_csv_multiindex_columnsR  s    ÿÿ	ÿr¯   c                 C   sP   | }d}t jtdd��& |jt|ƒddgd� W d   ƒ n1 sB0    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_checkr  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
rX   rZ   r„   r*   r-   ©rX   rZ   )ÚxÚyÚz)r6   )r   r   r   rx   Únanr9   r:   r£   r   r   r   Ú#test_header_none_and_implicit_index‚  s    ÿr¸   c                 C   sR   | }d}t jtdd��( |jt|ƒddgd d� W d   ƒ n1 sD0    Y  d S )Núx,1
y,2,5
z,3
z"Expected 2 fields in line 2, saw 3r   rX   rZ   r„   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¹   rX   rZ   Úskip)r)   r   Zon_bad_linesr´   r¶   r+   r,   r³   r8   r£   r   r   r   Ú&test_header_none_and_on_bad_lines_skip—  s    ÿr¼   c                 C   sT   | }d}d}t jt|d��& |jt|ƒg d¢d� W d   ƒ n1 sF0    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½   c                 C   s<   | }d}|j t|ƒdd�}tdgdddœƒ}t ||¡ d S )Nz1aa    bb(1,1)   cc(1,1)
                0  2  3.5z\s+)Úsepr   r   g      @)Zaazbb(1,1)zcc(1,1)r8   r£   r   r   r   Ú test_header_multiple_whitespaces¯  s
    r¿   c                 C   sn   | }d}d}t jt|dd��" |jt|ƒdd�}W d   ƒ n1 sD0    Y  tddd	giƒ}t  ||¡ d S )
Nza,b
1,2
3,4
    z;The 'delim_whitespace' keyword in pd.read_csv is deprecatedF)r	   Zcheck_stacklevelT)Zdelim_whitespaceza,bz1,2z3,4)r9   Zassert_produces_warningÚFutureWarningr   r   r   r:   )r   r   r   Zdepr_msgr;   r<   r   r   r   Útest_header_delim_whitespace¼  s    ÿ0rÁ   c                 C   sN   | }d}|j t|ƒd ddgdddd�}tddgd	d
ggdd�}t ||¡ d S )Nz
a,i,x
b,j,y
r   r+   zstring[pyarrow]r‚   )r   rQ   ro   Zdtype_backendr…   rX   rO   rZ   Újrn   r8   )Zpyarrow_parser_onlyr   r   r;   r<   r   r   r   Útest_usecols_no_header_pyarrowÎ  s    úrÃ   ):Ú__doc__Úcollectionsr   Úior   Únumpyrx   r   Zpandas.errorsr   Zpandasr   r   r   Zpandas._testingZ_testingr9   r†   ÚfilterwarningsZ
pytestmarkZusefixturesZxfail_pyarrowZskip_pyarrowr   r   Zparametrizer!   r#   r=   rA   rP   rS   rT   rg   rh   rj   r{   r}   r~   r€   rˆ   rŠ   rŽ   r�   r�   re   r˜   r¢   r¤   r¯   r²   r¸   rº   r¼   r½   r¿   rÁ   rÃ   r   r   r   r   Ú<module>   sd  ÿ
	



%
ý	þþóþ

þúþóþ
þúþóþ
þúþóþ



ÿ
	

þþþ





ÿþþ
ÿþþ
ÿþþíþ&ÿ"







