o
    5cn                     @   s  d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddl	Z	ddl
ZddlZddlmZmZmZ ddlmZmZmZmZmZ ddlmZ dd	lmZ dd
lmZ ejdZ ejdZ!dd Z"dd Z#e dd Z$ej%dddgdd Z&e dd Z'dd Z(e dd Z)dd Z*e ej%d d!d"gd#d$ Z+e ej%d g d%d&d' Z,d(d) Z-e d*d+ Z.e d,d- Z/e d.d/ Z0d0d1 Z1e d2d3 Z2e ej%d4ddd5gd6d7ggd8d9 Z3e ej%d:d;i dfd;d4d<gidfd=g d>d<gd?ed<gdgej4d@fd;g d>d<gd?ed<gdAfgdBdC Z5e ej%dDddg dEddFeg dGdHej6dIggfdg dJddKedLdHgdMej6gdNdOgdPfgdQdR Z7dSdT Z8dUdV Z9e ej%dWddgdXdY Z:e!ej%dZd[dg dGd\ej6dIgg d]gfd^dg dGd\ej6dIgg d]gfd[dg dGej6ej6ej6gej6ej6ej6gd\ej6dIgej6ej6ej6gg d]gfgd_d` Z;e dadb Z<e ej%dcddeg deg deg degg dfg dgdhfdieg djg dkg dlgg dgdAfgdmdn Z=dodp Z>ej%dqg drdsdt Z?dudv Z@dwdx ZAej%dydzd{gd|d} ZBe d~d ZCe dd ZDe ej%d eEd5ddd ZFe dd ZGdd ZHe dd ZIej%dd[dgdd ZJdd ZKej%dddiddigdd ZLdd ZMej%dd[dgdd ZNej%ddzd{gdd ZOej%ddzd{gej%ddddgfdgdd ZPe dd ZQe dd ZRe ej%dddgdd ZSdd ZTdd ZUdd ZVdS )zy
Tests that work on both the Python and C engines but do not have a
specific classification into the other test modules.
    )datetime)	signature)StringION)Path)EmptyDataErrorParserErrorParserWarning)	DataFrameIndexSeries	Timestampcompat)TextFileReader)CParserWrapperpyarrow_xfailpyarrow_skipc                  C   s   G dd dt } G dd dt}d}ddgg}ddgtd	td
gd}t|ddgd}|  }g d|dd|_d|_|t|fi |j|_| }t	
|| d S )Nc                   @   s   e Zd ZdddZdS )z=test_override_set_noconvert_columns.<locals>.MyTextFileReaderreturnNc                 S   s   d| _ d| _d S )Nr   F)_currowsqueezeself r   e/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/io/parser/common/test_common_basic.py__init__+   s   
zFtest_override_set_noconvert_columns.<locals>.MyTextFileReader.__init__)r   N)__name__
__module____qualname__r   r   r   r   r   MyTextFileReader*   s    r   c                   @   s   e Zd Zdd ZdS )z=test_override_set_noconvert_columns.<locals>.MyCParserWrapperc                 S   s*   | j dkrt| j| _| j  t| S )Ninteger)usecols_dtypelistusecolsreverser   _set_noconvert_columnsr   r   r   r   r#   0   s   


zTtest_override_set_noconvert_columns.<locals>.MyCParserWrapper._set_noconvert_columnsN)r   r   r   r#   r   r   r   r   MyCParserWrapper/   s    r$   z1a,b,c,d,e
0,1,20140101,0900,4
0,1,20140102,1000,4      r   z2014-01-01 09:00:00z2014-01-02 10:00:00)ac_dr(   r'   columns)r   r&      ,)r!   parse_dates	delimiterc)r   r   r   r	   optionsenginer   _enginereadtmassert_frame_equal)r   r$   datar-   colsexpectedparserresultr   r   r   #test_override_set_noconvert_columns%   s"   
r;   c                 C   s   t  rdnd}| }|ttj| }|j|ddd}tg dg dg dg d	g d
g dg dgg dtt	dddt	dddt	dddt	dddt	dddt	dddt	dddgddd}t
|| d S )Nzfile:///zfile://r   T	index_colr-   gA	]^?gֈ`|@g% TO׿gnIg=HOC?gW\g~q"BĿg=4?gZH?g7ne?g>ݦ4g_YiR?g䞮X?gt]?gnk3Am?g-?gP,߿g~W[I?gN6gFgZ&|?g4e?gv?gg]W?gp̲'?gsĿgq?g!?gG6WABCD  r%   r+               
      indexnamer*   rQ   )r   is_platform_windowsstrospathabspathread_csvr	   r
   r   r4   r5   )all_parserscsv1prefixr9   fnamer:   r8   r   r   r   test_read_csv_localT   s6   	






	r_   c                 C   sH   | }d}t ddgddgddgd}|jt|d	d
