
     j>              
      L   d Z ddlmZ ddlZddlmZmZmZ ddlm	Z	 ddl
ZddlZddlmZmZ ddlmZmZmZ ddlmZ e	rddlmZ d	 Zej                            d
g d          d             Zd Zej                            dddiddig          d             Zd Zej                            dddg          d             Z d Z!ej                            dd
diddig          d             Z"ej                            dddg          d             Z#d  Z$d! Z%ej                            d"d#d$g          d%             Z&ej                            dg d&          ej                            dg d'          d(                         Z'ej                            d)ej(        ej)        g          d*             Z*d+ Z+ej                            d,d-d.g          ej                            d
dd/g          d0                         Z,d1 Z-d2 Z.ej                            d3d4 d5 g          d6             Z/d7 Z0ej                            d3d8 d9 g          ej                            dd:d;g          d<                         Z1d= Z2d> Z3d? Z4d@ Z5dA Z6dB Z7ej                            dCdDe8ie9ej:        ej:        dEg          dF             Z;ej                            dGe9ej<        ej:        dE eg dHg dIdJ          fe9 eg dKg dLdJ          fg          dM             Z=dS )Nz
Tests that apply specifically to the Python parser. Unless specifically
stated as a Python-specific issue, the goal is to eventually move as many of
these tests out of this module as soon as the C parser can accept further
arguments when parsing.
    )annotationsN)BytesIOStringIOTextIOWrapper)TYPE_CHECKING)ParserErrorParserWarning)	DataFrameIndex
MultiIndex)Iteratorc                    d}| }t          ddgddgd          }|                    t          |          d           }t          j        ||           d S )Nzaob
1o2
3o4            absepr
   read_csvr   tmassert_frame_equalpython_parser_onlydataparserexpectedresults        C:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\pandas/tests/io/parser/test_python_parser_only.pytest_default_separatorr#   $   s_     DF1vQF3344H__Xd^^_66F&(+++++    
skipfooter)foog      ?Tc                    d}| }d}t          j        t          |          5  |                    t	          |          |           d d d            d S # 1 swxY w Y   d S )Na
1
2zskipfooter must be an integermatchr%   pytestraises
ValueErrorr   r   )r   r%   r   r   msgs        r"   test_invalid_skipfooter_non_intr1   0   s     DF
)C	z	-	-	- ? ?:>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?   %AAAc                    d}| }d}t          j        t          |          5  |                    t	          |          d           d d d            d S # 1 swxY w Y   d S )Nr(   zskipfooter cannot be negativer)   r+   r,   )r   r   r   r0   s       r"    test_invalid_skipfooter_negativer5   ;   s    DF
)C	z	-	-	- 7 726667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7r2   kwargsr   	delimiter|c                    d}| } |j         t          |          fddi|}t          g dg dg dgg dt          g dd	
                    }t	          j        ||           d S )Nz*index|A|B|C
foo|1|2|3
bar|4|5|6
baz|7|8|9
	index_colr   r   r   r   r               	   ABCr&   barbazindexnamecolumnsrJ   r   r   r
   r   r   r   r   r6   r   r   r!   r    s         r"   test_sniff_delimiterrQ   E   s    D
  FV_Xd^^CCqCFCCF	IIIyyy))))888  H
 &(+++++r$   c                    d}| }|                     t          |          dd d          }t          g dg dg dgg dt          g d	d
                    }t	          j        ||           d S )NzX# comment line
index|A|B|C
# comment line
foo|1|2|3 # ignore | this
bar|4|5|6
baz|7|8|9
r   #)r:   r   commentr;   r<   r?   rC   rG   rJ   rK   rM   rO   )r   r   r   r!   r    s        r"   test_sniff_delimiter_commentrU   V   s    D  F__Xd^^qdC_PPF	IIIyyy))))888  H
 &(+++++r$   encodingzutf-8c                V   | }d}|6|                     |          }t          |          }t          ||          }nt          |          }|                    |dd d|          }t          g dg dg dgg d	t          g d
