
     jD                     \   d 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dZdZd	Zej                            d
          Zej                            d          Zej                            d          Zd Zej                            dddg          d             Zd Zej                            dddgddgfg dddgfg          d             Zd Zed             Zd Zeej                            dddg          d                          Z ej                            d!ddg          ej                            dddgddgg          d"                         Z!d# Z"ed$             Z#d% Z$d& Z%d' Z&d( Z'ej                            d)ddg e	d*d+gd,d-ggd.d/g0          fd/d1g e	d+d2gd-d3ggd/d1g0          fg          d4             Z(ed5             Z)d6 Z*ej                            d)d7  e	d8d9d:d;d<dd=d;d>dd>d;d?          fd@  e	 e
g           A          fg          dB             Z+eej                            dd>dgdC g          dD                         Z,eej                            dEdFg d;dGdi e	g dHg dHg dIg          fdJg dKi  e	g dLg dMg dNdK          fg          dO                         Z-ej                            dPg dQi  e	ddRgddSgdTd=gdUd<gdQ          dfg dVi de.                    dW          fg dXi de.                    dW          fg dYi de.                    dZ          fddg d[d\ e	ddRgddSgdTd=gdUd<gd[          dfg d]dg d[d\de.                    dW          fg d^d_g d[ide.                    dW          fg          d`             Z/ej                            ddadbgddgg          dc             Z0ej                            d_dd>dgg          dd             Z1de Z2df Z3dg Z4dS )hz]
Tests the usecols functionality during parsing
for all of the parsers defined in parsers.py
    )StringION)ParserError)	DataFrameIndexarrayz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningz['usecols' must either be list-like of all strings, all unicode, all integers or a callable.zAUsecols do not match columns, columns expected but not found: {0}zwThe pyarrow engine does not allow 'usecols' to be integer column positions. Pass a list of string column names instead.pyarrow_xfailpyarrow_skipzKignore:Passing a BlockManager to DataFrame is deprecated:DeprecationWarningc                     d}g d}| }t          j        t          t                    5  |                    t          |          |           d d d            d S # 1 swxY w Y   d S )Nz<a,b,c
        1000,2000,3000
        4000,5000,6000
        )r   b   matchusecolspytestraises
ValueError_msg_validate_usecols_argread_csvr   )all_parsersdatar   parsers       C:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\pandas/tests/io/parser/usecols/test_usecols_basic.py!test_raise_on_mixed_dtype_usecolsr   ,   s    D kkGF	z)B	C	C	C 9 98889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   %AA"Ar   )   r   r   cc                    d}| }|j         dk    ryt          |d         t                    r^t          j        t
          t                    5  |                    t          |          |           d d d            n# 1 swxY w Y   d S |                    t          |          |          }t          ddgdd	gd
dgddggddg          }t          j        ||           d S )N a,b,c
1,2,3
4,5,6
7,8,9
10,11,12pyarrowr   r   r   r               	         r   r   columns)engine
isinstanceintr   r   r   _msg_pyarrow_requires_namesr   r   r   tmassert_frame_equal)r   r   requestr   r   resultexpecteds          r   test_usecolsr4   9   s#   D F}	! jS&A&A ]:-HIII 	= 	=OOHTNNGO<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=__Xd^^W_==F1a&1a&1a&2r(;c3ZPPPH&(+++++   %A<<B B c                    d}| }ddg}|j         dk    rbt          j        t          t                    5  |                    t          |          |ddgd	           d d d            n# 1 swxY w Y   d S |                    t          |          |ddgd	          }t          dd
gddgddgddgg|          }t          j	        ||           d S )Nr    foobarr!   r   r   r   r   )namesr   headerr"   r#   r$   r%   r&   r'   r(   r)   )
r+   r   r   r   r.   r   r   r   r/   r0   )r   r   r   r9   r2   r3   s         r   test_usecols_with_namesr;   M   s6   D FENE}	! ]:-HIII 	S 	SOOHTNN%!QPQORRR	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S__Xd^^51a&QR_SSF1a&1a&1a&2r(;UKKKH&(+++++s   )A))A-0A-znames,usecolsr   r   r   r   ar   r   c                 8   d}| }|j         dk    r0t          |d         t                    st          j        d           |                    t          |          |d |          }t          ddgd	d
gddgddggddg          }t          j	        ||           d S )N1,2,3
4,5,6
7,8,9
10,11,12r!   r   ,https://github.com/apache/arrow/issues/38676reasonr9   r:   r   r   r"   r#   r$   r%   r&   r'   r(   r   r   r)   )
r+   r,   r-   r   skipr   r   r   r/   r0   )r   r9   r   r   r   r2   r3   s          r   test_usecols_relative_to_namesrE   b   s    D
 F}	! K*WQZ*E*E KIJJJJ__Xd^^5w_WWF1a&1a&1a&2r(;c3ZPPPH&(+++++    c                     d}| }|                     t          |          ddgd ddg          }t          ddgdd	gd
dgddggddg          }t          j        ||           d S )Nr?   r=   r   r   r   rC   r      r#      r%   
   r'   r)   r   r   r   r/   r0   )r   r   r   r2   r3   s        r   test_usecols_relative_to_names2rL   v   s    D
 F__sCj1v   F 1a&1a&1a&2r(;c3ZPPPH&(+++++rF   c                     d}| }d}t          j        t          |          5  |                    t	          |          ddgd dg           d d d            d S # 1 swxY w Y   d S )Nr?   zHNumber of passed names did not match number of header fields in the filer   r=   r   r   rC   )r   r   r   r   r   )r   r   r   msgs       r   !test_usecols_name_length_conflictrO      s    D
 F
TC	z	-	-	- T TsCjPQsSSST T T T T T T T T T T T T T T T T Ts   *AA Ac                     | }d}t          j        t          t                    5  |                    t          |          d           d d d            d S # 1 swxY w Y   d S )Nz/foo, bar, baz
1000, 2000, 3000
4000, 5000, 6000r   r7   r   r   )r   r   r   s      r   test_usecols_single_stringrQ      s    FD 
z)B	C	C	C 7 76667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   %AAAr   a,b,c,d
1,2,3,4
5,6,7,8za,b,c,d
1,2,3,4,
5,6,7,8,c                     | }g d}t          ddgddgddgd          }|                    t          |          |d	          }t          j        ||           d S )
N)r=   r   dr   r#   r"   rI   rH   r%   Fr   	index_col)r   r   r   r/   r0   )r   r   r   r   r3   r2   s         r   test_usecols_index_col_falserW      sk     FooG1vQF!Q@@AAH__Xd^^W_NNF&(+++++rF   rV   c                    | }d}|j         dk    rzt          |d         t                    r_t          j        t
          t                    5  |                    t          |          ||           d d d            n# 1 swxY w Y   d S t          dddgit          d	d
gd
                    }|                    t          |          ||          }t          j        ||           d S )Na,b,c,d
A,a,1,one
B,b,2,twor!   r   r   rU   r   r   r   r=   r   nameindex)r+   r,   r-   r   r   r   r.   r   r   r   r   r/   r0   )r   r   rV   r1   r   r   r3   r2   s           r   test_usecols_index_col_conflictr^      s2    F*D}	! jS&A&A ]:-HIII 	R 	ROOHTNNGyOQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R#1veS#JS.I.I.IJJJH__Xd^^W	_RRF&(+++++s   &A==BBc                     | }d}t          ddgddgdd          }|                    ddg          }|                    t          |          g dddg	          }t	          j        ||           d S )
NrY   r=   r   r   r   )onetwor   r   rT   r   rU   )r   	set_indexr   r   r/   r0   )r   r   r   r3   r2   s        r    test_usecols_index_col_conflict2rd      s    F*DSzA^LLMMH!!3*--H__C:   F &(+++++rF   c                     | }d}|                     t          |          ddg          }t          ddgddgd	d
dg          }t          j        ||           d S )Nz%a,b,c
4,apple,bat,5.7
8,orange,cow,10r=   r   r   appleorangebatcowr=   r   rH   r%   r\   rK   r   r   r   r2   r3   s        r   test_usecols_implicit_index_colrl      sp     F4D__Xd^^c3Z_@@F2%HHQRTUPVWWWH&(+++++rF   c                     | }d}|                     t          |          g dd          }t          dgdgdt          dgd	          
          }t	          j        ||           d S )Na,b,c,d
1,2,3,4
rb   r   rU   r   rH   )r   rT   r"   rZ   r\   r   r   r   r   r/   r0   rk   s        r   test_usecols_index_col_middlerp      x    FD __Xd^^___PS_TTFs!--UA3S5I5I5IJJJH&(+++++rF   c                     | }d}|                     t          |          g dd          }t          dgdgdt          dgd	          
          }t	          j        ||           d S )Nrn   rb   rT   rU   r   r"   r   rH   rZ   r\   ro   rk   s        r   test_usecols_index_col_endrs      rq   rF   c                    | }d}|j         dk    r\d}t          j        t          |          5  |                    t          |          dd           d d d            n# 1 swxY w Y   d S |                    t          |          dd          }t          dd	gd
dgdddg          }t          j        ||           d S )N-a  b  c
4  apple  bat  5.7
8  orange  cow  10r!   z6the 'pyarrow' engine does not support regex separatorsr   z\s+rj   )sepr   rf   rg   rh   ri   rH   r%   r\   	r+   r   r   r   r   r   r   r/   r0   )r   r   r   rN   r2   r3   s         r   test_usecols_regex_seprx      s   F<D}	! F]:S111 	L 	LOOHTNN
OKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L__Xd^^_LLF2%HHQRTUPVWWWH&(+++++s   &AA#&A#c                 X   | }d}d}|j         dk    rd}t          j        t          |          5  t	          j        t          |d          5  |                    t          |          dd	
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S t	          j        t          |d          5  |                    t          |          dd	
          }d d d            n# 1 swxY w Y   t          ddgddgd	ddg          }t	          j
        ||           d S )Nru   z;The 'delim_whitespace' keyword in pd.read_csv is deprecatedr!   zHThe 'delim_whitespace' option is not supported with the 'pyarrow' enginer   F)r   check_stacklevelTrj   )delim_whitespacer   rf   rg   rh   ri   rH   r%   r\   )r+   r   r   r   r/   assert_produces_warningFutureWarningr   r   r   r0   )r   r   r   depr_msgrN   r2   r3   s          r   test_usecols_with_whitespacer      s   F<DLH}	! 	X]:S111 	 	+X     TNNT:                   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 			#X
 
 
 
 
 TNNT: ! 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 2%HHQRTUPVWWWH&(+++++sG   B&A>2B>B	BB	BBB>&C00C47C4zusecols,expectedi  i  i  i  20)r   r*   1i  ip  c                    | }d}|j         dk    ryt          |d         t                    r^t          j        t
          t                    5  |                    t          |          |           d d d            n# 1 swxY w Y   d S |                    t          |          |          }t          j
        ||           d S )Nz#2,0,1
1000,2000,3000
4000,5000,6000r!   r   r   r   )r+   r,   r-   r   r   r   r.   r   r   r/   r0   )r   r   r3   r1   r   r   r2   s          r   %test_usecols_with_integer_like_headerr     s     FD }	! jS&A&A ]:-HIII 	= 	=OOHTNNGO<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=__Xd^^W_==F&(+++++r5   c                     d}t          t          g                     }| }|                    t          |          t	                                }t          j        ||           d S )Nza,b,c
1,2,3
4,5,6r)   r   )r   r   r   r   setr/   r0   )r   r   r3   r   r2   s        r   test_empty_usecolsr   6  sZ     Dr+++HF__Xd^^SUU_;;F&(+++++rF   c                     | }d}t          j        ddg          }t          ddgg|          }|                    t	          |          |          }t          j        ||           d S )Nza,b,c
1,2,3r=   r   r   r   r)   r   )npr   r   r   r   r/   r0   )r   r   r   r   r3   r2   s         r   test_np_array_usecolsr   @  sk    FDhSz""G1a&7333H__Xd^^W_==F&(+++++rF   c                 .    |                                  dv S )N)AAABBBDDD)upperxs    r   <lambda>r   O  s    aggii#88 rF   g?g$@gr.-@)r   r   r   r%   rI   r=   )AaAbBbdddc                     dS )NF r   s    r   r   r   \  s    5 rF   r)   c                 L   d}| }|j         dk    r[d}t          j        t          |          5  |                    t          |          |           d d d            n# 1 swxY w Y   d S |                    t          |          |          }t          j        ||           d S )NzPAaA,bBb,CCC,ddd
0.056674973,8,True,a
2.613230982,2,False,b
3.568935038,7,False,ar!   <The pyarrow engine does not allow 'usecols' to be a callabler   r   )r+   r   r   r   r   r   r/   r0   )r   r   r3   r   r   rN   r2   s          r   test_callable_usecolsr   K  s    ,D F}	! L]:S111 	= 	=OOHTNNGO<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=__Xd^^W_==F&(+++++s   %AA"%A"c                 
    | dv S )Nr=   r   r   r   s    r   r   r   s  s
    1
? rF   c                     d}| }g d}t          ddgt          j        dgd          }|                    t	          |          ||          }t          j        ||           d S )Nz	1,2
1,2,3r<   r   r"   r   )r9   r   )r   r   nanr   r   r/   r0   )r   r   r   r   r9   r3   r2   s          r   test_incomplete_first_rowr   r  sl     DFOOE1vRVQK8899H__Xd^^5'_JJF&(+++++rF   zdata,usecols,kwargs,expectedz19,29,39
19,29,39
10,20,30,40r:   )      '   )rJ         z4A,B,C
1,2,3
3,4,5
1,2,4,5,1,6
1,2,3,,,1,
1,2,3
5,6,7)ABC)r   r"   r   r   r   r#   )r   rH   r   r   r   r$   )r"   r#   rH   r"   r"   rI   c                 n    | } |j         t          |          fd|i|}t          j        ||           d S )Nr   )r   r   r/   r0   )r   r   r   kwargsr3   r   r2   s          r   test_uneven_length_colsr     sF    8 FV_Xd^^GGWGGGF&(+++++rF   zusecols,kwargs,expected,msg)r=   r   r   rT   r#   r$   r"   rH   )r=   r   r   fz\['f'\])r=   r   r   )r=   r   r   gz\[('f', 'g'|'g', 'f')\]r   r   r   D)r:   r9   )r   r   r   r   )r   r   r   r9   c                    d}|                     |           | }|j        dk    r||t          j        d           |Qt          j        t
          |          5   |j        t          |          fi | d d d            d S # 1 swxY w Y   d S  |j        t          |          fi |}t          j	        ||           d S )NrR   r   r!   r@   rA   r   )
updater+   r   rD   r   r   r   r   r/   r0   )	r   r   r   r3   rN   r1   r   r   r2   s	            r   %test_raises_on_usecols_names_mismatchr     s6   \ 'D
MM'M"""F}	! KK (K
 	IJJJJ 0]:S111 	6 	6FOHTNN55f555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 !$::6::
fh/////s   BB	B	r   r   c                    d}g d}| }|j         dk    rt          |d         t                    r`t          j        t
          t                    5  |                    t          |          d||           d d d            n# 1 swxY w Y   d S t          j	        d           |                    t          |          d||          }t          d	d
gddgd          }t          j        ||           d S )NrR   r   r!   r   r   )r:   r9   r   r@   rA   r   r#   r"   rI   )r   r   )r+   r,   r-   r   r   r   r.   r   r   rD   r   r/   r0   )r   r   r1   r   r9   r   r2   r3   s           r   /test_usecols_subset_names_mismatch_orig_columnsr     sG   &D   EF}	! Kgaj#&& 	z1LMMM X XqwWWWX X X X X X X X X X X X X X XFIJJJJ__Xd^^AUG_TTF1vQF3344H&(+++++s   'BB	Bc                     | }d}t           }d}|j        dk    rt          }t          }t	          j        ||          5  |                    t          |          ddg|d           d d d            d S # 1 swxY w Y   d S )Nz
a,b
1,2
    z#Defining usecols with out-of-boundsr!   r   r   r   )r   r9   r:   )r   r+   r   r.   r   r   r   r   )r   r9   r   r   errrN   s         r   "test_usecols_indices_out_of_boundsr     s     FD
 C