d}t|| d S )NzA|B|C
1|2,334|5
10|13|10.
r%   rO   i	     rL         $@rF   rG   rH   |r,   )sep	thousandsr	   rZ   r   r4   r5   r[   r9   r6   r8   r:   r   r   r   test_1000_sepv   s
   rh   r   TFc                 C   sz   d}| }t g ddd}tg dd|d}|jtdt|dd |d	}|s0t|}t|| d S t|| |j	r;J d S )
Nza,1
b,2
c,3
r'   br/   r   rR   r%   r&   r+   r%   )rS   rQ   zThe squeeze argument has been deprecated and will be removed in a future version. Append .squeeze\("columns"\) to the call to squeeze.

)r=   headerr   )
r
   r   read_csv_check_warningsFutureWarningr   r	   r4   r5   assert_series_equal_is_view)r[   r   r6   r9   rQ   r8   r:   r   r   r   test_squeeze   s"   
rq   c                 C   sL   d}| }t g dg dg dgtjg dd}|t|}t|| d S )Nz,A,B,C,,
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
)r%   r&   r+   rK   rL   )rM   rN      	   rO   )rP      r`         )rF   rG   rH   z
Unnamed: 3z
Unnamed: 4)dtyper*   )r	   npint64rZ   r   r4   r5   r[   r6   r9   r8   r:   r   r   r   test_unnamed_columns   s   r{   c                 C   sB   d}| }t g dg dg dd}|t|}t|| d S )NzA,B,C
a,1,2
b,3,4
c,4,5
ri   )r%   r+   rK   )r&   rK   rL   rb   rf   rz   r   r   r   test_csv_mixed_type   s
   r|   c                 C   sL   | }|j s
td d}|jt|dddd}tg dd}t|| d S )Nz"This is a low-memory specific testzA,B,C
1,1,1,2
2,2,3,4
3,3,4,5
Tr   )
low_memoryr=   nrowsrb   r)   )r}   pytestskiprZ   r   r	   r4   r5   r[   r9   r6   r:   r8   r   r   r   +test_read_csv_low_memory_no_rows_with_index   s   
r   c                 C   s   | }|j |ddd}tg dg dg dg dg dg d	g d
gg dttdddtdddtdddtdddtdddtdddtdddgddd}t|| d S )Nr   Tr<   r>   r?   r@   rA   rB   rC   rD   rE   rJ   r%   r+   rK   rL   rM   rN   rO   rP   rQ   rR   rT   )rZ   r	   r
   r   r4   r5   )r[   r\   r9   r:   r8   r   r   r   test_read_csv_dataframe   s2   	






	r   r~   r+   g      @c                 C   sL   d}t g dg dg dgg dd}| }|jt||d}t|| d S )Niindex,A,B,C,D
foo,2,3,4,5
bar,7,8,9,10
baz,12,13,14,15
qux,12,13,14,15
foo2,12,13,14,15
bar2,12,13,14,15
)foor&   r+   rK   rL   )barrN   rr   rs   rO   )bazrt   r`   ru   rv   )rQ   rF   rG   rH   rI   r)   r~   rf   )r[   r~   r6   r8   r9   r:   r   r   r   test_read_nrows   s   r   )g333333?r   c                 C   sR   d}d}| }t jt|d |jt||d W d    d S 1 s"w   Y  d S )Nr   z'nrows' must be an integer >=0matchr   r   raises
ValueErrorrZ   r   )r[   r~   r6   msgr9   r   r   r   test_read_nrows_bad  s   "r   c                 C   sT   d}d}| }t jt|d |jt|ddd W d    d S 1 s#w   Y  d S )Nz''skipfooter' not supported with 'nrows'za
1
2
3
4
5
6r   r%   rL   )
skipfooterr~   r   )r[   r   r6   r9   r   r   r   test_nrows_skipfooter_errors  s   "r   c                 C   sT   | }d}| t|}tg ddddtjgdddtjggg dd}t|| d S )	NzA,B,C,D
1,2,3,4
1,3,3,
1,4,5r%   r&   r+   rK   r%   r+   rK   rL   rE   r)   )rZ   r   r	   rx   nanr4   r5   r   r   r   r    test_missing_trailing_delimiters#  s    r   c                 C   s   d}| }|j t|ttdd dgdd}tg dddd	d
dddddddddddddddddddtjtjtjtjtjtjdddg}t|| d S ) NaT  "09-Apr-2012", "01:10:18.300", 2456026.548822908, 12849, 1.00361,  1.12551, 330.65659, 0355626618.16711,  73.48821, 314.11625,  1917.09447,   179.71425,  80.000, 240.000, -350,  70.06056, 344.98370, 1,   1, -0.689265, -0.692787,  0.212036,    14.7674,   41.605,   -9999.0,   -9999.0,   -9999.0,   -9999.0,   -9999.0,  -9999.0, 000, 012, 128!   z-9999.0T)namesrl   	na_valuesskipinitialspacez09-Apr-2012z01:10:18.300g=?FBAi12  gW[?g"?gdt@g*zn2Ag!'>_R@g(ܡs@ga`@g`"vf@g      T@g      n@ig7Q@g46<u@r%   g(yugO+gT#?g-@g=
ףpD@r   rt      )	rZ   r   r    ranger	   rx   r   r4   r5   r[   r6   r9   r:   r8   r   r   r   test_skip_initial_space3  s   
	
 !'r   c                 C   sF   d}| }|j t|dd}tg dg dg dd}t|| d S )NzA,B,C
1,2,3,
4,5,6,
7,8,9,F)r=   r%   rK   rN   r&   rL   rr   r+   rM   rs   rb   rZ   r   r	   r4   r5   r   r   r   r   test_trailing_delimitersp  s
   r   c                 C   sL   d}| }|j t|dddd}|d d dksJ t|jtdd	g d S )