d                    }t          j        ||           d S )NzFignore this
ignore this too
index|A|B|C
foo|1|2|3
bar|4|5|6
baz|7|8|9
)rV   r   r   )r:   r   skiprowsrV   r;   r<   r?   rC   rG   rJ   rK   rM   )	encoder   r   r   r   r
   r   r   r   )r   rV   r   r   r!   r    s         r"   test_sniff_delimiter_encodingrZ   h   s    FD  {{8$$t}}TH555~~__TQD1x_XXF	IIIyyy))))888  H
 &(+++++r$   c                    | }|                     t          d          ddgd d           }t          dgdgd          }t          j        ||           d S )Nz1,2r   r   )namesheaderr   r   r   r   r   r   r
   r   r   )r   r   r!   r    s       r"   test_single_liner_      s]    F__Xe__S#JtQU_VVFs!--..H&(+++++r$   r   nrowsr   c                    d}| } |j         t          |          fi |}t          g dg dg dgg d          }t          j        ||           d S )Nz>A,B,C
1,2,3
4,5,6
7,8,9
want to skip this
also also skip this
r;   r<   r?   rC   )rN   r^   rP   s         r"   test_skipfooterrb      sq    D  FV_Xd^^66v66F)))YYY			:OOOTTTH&(+++++r$   zcompression,klass)gzipGzipFile)bz2BZ2Filec                F   | }t          |d          5 }|                                }d d d            n# 1 swxY w Y   |                    dd          }|                    |          }t	          j        |          }t          ||          }t          j                    5 }	 ||	d          5 }
|
	                    |           d d d            n# 1 swxY w Y   |                    |	d|          }t          j
        ||           d d d            d S # 1 swxY w Y   d S )Nrb   ,s   ::wb)mode::)r   compression)openreadreplacer   r-   importorskipgetattrr   ensure_cleanwriter   )r   csv1rm   klassr   fr   r    modulepathtmpr!   s               r"   test_decompression_regex_sepr{      s   
  F	dD		 Qvvxx               <<e$$Dt$$H --FFE""E			 0dU4d### 	sIIdOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 4[II
fh///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0sB   488!D/CDC	DC	0DDDc           	         d}| }t          g dg dg dgg dt          j        g dg d          	          }|                    t	          |          d
          }t          j        ||           d S )Na                        A       B       C       D        E
one two three   four
a   b   10.0032 5    -0.5109 -2.3358 -0.4645  0.05076  0.3640
a   q   20      4     0.4473  1.4152  0.2834  1.00661  0.1744
x   q   30      3    -0.6662 -0.5243 -0.3580  0.89145  2.5838)gEJYgr鷯g|?5^ݿg6?gK?)g-?gT?g9#?g9]?g46<R?)gQg^)gxֿgI&?g=U@)rD   rE   rF   DE))r   r   gı.n$@r=   )r   q   r   )xr      r   )onetwothreefour)r\   rM   \s+r   )r
   r   from_tuplesr   r   r   r   r   s        r"   #test_read_csv_buglet_4x_multi_indexr      s    AD
  F888555888	

 *))$JJJ111
 
 
  H __Xd^^_88F&(+++++r$   c                    d}| }t          j        ddgt          d          t          d                    }|                    t	          |          d          }t          j        ||           d S )	Nz)      A B C
