o
    Û­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:DeprecationWarningÚpyarrow_xfailÚ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   ú_/var/www/html/CropPilot/venv/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_header6   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_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   r;   r<   )r   r   r   Údata2r=   r>   r   r   r   Útest_header_not_first_linee   s   rD   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>‹   s    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   )Ú.0rI   )Ú
data_gen_frH   r   r   Ú
<listcomp>�   ó    z6test_header_multi_index.<locals>.<listcomp>.<listcomp>r.   )Úrange)rK   ©rL   )rH   r   rM   �   s   $ z+test_header_multi_index.<locals>.<listcomp>r/   c                 S   ó   g | ]}d |› �‘qS )ÚR_l0_gr   ©rK   Úir   r   r   rM   �   rN   c                 S   rQ   )ÚR_l1_gr   rS   r   r   r   rM   �   rN   ÚR0ÚR1r*   c                 S   rQ   )ÚC_l0_gr   rS   r   r   r   rM   ”   rN   r.   c                 S   rQ   )ÚC_l1_gr   rS   r   r   r   rM   •   rN   c                 S   rQ   )ÚC_l2_gr   rS   r   r   r   rM   –   rN   c                 S   rQ   )ÚC_l3_gr   rS   r   r   r   rM   —   rN   )ÚC0ÚC1ÚC2ÚC3)r9   r8   )r   r   rO   r   Úfrom_arraysr   r;   r<   )r   r   r   r=   r8   r9   r>   r   rP   r   Útest_header_multi_indexy   s&   "þüù	ra   z
kwargs,msgrA   r4   r5   zLindex_col must only contain row numbers when specifying a multi-index headerr-   )rA   r+   z9cannot specify names when specifying a multi-index header)rA   Ú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 )NrE   r
   r   rF   r   )r   Úkwargsr   r   r   r   r   r   Útest_header_multi_index_invalidŸ   s
    "ÿrd   Ú
_TestTupleÚfirstÚsecondrc   r.   ©)ÚaÚq)ri   rH   )ri   r   )ÚbÚt)rI   Úu)rI   Úv)Úskiprowsr+   ri   rj   rH   r   rk   rl   rI   rm   rn   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/   r0   ©r1   r2   r3   r   é   é   ÚoneÚtworh   r7   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,12rA   r   ©r   r   Úfrom_tuplesr   r   r;   r<   ©r   rc   r   r>   r   r=   r   r   r   Ú&test_header_multi_index_common_format1Ë   s   ÿýrz   r    c                 C   rp   )
Nrq   rr   ru   rv   rh   r7   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,12rA   r   rw   ry   r   r   r   Ú&test_header_multi_index_common_format2û   s   ÿýr{   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 )Nrq   rr   ru   rv   rh   r7   T)Údropú2a,a,a,b,c,c
q,r,s,t,u,v
1,2,3,4,5,6
7,8,9,10,11,12rA   )r   r   rx   Úreset_indexr   r   r;   r<   ry   r   r   r   Ú&test_header_multi_index_common_format3*  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 )N©r    r.   r!   r/   r0   ©r2   r3   r   rs   rt   Úint64©Údtyper-   r1   ©ri   rk   rI   ©rH   r   rl   rm   rn   ©r   r   r-   r    r    ©r   r-   r    r.   r!   ri   rj   ©ÚlevelsÚcodesr+   r7   r}   r   r@   ©	r   ÚnpÚarrayr   r   r   r   r;   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 )Nr€   r�   r‚   rƒ   r-   r1   r…   r†   r‡   rˆ   rj   r‰   r7   ú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@   rŒ   r�   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/   r0   )r3   r   rs   rt   r‚   rƒ   r-   r1   r    r2   r   )rŠ   r‹   r…   )r   rl   rm   rn   )r   r-   r    r    rF   rj   r‰   r7   r‘   r@   )r   r�   rŽ   r   r   r   r;   r<   r�   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!   )ri   r'   )rk   r(   ©r9   za,b
A,B
,
1,2
3,4r   r   )r   rx   r   r   r   r;   r<   )r   r   r   r9   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–   r…   r*   ©r+   r   )	Úenginer   ÚmarkÚxfailÚapplymarkerr   r   r;   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 )Nr…   r”   za,b,c©r   r   r   r;   r<   )r   rc   r   r>   r=   r   r   r   Útest_read_only_header_no_rows·  s   r¡   zkwargs,namesrˆ   r+   )r4   r5   r6   Ú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/   )r0   r1   r2   r3   r   )rs   rt   é   é   é   r”   r   r    )r   rc   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.   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)r   é(   é"   çš™™™™™¹?)©r'   ru   ©r'   zone.1)r'   zone.2©r(   rv   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   rB   )r   r   r>   r   r=   r   r   r   Útest_mangles_multi_indexï  s   )r²   r9   Ú Ú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   rx   Úzipr   r;   r<   )r   rA   r9   r   r   r   r=   Úexp_columnsrT   Ú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    r0   r.   r!   r:   ©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))ÚMalerG   )ú 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   rx   r   r   r   r;   r<   Úiloc)r   r   Ús1Ús2Úmir>   Údf1Údf2r   r   r   Ú test_read_csv_multiindex_columnsR  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_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
ri   rk   r™   r,   r/   ©ri   rk   )ÚxÚyÚz)r8   )r   r   r   r�   Únanr;   r<   rÁ   r   r   r   Ú#test_header_none_and_implicit_index‚  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
   ri   rk   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Û   ri   rk   Úskip)r+   r   Úon_bad_linesrÖ   rØ   r-   r.   rÕ   r:   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à   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      @)Úaazbb(1,1)zcc(1,1)r:   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 s"w   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   Úcheck_stacklevelT)Údelim_whitespaceza,bz1,2z3,4)r;   Úassert_produces_warningÚFutureWarningr   r   r   r<   )r   r   r   Údepr_msgr=   r>   r   r   r   Útest_header_delim_whitespace¼  s   ÿý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   rb   r„   Údtype_backendrš   ri   rT   rk   Újrƒ   r:   )Úpyarrow_parser_onlyr   r   r=   r>   r   r   r   Útest_usecols_no_header_pyarrowÎ  s   úrí   ):Ú__doc__Úcollectionsr   Úior   Únumpyr�   r   Úpandas.errorsr   Úpandasr   r   r   Úpandas._testingÚ_testingr;   r›   ÚfilterwarningsÚ
pytestmarkÚusefixturesÚxfail_pyarrowÚskip_pyarrowr   r   Úparametrizer#   r%   r?   rD   ra   rd   re   rz   r{   r   r�   r’   r“   r•   rŸ   r¡   r§   r©   rª   rx   r²   rÀ   rÂ   rÑ   rÔ   rÚ   rÜ   rß   rà   rã   ré   rí   r   r   r   r   Ú<module>   sf   ÿ
	



%
ý	þþóþ

þúþóþ
þúþóþ
þúþóþ



ÿ
	

þþþ




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