Nu  SEARCH_TERM,ACTUAL_URL
"bra tv board","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord"
"tv pÃ¥ hjul","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord"
"SLAGBORD, \"Bergslagen\", IKEA:s 1700-tals series","http://www.ikea.com/se/sv/catalog/categories/departments/living_room/10475/?se%7cps%7cnonbranded%7cvardagsrum%7cgoogle%7ctv_bord"\"utf-8)
escapechar	quotecharencodingSEARCH_TERMr&   z/SLAGBORD, "Bergslagen", IKEA:s 1700-tals series
ACTUAL_URL)rZ   r   r4   assert_index_equalr*   r
   )r[   r6   r9   r:   r   r   r   test_escapechar~  s   r   c                 C   sF   | }d}|j t|dd}tg dg dg dd}t|| d S )Nz a b c
 1 2 3
 4 5 6
 7 8 9\s+rd   r   r   r   ri   r   r   r   r   r   test_ignore_leading_whitespace  s
   r   r!   r%   r'   rj   c                 C   s   | }d}|d u r+d}t jt|d |t| W d    d S 1 s$w   Y  d S tg dg dd}|jt||d}t|| d S )Nza,b,c
0,1,2
3,4,5,6,7
8,9,10z(Expected \d+ fields in line \d+, saw \d+r   )r   r+   rr   )r%   rK   rs   r'   rj   )r!   )r   r   r   rZ   r   r	   r4   r5   )r[   r!   r9   r6   r   r8   r:   r   r   r   test_uneven_lines_with_usecols  s   "r   zdata,kwargs,expected Xz,,)Dummyr   Dummy_2)r   r!   )r*   rQ   rw   r)   c                 C   s   | }|d u r-d}t jt|d |jt|fi | W d    d S 1 s&w   Y  d S |jt|fi |}t|| d S )NzNo columns to parse from filer   )r   r   r   rZ   r   r4   r5   )r[   r6   kwargsr8   r9   r   r:   r   r   r   test_read_empty_with_usecols  s   "r   zkwargs,expected)r   r%   r&   r+   rL   rM   )rl   delim_whitespaceskiprowsskip_blank_lines)      ?       @      @gffffff@ra   )r%   r&   r+   rL   rM   )r   r   r   r   r   r   rO   rb   c                 C   s6   d}| }|j t|ddfi |}t|| d S )NzsA B C  
random line with trailing spaces    
skip
1,2,3
1,2.,4.
random line with trailing tabs			
   