a b c
1 3 7 0 3 6
3 1 4 1 5 9)r   r   r@   r   r   r>   )r   r   r   r   r=   rB   abcABCabcrM   r   r   )r
   from_recordslistr   r   r   r   r   s        r"   $test_read_csv_buglet_4x_multi_index2r      st    9DF%	/0X5kk  H
 __Xd^^_88F&(+++++r$   
add_footerTFc                    d}| }t          dddgi          }|r
ddi}|dz  }ni } |j        t          |          fdgdd	|}t          j        ||           d S )
Nz1#2
3#4r   g333333?g333333@r%   r   z
FooterrS   )r\   decimalr   )r   r   r   r   r    r6   r!   s          r"   test_skipfooter_with_decimalr      s     DF#Sz*++H  "
V_Xd^^PC5#PPPPF&(+++++r$   )rl   z#####z!!!123z#1!c5z%!c!dz@@#4:2z_!pd#_)zutf-16z	utf-16-bez	utf-16-lezutf-32cp037c                    t          dgdgd          }| }d|z   dz   }|                    |          }|                    t          |          |ddg|          }t	          j        ||           d S )	Nr   r   r   12r   r   )r   r\   rV   )r
   rY   r   r   r   r   )r   r   rV   r    r   r   encoded_datar!   s           r"   $test_encoding_non_utf8_multichar_sepr      s     s!--..HF9s?D;;x((L__3sCj8   F &(+++++r$   quotingc                   ddi}| }d}|t           j        k    rUd}t          j        t          |          5   |j        t          |          fd|i| d d d            d S # 1 swxY w Y   d S d}t          j        t          |          5   |j        t          |          fd|i| d d d            d S # 1 swxY w Y   d S )Nr   z,,za,,b
1,,a
2,,"2,,b"z"Expected 2 fields in line 3, saw 3r)   r   z+ignored when a multi-char delimiter is used)csv
QUOTE_NONEr-   r.   r   r   r   )r   r   r6   r   r   r0   s         r"   test_multi_char_sep_quotesr     s    T]FF"D#.  G2];c222 	G 	GFOHTNNFFGFvFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G <];c222 	G 	GFOHTNNFFGFvFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs#   A!!A%(A%B66B:=B:c                   | }d}t          ddgddgddgd          }t          j        t          d	d
          5  |                    t          |          dd d          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nza,b,c