/C}	! *)	s#	&	&	& O OAeANNNO O O O O O O O O O O O O O O O O Os   )A33A7:A7c                 x   | }d }|j         dk    r\d}t          j        t          |          5  |                    t          d          d|           d d d            n# 1 swxY w Y   d S |                    t          d          d|          }t          dgd	d
          }t          j        ||           d S )Nc                 .    |                                  dv S )Nr<   stripr:   s    r   r   z1test_usecols_additional_columns.<locals>.<lambda>
  s    V\\^^> rF   r!   r   r   z	a,b
x,y,zFrV   r   r   yrj   rw   r   r   r   rN   r2   r3   s         r   test_usecols_additional_columnsr     s   F>>G}	! L]:S111 	V 	VOOH\22eWOUUU	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V__Xl33ug_VVFu3//00H&(+++++   &A  A$'A$c                 x   | }d }|j         dk    r\d}t          j        t          |          5  |                    t          d          d|           d d d            n# 1 swxY w Y   d S |                    t          d          d|          }t          dgd	d
          }t          j        ||           d S )Nc                 .    |                                  dv S )Nr   r   r   r   s    r   r   zAtest_usecols_additional_columns_integer_columns.<locals>.<lambda>  s    V\\^^z9 rF   r!   r   r   z	0,1