5.1,NaN,10.0
r,     )rZ   r   replacer4   r5   )r[   r   r8   r6   r9   r:   r   r   r   test_trailing_spaces  s   r   c                 C   sP   d}| }t jtdd |jt|ddd W d    d S 1 s!w   Y  d S )Nza b c
1 2 3zyou can only specify oner   z\sT)rd   r   r   r[   r6   r9   r   r   r   'test_raise_on_sep_with_delim_whitespace  s
   "r   c                 C   sD   | }t jtdd |jdd W d    d S 1 sw   Y  d S )Nz$Expected file path name or file-liker   s   input)filepath_or_buffer)r   r   	TypeErrorrZ   )r[   r9   r   r   r   test_read_filepath_or_buffer  s   "r   r   c                 C   s<   | }d}t dtdi}|jt|d|d}t|| d S )NzMyColumn
a
b
a
b
MyColumnababT)r   r   )r	   r    rZ   r   r4   r5   )r[   r   r9   r6   r8   r:   r   r   r   #test_single_char_leading_whitespace  s   
r   zsep,skip_blank_lines,exp_datar,         @)g     Qg?r   r   c                 C   sP   | }d}|dkr| dd}|jt|||d}t|g dd}t|| d S )Nz&A,B,C
1,2.,4.


5.,NaN,10.0

-70,.4,1
r   r,   r   )rd   r   rb   r)   )r   rZ   r   r	   r4   r5   )r[   rd   r   exp_datar9   r6   r:   r8   r   r   r   test_empty_lines  s   
r   c                 C   sF   | }d}t g ddtjdggg dd}|t|}t|| d S )Nz)

	  		
	
A,B,C
	    1,2.,4.
5.,NaN,10.0
)r%   r   r   r   ra   rb   r)   )r	   rx   r   rZ   r   r4   r5   rg   r   r   r   test_whitespace_linesB  s
    r   zdata,expectedzG   A   B   C   D
a   1   2   3   4
b   1   2   3   4
c   1   2   3   4
r   rE   ri   rT   z    a b c
1 2 3 
4 5  6
 7 8 9rk   )rK   rL   rM   )rN   rr   rs   c                 C   s&   | }|j t|dd}t|| d S )Nr   r   )rZ   r   r4   r5   )r[   r6   r8   r9   r:   r   r   r   test_whitespace_regex_separatorR  s   r   c                 C   sB   t j|d}tg dgg dd}| }||}t|| d S )Nzsub_char.csvrk   )r'   zbr/   r)   )rW   rX   joinr	   rZ   r4   r5   )r[   csv_dir_pathfilenamer8   r9   r:   r   r   r   test_sub_charactero  s
   
r   r   )u   sé-es-vé.csvu
   ru-sй.csvu   中文文件名.csvc                 C   sh   | }t dg di}t|}|j|dd ||}t|| W d    d S 1 s-w   Y  d S )Nr'   rk   FrQ   )r	   r4   ensure_cleanto_csvrZ   r5   )r[   r   r9   dfrX   r:   r   r   r    test_filename_with_special_charsy  s   
