3
Ud1>                 @   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jZdd Zd	d
 Zejjddzddgd{dggdd Zejjdddgdd Zdd Zdd Zdd Zdd Zejjdedd gd!d"feddgdd gd#d$feddgdd gd%d&fgd'd( Zed)d*d+gZejjd,eddgd-ed.d|d}d~dddgd8ed.ed/d0ed/d1ed/d2ed3d4ed5d6ed5d7gd8gd9d: Zejjd,eddgd-edddddddgd8eded/d0ed/d1ed/d2ed3d4ed5d6ed5d7gd8gd;d< Zejjd,eddgd-edddddddgd8eded/d0ed/d1ed/d2ed3d4ed5d6ed5d7gd8gd=d> Z d?d@ Z!dAdB Z"dCdD Z#ejjdEddgdHdI Z$ejjd,e edd!gdJdK Z%ejjdLe dddd.dgfedMdNdOdPdQdRdSgfedd dTdUdVgdWdd dTdUdVgfgdXdY Z&ejjdd/d3gdZgd[d\ Z'd]d^ Z(ejjd_d`eddadbdcggej)ddddgdjfdkeddadbdcggej)ddddgdjfdmeddadbdcdcggej)dddddgdjfgdodp Z*ejjdqddggejjdrddsdtgdtdsgdtduggdvdw Z+dxdy Z,d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
MultiIndexc             C   s>   | }d}t jt|d td}|j|dgd W d 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   V/var/www/html/virt/lib64/python3.6/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 d Q R X d S )Nz$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 instead)r      )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 d 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 integers)r   )r
   )r   r   r   r   r   )r   r
   r   r   r   r   r    test_negative_multi_index_header*   s
    r   TFc             C   s<   | }d}d}t jt|d |jt||d W d Q R X d S )NzMyColumn
a
b
a
bz#Passing a bool to header is invalid)r   )r
   )r   r   	TypeErrorr   r   )r   r
   r   r   r   r   r   r   test_bool_header_arg8   s
    r   c             C   sf   | }d}|j t|dd d}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j|| d S )Nz$1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
ZField)prefixr
   r   r      r   r            	   r	                  ZField0ZField1ZField2ZField3ZField4)columns)r   r   r   tmassert_frame_equal)r   r   r   resultexpectedr   r   r   test_no_header_prefixG   s    &r0   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j|| 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)indexr+   )r   r   r   r,   r-   )r   r   r   r4   r.   r/   r   r   r   test_header_with_index_colU   s    
r9   c             C   sD   | }d}d}|j t|ddd}|j t|d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   r,   r-   )r   r   r   Zdata2r.   r/   r   r   r   test_header_not_first_linef   s    r;   c             C   sJ   | }t jddddd}d}|jt|ddddgddgd	}t j|| d S )
Nr   r!   r   r   )Zr_idx_nlevelsZc_idx_nlevelsa  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,   ZmakeCustomDataframer   r   r-   )r   r   r/   r   r.   r   r   r   test_header_multi_indexz   s
     r<   z
kwargs,msgr5   r6   )r:   zLindex_col must only contain row numbers when specifying a multi-index header)r:   r4   z9cannot specify names when specifying a multi-index header)r:   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 d Q R X d S )Na  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   r   r   r   )r   kwargsr   r   r   r   r   r   test_header_multi_index_invalid   s    "r>   r4   firstsecondr=   )r
   r!   aqrr   btcuv)Zskiprowsr4   c             C   sr   | }t ddddddgddd	d
ddggddgtjddddd d!gd}d}|jt|fddi|}tj|| d S )"Nr   r   r!   r   r   r"   r#   r$   r%   r	   r&   r'   onetworA   rB   rC   r   rD   rE   rF   rG   rH   )r8   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,12r:   r   )rA   rB   )rA   rC   )rA   r   )rD   rE   )rF   rG   )rF   rH   )r   r   from_tuplesr   r   r,   r-   )r   r=   r   r/   r   r.   r   r   r   &test_header_multi_index_common_format1   s    rL   c             C   sr   | }t ddddddgddd	d
ddggddgtjddddd d!gd}d}|jt|fddi|}tj|| d S )"Nr   r   r!   r   r   r"   r#   r$   r%   r	   r&   r'   rI   rJ   rA   rB   rC   r   rD   rE   rF   rG   rH   )r8   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,12r:   r   )rA   rB   )rA   rC   )rA   r   )rD   rE   )rF   rG   )rF   rH   )r   r   rK   r   r   r,   r-   )r   r=   r   r/   r   r.   r   r   r   &test_header_multi_index_common_format2   s    rM   c             C   s~   | }t ddddddgddd	d
ddggddgtjdddd d!d"gd}|jdd}d}|jt|fdd i|}tj|| d S )#Nr   r   r!   r   r   r"   r#   r$   r%   r	   r&   r'   rI   rJ   rA   rB   rC   r   rD   rE   rF   rG   rH   )r8   r+   T)Zdropz2a,a,a,b,c,c
q,r,s,t,u,v
1,2,3,4,5,6
7,8,9,10,11,12r:   )rA   rB   )rA   rC   )rA   r   )rD   rE   )rF   rG   )rF   rH   )r   r   rK   Zreset_indexr   r   r,   r-   )r   r=   r   r/   r   r.   r   r   r   &test_header_multi_index_common_format3  s    rN   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j|| d S )Nr   r!   r   r   r"   r$   r%   r	   r&   r'   int64)dtyper   r#   rA   rD   rF   rC   r   rE   rG   rH   r   rB   )levelscodesr4   )r8   r+   z2a,a,a,b,c,c
q,r,s,t,u,v
1,2,3,4,5,6
7,8,9,10,11,12)r
   r:   )	r   nparrayr   r   r   r   r,   r-   )r   r   r/   r   r.   r   r   r   0test_header_multi_index_common_format_malformed1G  s    $