x,y,zFr   r   r   r   rw   r   s         r   /test_usecols_additional_columns_integer_columnsr     s   F99G}	! L]:S111 	V 	VOOH\22eWOUUU	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V__Xl33ug_VVFu3//00H&(+++++r   c                     | }d}|                     t          |          ddgdddd          }t          t          dd	g          t	          j        d
dgd          d          }t          j        ||           d S )Nz
col1,col2,col3
a,1,x
b,2,y
col1col2stringuint8)r   r   col3)r   dtyper=   r   r   r   )r   )r   r   )r   r   r   r   r   r/   r0   rk   s        r   test_usecols_dtyper   $  s    FD
 __ (CC   F
 Sz""BHaV7,K,K,KLL H &(+++++rF   )5__doc__ior   numpyr   r   pandas.errorsr   pandasr   r   r   pandas._testing_testingr/   markfilterwarnings
pytestmarkr   _msg_validate_usecols_namesr.   usefixturesxfail_pyarrowskip_pyarrowr   parametrizer4   r;   rE   rL   rO   rQ   rW   r^   rd   rl   rp   rs   rx   r   r   r   r   r   r   r   formatr   r   r   r   r   r   r   rF   r   <module>r      s               % % % % % %         
      [''C 

  H = 
 ''88{&&~66[''Q 


9 
9 
9 VZ$899, , :9,&, , ,* SzAq6*___sCj,IJ , , ,", , ,$ 	T 	T 	T7 7 7 
(*GH , ,  , sAh//c3Z!Q$899, , :9 0/, , , , , , ,, , ,, , ,, , ,", , ,6  Q$d| <sCjQQQR #JIT4L4,7#sLLL	
	 , , , , , ,, , ,  98I 0-- 
  !Q1--"ss33 
 
	
 
))EE"II6667 (, ,) (,& c3Z1J1J$KLL, , ML , " -IItI|||\\\<<<@AA		
 JOOI+++++++++  		
 2, ,3  4, ! !  IQF!Qq!fAq6JJKK		
 !  '..z::		
 
"d$?$F$Fz$R$RS   '../IJJ		
 #7#7#788IQF!Qq!fAq6JJKK		
 !  #7#7#788'..z::		
 OO***+'..z::		
C'* *V0 0W* *V0, c3Z!Q$899, , :9,$ 4#s"455O O 65O$, , ,, , ,, , , , ,rF   