U
    f/e                     @   s  d Z ddlmZ ddlZddlZddlZddlZddlm	Z	m
Z
 ddlmZ dd Zdd Zejd	d
dgejddddgdd Zdd Zdd Zejddi e	ddgifdddie	ddgifdddgie	ddd gifd!dgd"d#e	ddgifd!dgd$d#e	dejdgifgd%d& Zd'd( Zejd)d*d+d,gd-d. Zejd/d"d$gd0d1 Zd2d3 Zejdd4dd5d6d7gd8d9 Zejdd4ddd:d;gd<d= ZdS )>zZ
Tests encoding functionality during parsing
for all of the parsers defined in parsers.py
    )BytesION)	DataFrameread_csvc                 C   sL   d}| }t d|}|j|d|d}tddggddgd	}t|| d S )
Ncp1255u   שלום:1234
562:123:)sepencodingi2  {   u   שלוםZ1234)columnsr   encoder   r   tmassert_frame_equal)all_parsersr   parserdataresultexpected r   H/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/io/parser/test_encoding.pytest_bytes_io_input   s    r   c                 C   s@   | }t d }|j|ddd d}tddgg}t|| d S )Nu   Łaski, Jan;1;utf-8)r   r   headeru   Łaski, Jan   r   )r   r   r   r   r   r   r   r   test_read_csv_unicode   s
    r   r   ,	r   utf-16zutf-16lezutf-16bec              
   C   s   | }d d|}dtd d}|dd}d}t|}d	d
lm} ||}	t|d}
|
|	 W 5 Q R X t	||}|||d}|j
|fd|i|}|j
|fd|i|}|  t|| W 5 Q R X d S )Nz)skip this
skip this too
A,B,C
1,2,3
4,5,6r   __
   z__.csv   )r   Zskiprowsr   r   )TextIOWrapperwbr   r   )replacer   Zrandsensure_cleanior"   r   openwriter   r   closer   )r   r   r   r   r   pathkwargsutf8r"   
bytes_datafZbytes_bufferr   r   r   r   r   test_utf16_bom_skiprows(   s&     

r0   c                 C   s6   t j|d}| }|j|ddd}t|dks2td S )Nzutf16_ex.txtr   r   )r   r   2   )osr+   joinr   lenAssertionError)r   csv_dir_pathr+   r   r   r   r   r   test_utf16_exampleJ   s    r7   c                 C   sL   t j|d}| }|j|d dd}|d}|d d }d}||ksHtd S )Nunicode_series.csvlatin-1)r   r   r   r   i`  u$   Á köldum klaka (Cold Fever) (1994))r2   r+   r3   r   Z	set_indexr5   )r   r6   r+   r   r   gotr   r   r   r   test_unicode_encodingQ   s    
r;   zdata,kwargs,expectedza
1ar   z"a"
1	quotechar"zb
1namesb1z
1T)r?   Zskip_blank_linesFc                    sD   | }d d fdd}|j ||fdi|}t|| d S )Nu   ﻿r   c                    s    |   }t|S )N)r   r   )_dataZbom_databomr-   r   r   _encode_data_with_bomv   s    z,test_utf8_bom.<locals>._encode_data_with_bomr   )r   r   r   )r   r   r,   r   r   rE   r   r   rC   r   test_utf8_bom]   s    rF   c                 C   sL   t dgdgd}| }||}d|}|jt||d}t|| d S )Ng333333@test)Zmb_numZ	multibytezmb_num,multibyte
4.8,testr$   )r   formatr   r   r   r   r   )r   	utf_valueencoding_fmtr   r   r   r   r   r   r   r   test_read_csv_utf_aliases~   s    

rK   zfile_path,encoding))r'   r   csvz	test1.csvr   ))r'   r   r   r8   r9   ))r'   r   r   zsauron.SHIFT_JIS.csvshiftjisc              	   C   s   | }|| }|j ||d}t||d}| |}	|jr<tW 5 Q R X t||	 t|dd}
|j |
|d}	|
jrxtW 5 Q R X t||	 t|ddd}
|j |
|d}	|
jrtW 5 Q R X t||	 d S )Nr$   rb)moder   )rO   	buffering)r   r(   closedr5   r   r   )r   r6   	file_pathr   datapathr   Zfpathr   far   Zfbr   r   r   test_binary_mode_file_buffers   s    
rU   pass_encodingc           	   	   C   sr   | }| |}tddgi}tjd|dd<}|d |d |j||rP|nd d}t|| W 5 Q R X d S )	NZfoobarzw+T)rO   r   Zreturn_filelikezfoo
barr   r$   )rH   r   r   r&   r)   seekr   r   )	r   rI   rJ   rV   r   r   r   r/   r   r   r   r   test_encoding_temp_file   s    


rY   c              	   C   s   | }d}|j dkrtd d}d}t||gi}t N}|| d| | |d |j	||d}t
|| |jrtW 5 Q R X d S )	Nz	shift-jispythonz3NamedTemporaryFile does not work with Python engineu	   てすとu   こむ
r   r$   )Zenginepytestskipr   tempfileNamedTemporaryFiler)   r   rX   r   r   r   rQ   r5   )r   r   r   titler   r   r/   r   r   r   r   test_encoding_named_temp_file   s    



ra   r   z	utf-16-bez	utf-16-lezutf-32c                 C   sR   d}t || }t|d| d}tddgddgdd	ggd
dgd}t|| d S )Nu   a	b
：foo	0
bar	1
baz	2r   )	delimiterr   u   ：foor   rW   r   Zbazr!   r<   r@   )r   r
   r   )r   r   Zencoded_datar   r   r   r   r   %test_parse_encoded_special_characters   s
    "rc   r   r9   c              	   C   sp   | }t ddddgddddgd	d
ddgd}t &}|j|d|d |j||dd}W 5 Q R X t|| d S )NZRaphaelZ	DonatellozMiguel AngelZLeonardoZredZpurpleZorangeZblueZsaizbo staffZnunchunkZkatana)namemaskZweaponF)indexr   T)r   Z
memory_map)r   r   r&   Zto_csvr   r   )r   r   r   r   fileZdfr   r   r   test_encoding_memory_map   s    



rh   )__doc__r'   r   r2   r^   Znumpynpr\   Zpandasr   r   Zpandas._testingZ_testingr   r   r   markZparametrizer0   r7   r;   nanrF   rK   rU   rY   ra   rc   rh   r   r   r   r   <module>   s\   	 



 