"r   c                 C   s   | }t |j}t |j}|j |j ksJ |j|jks J |j D ]2\}}|j| }|dkrQ|jdks9J |jdks@J |j|jksHJ |j	|j	ksPJ q%||ksWJ q%d S )Nrd   r,   	)
r   
read_tablerZ   
parameterskeysreturn_annotationitemsdefault
annotationkind)r[   r9   
table_signcsv_signkey	csv_paramtable_paramr   r   r   *test_read_table_same_signature_as_read_csv  s   


r   c                 C   s8   | }d}|j t|dd}|t|}t|| d S )Nza	b
1	2
3	4r   r   )rZ   r   r   r4   r5   rg   r   r   r   'test_read_table_equivalency_to_read_csv  s
   r   	read_funcrZ   r   c                 C   sP   | }d}t dd  t||t|}t d  tddgi}t|| d S )Nza b
0 1c                  _   s   d S )Nr   )r'   kr   r   r   <lambda>  s    z8test_read_csv_and_table_sys_setprofile.<locals>.<lambda>za bz0 1)sys
setprofilegetattrr   r	   r4   r5   )r[   r   r9   r6   r:   r8   r   r   r   &test_read_csv_and_table_sys_setprofile  s   
r   c                 C   8   | }d}|j t|dd}tg dd}t|| d S )Nu   ﻿"Head1"	"Head2"	"Head3"r   r.   Head1Head2Head3r)   r   r   r   r   r   test_first_row_bom  
   r   c                 C   r   )Nu   ﻿Head1	Head2	Head3r   r   r   r)   r   r   r   r   r   test_first_row_bom_unquoted  r   r   rM   c                 C   sp   t tjtjgtjtjgddgtjtjgddggtdd}d}| }|jt|d|dd	}t||d |  d S )
Nr%   r&   r+   rK   abr)   z
header

a,b


1,2

3,4F)rl   r~   r   )r	   rx   r   r    rZ   r   r4   r5   )r[   r~   refcsvr9   r   r   r   r   -test_blank_lines_between_header_and_data_rows  s   ,r   c                 C   sL   g d}t g dg|d}td}| }|jtd|d |dd}t|| d S )N)onetwothree)r   r   r   r)   zfoo,bar,baz,bam,blahzkLength of header or names does not match length of data. This leads to a loss of data with index_col=False.F)rl   r   r=   )r	   r   rm   r   r4   r5   )r[   column_namesr   streamr9   r   r   r   r    test_no_header_two_extra_columns  s   	r  c                 C   sR   d}| }t jtdd |jt|tdd W d    d S 1 s"w   Y  d S )Nz    1,2,3
    4,5,6
z&Names should be an ordered collection.r   QAZr   )r   r   r   rZ   r   setr   r   r   r   &test_read_csv_names_not_accepting_sets  s
   "r  c                 C   sF   t d}| }|j|dd}tddgddgdd	gd
}t|| d S )Na  b  c
1 -2 -3
4  5   6T)r   r%   rK   rL   rM   ri   )r   r   r	   r4   r5   )r[   fr9   r:   r8   r   r   r   ,test_read_table_delim_whitespace_default_sep  s
   r
  r.   r   c                 C      t d}| }d}tjt|d |j|d|d W d    n1 s"w   Y  tjt|d |j|d|d W d    d S 1 sBw   Y  d S Nr  zXSpecified a delimiter with both sep and delim_whitespace=True; you can only specify one.r   T)r   rd   )r   r.   r   r   r   r   rZ   r[   r.   r	  r9   r   r   r   r   .test_read_csv_delim_whitespace_non_default_sep     "r  c                 C   sT   t d}| }d}tjt|d |j|ddd W d    d S 1 s#w   Y  d S )Na,b