0,1,2
3,4,5,6
7,8,9r   r@   r   rA   r   rB   r   r   czSkipping line 3F)r*   check_stacklevelwarn)r]   r   on_bad_lines)r
   r   assert_produces_warningr	   r   r   r   )r   r   r   r    r!   s        r"   test_none_delimiterr     s    F)D1vQF!Q@@AAH
 
	#.
 
 
 
 
 TNN1$V ! 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 &(+++++s   'A--A14A1r   za
1
"b"aza,b,c
cat,foo,bar
dog,foo,"bazr   c                z   | }|r\d}t          j        t          |          5  |                    t	          |          |           d d d            d S # 1 swxY w Y   d S d}t          j        t          |          5  |                    t	          |          |           d d d            d S # 1 swxY w Y   d S )Nz)parsing errors in the skipped footer rowsr)   r+   z%unexpected end of data|expected afterr-   r.   r   r   r   )r   r   r%   r   r0   s        r"   test_skipfooter_bad_rowr   '  sp     F C9];c222 	C 	COOHTNNzOBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 6];c222 	C 	COOHTNNzOBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs#   %AAA>%B00B47B4c                    | }d}d}t          j        t          |          5  |                    t	          |          ddd           d d d            d S # 1 swxY w Y   d S )Nz4ignore
A,B,C
1,2,3 # comment
1,2,3,4,5
2,3,4
footer
z"Expected 3 fields in line 4, saw 5r)   r   rS   )r]   rT   r%   r   )r   r   r   r0   s       r"   test_malformed_skipfooterr   6  s    FD /C	{#	.	.	. M Mq#!LLLM M M M M M M M M M M M M M M M M Ms   'AAAc                `    | } G d d          }|                      |d                     d S )Nc                  *    e Zd Zd	dZd
dZd Zd ZdS )5test_python_engine_file_no_next.<locals>.NoNextBufferreturnNonec                    || _         d S Nr   )selfcsv_datas     r"   __init__z>test_python_engine_file_no_next.<locals>.NoNextBuffer.__init__H  s     DIIIr$   r   c                4    | j                                         S r   )r   __iter__r   s    r"   r   z>test_python_engine_file_no_next.<locals>.NoNextBuffer.__iter__K  s    9%%'''r$   c                    | j         S r   r   r   s    r"   ro   z:test_python_engine_file_no_next.<locals>.NoNextBuffer.readN  
    9r$   c                    | j         S r   r   r   s    r"   readlinez>test_python_engine_file_no_next.<locals>.NoNextBuffer.readlineQ  r   r$   N)r   r   )r   r   )__name__
__module____qualname__r   r   ro   r    r$   r"   NoNextBufferr   G  sZ        	! 	! 	! 	!	( 	( 	( 	(	 	 		 	 	 	 	r$   r   za
1)r   )r   r   r   s      r"   test_python_engine_file_no_nextr   D  sS    F        OOLL(()))))r$   bad_line_funcc                
    ddgS Nr   3r   r   s    r"   <lambda>r   W  s
    c3Z r$   c                    | d d         S Nr   r   r   s    r"   r   r   W  s    1RaR5 r$   c                    | }d}t          |          }|                    ||          }t          g dg dd          }t          j        ||           d S )Na,b
1,2
2,3,4,5,6
3,4
r   r;   r   r   r   r   r   r   r
   r   r   )r   r   r   r   bad_sior!   r    s          r"   test_on_bad_lines_callabler   W  sh      FD
 tnnG__W=_AAFyyyyyy99::H&(+++++r$   c                    | }d}t          |          }g dfd}|                    ||          }t          g dg dd	          }t          j        ||           g d
gk    sJ d S )Nr   bad_line	list[str]r   c                6                         |            ddgS r   )append)r   lsts    r"   r   zHtest_on_bad_lines_callable_write_to_external_list.<locals>.bad_line_funcq  s    

8Szr$   r   r;   r   r   )r   r   456)r   r   r   r   r   )r   r   r   r   r   r!   r    r   s          @r"   1test_on_bad_lines_callable_write_to_external_listr   f  s    FD
 tnnG
C      __W=_AAFyyyyyy99::H&(+++,,,-------r$   c                
    ddgS )Nr&   rH   r   r   s    r"   r   r   {  s
    eU^ r$   c                    | d d         S r   r   r   s    r"   r   r   {  s    qQSRSQSu r$   ,111c                V   | }d| d| d| d| d| d}t          |          }|                    ||dd|	          }d
ddddddddg}t          t          ||                    D ]?\  }\  }	}
t	          |
t          ||dz                       }
t          j        |	|
           @d S )Nz
0z1
hiz	there
foorH   zbaz
goodzbye
r   T)r   	chunksizeiteratorr   hithere)0r   r&   goodbyerJ   )r   r   	enumeratezipr
   ranger   r   )r   r   r   r   r   r   result_iter	expectedsir!   r    s              r"   (test_on_bad_lines_callable_iterator_truer   {  s!   
  F       		  D tnnG//mq4S "  K !!%  5!!I
 "+3{I+F+F!G!G 0 0FHXU1a!e__===
fh////0 0r$   c                    | }d}t          |          }dfd}t          j        t                    5  |                    ||           d d d            d S # 1 swxY w Y   d S )Nr   zThis function is buggy.c                "    t                    r   )r/   )r   r0   s    r"   r   zEtest_on_bad_lines_callable_dont_swallow_errors.<locals>.bad_line_func  s    oor$   r)   r   )r   r-   r.   r/   r   )r   r   r   r   r   r0   s        @r"   .test_on_bad_lines_callable_dont_swallow_errorsr     s    FD
 tnnG
#C     
z	-	-	- = =m<<<= = = = = = = = = = = = = = = = = =s   AA #A c                    | }d}t          |          }|                    t          d|d           }t          g dg dd          }t	          j        ||           d S )Nr   zLength of header or namesc                    | S r   r   r   s    r"   r   z@test_on_bad_lines_callable_not_expected_length.<locals>.<lambda>  s    TU r$   r   r;   r   r   r   read_csv_check_warningsr	   r
   r   r   r   r   r   r   r!   r    s         r"   .test_on_bad_lines_callable_not_expected_lengthr     sy    FD
 tnnG++2G++ ,  F yyyyyy99::H&(+++++r$   c                    | }d}t          |          }|                    |d           }t          ddgddgd          }t          j        ||           d S )	Nr   c                    d S r   r   r   s    r"   r   z9test_on_bad_lines_callable_returns_none.<locals>.<lambda>  s    T r$   r   r   r   r   r   r   r   r   s         r"   'test_on_bad_lines_callable_returns_noner     sh    FD
 tnnG__W>>_BBF1vQF3344H&(+++++r$   c                    | }d}t          |          }|                    |d           }t          ddgddgdd	d
g          }t          j        ||           d S )Nza,b
1,2,3
4,5,6
c                
    ddgS )N99r   r   s    r"   r   z6test_on_bad_lines_index_col_inferred.<locals>.<lambda>  s
    dD\ r$   r   r   r=   r   r>   r   r   r   r   r   r   s         r"   $test_on_bad_lines_index_col_inferredr    ss    FD tnnG__W3I3I_JJF1vQF33Aq6BBBH&(+++++r$   c                    | }d}|                     t          dt          |          dd d          }t          ddgdd	gd
          }t	          j        ||           d S )Nz
0.5,0.03
0.1,0.2,0.3,2
Length of headerr   F)r   r]   r:   g      ?g?gQ?g?)r   r   )r   r	   r   r
   r   r   r   r   r   r!   r    s        r"   $test_index_col_false_and_header_noner    sz    FD ++ ,  F c3ZT3K8899H&(+++++r$   c                    | }t          d          }|                    t          d|dd          }t          dg di          }t	          j        ||           d S )Nza
a,b
c,d,e
f,g,hr  pythonF)enginer:   r   )r   r   rw   r   r  s        r"   ?test_header_int_do_not_infer_multiindex_names_on_different_liner	    sl    F*++D++)4E ,  F #/00H&(+++++r$   dtyper   r   c                    | }d}|                     t          |          d|d          }t          g dg dg dd          }t          j        ||           d S )	NzGa;b;c
0000.7995;16.000;0
3.03.001.00514;0;4.000
4923.600.041;23.000;131;.r   r
  	thousands)z	0000.7995z3.03.001.00514z4923.600.041)i>  r   Y  )r   i     r   r^   )r   r
  r   r   r!   r    s         r"   6test_no_thousand_convert_with_dot_for_non_numeric_colsr    s    
  FD
 __	   F @@@"""	
 	
 H &(+++++r$   zdtype,expected)g@@r   r  )r   i  r  )r   r   )z16,000.1r   z23,000)r   z4,001131c                    | }d}|                     t          |          d|d          }|                    ddg d           t          j        ||           d S )NzJa;b;c
0000,7995;16,000.1;0
3,03,001,00514;0;4,001
4923,600,041;23,000;131
r  r   r  r   r   )z	0000,7995z3,03,001,00514z4923,600,041)r   r   insertr   r   )r   r
  r    r   r   r!   s         r"   -test_no_thousand_convert_for_non_numeric_colsr    st    2  FD
 __	   F OOAsKKKLLL&(+++++r$   )>__doc__
__future__r   r   ior   r   r   typingr   numpynpr-   pandas.errorsr   r	   pandasr
   r   r   pandas._testing_testingr   collections.abcr   r#   markparametrizer1   r5   rQ   rU   rZ   r_   rb   r{   r   r   r   r   QUOTE_MINIMALr   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  objectstrint64r  float64r  r   r$   r"   <module>r)     s    # " " " " " 



         
 !                      
         
       )((((((	, 	, 	, '9'9'9::? ? ;:?7 7 7 UDMK3E#FGG, , HG, , , ,$ dG_55, , 65,4, , , \1$5|#DEE, , FE,  .0BC 0 0 0*, , ,2, , , e}55, , 65,$ 	NNN  GGG , ,  , S%6$GHHG G IHG", , ,$ ,0R!STT1v..
C 
C /. UT
CM M M* * *& +?+?*QRR, , SR,. . .* +C+C__*UVVe--0 0 .- WV00= = =$, , ,", , ,, , ,, , ,&, , , sFm3RXBHEEF , , ,0  BJRX66I,,,'  	
 I444...  	
 ., ,/ ., , ,r$   