rU   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j|| d S )Nr   r!   r   r   r"   r$   r%   r	   r&   r'   rO   )rP   r   r#   rA   rD   rF   rC   r   rE   rG   rH   r   rB   )rQ   rR   r4   )r8   r+   z1,a,a,b,c,c
q,r,s,t,u,v
1,2,3,4,5,6
7,8,9,10,11,12)r
   r:   )	r   rS   rT   r   r   r   r   r,   r-   )r   r   r/   r   r.   r   r   r   0test_header_multi_index_common_format_malformed2[  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j|| d S )Nr!   r   r   r"   r%   r	   r&   r'   rO   )rP   r   r#   r   r$   r   )rQ   rR   rA   rD   rF   r   rE   rG   rH   rB   )rQ   rR   r4   )r8   r+   z1,a,a,b,c,c
q,r,s,t,u,v
1,2,3,4,5,6
7,8,9,10,11,12)r
   r:   )r   rS   rT   r   r   r   r,   r-   )r   r   r/   r   r.   r   r   r   0test_header_multi_index_common_format_malformed3p  s     "rW   zdata,header1,2,3
4,5,6foo,bar,baz
1,2,3
4,5,6c             C   sF   | }|j tddddgd}|j t|dddg|d}tj|| d S )Nz1,2,3
4,5,6rA   rD   rF   )r4   )r4   r
   )r   r   r,   r-   )r   r   r
   r   r/   r.   r   r   r   !test_header_names_backward_compat  s    rZ   c             C   s6   | }t dddgd}|jtdf|}tj|| d S )NrA   rD   rF   )r+   za,b,c)r   r   r   r,   r-   )r   r=   r   r/   r.   r   r   r   test_read_only_header_no_rows  s    r[   zkwargs,namesX)r    ZX0ZX1ZX2ZX3ZX4r7   ZquuxZpanda)r4   c             C   sb   | }d}t dddddgddd	d
dgdddddgg|d}|jt|fdd i|}tj|| d S )Nz$1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
r   r   r!   r   r   r"   r#   r$   r%   r	   r&   r'   r(   r)   r*   )r+   r
   )r   r   r   r,   r-   )r   r=   r4   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 d Q R X d S )Nz*header must be integer or list of integersz1,2
3,4)r   )r
   )r   r   r   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j|| d S )Nza,b,c
0,1,2
1,2,3r   r   r   r!   )rA   rD   rF   )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(   "   g?r1   rI   one.1one.2r2   rJ   )r+   z%A,A,A,B
one,one,one.1,two
0,40,34,0.1one.1.1z/A,A,A,B,B
one,one,one.1,two,two
0,40,34,0.1,0.1two.1c             C   s*   | }|j t|ddgd}tj|| d S )Nr   r   )r
   )r   r   r,   r-   )r   r   r/   r   r.   r   r   r   test_mangles_multi_index  s    (rf   r:   r+    ZUnnamedZ
NotUnnamedc             C   s  | }ddg}|d kr,dj |p"ddgd }ndj dg|p>ddg d }|d krd}tjt|d |jt|||d	 W d Q R X n|jt|||d	}g }x>t|D ]2\}	}
|
sd
|d kr|	n|	d  d}
|j|
 qW tj	t
|ddg}tddgddgg|d}tj|| d S )Nr   r   ,rg   z
0,1
2,3
4,5
z
,0,1
0,2,3
1,4,5
zGPassed header=\[0,1\] are too many rows for this multi_index of columns)r   )r
   r:   z	Unnamed: Z_level_001r   r!   r   r   )r+   )joinr   r   r   r   r   	enumerateappendr   rK   zipr   r,   r-   )r   r:   r+   r   r
   r   r   r.   Zexp_columnsicolr/   r   r   r   test_multi_index_unnamed  s$     rq   c             C   s   | }d}d}t j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||jd d  |jt|ddgd}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 L Female R.1gQ?gq=
ףp?g)\(?g(\?gQ?g=
ףp=?)r+   r   r   )r
   )rr   rs   )rt   ru   )rt   rv   )rw   ru   )rw   rx   )r   rK   r   r   r   r,   r-   Ziloc)r   r   s1s2mir/   Zdf1Zdf2r   r   r    test_read_csv_multiindex_columns   s    "r|   r   )rA   rB   )rA   rC   )rA   r   )rD   rE   )rF   rG   )rF   rH   )rA   rB   )rA   rC   )rA   r   )rD   rE   )rF   rG   )rF   rH   )rA   rB   )rA   rC   )rA   r   )rD   rE   )rF   rG   )rF   rH   )rX   N)rY   r   )r1   rI   )r1   rb   )r1   rc   )r2   rJ   )r1   rI   )r1   rb   )r1   rd   )r2   rJ   )r1   rI   )r1   rb   )r1   rd   )r2   rJ   )r2   re   )-__doc__collectionsr   ior   ZnumpyrS   r   Zpandas.errorsr   Zpandasr   r   r   Zpandas._testingZ_testingr,   r   r   markZparametrizer   r   r0   r9   r;   r<   dictr>   Z
_TestTuplerL   rM   rN   rU   rV   rW   rZ   r[   r]   r^   r_   rK   rf   rq   r|   r   r   r   r   <module>   s   
	$"

&)