1,2z:Specified a sep and a delimiter; you can only specify one.r    .)rd   r.   r  r[   r	  r9   r   r   r   r   *test_read_csv_delimiter_and_sep_no_default  s   "r  r   
rd   c                 C   sV   |}d}d}t jt|d |jt|fi |  W d    d S 1 s$w   Y  d S )Nza,b,c
1,2,3
    zSpecified \\n as separator or delimiter. This forces the python engine which does not accept a line terminator. Hence it is not allowed to use the line terminator as separator.r   r   )r   r[   r9   r6   r   r   r   r   %test_read_csv_line_break_as_separator  s   "r  c                 C   $   t d}| }d}|t||d d S )Nr  zyIn a future version of pandas all arguments of read_csv except for the argument 'filepath_or_buffer' will be keyword-onlyr  )r   rm   rn   r  r   r   r   !test_read_csv_posargs_deprecation(  
   r  c                 C   r  r  )r   r   r   r   r   r  r   r   r   0test_read_table_delim_whitespace_non_default_sep3  r  r  funcc              	   C   s   t d}| }d}tjt|d2 tt t|||ddgdd W d    n1 s,w   Y  W d    d S W d    d S 1 sDw   Y  d S )Nr  z5Specified named and prefix; you can only specify one.r   r'   rj   x)r   r]   )r   r   r   r   r4   assert_produces_warningrn   r   )r[   r  r	  r9   r   r   r   r   %test_names_and_prefix_not_None_raisesC  s   "r  zprefix, namesx0x1)r  Nc                 C   s   t d}tddgddgd}| }|d ur9tjtdd t||||d	|d d
}W d    n1 s3w   Y  nt||||d	|d d
}t|| d S )Nr  r'   1rj   2)r   r!  F)check_stacklevelr,   )r   rd   r]   rl   )r   r	   r4   r  rn   r   r5   )r[   r   r]   r  r	  r8   r9   r:   r   r   r   #test_names_and_prefix_explicit_NoneN  s   

r%  c                 C   sJ   d}t t d }| }|jt||d}tdgdgd}t|| d S )Nz1,2r   r  r%   r&   )intr   rZ   r   r	   r4   r5   )r[   r6   r   r9   r:   r8   r   r   r   test_dict_keys_as_namesa  s   r'  c              	   C   s   | }d}|j ddd}t||gi|d gd}|d |j_t R}t||d d | d |d  d |  |j|dd	d
}t	|| t
jtdd || W d    n1 s^w   Y  W d    d S W d    d S 1 svw   Y  d S )Ns   r   surrogatepass)errorsr&   r      ,   
r   )encoding_errorsr=   z'utf-8' codec can't decode byter   )decoder	   rQ   rS   r4   r   r   write_bytesrZ   r5   r   r   UnicodeDecodeError)r[   r9   contentdecodedr8   rX   r   r   r   r   test_encoding_surrogatepassn  s"   
""r2  on_bad_lineserrorwarnc                 C   s4   | }| ddi}|j td| d|fi | d S )N
_bad_linesFzThe zr_bad_lines argument has been deprecated and will be removed in a future version. Use on_bad_lines in the future.

)rm   rn   )r[   r\   r3  r9   kwdsr   r   r   test_deprecated_bad_lines_warns  s   

r8  c                 C   s:   | }d}|j t|ddd}tddgi}t|| d S )Nz
a
b
Fr%   )r   rl   r'   rj   r   r   r   r   r   test_malformed_second_line  s
   r9  c                 C   r  )Nza	b
1	2z{In a future version of pandas all arguments of read_table except for the argument 'filepath_or_buffer' will be keyword-onlyr  )r   read_table_check_warningsrn   )r[   r6   r9   r   r   r   r   #test_read_table_posargs_deprecation  r  r;  c              	   C   s   | }d}d}t  7}t|||  t|dd}|  ||}W d    n1 s.w   Y  |t|}W d    n1 sDw   Y  t || d S )Nz	### DATA
znkey,value
tables,rectangular
r   )r   )	r4   r   r   
write_textopenreadlinerZ   r   r5   )r[   r9   r]   r0  rX   fileactualr8   r   r   r   test_read_seek  s   
rA  )W__doc__r   inspectr   ior   rW   pathlibr   r   numpyrx   r   pandas.errorsr   r   r   pandasr	   r
   r   r   r   pandas._testing_testingr4   pandas.io.parsersr   "pandas.io.parsers.c_parser_wrapperr   markusefixturesxfail_pyarrowskip_pyarrowr;   r_   rh   parametrizerq   r{   r|   r   r   r   r   r   r   r   r   r   r   r   float64r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r%  r'  r2  r8  r9  r;  rA  r   r   r   r   <module>   sJ   /"

 

	

<



	

 










	
	





	